diff --git a/apps/pcx86/1981/visicalc/manifest.xml b/apps/pcx86/1981/visicalc/manifest.xml index 5486753921..a4615b1e7b 100644 --- a/apps/pcx86/1981/visicalc/manifest.xml +++ b/apps/pcx86/1981/visicalc/manifest.xml @@ -1,5 +1,5 @@ - + VisiCalc diff --git a/apps/pcx86/1982/esuite/manifest.xml b/apps/pcx86/1982/esuite/manifest.xml index 4aaa888c5a..efda2464b6 100644 --- a/apps/pcx86/1982/esuite/manifest.xml +++ b/apps/pcx86/1982/esuite/manifest.xml @@ -1,5 +1,5 @@ - + Executive Suite diff --git a/apps/pcx86/1982/ratbas/manifest.xml b/apps/pcx86/1982/ratbas/manifest.xml index 254e3bad8a..837af6c3e4 100644 --- a/apps/pcx86/1982/ratbas/manifest.xml +++ b/apps/pcx86/1982/ratbas/manifest.xml @@ -1,5 +1,5 @@ - + RatBas 2.13 diff --git a/apps/pcx86/1983/adventmath/manifest.xml b/apps/pcx86/1983/adventmath/manifest.xml index 0245800f10..68e2e8c4ab 100644 --- a/apps/pcx86/1983/adventmath/manifest.xml +++ b/apps/pcx86/1983/adventmath/manifest.xml @@ -1,5 +1,5 @@ - + Adventures in Math 1.00 diff --git a/apps/pcx86/1985/rogue/manifest.xml b/apps/pcx86/1985/rogue/manifest.xml index 27cc4f3cf0..4f81a8e02c 100644 --- a/apps/pcx86/1985/rogue/manifest.xml +++ b/apps/pcx86/1985/rogue/manifest.xml @@ -1,5 +1,5 @@ - + Rogue 1.49 diff --git a/apps/pcx86/1987/thinktank/manifest.xml b/apps/pcx86/1987/thinktank/manifest.xml index 16e25191a4..f1295e13ff 100644 --- a/apps/pcx86/1987/thinktank/manifest.xml +++ b/apps/pcx86/1987/thinktank/manifest.xml @@ -1,5 +1,5 @@ - + ThinkTank 2.41NP diff --git a/apps/pcx86/1988/moria/manifest.xml b/apps/pcx86/1988/moria/manifest.xml index 3aed73bae9..e1adcaadf1 100644 --- a/apps/pcx86/1988/moria/manifest.xml +++ b/apps/pcx86/1988/moria/manifest.xml @@ -1,5 +1,5 @@ - + The Dungeons of Moria 4.872 diff --git a/apps/pcx86/1992/moria/manifest.xml b/apps/pcx86/1992/moria/manifest.xml index 37bdbb772f..2708107ccb 100644 --- a/apps/pcx86/1992/moria/manifest.xml +++ b/apps/pcx86/1992/moria/manifest.xml @@ -1,5 +1,5 @@ - + The Dungeons of Moria 5.5 diff --git a/devices/c1p/machine/32kb/machine.xml b/devices/c1p/machine/32kb/machine.xml index ed3119cd8d..b8084dc8f9 100644 --- a/devices/c1p/machine/32kb/machine.xml +++ b/devices/c1p/machine/32kb/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (32Kb) with Disk Support diff --git a/devices/c1p/machine/8kb/all/debugger/machine.xml b/devices/c1p/machine/8kb/all/debugger/machine.xml index fbc96cbb15..c55e0ff09e 100644 --- a/devices/c1p/machine/8kb/all/debugger/machine.xml +++ b/devices/c1p/machine/8kb/all/debugger/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb, Additional Software) diff --git a/devices/c1p/machine/8kb/all/machine.xml b/devices/c1p/machine/8kb/all/machine.xml index 69c5728bd8..92de9e00c7 100644 --- a/devices/c1p/machine/8kb/all/machine.xml +++ b/devices/c1p/machine/8kb/all/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb, Additional Software) diff --git a/devices/c1p/machine/8kb/array/machine.xml b/devices/c1p/machine/8kb/array/machine.xml index 8f16ac9e83..2ff6be507e 100644 --- a/devices/c1p/machine/8kb/array/machine.xml +++ b/devices/c1p/machine/8kb/array/machine.xml @@ -1,5 +1,5 @@ - + Challenger 1P (8Kb) "Server Array" diff --git a/devices/c1p/machine/8kb/large/debugger/machine.xml b/devices/c1p/machine/8kb/large/debugger/machine.xml index edcdfa1e6c..7b033b90de 100644 --- a/devices/c1p/machine/8kb/large/debugger/machine.xml +++ b/devices/c1p/machine/8kb/large/debugger/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb) with Debugger diff --git a/devices/c1p/machine/8kb/large/machine.xml b/devices/c1p/machine/8kb/large/machine.xml index 45b42a8020..cec79e9ffd 100644 --- a/devices/c1p/machine/8kb/large/machine.xml +++ b/devices/c1p/machine/8kb/large/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (circa 1978) diff --git a/devices/c1p/machine/8kb/small/machine.xml b/devices/c1p/machine/8kb/small/machine.xml index f45f3953f8..e0cc44957f 100644 --- a/devices/c1p/machine/8kb/small/machine.xml +++ b/devices/c1p/machine/8kb/small/machine.xml @@ -1,5 +1,5 @@ - + diff --git a/devices/pc8080/machine/exerciser/machine-8080ex1.xml b/devices/pc8080/machine/exerciser/machine-8080ex1.xml index 31be62121a..d0a731c553 100644 --- a/devices/pc8080/machine/exerciser/machine-8080ex1.xml +++ b/devices/pc8080/machine/exerciser/machine-8080ex1.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Test Machine diff --git a/devices/pc8080/machine/exerciser/machine-8080pre.xml b/devices/pc8080/machine/exerciser/machine-8080pre.xml index 8ed24aea91..6edaf3c52a 100644 --- a/devices/pc8080/machine/exerciser/machine-8080pre.xml +++ b/devices/pc8080/machine/exerciser/machine-8080pre.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Preliminary Test Machine diff --git a/devices/pc8080/machine/exerciser/machine-cputest.xml b/devices/pc8080/machine/exerciser/machine-cputest.xml index 505a2000cf..778530729a 100644 --- a/devices/pc8080/machine/exerciser/machine-cputest.xml +++ b/devices/pc8080/machine/exerciser/machine-cputest.xml @@ -1,5 +1,5 @@ - + 8080 CPUTEST Machine diff --git a/devices/pc8080/machine/exerciser/machine-test.xml b/devices/pc8080/machine/exerciser/machine-test.xml index c33477bc9c..a363372c64 100644 --- a/devices/pc8080/machine/exerciser/machine-test.xml +++ b/devices/pc8080/machine/exerciser/machine-test.xml @@ -1,5 +1,5 @@ - + 8080 "Kelly Smith" Test Machine diff --git a/devices/pc8080/machine/exerciser/machine.xml b/devices/pc8080/machine/exerciser/machine.xml index 14985a9e1c..2c22728042 100644 --- a/devices/pc8080/machine/exerciser/machine.xml +++ b/devices/pc8080/machine/exerciser/machine.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Test Machine diff --git a/devices/pc8080/machine/invaders/debugger/machine.xml b/devices/pc8080/machine/invaders/debugger/machine.xml index 563838c8df..07e1c525e9 100644 --- a/devices/pc8080/machine/invaders/debugger/machine.xml +++ b/devices/pc8080/machine/invaders/debugger/machine.xml @@ -1,5 +1,5 @@ - + Space Invaders diff --git a/devices/pc8080/machine/invaders/machine.xml b/devices/pc8080/machine/invaders/machine.xml index 16964ad0e0..f4942dc289 100644 --- a/devices/pc8080/machine/invaders/machine.xml +++ b/devices/pc8080/machine/invaders/machine.xml @@ -1,5 +1,5 @@ - + Space Invaders diff --git a/devices/pc8080/machine/vt100/debugger/machine-left.xml b/devices/pc8080/machine/vt100/debugger/machine-left.xml index ecf41916c9..0cfbae96cf 100644 --- a/devices/pc8080/machine/vt100/debugger/machine-left.xml +++ b/devices/pc8080/machine/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/debugger/machine-right.xml b/devices/pc8080/machine/vt100/debugger/machine-right.xml index 8fb58f689d..d1929b8995 100644 --- a/devices/pc8080/machine/vt100/debugger/machine-right.xml +++ b/devices/pc8080/machine/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/debugger/machine.xml b/devices/pc8080/machine/vt100/debugger/machine.xml index 3c1b884749..43621ee789 100644 --- a/devices/pc8080/machine/vt100/debugger/machine.xml +++ b/devices/pc8080/machine/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine-left.xml b/devices/pc8080/machine/vt100/machine-left.xml index 00c262069f..4cd50aa74b 100644 --- a/devices/pc8080/machine/vt100/machine-left.xml +++ b/devices/pc8080/machine/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine-right.xml b/devices/pc8080/machine/vt100/machine-right.xml index b3d4038630..916a9cddc7 100644 --- a/devices/pc8080/machine/vt100/machine-right.xml +++ b/devices/pc8080/machine/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine.xml b/devices/pc8080/machine/vt100/machine.xml index 7985ea34b2..e1af5d3300 100644 --- a/devices/pc8080/machine/vt100/machine.xml +++ b/devices/pc8080/machine/vt100/machine.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml b/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml index eab7fbb7d4..104d48f691 100644 --- a/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K, Debugger diff --git a/devices/pcx86/machine/5150/cga/256kb/machine.xml b/devices/pcx86/machine/5150/cga/256kb/machine.xml index ab982fc040..ffcb679258 100644 --- a/devices/pcx86/machine/5150/cga/256kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K diff --git a/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml b/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml index 52d9c4125b..5c22774818 100644 --- a/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 384K, Soft Keyboard diff --git a/devices/pcx86/machine/5150/cga/64kb/README.md b/devices/pcx86/machine/5150/cga/64kb/README.md deleted file mode 100644 index 6f167b4423..0000000000 --- a/devices/pcx86/machine/5150/cga/64kb/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: IBM PC (Model 5150, 64Kb) with Color Display -permalink: /devices/pcx86/machine/5150/cga/64kb/ -redirect_from: - - /configs/pc/machines/5150/cga/64kb/ ---- - -IBM PC with Color Graphics (CGA) Display ----------------------------------------- - -All our 64Kb configurations of the IBM PC Model 5150 w/CGA are located here, including: - -* [IBM PC (64Kb) with Color Display](/devices/pcx86/machine/5150/cga/64kb/) -* [IBM PC (64Kb) with Color Display and Debugger](/devices/pcx86/machine/5150/cga/64kb/debugger/) -* [IBM PC (64Kb) with Color Display and Soft Keyboard](/devices/pcx86/machine/5150/cga/64kb/softkbd/) diff --git a/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml index 215e3ecb6f..fdf1361cfc 100644 --- a/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/machine.md b/devices/pcx86/machine/5150/cga/64kb/machine.md new file mode 100644 index 0000000000..03dbc74ccb --- /dev/null +++ b/devices/pcx86/machine/5150/cga/64kb/machine.md @@ -0,0 +1,12 @@ +--- +layout: page +title: IBM PC (Model 5150, 64Kb) with Color Display +permalink: /devices/pcx86/machine/5150/cga/64kb/ +redirect_from: + - /configs/pc/machines/5150/cga/64kb/ +machines: + - id: ibm5150 + type: pcx86 +--- + +{% include machine.html id="ibm5150" %} diff --git a/devices/pcx86/machine/5150/cga/64kb/machine.xml b/devices/pcx86/machine/5150/cga/64kb/machine.xml index ab75e42b3c..aa402ac07d 100644 --- a/devices/pcx86/machine/5150/cga/64kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml b/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml index 13a0366c2e..e4fae5d927 100644 --- a/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/dual/64kb/machine.xml b/devices/pcx86/machine/5150/dual/64kb/machine.xml index a26a8530c2..96d54a9329 100644 --- a/devices/pcx86/machine/5150/dual/64kb/machine.xml +++ b/devices/pcx86/machine/5150/dual/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) with Dual Displays diff --git a/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml b/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml index f89dfa0565..3234d8da91 100644 --- a/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K, Debugger diff --git a/devices/pcx86/machine/5150/mda/256kb/machine.xml b/devices/pcx86/machine/5150/mda/256kb/machine.xml index 3e497e315a..0e89de81e4 100644 --- a/devices/pcx86/machine/5150/mda/256kb/machine.xml +++ b/devices/pcx86/machine/5150/mda/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K diff --git a/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml b/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml index 36ba23287c..5b4fda2f6e 100644 --- a/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K, Debugger diff --git a/devices/pcx86/machine/5150/mda/64kb/machine.xml b/devices/pcx86/machine/5150/mda/64kb/machine.xml index f7d7eedeee..44ba9a035a 100644 --- a/devices/pcx86/machine/5150/mda/64kb/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K diff --git a/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml b/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml index 7eb49e62d1..942e1bb18a 100644 --- a/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K, Soft Keyboard diff --git a/devices/pcx86/machine/5160/cga/256kb/array/machine.xml b/devices/pcx86/machine/5160/cga/256kb/array/machine.xml index 2378a1053a..8e669bcd9b 100644 --- a/devices/pcx86/machine/5160/cga/256kb/array/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/array/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml index 9114d6908e..2e095c50ff 100644 --- a/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/machine.xml b/devices/pcx86/machine/5160/cga/256kb/machine.xml index a651ba0b1d..7ec7437654 100644 --- a/devices/pcx86/machine/5160/cga/256kb/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml index 2480c6186c..1bdcfa0de5 100644 --- a/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml index 1d130d76ca..633f55273d 100644 --- a/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 512K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml index 7d8adce010..272b10ea2b 100644 --- a/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive (Formatted) diff --git a/devices/pcx86/machine/5160/cga/640kb/machine.xml b/devices/pcx86/machine/5160/cga/640kb/machine.xml index 7c78e3a091..5e4a5cd0a6 100644 --- a/devices/pcx86/machine/5160/cga/640kb/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive (Formatted) diff --git a/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml index 72083f3b48..7216d6d8ab 100644 --- a/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml index 6ee1919fce..5ad2220006 100644 --- a/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/256kb/machine.xml b/devices/pcx86/machine/5160/ega/256kb/machine.xml index 3ab6e9f4b3..05775cc48e 100644 --- a/devices/pcx86/machine/5160/ega/256kb/machine.xml +++ b/devices/pcx86/machine/5160/ega/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/array/machine.xml b/devices/pcx86/machine/5160/ega/640kb/array/machine.xml index dd553fa735..357782489d 100644 --- a/devices/pcx86/machine/5160/ega/640kb/array/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/array/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml b/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml index 81e35b0ed4..a2291aa464 100644 --- a/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5160/ega/640kb/machine.xml b/devices/pcx86/machine/5160/ega/640kb/machine.xml index a2c579ae16..1b65e4130e 100644 --- a/devices/pcx86/machine/5160/ega/640kb/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml index d4950c9f70..2395736177 100644 --- a/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml b/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml index b65960caca..512448cf42 100644 --- a/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml b/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml index 12d258e8e8..ba03136e44 100644 --- a/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/machine.xml b/devices/pcx86/machine/5160/mda/256kb/machine.xml index 786e8e9bf5..e1907203c6 100644 --- a/devices/pcx86/machine/5160/mda/256kb/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml b/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml index 05ea1e752a..c0aaaf6f7f 100644 --- a/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 64K, 10Mb Drive diff --git a/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml index 1bb0c52fb2..9cc1cd5760 100644 --- a/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display diff --git a/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml b/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml index 66dca29d42..cdb293de11 100644 --- a/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml index 65c0a6369f..1f674a7a2c 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (6Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml index fd6e01d4ef..7844d5a3d8 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (6Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml index 3c286f2d5d..fc6a0fca60 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml index 33da7e4759..1c8fd0d112 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml index 4df60160d4..19b18bf2c8 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml index 1c56d0615c..1ec836cfe9 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml index 4f47735bd5..87b9724578 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml index bc4d974d8f..5c3a5b3dc6 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml index 53e343d90c..b47075768c 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml b/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml index 472724265a..1f311a04ed 100644 --- a/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT, 640Kb RAM, 128K EGA diff --git a/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml b/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml index 98b34ee345..18a1f50fd3 100644 --- a/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml +++ b/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT, 640Kb RAM, 128K EGA diff --git a/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml index 737c5af709..1c4bcc1111 100644 --- a/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display diff --git a/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml b/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml index 0a234df3eb..00408bbc6d 100644 --- a/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display diff --git a/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml b/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml index fe4459a92e..8ef84076eb 100644 --- a/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/vga/2048kb/machine.xml b/devices/pcx86/machine/5170/vga/2048kb/machine.xml index 0702fc68cf..4ec47a29fb 100644 --- a/devices/pcx86/machine/5170/vga/2048kb/machine.xml +++ b/devices/pcx86/machine/5170/vga/2048kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml b/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml index 7ab169b93e..81a0822138 100644 --- a/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 4Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/vga/4096kb/machine.xml b/devices/pcx86/machine/5170/vga/4096kb/machine.xml index 0617ee2f57..f01c3efd20 100644 --- a/devices/pcx86/machine/5170/vga/4096kb/machine.xml +++ b/devices/pcx86/machine/5170/vga/4096kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 4Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml index 2a1cff415e..37f75897f7 100644 --- a/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + AT&T Personal Computer 6300 with Color Display diff --git a/devices/pcx86/machine/att/6300/cga/640kb/machine.xml b/devices/pcx86/machine/att/6300/cga/640kb/machine.xml index 1b65e922ac..438c3c2ca3 100644 --- a/devices/pcx86/machine/att/6300/cga/640kb/machine.xml +++ b/devices/pcx86/machine/att/6300/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + AT&T Personal Computer 6300 with Color Display diff --git a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml index 96dba5bd3c..5f0c51594d 100644 --- a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + Columbia Data Products MPC 1600 with Color Display diff --git a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml index 79a6ef93bb..9219eb9a83 100644 --- a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml +++ b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + Columbia Data Products MPC 1600 with Color Display diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml index f348d65636..3a8ad778d0 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml index aadc68e992..68f0d06516 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml index cd7a936ec4..42b0c61568 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml index feb1e3c577..46256e03ff 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml index 54e6eb8be2..4644a35c4b 100644 --- a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, COMPAQ VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml index 593ac21eac..94f9603294 100644 --- a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, COMPAQ VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml index 792d6fcd37..0baffa0656 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, IBM VGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml index 8c17dc34f8..54b0dc48c7 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, IBM VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml index 891a5bc1eb..cec24c3b01 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, IBM VGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml index 62abe8986e..2b533994bf 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, IBM VGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/custom/machine.xml b/devices/pcx86/machine/custom/machine.xml index d3af02dfb0..21e2fa4512 100644 --- a/devices/pcx86/machine/custom/machine.xml +++ b/devices/pcx86/machine/custom/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) with Monochrome Display diff --git a/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml index 2519fdc95f..80d4ac66db 100644 --- a/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + Zenith Z-150 with Color Display diff --git a/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml b/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml index 6494c4faf8..605d925582 100644 --- a/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml +++ b/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + Zenith Z-150 with Color Display diff --git a/devices/pdp10/machine/ka10/test/debugger/machine.xml b/devices/pdp10/machine/ka10/test/debugger/machine.xml index 541d368150..f604d0c5e8 100644 --- a/devices/pdp10/machine/ka10/test/debugger/machine.xml +++ b/devices/pdp10/machine/ka10/test/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-10 (Model KA10) with Debugger diff --git a/devices/pdp10/machine/ka10/test/machine.xml b/devices/pdp10/machine/ka10/test/machine.xml index d77f949ba1..005c5339f1 100644 --- a/devices/pdp10/machine/ka10/test/machine.xml +++ b/devices/pdp10/machine/ka10/test/machine.xml @@ -1,5 +1,5 @@ - + PDP-10 Test Machine diff --git a/devices/pdp11/machine/1120/basic/debugger/machine.xml b/devices/pdp11/machine/1120/basic/debugger/machine.xml index baf6aac3b5..6c56bc02f3 100644 --- a/devices/pdp11/machine/1120/basic/debugger/machine.xml +++ b/devices/pdp11/machine/1120/basic/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, PDP-11 BASIC, Debugger diff --git a/devices/pdp11/machine/1120/basic/machine.xml b/devices/pdp11/machine/1120/basic/machine.xml index df03fbc1d1..3e9e5d7a8d 100644 --- a/devices/pdp11/machine/1120/basic/machine.xml +++ b/devices/pdp11/machine/1120/basic/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, PDP-11 BASIC diff --git a/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml b/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml index 3ba60eb6f4..f68dc7da2e 100644 --- a/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml +++ b/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, Bootstrap Loader, Debugger diff --git a/devices/pdp11/machine/1120/bootstrap/machine.xml b/devices/pdp11/machine/1120/bootstrap/machine.xml index f1061dc6fd..9bb16e031e 100644 --- a/devices/pdp11/machine/1120/bootstrap/machine.xml +++ b/devices/pdp11/machine/1120/bootstrap/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, Bootstrap Loader diff --git a/devices/pdp11/machine/1120/monitor/debugger/machine.xml b/devices/pdp11/machine/1120/monitor/debugger/machine.xml index c5c8fbbbb4..1b0f94c6d6 100644 --- a/devices/pdp11/machine/1120/monitor/debugger/machine.xml +++ b/devices/pdp11/machine/1120/monitor/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 Boot Monitor with 56Kb and Debugger diff --git a/devices/pdp11/machine/1120/monitor/machine.xml b/devices/pdp11/machine/1120/monitor/machine.xml index a33c45e7c9..b7161f80ae 100644 --- a/devices/pdp11/machine/1120/monitor/machine.xml +++ b/devices/pdp11/machine/1120/monitor/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 Boot Monitor with 56Kb diff --git a/devices/pdp11/machine/1120/panel/debugger/machine.xml b/devices/pdp11/machine/1120/panel/debugger/machine.xml index 20cb167b12..b145ecad4a 100644 --- a/devices/pdp11/machine/1120/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1120/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel and Debugger diff --git a/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml b/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml index a4f41e629a..9a1a8d268b 100644 --- a/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml +++ b/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel and TEST 14 diff --git a/devices/pdp11/machine/1120/panel/machine.xml b/devices/pdp11/machine/1120/panel/machine.xml index 55eba85396..45d8458afb 100644 --- a/devices/pdp11/machine/1120/panel/machine.xml +++ b/devices/pdp11/machine/1120/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel diff --git a/devices/pdp11/machine/1145/panel/debugger/machine.xml b/devices/pdp11/machine/1145/panel/debugger/machine.xml index 0029dc39f9..3a9b1851c9 100644 --- a/devices/pdp11/machine/1145/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1145/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1145/panel/machine.xml b/devices/pdp11/machine/1145/panel/machine.xml index 2f92ea54b0..7dfe32b47f 100644 --- a/devices/pdp11/machine/1145/panel/machine.xml +++ b/devices/pdp11/machine/1145/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml b/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml index 7cf2d48aa3..f1b5fff51d 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml b/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml index c2bdd8f426..5f03ea70df 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine.xml b/devices/pdp11/machine/1145/vt100/debugger/machine.xml index abc9de06b3..3aefa8f78a 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/machine-left.xml b/devices/pdp11/machine/1145/vt100/machine-left.xml index b026f0de8a..ccdcfaf55c 100644 --- a/devices/pdp11/machine/1145/vt100/machine-left.xml +++ b/devices/pdp11/machine/1145/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/machine-right.xml b/devices/pdp11/machine/1145/vt100/machine-right.xml index 56d0abf2b3..8af5a9a98c 100644 --- a/devices/pdp11/machine/1145/vt100/machine-right.xml +++ b/devices/pdp11/machine/1145/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/machine.xml b/devices/pdp11/machine/1145/vt100/machine.xml index d47b0d7b60..a1b9e715e7 100644 --- a/devices/pdp11/machine/1145/vt100/machine.xml +++ b/devices/pdp11/machine/1145/vt100/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/4mb/debugger/machine.xml b/devices/pdp11/machine/1170/4mb/debugger/machine.xml index e9a4d31099..a1a4413339 100644 --- a/devices/pdp11/machine/1170/4mb/debugger/machine.xml +++ b/devices/pdp11/machine/1170/4mb/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 4Mb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/4mb/machine.xml b/devices/pdp11/machine/1170/4mb/machine.xml index 4ca30a1d51..cd2ec11f52 100644 --- a/devices/pdp11/machine/1170/4mb/machine.xml +++ b/devices/pdp11/machine/1170/4mb/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 4Mb and Front Panel diff --git a/devices/pdp11/machine/1170/monitor/debugger/machine.xml b/devices/pdp11/machine/1170/monitor/debugger/machine.xml index 5d03c9fa77..ceabb50caa 100644 --- a/devices/pdp11/machine/1170/monitor/debugger/machine.xml +++ b/devices/pdp11/machine/1170/monitor/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Boot Monitor, and Debugger diff --git a/devices/pdp11/machine/1170/monitor/machine.xml b/devices/pdp11/machine/1170/monitor/machine.xml index 89bd91fc9e..57835c13b6 100644 --- a/devices/pdp11/machine/1170/monitor/machine.xml +++ b/devices/pdp11/machine/1170/monitor/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Boot Monitor diff --git a/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml b/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml index 6c6a5597a0..1ead348f25 100644 --- a/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml +++ b/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb running CPU Exerciser diff --git a/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml b/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml index 2ff22bac3c..0e12ebe105 100644 --- a/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml +++ b/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/panel/debugger/machine.xml b/devices/pdp11/machine/1170/panel/debugger/machine.xml index f10334daf0..6c2315ea6f 100644 --- a/devices/pdp11/machine/1170/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1170/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/panel/machine.xml b/devices/pdp11/machine/1170/panel/machine.xml index fc7179828e..7b876f403e 100644 --- a/devices/pdp11/machine/1170/panel/machine.xml +++ b/devices/pdp11/machine/1170/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml b/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml index dad64cdb87..5f4f5868ef 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml b/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml index a697eb711b..f9aec1292e 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine.xml b/devices/pdp11/machine/1170/vt100/debugger/machine.xml index c65dfb9eb6..8c06ef4d88 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/machine-left.xml b/devices/pdp11/machine/1170/vt100/machine-left.xml index ad704b0324..065327b8f7 100644 --- a/devices/pdp11/machine/1170/vt100/machine-left.xml +++ b/devices/pdp11/machine/1170/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/machine-right.xml b/devices/pdp11/machine/1170/vt100/machine-right.xml index bbdb486870..e4f6e7b061 100644 --- a/devices/pdp11/machine/1170/vt100/machine-right.xml +++ b/devices/pdp11/machine/1170/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/machine.xml b/devices/pdp11/machine/1170/vt100/machine.xml index de539dc984..eee82ff94f 100644 --- a/devices/pdp11/machine/1170/vt100/machine.xml +++ b/devices/pdp11/machine/1170/vt100/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/disks/pcx86/apps/ibm/topview/1.01/manifest.xml b/disks/pcx86/apps/ibm/topview/1.01/manifest.xml index efdad6c500..2c64277b6d 100644 --- a/disks/pcx86/apps/ibm/topview/1.01/manifest.xml +++ b/disks/pcx86/apps/ibm/topview/1.01/manifest.xml @@ -1,5 +1,5 @@ - + TopView 1.01 diff --git a/disks/pcx86/apps/ibm/topview/1.10/manifest.xml b/disks/pcx86/apps/ibm/topview/1.10/manifest.xml index 69fe72c793..04fad28ba9 100644 --- a/disks/pcx86/apps/ibm/topview/1.10/manifest.xml +++ b/disks/pcx86/apps/ibm/topview/1.10/manifest.xml @@ -1,5 +1,5 @@ - + TopView 1.10 diff --git a/disks/pcx86/apps/lotus/123/1a/manifest.xml b/disks/pcx86/apps/lotus/123/1a/manifest.xml index aa4c04983b..bcd526a219 100644 --- a/disks/pcx86/apps/lotus/123/1a/manifest.xml +++ b/disks/pcx86/apps/lotus/123/1a/manifest.xml @@ -1,5 +1,5 @@ - + 1-2-3 1A diff --git a/disks/pcx86/apps/lotus/123/1as/manifest.xml b/disks/pcx86/apps/lotus/123/1as/manifest.xml index 49506f272d..496e4c9ac7 100644 --- a/disks/pcx86/apps/lotus/123/1as/manifest.xml +++ b/disks/pcx86/apps/lotus/123/1as/manifest.xml @@ -1,5 +1,5 @@ - + 1-2-3 1A* diff --git a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml index 7a53360319..056b9f7c3c 100644 --- a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml +++ b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Chart 2.02 diff --git a/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml b/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml index cbfa6dcbcc..be532dcf92 100644 --- a/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml +++ b/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml @@ -1,5 +1,5 @@ - + Word for Windows 2.0c diff --git a/disks/pcx86/apps/microsoft/word/3.0/manifest.xml b/disks/pcx86/apps/microsoft/word/3.0/manifest.xml index 7950ec87b7..b10a2e7e84 100644 --- a/disks/pcx86/apps/microsoft/word/3.0/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/3.0/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 3.0 diff --git a/disks/pcx86/apps/microsoft/word/3.1/manifest.xml b/disks/pcx86/apps/microsoft/word/3.1/manifest.xml index 7e6e9fe3de..15913855ba 100644 --- a/disks/pcx86/apps/microsoft/word/3.1/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/3.1/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 3.1 diff --git a/disks/pcx86/apps/microsoft/word/5.0/manifest.xml b/disks/pcx86/apps/microsoft/word/5.0/manifest.xml index 3a7f2ace60..4035dccade 100644 --- a/disks/pcx86/apps/microsoft/word/5.0/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/5.0/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 5.0 diff --git a/disks/pcx86/apps/other/dbase2/2.4/manifest.xml b/disks/pcx86/apps/other/dbase2/2.4/manifest.xml index 50734f7b4d..3d8bcec454 100644 --- a/disks/pcx86/apps/other/dbase2/2.4/manifest.xml +++ b/disks/pcx86/apps/other/dbase2/2.4/manifest.xml @@ -1,5 +1,5 @@ - + dBASE II 2.4 diff --git a/disks/pcx86/apps/other/dbase3/1.0/manifest.xml b/disks/pcx86/apps/other/dbase3/1.0/manifest.xml index caa94a8841..d9022d1273 100644 --- a/disks/pcx86/apps/other/dbase3/1.0/manifest.xml +++ b/disks/pcx86/apps/other/dbase3/1.0/manifest.xml @@ -1,5 +1,5 @@ - + dBASE III 1.0 diff --git a/disks/pcx86/apps/other/omniview/4.30/manifest.xml b/disks/pcx86/apps/other/omniview/4.30/manifest.xml index 763c24d918..d0535aa5d9 100644 --- a/disks/pcx86/apps/other/omniview/4.30/manifest.xml +++ b/disks/pcx86/apps/other/omniview/4.30/manifest.xml @@ -1,5 +1,5 @@ - + Omniview 386 4.30 diff --git a/disks/pcx86/apps/other/sc2/1.00/manifest.xml b/disks/pcx86/apps/other/sc2/1.00/manifest.xml index b612a624dc..16511b9eb4 100644 --- a/disks/pcx86/apps/other/sc2/1.00/manifest.xml +++ b/disks/pcx86/apps/other/sc2/1.00/manifest.xml @@ -1,5 +1,5 @@ - + SuperCalc2 1.00 diff --git a/disks/pcx86/apps/other/sc3/1.00/manifest.xml b/disks/pcx86/apps/other/sc3/1.00/manifest.xml index b194f2056e..c67c44151b 100644 --- a/disks/pcx86/apps/other/sc3/1.00/manifest.xml +++ b/disks/pcx86/apps/other/sc3/1.00/manifest.xml @@ -1,5 +1,5 @@ - + SuperCalc3 1.00 diff --git a/disks/pcx86/apps/other/wordstar/3.30/manifest.xml b/disks/pcx86/apps/other/wordstar/3.30/manifest.xml index d8e77d40ce..c7c1fc7c8c 100644 --- a/disks/pcx86/apps/other/wordstar/3.30/manifest.xml +++ b/disks/pcx86/apps/other/wordstar/3.30/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 3.30 diff --git a/disks/pcx86/apps/other/wordstar/4.00/manifest.xml b/disks/pcx86/apps/other/wordstar/4.00/manifest.xml index 90428050b7..586191bb59 100644 --- a/disks/pcx86/apps/other/wordstar/4.00/manifest.xml +++ b/disks/pcx86/apps/other/wordstar/4.00/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 4.00 diff --git a/disks/pcx86/cpm/1.1b/debugger/machine.xml b/disks/pcx86/cpm/1.1b/debugger/machine.xml index 1b881f19ff..40daf4a31b 100644 --- a/disks/pcx86/cpm/1.1b/debugger/machine.xml +++ b/disks/pcx86/cpm/1.1b/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K, Debugger diff --git a/disks/pcx86/cpm/1.1b/machine.xml b/disks/pcx86/cpm/1.1b/machine.xml index 589db60ce0..6a2efa65d0 100644 --- a/disks/pcx86/cpm/1.1b/machine.xml +++ b/disks/pcx86/cpm/1.1b/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K diff --git a/disks/pcx86/cpm/1.1b/manifest.xml b/disks/pcx86/cpm/1.1b/manifest.xml index 9c8960ee1f..04bd6e4e01 100644 --- a/disks/pcx86/cpm/1.1b/manifest.xml +++ b/disks/pcx86/cpm/1.1b/manifest.xml @@ -1,5 +1,5 @@ - + CP/M-86 1.1B diff --git a/disks/pcx86/diags/ibm/manifest.xml b/disks/pcx86/diags/ibm/manifest.xml index c6cf0a73d9..ef6cadbeb9 100644 --- a/disks/pcx86/diags/ibm/manifest.xml +++ b/disks/pcx86/diags/ibm/manifest.xml @@ -1,5 +1,5 @@ - + IBM PC Diagnostics Diagnostics diff --git a/disks/pcx86/dos/compaq/1.11/manifest.xml b/disks/pcx86/dos/compaq/1.11/manifest.xml index 8ec30ff638..11d9768024 100644 --- a/disks/pcx86/dos/compaq/1.11/manifest.xml +++ b/disks/pcx86/dos/compaq/1.11/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 1.11 diff --git a/disks/pcx86/dos/compaq/1.12/manifest.xml b/disks/pcx86/dos/compaq/1.12/manifest.xml index 7ec10fdde4..fc04283a8c 100644 --- a/disks/pcx86/dos/compaq/1.12/manifest.xml +++ b/disks/pcx86/dos/compaq/1.12/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 1.12 diff --git a/disks/pcx86/dos/compaq/2.12/manifest.xml b/disks/pcx86/dos/compaq/2.12/manifest.xml index cc0dffe0d7..b11e50d865 100644 --- a/disks/pcx86/dos/compaq/2.12/manifest.xml +++ b/disks/pcx86/dos/compaq/2.12/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 2.12 diff --git a/disks/pcx86/dos/compaq/3.00/manifest.xml b/disks/pcx86/dos/compaq/3.00/manifest.xml index 5af70163ec..b3effd8d9d 100644 --- a/disks/pcx86/dos/compaq/3.00/manifest.xml +++ b/disks/pcx86/dos/compaq/3.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.00 diff --git a/disks/pcx86/dos/compaq/3.10/manifest.xml b/disks/pcx86/dos/compaq/3.10/manifest.xml index cf6191791e..67b4e996fb 100644 --- a/disks/pcx86/dos/compaq/3.10/manifest.xml +++ b/disks/pcx86/dos/compaq/3.10/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.10 diff --git a/disks/pcx86/dos/compaq/3.31/manifest.xml b/disks/pcx86/dos/compaq/3.31/manifest.xml index 621dd8a640..9d0c275946 100644 --- a/disks/pcx86/dos/compaq/3.31/manifest.xml +++ b/disks/pcx86/dos/compaq/3.31/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.31 diff --git a/disks/pcx86/dos/ibm/0.90/manifest.xml b/disks/pcx86/dos/ibm/0.90/manifest.xml index 34301d433e..17c87ed649 100644 --- a/disks/pcx86/dos/ibm/0.90/manifest.xml +++ b/disks/pcx86/dos/ibm/0.90/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 0.90 diff --git a/disks/pcx86/dos/ibm/1.00/manifest.xml b/disks/pcx86/dos/ibm/1.00/manifest.xml index 6f90aab788..9d4eee45c2 100644 --- a/disks/pcx86/dos/ibm/1.00/manifest.xml +++ b/disks/pcx86/dos/ibm/1.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 1.00 diff --git a/disks/pcx86/dos/ibm/1.10/manifest.xml b/disks/pcx86/dos/ibm/1.10/manifest.xml index e58ab60fa1..58c6d36a16 100644 --- a/disks/pcx86/dos/ibm/1.10/manifest.xml +++ b/disks/pcx86/dos/ibm/1.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 1.10 diff --git a/disks/pcx86/dos/ibm/2.00/manifest.xml b/disks/pcx86/dos/ibm/2.00/manifest.xml index 477a70f0b8..01878bad6c 100644 --- a/disks/pcx86/dos/ibm/2.00/manifest.xml +++ b/disks/pcx86/dos/ibm/2.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 2.00 diff --git a/disks/pcx86/dos/ibm/2.10/manifest.xml b/disks/pcx86/dos/ibm/2.10/manifest.xml index 83a19c9a9f..3368808d36 100644 --- a/disks/pcx86/dos/ibm/2.10/manifest.xml +++ b/disks/pcx86/dos/ibm/2.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 2.10 diff --git a/disks/pcx86/dos/ibm/3.00/manifest.xml b/disks/pcx86/dos/ibm/3.00/manifest.xml index 43d2df851a..8736887e01 100644 --- a/disks/pcx86/dos/ibm/3.00/manifest.xml +++ b/disks/pcx86/dos/ibm/3.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.00 diff --git a/disks/pcx86/dos/ibm/3.10/manifest.xml b/disks/pcx86/dos/ibm/3.10/manifest.xml index 3dfd6dcbc2..068d158219 100644 --- a/disks/pcx86/dos/ibm/3.10/manifest.xml +++ b/disks/pcx86/dos/ibm/3.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.10 diff --git a/disks/pcx86/dos/ibm/3.20/manifest.xml b/disks/pcx86/dos/ibm/3.20/manifest.xml index 62e8d8be53..04ed9c97a3 100644 --- a/disks/pcx86/dos/ibm/3.20/manifest.xml +++ b/disks/pcx86/dos/ibm/3.20/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.20 diff --git a/disks/pcx86/dos/ibm/3.30/manifest.xml b/disks/pcx86/dos/ibm/3.30/manifest.xml index 59b8e3c641..96b06d6ac3 100644 --- a/disks/pcx86/dos/ibm/3.30/manifest.xml +++ b/disks/pcx86/dos/ibm/3.30/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.30 diff --git a/disks/pcx86/dos/ibm/4.00/manifest.xml b/disks/pcx86/dos/ibm/4.00/manifest.xml index bbc1047c16..c6c3d0ec7e 100644 --- a/disks/pcx86/dos/ibm/4.00/manifest.xml +++ b/disks/pcx86/dos/ibm/4.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 4.00 diff --git a/disks/pcx86/dos/ibm/5.00/manifest.xml b/disks/pcx86/dos/ibm/5.00/manifest.xml index e3c3f6e462..66a78ceaa5 100644 --- a/disks/pcx86/dos/ibm/5.00/manifest.xml +++ b/disks/pcx86/dos/ibm/5.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 5.00 diff --git a/disks/pcx86/dos/ibm/6.10/manifest.xml b/disks/pcx86/dos/ibm/6.10/manifest.xml index ecab107f5b..3d2c0110a9 100644 --- a/disks/pcx86/dos/ibm/6.10/manifest.xml +++ b/disks/pcx86/dos/ibm/6.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 6.10 diff --git a/disks/pcx86/dos/ibm/6.30/manifest.xml b/disks/pcx86/dos/ibm/6.30/manifest.xml index d575c47fba..358047956d 100644 --- a/disks/pcx86/dos/ibm/6.30/manifest.xml +++ b/disks/pcx86/dos/ibm/6.30/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 6.30 diff --git a/disks/pcx86/dos/ibm/7.00/manifest.xml b/disks/pcx86/dos/ibm/7.00/manifest.xml index 7eac9d9279..0216ea2392 100644 --- a/disks/pcx86/dos/ibm/7.00/manifest.xml +++ b/disks/pcx86/dos/ibm/7.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 7.00 diff --git a/disks/pcx86/dos/microsoft/2.00/manifest.xml b/disks/pcx86/dos/microsoft/2.00/manifest.xml index 107dd0197f..5b60730bd8 100644 --- a/disks/pcx86/dos/microsoft/2.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/2.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 2.00 diff --git a/disks/pcx86/dos/microsoft/3.20/manifest.xml b/disks/pcx86/dos/microsoft/3.20/manifest.xml index 07a8e7019f..e491de0270 100644 --- a/disks/pcx86/dos/microsoft/3.20/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.20/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.20 diff --git a/disks/pcx86/dos/microsoft/3.21/manifest.xml b/disks/pcx86/dos/microsoft/3.21/manifest.xml index 5b75bf76a3..861979791c 100644 --- a/disks/pcx86/dos/microsoft/3.21/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.21/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.21 diff --git a/disks/pcx86/dos/microsoft/3.30/manifest.xml b/disks/pcx86/dos/microsoft/3.30/manifest.xml index 6b73a456d0..669c65a35d 100644 --- a/disks/pcx86/dos/microsoft/3.30/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.30/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.30 diff --git a/disks/pcx86/dos/microsoft/3.31/manifest.xml b/disks/pcx86/dos/microsoft/3.31/manifest.xml index 75f35393fb..ea2b6d3d91 100644 --- a/disks/pcx86/dos/microsoft/3.31/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.31/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.31 diff --git a/disks/pcx86/dos/microsoft/4.00/manifest.xml b/disks/pcx86/dos/microsoft/4.00/manifest.xml index 13b215ae1f..1b1426ece1 100644 --- a/disks/pcx86/dos/microsoft/4.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.00 diff --git a/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml b/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml index 6dad7b1783..04b39bbf7d 100644 --- a/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.01 diff --git a/disks/pcx86/dos/microsoft/4.01/manifest.xml b/disks/pcx86/dos/microsoft/4.01/manifest.xml index d734a02804..4dd8fd1d2f 100644 --- a/disks/pcx86/dos/microsoft/4.01/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.01/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.01 diff --git a/disks/pcx86/dos/microsoft/4.0M/manifest.xml b/disks/pcx86/dos/microsoft/4.0M/manifest.xml index 7d4a78df7e..6a28483981 100644 --- a/disks/pcx86/dos/microsoft/4.0M/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.0M/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.0M diff --git a/disks/pcx86/dos/microsoft/5.00/manifest.xml b/disks/pcx86/dos/microsoft/5.00/manifest.xml index 952925363f..5229258ece 100644 --- a/disks/pcx86/dos/microsoft/5.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/5.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 5.00 diff --git a/disks/pcx86/dos/microsoft/6.00/manifest.xml b/disks/pcx86/dos/microsoft/6.00/manifest.xml index dfac679de7..f88b62f86c 100644 --- a/disks/pcx86/dos/microsoft/6.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.00 diff --git a/disks/pcx86/dos/microsoft/6.20/manifest.xml b/disks/pcx86/dos/microsoft/6.20/manifest.xml index 940692ee25..9126db7d6a 100644 --- a/disks/pcx86/dos/microsoft/6.20/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.20/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.20 diff --git a/disks/pcx86/dos/microsoft/6.22/manifest.xml b/disks/pcx86/dos/microsoft/6.22/manifest.xml index 68d8f1335f..a688920b0f 100644 --- a/disks/pcx86/dos/microsoft/6.22/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.22/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.22 diff --git a/disks/pcx86/empty/manifest.xml b/disks/pcx86/empty/manifest.xml index 6416d8d2bb..288d78c5b0 100644 --- a/disks/pcx86/empty/manifest.xml +++ b/disks/pcx86/empty/manifest.xml @@ -1,5 +1,5 @@ - + Empty Diskettes diff --git a/disks/pcx86/games/id/wolf3d/manifest.xml b/disks/pcx86/games/id/wolf3d/manifest.xml index 7bc76ea4c6..17f8a9088d 100644 --- a/disks/pcx86/games/id/wolf3d/manifest.xml +++ b/disks/pcx86/games/id/wolf3d/manifest.xml @@ -1,5 +1,5 @@ - + Wolfenstein 3D diff --git a/disks/pcx86/games/infocom/hhiker/manifest.xml b/disks/pcx86/games/infocom/hhiker/manifest.xml index 8e7e0214b1..ea08861d5e 100644 --- a/disks/pcx86/games/infocom/hhiker/manifest.xml +++ b/disks/pcx86/games/infocom/hhiker/manifest.xml @@ -1,5 +1,5 @@ - + The Hitchhiker's Guide to the Galaxy diff --git a/disks/pcx86/games/infocom/machine.xml b/disks/pcx86/games/infocom/machine.xml index 0caac81479..facaf419be 100644 --- a/disks/pcx86/games/infocom/machine.xml +++ b/disks/pcx86/games/infocom/machine.xml @@ -1,5 +1,5 @@ - + IBM PC Model 5150 (CGA, 64K) diff --git a/disks/pcx86/games/infocom/phobos/manifest.xml b/disks/pcx86/games/infocom/phobos/manifest.xml index fa5d39007e..66f3f714de 100644 --- a/disks/pcx86/games/infocom/phobos/manifest.xml +++ b/disks/pcx86/games/infocom/phobos/manifest.xml @@ -1,5 +1,5 @@ - + Leather Goddesses of Phobos diff --git a/disks/pcx86/games/infocom/planet/manifest.xml b/disks/pcx86/games/infocom/planet/manifest.xml index a76970b5c7..e6243526a6 100644 --- a/disks/pcx86/games/infocom/planet/manifest.xml +++ b/disks/pcx86/games/infocom/planet/manifest.xml @@ -1,5 +1,5 @@ - + Planetfall diff --git a/disks/pcx86/games/infocom/zork1/debugger/machine.xml b/disks/pcx86/games/infocom/zork1/debugger/machine.xml index d35d6f140a..5770e10b52 100644 --- a/disks/pcx86/games/infocom/zork1/debugger/machine.xml +++ b/disks/pcx86/games/infocom/zork1/debugger/machine.xml @@ -1,5 +1,5 @@ - + Zork I (IBM PC Model 5150) diff --git a/disks/pcx86/games/infocom/zork1/manifest.xml b/disks/pcx86/games/infocom/zork1/manifest.xml index 7b05aa7c21..e247c5abda 100644 --- a/disks/pcx86/games/infocom/zork1/manifest.xml +++ b/disks/pcx86/games/infocom/zork1/manifest.xml @@ -1,5 +1,5 @@ - + Zork I diff --git a/disks/pcx86/games/infocom/zork2/manifest.xml b/disks/pcx86/games/infocom/zork2/manifest.xml index e3dd3aa480..532003c434 100644 --- a/disks/pcx86/games/infocom/zork2/manifest.xml +++ b/disks/pcx86/games/infocom/zork2/manifest.xml @@ -1,5 +1,5 @@ - + Zork II diff --git a/disks/pcx86/games/infocom/zork3/manifest.xml b/disks/pcx86/games/infocom/zork3/manifest.xml index 9a7649a2fd..8337243ebf 100644 --- a/disks/pcx86/games/infocom/zork3/manifest.xml +++ b/disks/pcx86/games/infocom/zork3/manifest.xml @@ -1,5 +1,5 @@ - + Zork III diff --git a/disks/pcx86/games/microsoft/adventure/machine.xml b/disks/pcx86/games/microsoft/adventure/machine.xml index bca0583153..d0cb8630e8 100644 --- a/disks/pcx86/games/microsoft/adventure/machine.xml +++ b/disks/pcx86/games/microsoft/adventure/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) running Microsoft Adventure diff --git a/disks/pcx86/games/microsoft/adventure/manifest.xml b/disks/pcx86/games/microsoft/adventure/manifest.xml index 27fa747650..40f33f7108 100644 --- a/disks/pcx86/games/microsoft/adventure/manifest.xml +++ b/disks/pcx86/games/microsoft/adventure/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Adventure 1.00 diff --git a/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml b/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml index d33cf60278..5da203861b 100644 --- a/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml +++ b/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Flight Simulator diff --git a/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml b/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml index bcfcdca5cb..9e3675e3c7 100644 --- a/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml +++ b/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Flight Simulator diff --git a/disks/pcx86/minix/1.1/manifest.xml b/disks/pcx86/minix/1.1/manifest.xml index 03033d0200..10cbb73b57 100644 --- a/disks/pcx86/minix/1.1/manifest.xml +++ b/disks/pcx86/minix/1.1/manifest.xml @@ -1,5 +1,5 @@ - + MINIX 1.1 diff --git a/disks/pcx86/os2/ibm/1.0/manifest.xml b/disks/pcx86/os2/ibm/1.0/manifest.xml index 6d5afc0dfc..14b0e27ed0 100644 --- a/disks/pcx86/os2/ibm/1.0/manifest.xml +++ b/disks/pcx86/os2/ibm/1.0/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.0 diff --git a/disks/pcx86/os2/ibm/1.1/manifest.xml b/disks/pcx86/os2/ibm/1.1/manifest.xml index 6778873c84..409bd57f81 100644 --- a/disks/pcx86/os2/ibm/1.1/manifest.xml +++ b/disks/pcx86/os2/ibm/1.1/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.1 diff --git a/disks/pcx86/os2/ibm/1.3/manifest.xml b/disks/pcx86/os2/ibm/1.3/manifest.xml index 24f0380667..35a17a7d5a 100644 --- a/disks/pcx86/os2/ibm/1.3/manifest.xml +++ b/disks/pcx86/os2/ibm/1.3/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.3 diff --git a/disks/pcx86/os2/microsoft/1.0/manifest.xml b/disks/pcx86/os2/microsoft/1.0/manifest.xml index e6a5a166e9..33d4d3665f 100644 --- a/disks/pcx86/os2/microsoft/1.0/manifest.xml +++ b/disks/pcx86/os2/microsoft/1.0/manifest.xml @@ -1,5 +1,5 @@ - + MS OS/2 1.0 diff --git a/disks/pcx86/os2/misc/manifest.xml b/disks/pcx86/os2/misc/manifest.xml index db60c062b6..3fd6ffadcc 100644 --- a/disks/pcx86/os2/misc/manifest.xml +++ b/disks/pcx86/os2/misc/manifest.xml @@ -1,5 +1,5 @@ - + OS/2 Prototype Disks diff --git a/disks/pcx86/personal/manifest.xml b/disks/pcx86/personal/manifest.xml index dd105abbfc..6fb6201c09 100644 --- a/disks/pcx86/personal/manifest.xml +++ b/disks/pcx86/personal/manifest.xml @@ -1,5 +1,5 @@ - + PCjs Personal Disk Collection diff --git a/disks/pcx86/shareware/pcmag/manifest.xml b/disks/pcx86/shareware/pcmag/manifest.xml index 483dd3304a..f36138fd79 100644 --- a/disks/pcx86/shareware/pcmag/manifest.xml +++ b/disks/pcx86/shareware/pcmag/manifest.xml @@ -1,5 +1,5 @@ - + PC Magazine Diskettes diff --git a/disks/pcx86/shareware/pcsig08/debugger/machine.xml b/disks/pcx86/shareware/pcsig08/debugger/machine.xml index 8a85786857..84a218ae4c 100644 --- a/disks/pcx86/shareware/pcsig08/debugger/machine.xml +++ b/disks/pcx86/shareware/pcsig08/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/disks/pcx86/shareware/pcsig08/machine.xml b/disks/pcx86/shareware/pcsig08/machine.xml index 389537ae3d..6314fd9ef3 100644 --- a/disks/pcx86/shareware/pcsig08/machine.xml +++ b/disks/pcx86/shareware/pcsig08/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/disks/pcx86/shareware/pcsig08/manifest.xml b/disks/pcx86/shareware/pcsig08/manifest.xml index 50aaa6c37d..26cac2e4a3 100644 --- a/disks/pcx86/shareware/pcsig08/manifest.xml +++ b/disks/pcx86/shareware/pcsig08/manifest.xml @@ -1,5 +1,5 @@ - + PC-SIG Library 8th Edition CD-ROM (April 1990) diff --git a/disks/pcx86/shareware/pctj/manifest.xml b/disks/pcx86/shareware/pctj/manifest.xml index 9ac6ba1c39..a754837d15 100644 --- a/disks/pcx86/shareware/pctj/manifest.xml +++ b/disks/pcx86/shareware/pctj/manifest.xml @@ -1,5 +1,5 @@ - + PC Tech Journal Diskettes diff --git a/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml b/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml index 631a4d8a46..e3f09d5c5f 100644 --- a/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml +++ b/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml @@ -1,5 +1,5 @@ - + Borland Turbo Pascal diff --git a/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml b/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml index 5fa0addc3c..3acfd6422e 100644 --- a/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml +++ b/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml @@ -1,5 +1,5 @@ - + Borland Turbo Pascal diff --git a/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml b/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml index 19724724a2..4d96cab16a 100644 --- a/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml +++ b/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml @@ -1,5 +1,5 @@ - + IBM BASIC Compiler 1.00 diff --git a/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml b/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml index 16e5479bcd..7b558580d7 100644 --- a/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml +++ b/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Modula-2/86 1.00 diff --git a/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml b/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml index 084dabffc1..c6ae8ee1e7 100644 --- a/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml +++ b/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml @@ -1,5 +1,5 @@ - + Modula-2/86 1.10 diff --git a/disks/pcx86/tools/microsoft/basic/manifest.xml b/disks/pcx86/tools/microsoft/basic/manifest.xml index 65db9cc10e..310927b3c6 100644 --- a/disks/pcx86/tools/microsoft/basic/manifest.xml +++ b/disks/pcx86/tools/microsoft/basic/manifest.xml @@ -1,5 +1,5 @@ - + MS BASIC diff --git a/disks/pcx86/tools/microsoft/c/2.03/manifest.xml b/disks/pcx86/tools/microsoft/c/2.03/manifest.xml index fa01ff5b99..59712c5ca3 100644 --- a/disks/pcx86/tools/microsoft/c/2.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 2.03 diff --git a/disks/pcx86/tools/microsoft/c/3.00/manifest.xml b/disks/pcx86/tools/microsoft/c/3.00/manifest.xml index 259434c89e..12c32c8e7a 100644 --- a/disks/pcx86/tools/microsoft/c/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 3.00 diff --git a/disks/pcx86/tools/microsoft/c/4.00/manifest.xml b/disks/pcx86/tools/microsoft/c/4.00/manifest.xml index de9e899d69..0e182fc44b 100644 --- a/disks/pcx86/tools/microsoft/c/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/4.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 4.00 diff --git a/disks/pcx86/tools/microsoft/c/5.00/manifest.xml b/disks/pcx86/tools/microsoft/c/5.00/manifest.xml index 6b38924f40..0cc697ea3b 100644 --- a/disks/pcx86/tools/microsoft/c/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.00 diff --git a/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml b/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml index 3533879f53..35aa3d72d0 100644 --- a/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.10-OS2 diff --git a/disks/pcx86/tools/microsoft/c/5.10/manifest.xml b/disks/pcx86/tools/microsoft/c/5.10/manifest.xml index 190342107e..98bbcd54e6 100644 --- a/disks/pcx86/tools/microsoft/c/5.10/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.10 diff --git a/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml index 8c563d7b80..5da314e1db 100644 --- a/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 1.00 diff --git a/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml index ea5b8a7f6d..a387052fdb 100644 --- a/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 3.00 diff --git a/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml b/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml index eb60b0cdca..bcdd1743c3 100644 --- a/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 3.01 diff --git a/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml index f37793fea5..8b5a53d261 100644 --- a/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 4.00 diff --git a/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml index a8ee7f07c5..bf80f5d48a 100644 --- a/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 5.00 diff --git a/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml b/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml index a7e29a0ac1..d2e27785b2 100644 --- a/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 5.10 diff --git a/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml index f086c98a42..fe95cff1d1 100644 --- a/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 6.00 diff --git a/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml b/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml index 1c7d313f4e..f9ac5fab95 100644 --- a/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 6.11 diff --git a/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml index 8674916554..c7b850a439 100644 --- a/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 2.00 diff --git a/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml index ba3e0cef16..18b0698028 100644 --- a/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 4.00 diff --git a/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml index 66c138e831..a5cf69407f 100644 --- a/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 5.00 diff --git a/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml index a7ff0d5b44..64b674f1b0 100644 --- a/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 6.xx diff --git a/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml index 8495555872..f29999c728 100644 --- a/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml +++ b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml @@ -1,5 +1,5 @@ - + MS OS/2 SDK 1.02 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml index 89b8e018d5..8783d2e5b3 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.01 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml index 4a4e9948a6..183439ab0c 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.03 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml index 9dffff78e0..0a070ec2c0 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.04 os2museum.com diff --git a/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml index 8f669cea6a..fa6ac36f61 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 2.03 os2museum.com diff --git a/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml index 751802b64c..25fbf71ea5 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 3.00 diff --git a/disks/pcx86/tools/other/enhdebug/manifest.xml b/disks/pcx86/tools/other/enhdebug/manifest.xml index 47c950f5af..10d9664bb9 100644 --- a/disks/pcx86/tools/other/enhdebug/manifest.xml +++ b/disks/pcx86/tools/other/enhdebug/manifest.xml @@ -1,5 +1,5 @@ - + Enhanced DEBUG 1.32a diff --git a/disks/pcx86/tools/other/flickerfree/manifest.xml b/disks/pcx86/tools/other/flickerfree/manifest.xml index ec02f8a66d..859dbf7e8a 100644 --- a/disks/pcx86/tools/other/flickerfree/manifest.xml +++ b/disks/pcx86/tools/other/flickerfree/manifest.xml @@ -1,5 +1,5 @@ - + FlickerFree 1.0 diff --git a/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml b/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml index 5fc6fc242b..de360ea172 100644 --- a/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml +++ b/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml @@ -1,5 +1,5 @@ - + PC/IX 1.0 diff --git a/disks/pcx86/unix/microport/system-v/2.3/manifest.xml b/disks/pcx86/unix/microport/system-v/2.3/manifest.xml index 7189c248d2..82bf134d4f 100644 --- a/disks/pcx86/unix/microport/system-v/2.3/manifest.xml +++ b/disks/pcx86/unix/microport/system-v/2.3/manifest.xml @@ -1,5 +1,5 @@ - + Microport's AT&T UNIX System V-AT 2.3 (5¨) diff --git a/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml b/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml index 946fd2d432..b5875713f0 100644 --- a/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml +++ b/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml @@ -1,5 +1,5 @@ - + SCO Xenix 8086 Operating System v2.1.3 diff --git a/disks/pcx86/windows/1.00/manifest.xml b/disks/pcx86/windows/1.00/manifest.xml index 41a31d19e1..30d27d2b9f 100644 --- a/disks/pcx86/windows/1.00/manifest.xml +++ b/disks/pcx86/windows/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.00 diff --git a/disks/pcx86/windows/1.01/cga/softkbd/machine.xml b/disks/pcx86/windows/1.01/cga/softkbd/machine.xml index 112d30195e..47a4394d0d 100644 --- a/disks/pcx86/windows/1.01/cga/softkbd/machine.xml +++ b/disks/pcx86/windows/1.01/cga/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, Windows 1.01 diff --git a/disks/pcx86/windows/1.01/manifest.xml b/disks/pcx86/windows/1.01/manifest.xml index c542a11ed5..d3026c0093 100644 --- a/disks/pcx86/windows/1.01/manifest.xml +++ b/disks/pcx86/windows/1.01/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.01 diff --git a/disks/pcx86/windows/1.02/manifest.xml b/disks/pcx86/windows/1.02/manifest.xml index 56ba0a69ce..619f99bcfb 100644 --- a/disks/pcx86/windows/1.02/manifest.xml +++ b/disks/pcx86/windows/1.02/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.02 diff --git a/disks/pcx86/windows/1.03/manifest.xml b/disks/pcx86/windows/1.03/manifest.xml index 47a34af90c..05f68b74e6 100644 --- a/disks/pcx86/windows/1.03/manifest.xml +++ b/disks/pcx86/windows/1.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03 diff --git a/disks/pcx86/windows/1.03a/manifest.xml b/disks/pcx86/windows/1.03a/manifest.xml index 4642703347..f966e05fa9 100644 --- a/disks/pcx86/windows/1.03a/manifest.xml +++ b/disks/pcx86/windows/1.03a/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03a diff --git a/disks/pcx86/windows/1.03b/manifest.xml b/disks/pcx86/windows/1.03b/manifest.xml index 7f47da2f09..f87e7291f4 100644 --- a/disks/pcx86/windows/1.03b/manifest.xml +++ b/disks/pcx86/windows/1.03b/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03b diff --git a/disks/pcx86/windows/1.04/manifest.xml b/disks/pcx86/windows/1.04/manifest.xml index 034cf713d5..4eb0b3ef25 100644 --- a/disks/pcx86/windows/1.04/manifest.xml +++ b/disks/pcx86/windows/1.04/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.04 os2museum.com diff --git a/disks/pcx86/windows/2.03/manifest.xml b/disks/pcx86/windows/2.03/manifest.xml index aaeda8495f..bc0e8e5280 100644 --- a/disks/pcx86/windows/2.03/manifest.xml +++ b/disks/pcx86/windows/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 2.03 diff --git a/disks/pcx86/windows/2.0x/manifest.xml b/disks/pcx86/windows/2.0x/manifest.xml index a244b0febd..d136672ab8 100644 --- a/disks/pcx86/windows/2.0x/manifest.xml +++ b/disks/pcx86/windows/2.0x/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows/386 2.0x diff --git a/disks/pcx86/windows/2.10/manifest.xml b/disks/pcx86/windows/2.10/manifest.xml index 4ab788a71e..c795f5c0b1 100644 --- a/disks/pcx86/windows/2.10/manifest.xml +++ b/disks/pcx86/windows/2.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows/386 2.10 diff --git a/disks/pcx86/windows/2.11/manifest.xml b/disks/pcx86/windows/2.11/manifest.xml index 4ed69492d2..5f1c820dfd 100644 --- a/disks/pcx86/windows/2.11/manifest.xml +++ b/disks/pcx86/windows/2.11/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 2.11 diff --git a/disks/pcx86/windows/3.00/720K/manifest.xml b/disks/pcx86/windows/3.00/720K/manifest.xml index bbf32d764d..deefde1a78 100644 --- a/disks/pcx86/windows/3.00/720K/manifest.xml +++ b/disks/pcx86/windows/3.00/720K/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.00 diff --git a/disks/pcx86/windows/3.00/manifest.xml b/disks/pcx86/windows/3.00/manifest.xml index e714addcab..43b3acebb3 100644 --- a/disks/pcx86/windows/3.00/manifest.xml +++ b/disks/pcx86/windows/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.00 diff --git a/disks/pcx86/windows/3.10/manifest.xml b/disks/pcx86/windows/3.10/manifest.xml index f227c61fb2..a49d58af60 100644 --- a/disks/pcx86/windows/3.10/manifest.xml +++ b/disks/pcx86/windows/3.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.10 diff --git a/disks/pcx86/windows/3.11/manifest.xml b/disks/pcx86/windows/3.11/manifest.xml index 166e864636..42a5e14d55 100644 --- a/disks/pcx86/windows/3.11/manifest.xml +++ b/disks/pcx86/windows/3.11/manifest.xml @@ -1,5 +1,5 @@ - + Windows for Workgroups 3.11 diff --git a/disks/pcx86/windows/win95/4.00.499/manifest.xml b/disks/pcx86/windows/win95/4.00.499/manifest.xml index daf7325831..41e9ce964e 100644 --- a/disks/pcx86/windows/win95/4.00.499/manifest.xml +++ b/disks/pcx86/windows/win95/4.00.499/manifest.xml @@ -1,5 +1,5 @@ - + Windows 95 (Build 499) diff --git a/disks/pcx86/windows/win95/4.00.950/manifest.xml b/disks/pcx86/windows/win95/4.00.950/manifest.xml index cd7ffcaa76..c3418a3390 100644 --- a/disks/pcx86/windows/win95/4.00.950/manifest.xml +++ b/disks/pcx86/windows/win95/4.00.950/manifest.xml @@ -1,5 +1,5 @@ - + Windows 95 (RTM) 4.00.950 diff --git a/disks/pcx86/windows/wincomm/manifest.xml b/disks/pcx86/windows/wincomm/manifest.xml index fbbf94c0d4..a632dbb666 100644 --- a/disks/pcx86/windows/wincomm/manifest.xml +++ b/disks/pcx86/windows/wincomm/manifest.xml @@ -1,5 +1,5 @@ - + Windows COMM Driver (Source) diff --git a/docs/pcx86/examples/components.xsl b/docs/pcx86/examples/components.xsl index ae48487252..e30874abc9 100644 --- a/docs/pcx86/examples/components.xsl +++ b/docs/pcx86/examples/components.xsl @@ -14,12 +14,12 @@ pcjs pcx86 PCx86 - 1.36.1 + 1.36.2 www.pcjs.org #FAEBD7 - + diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index a4d38b8834..354ff072b1 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -835,7 +835,7 @@ break}a:{var qd,rd=null,gb=g[1];"?"==gb&&(gb=void 0);if(void 0!==gb){var Xd=0;if gb==qd){var AC=!!(a.fc&Tb[qd]);if(null===rd||rd==AC)eh&&(eh+=","),++zC%10||(eh+="\n\t"),"key"==qd&&(qd="keys"),eh+=qd}void 0===gb&&a.O("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.O((null!==rd?rd?"messages on: ":"messages off: ":"message categories:\n\t")+(eh||"none"));Fy(a)}break;case "o":var Pm=g[1],BC=g[2];if(Pm&&"?"!=Pm){var Qm=sy(a,Pm,"port #"),Rm=sy(a,BC);void 0!==Qm&&void 0!==Rm&&(Nc(a.na,Qm,1,Rm),a.O(oa(Qm)+": "+na(Rm)))}else a.O("output commands:"),a.O("\to [p] [b]\twrite byte [b] to port [p]"), a.O("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){BB(a,b.substr(5));break}var cu="pr"==g[0]?1:0,tf=1+cu;if(a.K)a.O("step in progress");else{var mj,du=!1,Kb=Dy(a,z(a.H),a.H.ba.T);do switch(mj=!1,a.ya(Kb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:fz(a,Kb,1);mj=!0;break;case 204:case 206:a.K=tf;fz(a,Kb,1);break;case 205:case 224:case 225:case 226:a.K=tf;fz(a,Kb,Kb.Jb?4:2);break;case 232:a.K=tf;fz(a,Kb,Kb.Jb?5:3);break;case 154:a.K= tf;fz(a,Kb,Kb.Jb?7:5);break;case 255:var eu=a.nb(Kb)&14591;if(4351==eu||6399==eu)a.K=tf,sA(a,Kb);break;case 243:case 242:fz(a,Kb,1);du=mj=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:du&&(a.K=tf,fz(a,Kb,1))}while(mj);a.K?(a.td(a.B,Kb,!0),iA(a,void 0)&&Ad(a.H,void 0,void 0)||(a.oa&&a.oa.dd(),a.K=0)):DB(a,cu?"tr":"t")}break;case "r":if("reset"==b){a.oa&&a.oa.reset();break}jA(a,g);break;case "t":DB(a,g[0],g[1]); -break;case "u":kA(a,g[1],g[2],8);break;case "v":if("var"==g[0]){wB(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.36.1 ("+a.H.da+",RELEASE,NOPREFETCH"+(Pb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(Ha());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var fh;void 0!==g[3]&&(fh=+g[3]);switch(g[2]){case "int":a.H.Y.Te=fh;break;case "start":a.H.Y.wf=fh;break;case "stop":a.H.Y.Ve=fh;break;default:a.O("unknown cs option");break a}void 0!==fh&&yd(a.H);a.O("checksums "+(a.H.Z.Ke?"enabled": +break;case "u":kA(a,g[1],g[2],8);break;case "v":if("var"==g[0]){wB(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.36.2 ("+a.H.da+",RELEASE,NOPREFETCH"+(Pb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(Ha());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var fh;void 0!==g[3]&&(fh=+g[3]);switch(g[2]){case "int":a.H.Y.Te=fh;break;case "start":a.H.Y.wf=fh;break;case "stop":a.H.Y.Ve=fh;break;default:a.O("unknown cs option");break a}void 0!==fh&&yd(a.H);a.O("checksums "+(a.H.Z.Ke?"enabled": "disabled"));break;case "sp":void 0!==g[2]&&(Ed(a.H,+g[2])||a.O("warning: using 1x multiplier, previous target not reached"));a.O("target speed: "+(a.H.Y.te.toFixed(2)+"Mhz")+" ("+a.H.Y.Cd+"x)");break;default:a.O("unknown option: "+g[1])}else a.O("execution options:"),a.O("\tcs int #\tset checksum cycle interval to #"),a.O("\tcs start #\tset checksum cycle start count to #"),a.O("\tcs stop #\tset checksum cycle stop count to #"),a.O("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){BB(a, b.substr(1));break}var Sm="commands:",Tm;for(Tm in FB)Sm+="\n"+va(Tm,7)+FB[Tm];Jg(a)||(Sm+="\nnote: frequency/history disabled if no exec breakpoints");a.O(Sm);break;default:a.O("unknown command: "+b),d=!1}}}catch(gu){a.O("debugger error: "+(gu.stack||gu.message)),d=!1}return d}function Hy(a,b,c){b=a.Bg(b,c);for(var d in b)if(!rA(a,b[+d]))return!1;return!0} var fA={16:262144,19:524288,21:32768,22:65536,28:2048,33:134217728,51:16777216},eA=[26,28,40,42,109],FB={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",l:"load sector(s)",ln:"list nearest symbol(s)",m:"messages",mouse:"mouse action","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine", @@ -867,24 +867,24 @@ Jy,[119,R|S|W,HB|4096]],[[155,R|U|4096,V|U|4096],Jy,[98,R|U|W],[96,R|U|W],[95,R| CPL0_SS:4,CPL1_SP:6,CPL1_SS:8,CPL2_SP:10,CPL2_SS:12,TASK_IP:14,TASK_PS:16,TASK_AX:18,TASK_CX:20,TASK_DX:22,TASK_BX:24,TASK_SP:26,TASK_BP:28,TASK_SI:30,TASK_DI:32,TASK_ES:34,TASK_CS:36,TASK_SS:38,TASK_DS:40,TASK_LDT:42},Ty={PREV_TSS:0,CPL0_ESP:4,CPL0_SS:8,CPL1_ESP:12,CPL1_SS:16,CPL2_ESP:20,CPL2_SS:24,TASK_CR3:28,TASK_EIP:32,TASK_PS:36,TASK_EAX:40,TASK_ECX:44,TASK_EDX:48,TASK_EBX:52,TASK_ESP:56,TASK_EBP:60,TASK_ESI:64,TASK_EDI:68,TASK_ES:72,TASK_CS:76,TASK_SS:80,TASK_DS:84,TASK_FS:88,TASK_GS:92,TASK_LDT:96, TASK_IOPM:100};Xa(function(){for(var a=vb(document,"pcx86","debugger"),b=0;b=this.D||(this.D=1);this.F=0;this.pa=a.busWidth||a.buswidth;this.A=ZB;this.P=null;this.L=this.ha=!1;this.ra=ud(this,"url")||"";this.va=(Math.random()+.1).toString(36).substr(2,12);this.B=$B(this);if(this.H=tb("CPU",this.id)){this.ca=tb("Debugger",this.id);this.C=[];for(b=null;b=Vb(this,"Video",b);)this.C.push(b);this.na=new hc({id:this.ee+".bus", -busWidth:this.pa},this.H,this.ca);var e,f=xb(this.id);this.K=(this.J=tb("Panel",this.id))&&this.J.ma.print;this.ka=this.Da;this.la=this.print;this.qa=this.O;this.K&&(this.ka=this.J.Da,this.la=this.J.print,this.qa=this.J.O);for(b=0;b\nLicense: GPL version 3 or later "); -for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bZB){if(d.load(this.P)){this.G=new Wf(this,"1.36.1",jC);this.G.load()&&(a!=iC&&kC(this,d)&&(a=lC),mC(this.G));this.G.set(hC,za("Y-m-d H:i:s"));nC(this.G);var e=this.A&&!this.L;if(a==iC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=gC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +l.bf=function(a,b){for(var c=this,d=xb(this.id),e=0;e<=d.length;e++){var f=eZB){if(d.load(this.P)){this.G=new Wf(this,"1.36.2",jC);this.G.load()&&(a!=iC&&kC(this,d)&&(a=lC),mC(this.G));this.G.set(hC,za("Y-m-d H:i:s"));nC(this.G);var e=this.A&&!this.L;if(a==iC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=gC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= g?(this.Da("Error: "+g),"unable to verify user"==g&&(La(oC,""),this.B=null)):this.O(f+": "+g),mC(d),d.load()?(c=gC(d),e=!0):c=!1))}e&&eC(this,c?d:null)}else a==lC&&d.clear()}else eC(this);delete this.P;delete this.V}e=xb(this.id);for(f=0;fa[1];a=a[2];if(d=this.ma.power)d.textContent="Shutdown";this.Z.bc=!0;this.H&&(pC(this, -this.H,b,c,a),this.H.je());this.fa&&(kC(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.F=0;zb(this.ee,ud(this,"autoScript"))};function kC(a,b){if(!a.Z.Ae){if(pb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.36.1"};d.url=a.ra;d.user=c;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1} -function EB(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new Wf(a,"1.36.1"),g=new Wf(a,"1.36.1",fC),h=za("Y-m-d H:i:s");g.set(hC,h);f.set(hC,h);f.set(qC,"1.36.1");f.set(rC,window?window.location.href:null);f.set(sC,Ha());a.H&&a.H.$b&&(d=a.H.$b(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.Z.bc=!1,!1===d&&(e=null)));for(var h=xb(a.id),k=0;k/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/gi;m=p.exec(f);)k=0>k.toLowerCase().indexOf(m[1].toLowerCase())?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ "> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);JC(a,b,c)}})}else c(a,null)} function KC(a,b,c,d){function e(a){if(void 0===h){var b=g&&vb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ta(a))}function f(a){e("Error: "+a);k&&(--GC||bb(!0));k=!1}var g,h,k=!0;GC++;ob[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c|| -(c="/versions/pcx86/1.36.1/components.xsl");m=function(d,h){h?HC(c,null,null,!1,e,function(d,k){k?(nb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--GC||bb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--GC||bb(!0)):f("invalid machine element: "+ +(c="/versions/pcx86/1.36.2/components.xsl");m=function(d,h){h?HC(c,null,null,!1,e,function(d,k){k?(nb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--GC||bb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--GC||bb(!0)):f("invalid machine element: "+ a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?HC(b,a,d,!0,e,m):IC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function LC(a,b,c,d){bb(!1);return KC(a,b,c,d)}window.embedPC=LC;window.embedPCx86=LC; window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return zb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=tb(d,c+".machine");if(g){var h=g.exports;if(h&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1}}console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=bb;window.sendEvent=fb; function MC(a,b,c,d){if(!c&&b){d.push(b);a=ob[d[0]];b=null;for(var e in a)if(sa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Fa(b,null,!0,function(a,b){NC(b,d)}):NC(null,d)}else ab("Error ("+c+") requesting "+a)} -function NC(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=ob[f],k={},m;for(m in h){var p=h[m],v=ra(m);if("xml"==v){for(v=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=pa(m)}else"xsl"==v&&(e=m=pa(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, -"©"),a=Ta(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n')+"...\n",a=a+(' +
+ + + + + + + + + + + + + +
+ + + + js + , + + +
+
+ + + + + + + + + + + + + , + + + + + + + + + + + + .machine + . + + + + + + + + + + + + + + border:1px solid black;border-radius:10px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + position:; + position:absolute; + + + + + overflow:auto;width:100%; + + background-color:; + background-color:; + + + + + - -component + +
+ + + + + + +
+ +
+
+ +
+ +
+
+ +
+ + +
[XML]
+ +
+ +
+
+
+
+ + + + + text-align:center; + + + +

+
+ + +
+
+ + + + type:'' + + + binding:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + position:absolute; + float:left; + float:right; + margin:0 auto; + ; + float:left; + + + + + + + + +
+ + + font-size:; + + + + + -label + + + width:; + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+
+
+ +
+
+ +

+
+ +
+
+
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + null + + + + + + ,autoStart: + + + + + + + + + + + + + + + 600 + + + + + keyboard + ,model: + + + + + + + + + + + + + + + false + + + + + serial + ,demo: + + + + + + + + + + + + + + disk + + + + + + + + + + + + + + + 0 + + + + + + + + + + + rom + ,size:,image:'' + + + + + + + + + + + + + + + 0 + + + + + ram + ,size: + + + + + + + + + + + + + + + 600 + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 32 + + + + + + 32 + + + + + + + 0 + + + + + + + 0 + + + + + + + + + + + + + + null + + + + + video + ,model:,screenWidth:,screenHeight:,charCols:,charRows:,charWidth:,charHeight:,charSet:'',screenColor:'',smoothing: + + + + + + + + + + + + + + debugger + + + + + + + + + + + + + + panel + + + + + + + + + + + + + [ + {} + , + ] + + + + computer + ,modules: + + + + + type:'',refID:'',start:,end: + + + diff --git a/versions/c1pjs/1.36.2/document.css b/versions/c1pjs/1.36.2/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/c1pjs/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/c1pjs/1.36.2/document.xsl b/versions/c1pjs/1.36.2/document.xsl new file mode 100644 index 0000000000..f740ae728f --- /dev/null +++ b/versions/c1pjs/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

+
+ + + + + + + +

+
+ +

+
+
+
+ + + + + + +
+
+ + +
+ +   + + +
+
+ +
+
+ + + + + + + + + + + + + + + + +

+
+ + +

+
+ + +

+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + +
+
+ + +
+
+ + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/c1pjs/1.36.2/machine.xsl b/versions/c1pjs/1.36.2/machine.xsl new file mode 100644 index 0000000000..cf0d8038c9 --- /dev/null +++ b/versions/c1pjs/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/c1pjs/1.36.2/manifest.xsl b/versions/c1pjs/1.36.2/manifest.xsl new file mode 100644 index 0000000000..56a4cb7a02 --- /dev/null +++ b/versions/c1pjs/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/c1pjs/1.36.2/outline.xsl b/versions/c1pjs/1.36.2/outline.xsl new file mode 100644 index 0000000000..4fc8d4506c --- /dev/null +++ b/versions/c1pjs/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.2/common.css b/versions/pc8080/1.36.2/common.css new file mode 100644 index 0000000000..a569abc642 --- /dev/null +++ b/versions/pc8080/1.36.2/common.css @@ -0,0 +1,278 @@ +@CHARSET "UTF-8"; +/** + @author Jeff Parsons (@jeffpar) + @website http://www.pcjs.org/ + @created 2013-05-05 + @modified 2014-02-23 + @license http://www.gnu.org/licenses/gpl.html + */ +body { + margin: 0; + background: #202020; +} +h1, h2 { + margin-top: 0; + color: #cccccc; +} +h1, h2, h3, h4 { + word-wrap: break-word; +} + +h4 a { + color: #cccccc !important; +} +p { + line-height: 1.5em; +} +img { + max-width: 100%; +} +a img { + vertical-align: bottom; +} +pre, code { + color: #000000; + background-color: #cccccc; + font-family: Monaco, Consolas, "Lucida Console", monospace; + font-size: 12px; +} +pre { + margin: 1em 2em; + padding: 1em; + border-radius: 5px; + overflow: auto; +} +code { + padding: 1px; +} +pre a, code a { + color: #006400 !important; +} +.common { + width: 100%; + margin: 0 auto; + color: #cccccc; +} +.common a { + + color: #7fc07f; + text-decoration: none; +} +.common hr { + border-color: #808080; +} +.common a:hover { + text-decoration: underline; +} +.common, .machine { + font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; + font-size: 15px; +} +.machine { + + overflow: hidden; +} +.c1pjs { + overflow: visible; +} +.machine-placeholder { + text-align: center; + font-weight: bold; +} +.machine-floating { + position: relative; + z-index: auto; + background-color: transparent; + padding-right: 0; +} +.machine-sticky { + position: fixed !important; + z-index: 1 !important; + background-color: #404040 !important; + padding-right: 16px !important; + top: 0 !important; +} +.common-top { + background: #202020; + font-size: small; +} +.common-top-left { + float: left; + width: 60%; +} +.common-top-left ul { + line-height: 1.5em; + list-style-type: none; + margin: 0; + padding: 1em 1em 1em 9px; + overflow: hidden; +} +.common-top-left ul li { + display: block; + float: left; +} +.common-top-left ul li a { + border-right: 1px solid #6f6f6f; + padding: 2px 6px 2px 6px; +} +.common-top-left ul li:last-child a { + border-right: none; +} +.common-top-right { + float: right; + width: 40%; +} +.common-top-right p { + float: right; + margin: 0; + padding: 1em; +} +.common-middle { + clear: both; + padding: 1px 1em 1px 1em; + background: #404040; +} +.common-sidebar { + float: left; + font-size: small; + width: 140px; + padding-bottom: 20px; + overflow: hidden; + white-space: nowrap; + word-wrap: break-word; +} +.common-list { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} +.common-list li { + + padding-bottom: 7px; +} +.common-list-data { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} +.common-list-data li { + line-height: 1.5em; +} +.common-list-data-items, .common-list-data-subitems { + font-size: x-small; + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} +.common-list-data-items li, .common-list-data-subitems li { + padding-bottom: 0; +} +.common-main { + margin-left: 150px; + +} +.common-main blockquote { + text-align: justify; +} +.common-image-gallery { + margin: 0 auto; + text-align: center; +} +.common-image-gallery:after { + content: ''; + display: block; +} +.common-image-frame { + display: inline-block; + margin: 8px; + text-align: center; +} +.common-image-link { + padding: 5px; + border: 1px solid black; + border-radius: 5px; + background-color: #FAEBD7; +} +.common-image-label { + font-size: x-small; +} +.common-bottom { + clear: both; + padding-top: 1em; +} +.common-bottom:after { + content: ''; + display: block; + clear: both; +} +.common-reference { + float: left; + font-size: x-small; +} +.common-reference a { + text-decoration: none; +} +.common-copyright { + float: right; + font-size: x-small; +} +.common-copyright a { + text-decoration: none; +} +.md-list { +} +.md-list li { + line-height: 1.5em; + margin-bottom: 1em; +} +.md-list li p { + padding-left: 2em; +} +.md-list-compact { +} +.md-list-compact li { + margin-bottom: 0; +} +.md-list-none { + list-style-type: none; + padding-left: 2em; +} +.md-list-none li { + margin-bottom: 0; +} +@media screen and (max-width: 900px) { + + .common-sidebar { + width: 100%; + white-space: normal; + } + .common-list { + padding-left: 0; + } + .common-list-data { + padding-left: 0; + } + .common-sidebar h4, .common-list li, .common-list-data li, .common-list-data-items li { + width: 130px; + float: left; + overflow: hidden; + vertical-align: top; + padding-right: 1em; + margin-top: 0; + } + .common-list-data-subitems { + display: none; + } + .common-main { + clear: both; + margin-left: 0; + padding-left: 0; + padding-right: 0; + } + .md-list-none { + padding-left: 1em; + } +} diff --git a/versions/pc8080/1.36.2/common.xsl b/versions/pc8080/1.36.2/common.xsl new file mode 100644 index 0000000000..3071832808 --- /dev/null +++ b/versions/pc8080/1.36.2/common.xsl @@ -0,0 +1,58 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +

    Powered by JavaScript, Vanilla JS, and GitHub

    +
    +
    +
    + + +
    +

    + +
    +
    + +
    diff --git a/versions/pc8080/1.36.2/components.css b/versions/pc8080/1.36.2/components.css new file mode 100644 index 0000000000..101b964a4c --- /dev/null +++ b/versions/pc8080/1.36.2/components.css @@ -0,0 +1,262 @@ +@CHARSET "UTF-8"; + + +*:not(input,textarea) { + -webkit-user-select: none; +} +.pcjs-embed { +} +.pcjs-embed:after { + clear:both; +} +.pcjs-machine { +} +.pcjs-name, .pcjs-menu { + clear: both; + font-weight: bold; + padding-bottom: 4px; +} +.pcjs-menu { + float: left; +} +.pcjs-canvas { + width: 100%; + height: auto; +} +.pcjs-container { + color: #000000; + position: relative; +} +.pcjs-label { + font-size: small; + line-height: 20px; + vertical-align: middle; + float: left; + font-family: Monaco, "Lucida Console", monospace; +} +.pcjs-controls textarea { + font-family: Monaco, "Lucida Console", monospace; + font-size: x-small; +} +.pcjs-fieldset { + border: none; + margin: 0; + padding: 0; +} +.pcjs-flag { + font-family: Monaco, "Lucida Console", monospace; + font-size: small; + text-align: center; + line-height: 20px; + vertical-align: middle; +} +.pcjs-progress { + height: 20px; + width: 200px; + margin-top: 8px; + border: 1px solid black; + position: relative; +} +.pcjs-progress-bar { + height: 20px; + width: 0; + background-color: gold; + position: absolute; + top: 0; +} +.pcjs-progress-text { + height: 20px; + width: 200px; + font-size: small; + line-height: 20px; + text-align: center; + position: absolute; + top: 0; + z-index: 1; +} +.pcjs-register { + font-family: Monaco, "Lucida Console", monospace; + font-size: small; + text-align: center; + line-height: 20px; + vertical-align: middle; + border: 1px solid black; +} +.pcjs-switches { + float: left; +} +.pcjs-bitBucket { + float: left; + width: 19px; + height: 38px; +} +.pcjs-bitCell { + float: left; + width: 19px; + height: 19px; + margin-right: -1px; + margin-bottom: -1px; + border: 1px solid black; + text-align: center; + line-height: 19px; +} +.pcjs-bitCellLeft { + border-left: 1px solid black; +} +.pcjs-bitLabel { + font-size: xx-small; + text-align: center; +} +.pcjs-description, .pcjs-status { + font-size: x-small; + line-height: 2.0em; +} +.pcjs-key { + border: 1px solid black; + font-size: x-small; + text-align: center; + position: absolute; + height: 34px; + line-height: 34px; + background-color: #ffffff; +} +.pcjs-panel-group { + color: #ffffff; + background-color: #404040; +} +.pcjs-triplet { + padding: 1px; +} +.pcjs-ledlbl { + text-align: center; + font-size: 40%; + background-color: #000000; +} +.pcjs-ledlbl0 { + text-align: right; + font-size: 50%; + background-color: #8d4076; +} +.pcjs-ledlbl1 { + text-align: right; + font-size: 50%; + background-color: #d83662; +} +.pcjs-ledpad { + text-align: center; + font-size: x-small; + line-height: 32px; + background-color: #000000; + border-bottom-left-radius: 20%; + border-bottom-right-radius: 20%; +} +.pcjs-led { + float: left; + width: 8px; + height: 8px; + margin: 4px; + border: 1px solid black; + text-align: center; + vertical-align: middle; + background-color: #000000; +} +.pcjs-rled { + float: left; + width: 8px; + height: 8px; + margin: 4px; + border: 1px solid black; + border-radius: 50%; + text-align: center; + vertical-align: middle; + background-color: #ff0000; + max-width: 50%; + max-height: 50%; +} +.pcjs-swlbl { + text-align: center; + font-size: 40%; + line-height: 16px; + background-color: #000000; + border-top-left-radius: 20%; + border-top-right-radius: 20%; +} +.pcjs-swpad { + height: 32px; + background-color: #000000; +} +.pcjs-switch { + height: 10px; + width: 28px; + margin-top: 0; + max-width: 90%; + background-color: #00ff00; +} +.pcjs-screen { + clear: both; + height: auto; + position: relative; + line-height: 0; +} +.pcjs-screen textarea { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border: 0; + padding: 0; + resize: none; + color: white; + font-family: Monaco, "Lucida Console", monospace; + font-size: medium; + background: rgba(0, 0, 0, .5); + opacity: 0; + line-height: 0; +} +.pcjs-reference { + float: left; + font-size: x-small; +} +.pcjs-reference a { + text-decoration: none; +} +.pcjs-copyright { + float: right; + font-size: x-small; +} +.pcjs-copyright a { + text-decoration: none; +} +@media screen and (max-width: 800px) { + .pcjs-textarea { + width: 100% !important; + } + .pcjs-registers { + width: 100% !important; + max-width: none !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + .pdp11-device { + width: 98% !important; + max-width: none !important; + margin-left: 8px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } +} +@media screen and (min-width: 1200px) { + .machine-left { + max-width: 48%; + float: left; + } + .machine-right { + max-width: 48%; + float: left; + margin-left: 30px; + } + .machine-right + * { + clear: both; + } +} diff --git a/versions/pc8080/1.36.2/components.xsl b/versions/pc8080/1.36.2/components.xsl new file mode 100644 index 0000000000..2733623ae3 --- /dev/null +++ b/versions/pc8080/1.36.2/components.xsl @@ -0,0 +1,1402 @@ + + + +]> + + + + + + + + pc + pcjs + pc8080 + PC8080 + 1.36.2 + www.pcjs.org + #FAEBD7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + + + + + + js + + + +
    + + + + + + + + + + js + + + "" + + + + + +
    +
    + + + + + + + + + + + + + + + , + + + + + + + + + + + + + .machine + . + . + + + + + + + + + + + + + + + + + + + + ,comment:'' + + + + + + border:1px solid black;border-radius:15px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:;max-width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto;clear:both; + position:; + position:relative; + + + + + overflow:auto;width:100%; + + background-color:; + background-color:; + + + + + - -component + +
    + + + + + + +
    + + + + + + + + --object -screen + + +
    +
    + +
    + +
    +
    + + + + +
    + + +
    [XML]
    + +
    + + +
    +
    +
    +
    + + + + + text-align:center; + + + +

    +
    + + +
    +
    + + + + + + +
    +
    + + + + type:'' + + + binding:'' + + + value:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + clear:both; + position:; + position:relative; + text-align:; + float:left; + + + + + + + + + + + + + + + + + + +
    + + + font-size:; + + + + + -label + + + + width:; + width:; + + + + + + + + text-align:right; + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',dateRTC:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + mouse + ,serial:'',scaleMouse: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + + 0.5 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate:,flicker: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + +
    diff --git a/versions/pc8080/1.36.2/document.css b/versions/pc8080/1.36.2/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pc8080/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pc8080/1.36.2/document.xsl b/versions/pc8080/1.36.2/document.xsl new file mode 100644 index 0000000000..96ab98b3cd --- /dev/null +++ b/versions/pc8080/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pc8080/1.36.2/machine.xsl b/versions/pc8080/1.36.2/machine.xsl new file mode 100644 index 0000000000..7a37550a3b --- /dev/null +++ b/versions/pc8080/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.2/manifest.xsl b/versions/pc8080/1.36.2/manifest.xsl new file mode 100644 index 0000000000..44cc90d9b2 --- /dev/null +++ b/versions/pc8080/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pc8080/1.36.2/outline.xsl b/versions/pc8080/1.36.2/outline.xsl new file mode 100644 index 0000000000..825d1ee4f0 --- /dev/null +++ b/versions/pc8080/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.2/pc8080-dbg.js b/versions/pc8080/1.36.2/pc8080-dbg.js new file mode 100644 index 0000000000..266c241be4 --- /dev/null +++ b/versions/pc8080/1.36.2/pc8080-dbg.js @@ -0,0 +1,312 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017 +*/ +var l;function aa(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +for(var ca="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},da="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this,ea=["Math","trunc"],fa=0;faa?-b:b};ja!=ia&&null!=ja&&ca(da,ha,{configurable:!0,writable:!0,value:ja}); +var m={De:0,Ge:1,He:2,Ie:3,Je:4,Ke:5,Le:6,Me:7,Ne:8,Oe:9,Pe:10,Qe:11,Re:12,Se:13,Te:14,Ue:15,Ve:16,We:17,Xe:18,Ye:19,Ze:20,$e:21,af:22,bf:23,cf:24,df:25,ef:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Za:65,Ub:66,Vb:67,Db:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Fb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87, +wc:88,xc:89,ub:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,vd:98,yd:99,d:100,e:101,Cd:102,Ed:103,Fd:104,Gd:105,Pd:106,k:107,Qd:108,Sd:109,n:110,Td:111,p:112,q:113,r:114,pe:115,t:116,re:117,se:118,te:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,ff:127},ka={59:186,61:187,173:189,224:91}; +function la(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return ma(a,16,b,c?"0x":"")}function na(a){return n(a,2,!0)} +function q(a){return n(a,4,!0)}function oa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return va[a]})}function wa(a,b){return(a+" ").slice(0,b)} +function xa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var va={"&":"&","<":"<",">":">",'"':""","'":"'"},Ca={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +function Ea(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0f;f++){var g;switch(g="Y-m-d H:i:s".charAt(f)){case "a":b+=12>c?"am":"pm";break;case "d":b+=("0"+d).slice(-2);break;case "D":b+=Ga[a.getDay()].substr(0,3);break;case "F":b+=Ha[e-1];break;case "g":b+=c?12c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Pa=g.load;d.Ha=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ma=Array(4*e.length),f=c=0;c>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else(e=g.data)?d.Qf=e:d.ma=g;d.ma&&(d.ma.length?1==d.ma.length&&(r(d.ma[0]),d=null):(r("Empty resource: "+a),d=null));d.ra=g.symbols}catch(h){r("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.Gb=this.id:(this.ab=this.id.substr(0,a),this.Gb=this.id.substr(a+1));this.D={ready:!1,jb:!1,Hb:!1,Rf:!1,ja:!1,Qb:!1,error:!1};this.xb=null;this.D.error=!1;this.ha=c||0;this.K=this.w=this.I=this.R=null;kb.push(this)} +function lb(a,b,c){mb[a]&&b&&(mb[a][b]=c)}function nb(){return Date.now()||+new Date}function fb(a,b,c){b||r((c?c+": ":"")+a)}function r(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a,b){a.value+=b;b=a.value;8192d?c+=a+"\n":c=c.substr(0,d)+(a+ +".")+c.substr(d+a.length);8192>1)+2;10>this.g&&(this.g=10);15>2;this.j=this.u-1;this.L=this.N/this.u|0;this.H=this.L-1;this.A=[];this.B=[];this.F=this.G=!1;this.S=[];this.T=[];a=new A;Vb(a,this.K);this.b=Array(this.L);for(b=0;b>>a.g;0f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.nb+=h.J-e,h.J=e,!0;if(e>=h.J+h.nb){p=h.size-(e-k);p>f&&(p=f);h.nb=e-h.J+p;e=k+a.u;f-=p;g++;continue}}return Xb(Yb,e,f)}e=new A(e,p,a.u,d);Vb(e,a.K,h);a.b[g++]=e;e=k+a.u;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Zb[d]+" at "+q(b)),!0):Xb($b,b,c)} +function ac(a,b){return a.b[(b&a.C)>>>a.g].mb(b&a.j,b)}function bc(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Hc(c,b):a.b[d++].Wa(c,b)|a.b[d&a.H].Wa(0,b+1)<<8}function cc(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Mb(c,b):a.b[d++].mb(c,b)|a.b[d&a.H].mb(0,b+1)<<8}function dc(a,b,c){a.b[(b&a.C)>>>a.g].ob(b&a.j,c&255,b)}function ec(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].Kc(d,c&65535,b):(a.b[e++].Ya(d,c&255,b),a.b[e&a.H].Ya(0,c>>8&255,b+1))} +function fc(a){for(var b=0,c=[],d=0;d>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.K&&a.G!=g[1]&&nc(a.K,b,k)}else a.K&&(Lb(a.K,a,b,k,d),a.G&&nc(a.K,b,k));f+=h<<3;b+=h;e-=h}}function Xb(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Yb=1,$b=2,xc;if(Mb){var yc=new ArrayBuffer(2);(new DataView(yc)).setUint16(0,256,!0);xc=256===(new Uint16Array(yc))[0]}else xc=!1;var zc=xc; +function A(a,b,c,d){this.id=Ac+=2;this.b=null;this.J=a;this.nb=b;this.size=c||0;this.type=d||Bc;this.w=d==Cc;Vb(this);this.Da=this.Dc=!1;if(c)if(Mb)this.R=new ArrayBuffer(c),this.j=new DataView(this.R,0,c),this.g=new Uint8Array(this.R,0,c),this.u=new Uint16Array(this.R,0,c>>1),this.b=new Int32Array(this.R,0,c>>2),Dc(this,zc?Ec:Fc);else{this.b=Array(c>>2);for(a=0;a>2),b=0;b>8,c)};l.je=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};l.ne=function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8};l.xe=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<>8);this.Da=!0};l.he=function(a,b){if(this.K&&null!=this.J){var c=this.K;Mc(c,this.J+a,1,c.M)&&c.ea(!0)}return this.mb(a,b)};l.le=function(a,b){if(this.K&&null!=this.J){var c=this.K;Mc(c,this.J+a,2,c.M)&&c.ea(!0)}return this.Mb(a,b)}; +l.ve=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;Mc(d,this.J+a,1,d.B)&&d.ea(!0)}this.w?this.pb(0,b):this.ob(a,b,c)};l.ze=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;Mc(d,this.J+a,2,d.B)&&d.ea(!0)}this.w?this.pb(0,b):this.Sb(a,b,c)};l.ge=function(a){return this.g[a]};l.ie=function(a){return this.g[a]};l.ke=function(a){return this.j.getUint16(a,!0)};l.me=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.u[a>>1]};l.ue=function(a,b){this.g[a]=b;this.Da=!0}; +l.we=function(a,b){this.g[a]=b;this.Da=!0};l.ye=function(a,b){this.j.setUint16(a,b,!0);this.Da=!0};l.Ae=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.u[a>>1]=b;this.Da=!0};var Bc=0,Cc=2,Zb=["NONE","RAM","ROM","VID","H/W"],Ac=0,Hc=[],Gc=[A.prototype.je,A.prototype.xe,A.prototype.ne,A.prototype.Be],Kc=[A.prototype.he,A.prototype.ve,A.prototype.le,A.prototype.ze];if(Mb)var Fc=[A.prototype.ge,A.prototype.ue,A.prototype.ke,A.prototype.ye],Ec=[A.prototype.ie,A.prototype.we,A.prototype.me,A.prototype.Ae]; +function Nc(a,b){u.call(this,"CPU",a,1);var c=a.multiplier||1;this.za=a.cycles||b;this.U=c;this.Sa=Math.round(this.za/1E4)/100;this.Z=this.Sa*this.U;this.D.ka=!1;this.D.Pb=!1;this.D.ib=a.autoStart;this.D.Bc=!1;this.D.Va=!1;this.wa=this.oa=0;this.ya=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Bb=this.rb.bind(this);Gb(this)}aa(Nc,u);l=Nc.prototype; +l.Fa=function(a,b,c,d){this.R=a;this.I=b;this.K=d;for(b=0;b=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Wc(a)&&(a.na=a.sa=-1,Rc(a),a.ea(),c=!0);c&&a.i(Wc(a)+" cycles: checksum="+n(a.wa))}} +l.da=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.D.ja)a=!0;else{var b=null,c,h=ub(a.id);for(c=0;ca.Y/a.Z?b=1:d=!0;a.U=b;b=a.Sa*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Xa()}Yc(a,a.X);a.X=0;a.V=nb();a.ba=0;Zc(a);return d}function ad(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function bd(a,b,c){0<=b&&ba.T[b][0]&&(c=a.za*a.U/1E3*c|0,a.D.ka&&(c+=cd(a)),a.T[b][0]=c)}function cd(a,b){var c=a.fa-=a.b;a.b=0;b&&(a.fa=0);return c} +l.rb=function(a){if(Ib(this,!0)){if(!this.D.ka){Xc(this);this.R&&this.R.start(this.V,Wc(this));this.D.ka=!0;this.D.Pb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(dd(this.R,!0),a&&this.R.Xa(!0))}this.Ua>=this.za&&Zc(this,!0);this.Ca=0;this.La=nb();this.ba&&(a=this.La-this.ba,a>this.gb&&(this.V+=a,this.V>this.La&&(this.V=this.La)));try{do{for(var c,d=this.D.Va?1:this.Ma,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Cb(c);c=cd(this,!0); +this.Ca+=c;this.X+=c;Vc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ta-=c;if(0>=this.ta){this.ta+=this.Ma;++this.hb>=qd&&(this.R&&dd(this.R),this.hb=0);break}}while(this.D.ka)}catch(k){this.ea();Uc(this);this.R&&this.R.stop(nb(),Wc(this));Ib(this,!1);Eb(this,k.stack||k.message);return}c=setTimeout;d=this.Bb;this.ba=nb();e=this.gb;this.Ca&&(e=Math.round(e*this.Ca/this.Ma));e-=this.ba-this.La;if(f=this.ba-this.V)this.Y=Math.round(this.X/ +(10*f))/100,864E5<=f&&(this.la=0,Xc(this));if(0>e||this.Ye&&(this.V-=e),e=0;this.Ua+=this.Ca;this.ba+=e;c(d,e)}else Uc(this),this.R&&this.R.stop(nb(),Wc(this))};l.Cb=function(){return 0};l.ea=function(a){Hb(this,!0);cd(this);Yc(this,this.X);this.X=0;if(this.D.ka){this.D.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.D.complete=a};function Uc(a,b){if(a.R){for(var c=a.R,d=0;d>8&255;a.A=b&255}function Cd(a){return a.B<<8|a.C}function Dd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.F<<8|a.G} +function Ed(a,b){a.F=b>>8&255;a.G=b&255}function B(a,b){a.j=b&65535}function Fd(a){return a.H&256?1:0}function Gd(a,b){a.H=a.H&255|b}function Hd(a){return Nb[a.L&255]?4:0}function Id(a){return(a.L^a.O)&16?16:0}function Jd(a){return a.H&255?0:64}function Kd(a){return a.L&128?128:0}function yd(a){return a.N&-214|Kd(a)|Jd(a)|Id(a)|Hd(a)|Fd(a)}function wd(a,b){a.H=a.L=a.O=0;b&1&&(a.H|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.H|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2} +function Ld(a,b){a.O=a.g^b;return a.L=(a.H=a.g+b)&255}function Md(a,b){a.O=a.g^b;return a.L=(a.H=a.g+b+(a.H&256?1:0))&255}function Nd(a,b){a.H=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.H}function Od(a,b){a.O=b^255;b=a.L=b+255&255;a.H=a.H&-256|b;return b}function Pd(a,b){a.O=b;b=a.L=b+1&255;a.H=a.H&-256|b;return b}function Qd(a,b){return a.L=a.H=a.O=a.g|b}function Rd(a,b){b^=255;a.O=a.g^b;return a.L=(a.H=a.g+b+1^256)&255} +function Sd(a,b){b^=255;a.O=a.g^b;return a.L=(a.H=a.g+b+(a.H&256?0:1)^256)&255}function Td(a,b){return a.L=a.H=a.O=a.g^b}function E(a,b){a=a.I;return a.b[(b&a.C)>>>a.g].Wa(b&a.j,b)}function Ud(a,b,c){a=a.I;a.b[(b&a.C)>>>a.g].Ya(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);B(a,a.j+1);return b}function G(a){var b=bc(a.I,a.j);B(a,a.j+2);return b}function Vd(a){var b=bc(a.I,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;ec(a.I,a.M,b)} +function Wd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<b?255:1<>8;Gd(this,a&256);this.b-=4},$d,function(){var a;Ed(this,a=D(this)+Ad(this));Gd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Ad(this));this.b-=7},function(){Bd(this,Ad(this)-1);this.b-= +5},function(){this.A=Pd(this,this.A);this.b-=5},function(){this.A=Od(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;Gd(this,a);this.b-=4},$d,function(){Dd(this,G(this));this.b-=10},function(){Ud(this,Cd(this),this.g);this.b-=7},function(){Dd(this,Cd(this)+1);this.b-=5},function(){this.B=Pd(this,this.B);this.b-=5},function(){this.B=Od(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255| +Fd(this);Gd(this,a&256);this.b-=4},$d,function(){var a;Ed(this,a=D(this)+Cd(this));Gd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Cd(this));this.b-=7},function(){Dd(this,Cd(this)-1);this.b-=5},function(){this.C=Pd(this,this.C);this.b-=5},function(){this.C=Od(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(Fd(this)<<8|this.g)>>1;Gd(this,a&256);this.b-=4},$d,function(){Ed(this,G(this));this.b-=10},function(){var a=G(this);ec(this.I,a,D(this)); +this.b-=16},function(){Ed(this,D(this)+1);this.b-=5},function(){this.F=Pd(this,this.F);this.b-=5},function(){this.F=Od(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){var a=0,b=Fd(this);if(Id(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=Ld(this,a);Gd(this,b?256:0);this.b-=4},$d,function(){var a;Ed(this,a=D(this)+D(this));Gd(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=bc(this.I,a);Ed(this,a);this.b-=16},function(){Ed(this,D(this)-1);this.b-=5},function(){this.G= +Pd(this,this.G);this.b-=5},function(){this.G=Od(this,this.G);this.b-=5},function(){this.G=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},$d,function(){this.M=G(this)&65535;this.b-=10},function(){Ud(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Ud(this,a,Pd(this,E(this,a)));this.b-=10},function(){var a=D(this);Ud(this,a,Od(this,E(this,a)));this.b-=10},function(){Ud(this,D(this),F(this));this.b-=10},function(){this.H|=256;this.b-= +4},$d,function(){var a;Ed(this,a=D(this)+this.M);Gd(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=Pd(this,this.g);this.b-=5},function(){this.g=Od(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){Gd(this,Fd(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.u=this.A;this.b-=5},function(){this.u=this.B;this.b-=5},function(){this.u=this.C;this.b-=5},function(){this.u=this.F;this.b-= +5},function(){this.u=this.G;this.b-=5},function(){this.u=E(this,D(this));this.b-=7},function(){this.u=this.g;this.b-=5},function(){this.A=this.u;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=this.G;this.b-=5},function(){this.A=E(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.u;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B= +this.C;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=this.G;this.b-=5},function(){this.B=E(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.u;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=this.G;this.b-=5},function(){this.C=E(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.F=this.u;this.b-=5},function(){this.F= +this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.b-=5},function(){this.F=this.G;this.b-=5},function(){this.F=E(this,D(this));this.b-=7},function(){this.F=this.g;this.b-=5},function(){this.G=this.u;this.b-=5},function(){this.G=this.A;this.b-=5},function(){this.G=this.B;this.b-=5},function(){this.G=this.C;this.b-=5},function(){this.G=this.F;this.b-=5},function(){this.b-=5},function(){this.G=E(this,D(this));this.b-=7},function(){this.G=this.g; +this.b-=5},function(){Ud(this,D(this),this.u);this.b-=7},function(){Ud(this,D(this),this.A);this.b-=7},function(){Ud(this,D(this),this.B);this.b-=7},function(){Ud(this,D(this),this.C);this.b-=7},function(){Ud(this,D(this),this.F);this.b-=7},function(){Ud(this,D(this),this.G);this.b-=7},function(){var a=this.j-1;if(this.Ka.length)for(var b=0;b>8;this.b-=10},function(){var a=G(this);Kd(this)||B(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);Kd(this)||(H(this,this.j),B(this,a),this.b-=6);this.b-=11},function(){H(this,yd(this)&255|this.g<<8);this.b-=11},function(){this.g=Qd(this,F(this));this.b-=7},function(){H(this,this.j);B(this,48);this.b-=11},function(){Kd(this)&& +(B(this,Vd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);Kd(this)&&B(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Wd(this)},function(){var a=G(this);Kd(this)&&(H(this,this.j),B(this,a),this.b-=6);this.b-=11},ce,function(){Rd(this,F(this));this.b-=7},function(){H(this,this.j);B(this,56);this.b-=11}]; +function de(a){u.call(this,"ChipSet",a,32768);var b=a.model;b&&!ee[b]&&fb("Unrecognized ChipSet model: "+b);this.g=ee[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);Gb(this)}aa(de,u);l=de.prototype;l.da=function(){return!1}; +l.Fa=function(a,b,c,d){this.I=b;this.w=c;this.K=d;this.R=a;this.B=Qb(a,"Keyboard");this.C=Qb(a,"SerialPort");this.video=Qb(a,"Video");hc(b,this,this.g.zb);lc(b,this,this.g.Ab);if(d){var e=this;fe(d,16384,function(){for(var a="",b=0;b>8-this.T&255;y(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.Xd=function(a,b,c){y(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};l.Zd=function(a,b,c){y(this,a,b,c,"SOUND1",null,!0);this.Y=b};l.Yd=function(a,b,c){y(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8}; +l.$d=function(a,b,c){y(this,a,b,c,"SOUND2",null,!0);this.Z=b};l.ae=function(a,b,c){y(this,a,b,c,"WATCHDOG",null,!0)};function he(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c} +l.Nd=function(a,b){var c=this.F,c=c&~J.xa.jc;if((Wc(this.w)&64)<<1&&(c|=J.xa.jc,c!=this.F)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Aa.Ia.od:break;case J.Aa.Ia.Lc:this.M=this.M<<1|d;break;case J.Aa.Ia.Rc:d=he(this);this.j[d]=J.Aa.tb;Kb(this,"doNVRCommand(): erase data at addr "+q(d));break;case J.Aa.Ia.Mc:this.b=this.b<<1|d;break;case J.Aa.Ia.sd:d=he(this);e=this.b&J.Aa.tb;this.j[d]=e;Kb(this,"doNVRCommand(): write data "+q(e)+" to addr "+q(d));break;case J.Aa.Ia.md:d=he(this);e=this.j[d]; +null==e&&(e=J.Aa.tb);this.b=e;Kb(this,"doNVRCommand(): read data "+q(e)+" from addr "+q(d));break;case J.Aa.Ia.nd:this.b<<=1;this.S=this.b&J.Aa.tb+1;break;default:Kb(this,"doNVRCommand(): unrecognized command "+na(e))}}c&=~J.xa.kc;this.S&&(c|=J.xa.kc);c&=~J.xa.dc;if(d=this.B){d=this.B;if(e=d.A)e=d.w,e=Wc(d.w)>=d.G+(e.za*e.U/1E3*1.2731488|0);e&&(d.A=!1);d=!d.A}d&&(c|=J.xa.dc);c&=~J.xa.sc;this.C&&this.C.ia&ie&&(c|=J.xa.sc);this.F=c;y(this,a,null,b,"FLAGS",c);return c}; +l.be=function(a,b,c){y(this,a,b,c,"BRIGHTNESS");this.W=b};l.ee=function(a,b,c){y(this,a,b,c,"NVR.LATCH");this.L=b};l.de=function(a,b,c){y(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.u=this.u&-4|a;break;case 1:this.u=this.u&-13|a<<2;this.video&&(b=this.video,a=this.u,Kb(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?rd(b,!0):b.wa=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}}; +l.ce=function(a,b,c){y(this,a,b,c,"DC011");b&J.Ja.ld?(b&=J.Ja.oc,this.H!=b&&(this.H=b,this.video&&(a=this.video,b=this.H==J.Ja.oc?50:60,Kb(a,"updateRate("+b+")"),a.gb=b))):(b&=J.Ja.Wb,this.G!=b&&(this.G=b,this.video&&(a=this.G==J.Ja.Wb?132:80,b=this.video,Kb(b,"updateDimensions("+a+","+(80>>0,g],v=Ea(t,k,a.Ac);0>v&&t.splice(-(v+1),0,k)}p&&(h.a=p.replace(/''/g,'"'))}a.C.push({Sf:b,J:c,Rd:d,ra:e,zc:f})}delete this.ra}return!0};le.prototype.ua=function(){return!0}; +function me(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{lb(a.ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){r("Empty ROM: "+b);return}if(1==a.b.length){r(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e>>f.g;0>>= +f.g;0=m.Za&&a<=m.ub?d.g&(Ve|We)||(d.g|=We,Se(d,20,!0),Xe(d)):a>=m.yc&&a<=m.z&&d.g&We&&(d.g&=~We,Se(d,20,!1),Xe(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Qa&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Ye(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ta&&void 0!==this.b.Ta[b])return this.P[e]=c,c.onclick= +function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=Ze:20==b&&(e=We);if(e){c.style.fontWeight="normal";if(d=!(a.g&e))c.style.fontWeight="bold";$e(a,b,d)}Se(a,b,d,!e);a.R&&a.R.Xa()}}(this,this.b.Ta[b]),!0}}return!1};l.Fa=function(a,b,c,d){this.R=a;this.w=c;this.K=d;var e=this;this.L=ad(this.w,function(){af(e)});this.W=Qb(a,"ChipSet");this.C=Qb(a,"SerialPort");hc(b,this,this.b.zb);lc(b,this,this.b.Ab)}; +l.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ua=function(a){return a?this.save():!0};l.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};l.save=function(){var a=new zd(this);switch(this.b.pa){case K.pa:a.set(0,[this.F,this.B,this.A,this.G,-1])}return a.data()}; +l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case bf.pa:return!0;case K.pa:return this.F=b[0],Xe(this,this.F&K.Ba.ec),this.B=b[1],this.A=b[2],this.G=b[3],this.u=b[4],!0}return!1};function Xe(a,b){var c;null!=b?a.H=b:b=a.H;for(var d in a.b.bb)if(c="led-"+d,c=a.P[c]){var e=a.b.bb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+n(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&We?"#"+n(65280,6):"#000000"} +function $e(a,b,c,d){var e=0;switch(b){case 16:e=d?cf:df;break;case 17:e=d?ef:Ze;break;case 18:e=d?ff:gf;break;case 91:e=d?hf:jf;break;case 20:e=We,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c} +function Ue(a,b,c){var d=!0,e=b.keyCode,e=ka[e]||e;c=$e(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Ra[e])f=e;else{for(f in a.b.Ta)if(a.b.Ta[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(kf|lf)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|lf:a.g&~lf)),d=Se(a,f,c),(!(f>=m.Za&&f<=m.ub)||a.g|mf)&&b.preventDefault&&b.preventDefault());return d} +function Te(a,b,c){var d=!0;if(c){var e=b.keyCode,f=a.b.Ra[e],g;if(g=f){a:{for(var h in a.b.qb)if(a.b.qb[h]==f){f=+h;break a}f=0}g=!f}g&&(d=Se(a,e,c,!0),b.preventDefault&&b.preventDefault())}return d} +function Se(a,b,c,d){var e;a:{for(e=0;ee?a.j.push({Ob:b,Lb:Date.now(),wb:d||!1}):(a.j[e].Lb=Date.now(),a.j[e].wb=d||!1),d&&af(a);else if(0<=e){if(!a.j[e].wb&&(d=a.j[e].Lb)&&Date.now()-dc||c>e)c=e}else{Se(a,d,!1);b=0;continue}}b++}0<=c&&bd(a.w,a.L,c)}l.Od=function(a,b){var c=this.B;0<=this.u&&(this.u"]]= +229,N[m["<"]]=230,N[m.hc]=231,N[m.Ub]=232,N[m.wc]=233,N[m["?"]]=245,N[m.gc]=246,N[m.tc]=248,N[m.Vb]=249,N[m.ub]=250,N),Tb:{},bb:{},Ta:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,pd:64,Ee:128,INIT:0},Yc:127};K.bb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":We};var Re={SI1978:bf,VT100:K}; +K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.zb={130:Qe.prototype.Od};K.Ab={130:Qe.prototype.fe};Za(function(){for(var a=sb(document,"pc8080","keyboard"),b=0;b>3)*a.N,!Wb(a.I,a.la,a.L,3)))return!1;a.L?(a.Ua=a.j.createImageData(b,c),a.eb=16/a.na|0,uf(a,a.L>>1)):uf(a,(a.O+1)*a.Z);a.F=document.createElement("canvas");a.F.width=b;a.F.height=c;a.ta=a.F.getContext("2d");a.T={};a.X=1<=a.Ca?8:16,f=8>(7>4)*c)}return k}l.va=function(a,b){return b||!a||this.restore(a)?!0:!1};l.ua=function(a){return!a||this.save()};l.save=function(){var a=new zd(this);a.set(0,[]);return a.data()};l.restore=function(){return!0}; +l.kb=function(){var a=!1;if(this.b){if(this.b.kb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.H;b>c&&(a=Math.round(c/b*100)+"%")}this.Sa?(this.G.style.width=a,this.G.style.width=a,this.G.style.display="block",this.G.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.kb();a=!0}this.V&&this.V.focus()}return a}; +function sf(a,b){!b&&a.b&&(a.Sa?a.G.style.width=a.G.style.height="":a.b.style.width=a.b.style.height="");Kb(a,"notifyFullScreen("+b+")")}function uf(a,b){a.cb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.cb)a.A=Array(a.cb)}function Ff(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==wf&&(208<=c&&236>c?e=a.X+xf:28<=c&&72>c&&(e=a.X+yf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]} +function rd(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.fb&1?(Xd(a.w,2),c=!1):Xd(a.w,1):Xd(a.w,4));if(c&&a.W&&a.L){for(var d=a.I,e=a.la,f=a.L,g=!0,h=e>>>d.g,e=d.u-(e&d.j);0>=1);;){var x=ac(a.I,t++);if((x&Gf)==Gf){var w=ac(a.I,t++),d=w&Hf,c=(w&If)<< +8|ac(a.I,t),c=c+(w&Jf?Kf:Lf);break}if(p>4)*x.ca,L,za,sa,Aa,ta=x.ga,Ba=x.ca;C?(L=z*w.ga,za=f*w.ca,sa=w.ga,Aa=w.ca):(L=z*w.Ka,za=f*w.La,sa=w.Ka,Aa=w.La);x.ga>w.ga&&(L*=2,sa*=2);x.ca>w.ca&&(v==Ef&&(T+=w.ca),Ba=w.ca);C?C.drawImage(x.canvas,ya,T,ta,Ba,L,za,sa,Aa):(L+=0, +za+=0,w.j.drawImage(x.canvas,ya,T,ta,Ba,L,za,sa,Aa))}e++}h++}f++}}a.W=!0;!b&&a.wa&&1==e&&(a.A[k]=-1,e=0);a.wa=!1;(e||b)&&a.ta&&a.j.drawImage(a.F,0,a.sa,a.C,a.N-a.ca,0,0,a.Bb,a.ud)}else{f=a.la;g=f+a.L;k=e=h=0;b=a.C;p=0;c=a.N;v=d=0;t=a.na;z=(1<>8|(w&255)<<8);e>C&z,Ff(a,a.Ua,e++,k,ya),C+=t;e>p&&(p=e);k=d&&(d=k+1)}f+=2;h++;if(e>=a.C&&(e=0,k++,k>a.N))break}a.W= +!0;bMissing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=La().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= +(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ua("aspect"));f&&.3<=f&&3.33>=f&&(Ya("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new pf(d,e,g,f,c);rb(d,c)}}); +function Mf(a){u.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:r("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.u=0;this.N=!1;this.F=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=Nf;b&&(void 0===c&&(c="Panel"),(c=wb(c,this.id))&&(b=c.P[b])&&this.da(null,a,b))}this.A="";this.b=this.Qa=this.H=null;this.exports={connect:this.Fc,receiveData:this.Nb,receiveStatus:this.oe}} +aa(Mf,u);l=Mf.prototype;l.da=function(a,b,c,d){var e=this;switch(b){case Nf:return this.P[b]=this.g=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=xa(c[0]);if(d!=this.Gb)return;c=xa(c[1]);if(this.b=vb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.F);if(this.Qa=e.receiveData){this.F=a;this.H=e.receiveStatus;this.status("Connected "+this.ab+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.va=function(a,b){if(!b)if(this.Fc(this.F),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.ua=function(a){return a?this.save():!0};l.reset=function(){Rf(this)};l.save=function(){var a=new zd(this),b=0,c=[];c[b++]=this.G;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};l.restore=function(a){return Rf(this,a[0])}; +function Rf(a,b){var c=0;b||(b=Sf);a.G=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function Tf(a,b){var c=a.L&b;b&15||(c>>=4);b=Uf[c];c=((a.B&Vf)>>2)+6;a.B&Wf&&c++;c+=((a.B&Xf)>>6)+1>>1;return 1E3/Math.round(b/c)}function Of(a,b){Kb(a,"receiveByte("+na(b)+"), status="+na(a.ia));return a.N||a.ia&Yf?!1:(a.M=b,a.ia|=Yf,Xd(a.w,a.X),!0)} +l.Nb=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(Of(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.w&&bd(this.w,this.Y,Tf(this,Zf)));return!0};l.oe=function(a){this.ia&=~$f;a&64&&(this.ia|=$f)};function Ye(a,b){a.ia=a.ia|ie|ag;b&&a.Qa&&a.Qa.call(a.b,b)}l.Id=function(a,b){var c=this.M;y(this,a,null,b,"DATA",c);this.ia&=~Yf;return c};l.Hd=function(a,b){var c=this.ia;y(this,a,null,b,"STATUS",c);return c}; +l.Wd=function(a,b,c){y(this,a,b,c,"DATA");this.O=b;this.ia&=~(ie|ag);Kb(this,"transmitByte("+na(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Qa&&this.Qa.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.u%b,this.V&&(a=wa("",c))):13==b&&(this.u=c=0,a="\n");this.S&&!this.u&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop= +this.g.scrollHeight;this.u+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.w&&bd(this.w,this.Z,Tf(this,bg))};l.Vd=function(a,b,c){y(this,a,b,c,"CONTROL");this.G?(this.H&&(b^this.C)&(cg|dg)&&(a=0,this.F?(a|=b&cg?32:0,a|=b&dg?320:0):(a|=b&cg?16:0,a|=b&dg?1048576:0),this.H.call(this.b,a)),this.C=b,this.C&eg&&(this.G=!1)):(this.B=b,this.G=!0)};l.Ud=function(a,b,c){y(this,a,b,c,"BAUDRATES");this.L=b}; +var Vf=12,Wf=16,Xf=192,dg=2,cg=32,eg=64,ie=1,Yf=2,ag=4,$f=128,Zf=15,bg=240,Uf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Sf=[!1,0,0,133,142,39,238],Nf="buffer",Pf={0:Mf.prototype.Id,1:Mf.prototype.Hd},Qf={0:Mf.prototype.Wd,1:Mf.prototype.Vd,2:Mf.prototype.Ud};Za(function(){for(var a=sb(document,"pc8080","serial"),b=0;bthis.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.N?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(xa(a.substring(d,f))),d=f+1}}return b}; +function gg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a<<32-b>>32-b:(b=Math.pow(2,b-1),a>=b?(d=a%b,(a/b|0)&1&&(d-=b)):a<-b&&(d=a%b,((-a-1)/b|0)&1?d&&(d+=b):d||(d-=b)));a!=d&&(a=d);return a} +function hg(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= +f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case ",,":e=gg(e,18,!0)*Math.pow(2,18)+gg(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=gg(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=ig(a,b,0,b.length,a.u,c);void 0!==d&&e&&qg(a,null,d)}return d} +function rg(a,b){var c,d=a.U[0],e=a.U[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=pg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?og(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e= +a.S-a.ba}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function kg(a,b){for(;b;){switch(b&3){case 1:a=-gg(a);break;case 2:a|=-1;break;case 3:for(var c=35;0<=c&&!(a&Math.pow(2,c));)c--;a=35-c}b>>>=2}return a} +function jg(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.Jb(b);if(0<=f)f=a.Kb(f);else if(f=b,a.A[f]?f=a.A[f].value:(f=f.substr(0,6),f=a.A[f]&&a.A[f].value),null!=f){var h=a.A[b]&&a.A[b].qe;h&&(g?g.push(h):(g=pg(a,h,d),void 0!==g?f+=g:(d||a.i("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=la(b,1c&&(d+=" '"+String.fromCharCode(c)+"'"));a.i((null!=b?b+": ":"")+d);return e}function sg(a,b){var c=0;if(a.A){if(b)return qg(a,b,a.A[b]&&a.A[b].value);b=Object.keys(a.A);b.sort();for(var d=0;d=a?8:262143>=a?18:36);b=ma(b,2,a,"",e);break;case 8:(a=0=a?6:16777215>=a?8:12);b=ma(b,8,a,e?"0o":"");break;case 10:(e=0=Math.abs(b)?5:11;b=ma(b,10,e);break;default:b=n(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var mg={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},lg={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20}; +function tg(a){fg.call(this,a);this.style=ug;this.L=vg();this.sa=vg();this.T=vg();this.C=[];this.j=this.M=this.B=[];wg(this);this.X=0;xg(this);this.la={};yg(this,a.messages);this.na=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Tc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Tc(b,a)})}aa(tg,fg);l=tg.prototype; +l.Fa=function(a,b,c,d){this.I=b;this.w=c;this.R=a;(a=Pc(a,"messages"))&&yg(this,a);this.oa=zg;fe(this,64,function(a){a:{var b=d.I.b,c=a[0],e=a=0,k=b.length;if(c){a=Ag(Bg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.I.g;k=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;k--;){var t=b[e];t.type==c?p++||d.i("..."):(c=t.type,p=Zb[c],t&&d.i(n(t.id)+" %"+n(e<>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].ob(f,b&255,d),e.b[g&e.H].ob(0,b>>8&255,d+1));c&&ah(a,c);Uc(this.w,!0)}};function vg(a){return{J:a,Ea:!1}}function ch(a){return[a.J,a.Ea]}function dh(a){return{J:a[0],Ea:a[1]}} +function Bg(a,b,c){var d;c=(c?a.L:a.sa).J;if(void 0!==b){d=b=rg(a,b)||b;var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;cc&&(c=Ia(hh,a.substr(b,1))));return c};function ih(a,b){var c=0;a=a.Kb(b);if(void 0!==a)switch(b){case jh:case kh:case lh:case mh:case nh:case oh:case ph:case qh:c=2;break;case rh:case sh:case th:case uh:case vh:case wh:case xh:c=4}return c?n(a,c):"??"} +l.Kb=function(a){var b;if(0<=a){var c=this.w;switch(a){case jh:b=c.g;break;case kh:b=c.u;break;case lh:b=c.A;break;case rh:b=Ad(c);break;case mh:b=c.B;break;case nh:b=c.C;break;case sh:b=Cd(c);break;case oh:b=c.F;break;case ph:b=c.G;break;case th:b=D(c);break;case qh:b=E(c,D(c));break;case uh:b=c.M;break;case vh:b=c.j;break;case wh:b=yd(c);break;case xh:b=yd(c)&255|c.g<<8}}return b}; +function yh(a,b){b=rg(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Jb(b,c+1),0<=e&&(b=b.substr(0,c)+ih(a,e)+b.substr(c+1+hh[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=la(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Bg(a,e))?(d=e+' "'+gh(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Bg(a,e))?(ah(d),d= +e+' "'+gh(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+fh(vg(this.w.j).J));this.ha&536870912?this.Z.push(a):this.Y&&a==this.Y||(this.Y=a,this.ha&-2147483648&&(this.ea(),a+=" (cpu halted)"),this.i(a),this.w&&(a=this.w,cd(a),a.ta=0,Uc(a)))}; +function Lb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.Gb+"."+(null!=d?"outPort":"inPort")+"("+q(c)+","+(f?f:"unknown")+(null!=d?","+na(d):"")+")"+(null!=g?": "+na(g):"")+(null!=e?" at "+fh(e):""))} +function xg(a){var b;if(Yd(a)){if(!a.H||!a.H.length){a.H=Array(zh);for(b=0;b>>d.g],!1)}a.M=["br"];if(a.B)for(b=1;b>>d.g],!0);a.B=["bw"];a.ta=0}l.Oa=function(a,b,c){var d=!0;c||Fh(this,a,b,!1,!0);if(a!=this.j){var e=Ag(b);if(-1===e)this.i("invalid address: "+fh(b.J)),d=!1;else{var f=this.I;f.b[e>>>f.g].Oa(e&f.j,a==this.B)}}d&&(a.push(b),c?b.Ea=!0:(Gh(this,a,a.length-1,"set"),xg(this)));return d}; +function Fh(a,b,c,d,e){var f=!1;c=Ag(c);for(var g=1;g>>d.g],b==a.B));h.Ea||xg(a);break}}return f}function Hh(a,b){for(var c=1;c>24,4);break;case Uh:C=n(x.Eb(C,2),4);break;default:x="imm("+q(w)+")";break a}x.style==Kh&&w&Vh?C="["+C+"]":w&Wh||(C=(x.style==ug?"$":"0x")+C);x=C}else w&Wh?(x=(v&Xh)>>8, +w=hh[x],a.style==Kh&&v&Vh&&(x==qh&&(w="HL"),w="["+w+"]"),x=w):w&Yh&&(x=(f>>3&7).toString());if(!x||!x.length){h="INVALID";break}0b[0]?1:a[0]>>0;for(b=0;b>>0,h=f.Rd;if(e>=g&&e>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break; +case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.F=f&255;break;case "HL":d.F=f>>8&255;case "L":d.G=f&255;break;case "SP":d.M=f&65535;break;case "PC":B(d,f);a.L=vg(d.j);break;case "PS":wd(d,f);break;case "PSW":wd(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.H=f?d.H|256:d.H&255;break;case "PF":f?Hd(d)||(d.L^=1):Hd(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.H=f?d.H&-256:d.H|255;break;case "SF":f?Kd(d)||(d.L^=192):Kd(d)&&(d.L^=192);break;case "IF":d.N= +f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Uc(d);a.i("updated registers:")}a.i(bi(a));c&&(a.L=vg(d.j),Dh(a,fh(a.L.J)))}}function ii(a,b){b=xa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(yh(a,c[2])):pg(a,b,!1)}function ji(a,b,c){var d="t"!=b;c=jg(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Wa(c,function(){return Ib(a,!0)&&Cg(a,e,d,!1)},function(){Uc(a.w);Ib(a,!1)})} +function Dh(a,b,c,d){if(b=Bg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Bg(a,c,!0);if(!d||d.Jh[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=Jh(a,b,g,f);a.i(f);a.L=b;e-=b.J-k;c++}}} +l.yb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.N?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(xa(a.substring(d,f))),d=f+1}}return b}; +function Ih(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.N&&(a.i("ended assemble at "+fh(a.T.J)),a.L=a.T,a.N=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Y=null;if(Fb(a)&&0p||"z"bb.length&&(a.i("note: only "+bb.length+" available"),Da=bb.length);Oa-=Da;0>Oa&&(null==bb[bb.length-1].J?(Da=Oa+Da,Oa=0):Oa+=bb.length);var ve= +[];"call"==Ig&&(oc=1E5,ve=["CALL"]);for(void 0!==Hg&&a.i(Da+" instructions earlier:");0=bb.length&&(Oa=0);a.wa=Da;Kg++;oc--}}Kg||(a.i("no "+Jg+"history available"),a.wa=void 0)}else{var ed=Bg(a,ta);if(ed){var fd=0;Ba&&("l"==Ba.charAt(0)&&(Ba=Ba.substr(1)||Oi),fd=jg(a,Ba)>>>0,65536>4||1;Qi--&&0jd?String.fromCharCode(jd):".";hd--}qc&&(qc+="\n");qc+=ta+" "+xe+(rc?"":" "+Ng)}qc&&a.i(qc);a.sa=ed}}}}break;case "e":if("else"==f[0])break;var kd=1,Og=255,Pg=a.Ga,Qg=a.Xb;"ew"==f[0]&&(kd=2,Og=65535,Pg=a.Eb,Qg=a.Qc);var Rg=kd<<1,Sg=f[1];if(null==Sg)a.i("edit memory commands:"), +a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var ld=Bg(a,Sg);if(ld)for(var md=2;mdEe;){for(var xb=null,Wi=256;65536>uc.J>>>0;){Ug.J= +a.Eb(uc,2);if(null==uc.J||!Wi--)break;for(var Xi=a,od=Ug,Vg=null,vc=od.J,Wg=vc,Fe=1;6>=Fe&&vc;Fe++){if(2\nLicense: GPL version 3 or later ");for(b=0;bti){if(vi(d,this.H)){this.u=new zd(this,"1.36.2",Ei);vi(this.u)&&(Fi(this,d),a=Gi,Hi(this.u));this.u.set(Bi,Fa());Ii(this.u);var e=this.b&&!this.F;if(a==Ci||pb("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Ai(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?vi(d,g):("error"==f&&"no machine state"!= +g?(this.aa("Error: "+g),"unable to verify user"==g&&(Qa(Ji,""),this.g=null)):this.i(f+": "+g),Hi(d),vi(d)?(c=Ai(d),e=!0):c=!1))}e&&yi(this,c?d:null)}else a==Gi&&d.clear()}else yi(this);delete this.H;delete this.L}e=ub(this.id);for(f=0;fa[1];a=a[2];this.V=!0;this.D.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.w&&(Ki(this,this.w,b,c,a),this.w.ib());this.O&&(Fi(this,b),b.clear());!c&&this.u&&(this.u.clear(),delete this.u);this.j=0}; +function Fi(a,b){if(pb("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.g||"";b=b.toString();var d={app:"PC8080",ver:"1.36.2"};d.url=a.W;d.user=c;d.type="bug";d.data=b;Ja("http://www.pcjs.org/api/v1/report",d,!0)}} +function ki(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new zd(a,"1.36.2"),g=new zd(a,"1.36.2",zi),h=Fa();g.set(Bi,h);f.set(Bi,h);f.set(Li,"1.36.2");f.set(Mi,window?window.location.href:null);f.set(Ni,La());a.w&&a.w.ua&&(c&&a.w.ea(),d=a.w.ua(b,c),"object"===typeof d&&f.set(a.w.id,d),c&&(a.w.D.ja=!1,!1===d&&(e=null)));for(var h=ub(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/, +"$1PC8080$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(t){f=null,a=t.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ja(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],p,t=/( [a-z]+=)(['"])(.*?)\2/gi;p=t.exec(f);)k=0>k.toLowerCase().indexOf(p[1].toLowerCase())?k.replace(">",p[0]+">"):k.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);ij(a,b,c)}})}else c(a,null)} +function jj(a,b,c,d){function e(a){if(void 0===h){var b=g&&sb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ua(a))}function f(a){e("Error: "+a);k&&(--fj||gb(!0));k=!1}var g,h,k=!0;fj++;mb[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=p:v.appendChild(document.createTextNode(p));t.appendChild(v)}c|| +(c="/versions/pc8080/1.36.2/components.xsl");p=function(d,h){h?gj(c,null,null,!1,e,function(d,k){k?(lb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--fj||gb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--fj||gb(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?gj(b,a,d,!0,e,p):hj(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPC8080=function(a,b,c,d){gb(!1);return jj(a,b,c,d)}; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if(!f)delete zb[c],d=!0;else if("string"==typeof f&&!zb[c]){d=!0;e=zb;for(var g=c,h=f.length,k=[],p=[],t="",v=null,z=0;z 1 G (Ground) + * TD 2 <-> 3 RD (Received Data) + * RD 3 <-> 2 TD (Transmitted Data) + * RTS 4 <-> 5 CTS (Clear To Send) + * CTS 5 <-> 4 RTS (Request To Send) + * DSR 6+8 <-> 20 DTR (Data Terminal Ready) + * SG 7 <-> 7 SG (Signal Ground) + * DTR 20 <-> 6+8 DSR (Data Set Ready + Carrier Detect) + * RI 22 <-> 22 RI (Ring Indicator) + * + * TODO: Move these definitions to a more appropriate shared file at some point. + */ +var RS232 = { + RTS: { + PIN: 4, + MASK: 0x00000010 + }, + CTS: { + PIN: 5, + MASK: 0x00000020 + }, + DSR: { + PIN: 6, + MASK: 0x00000040 + }, + CD: { + PIN: 8, + MASK: 0x00000100 + }, + DTR: { + PIN: 20, + MASK: 0x00100000 + }, + RI: { + PIN: 22, + MASK: 0x00400000 + } +}; + +/* + * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser) + */ +var NODE = false; + + +/** + * @copyright http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + */ + +/* + * Our "DiskDump API", such as it was, used to look like: + * + * http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img + * + * To make it (a bit) more "REST-like", the above request now looks like: + * + * http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img + * + * Similarly, our "FileDump API" used to look like: + * + * http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json + * + * and that request now looks like: + * + * http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json + * + * I don't think it makes sense to avoid "query" parameters, because blending the path of a disk image with the + * the rest of the URL would be (a) confusing, and (b) more work to parse. + */ +var DumpAPI = { + ENDPOINT: "/api/v1/dump", + QUERY: { + DIR: "dir", // value is path of a directory (DiskDump only) + DISK: "disk", // value is path of a disk image (DiskDump only) + FILE: "file", // value is path of a ROM image file (FileDump only) + IMG: "img", // alias for DISK + PATH: "path", // value is path of a one or more files (DiskDump only) + FORMAT: "format", // value is one of FORMAT values below + COMMENTS: "comments", // value is either "true" or "false" + DECIMAL: "decimal", // value is either "true" to force all numbers to decimal, "false" or undefined otherwise + MBHD: "mbhd", // value is hard drive size in Mb (formerly "mbsize") (DiskDump only) (DEPRECATED) + SIZE: "size" // value is target disk size in Kb (supersedes "mbhd") (DiskDump only) + }, + FORMAT: { + JSON: "json", // default + JSON_GZ: "gz", // gzip is currently used ONLY for compressed JSON + DATA: "data", // same as "json", but built without JSON.stringify() (DiskDump only) + HEX: "hex", // deprecated + OCTAL: "octal", // displays data as octal words + BYTES: "bytes", // displays data as hex bytes; normally used only when comments are enabled + WORDS: "words", // displays data as hex words; normally used only when comments are enabled + LONGS: "longs", // displays data as dwords + IMG: "img", // returns the raw disk data (ie, using a Buffer object) (DiskDump only) + ROM: "rom" // returns the raw file data (ie, using a Buffer object) (FileDump only) + } +}; + +/* + * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must + * also provide a list of commands which, when combined with the endpoint, define a unique request. + */ +DumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH]; +DumpAPI.asFileCommands = [DumpAPI.QUERY.FILE]; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + */ + +var ReportAPI = { + ENDPOINT: "/api/v1/report", + QUERY: { + APP: "app", + VER: "ver", + URL: "url", + USER: "user", + TYPE: "type", + DATA: "data" + }, + TYPE: { + BUG: "bug" + }, + RES: { + OK: "Thank you" + } +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + */ + +/* + * Examples of User API requests: + * + * web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUser; + */ +var UserAPI = { + ENDPOINT: "/api/v1/user", + QUERY: { + REQ: "req", // specifies a request + USER: "user", // specifies a user ID + STATE: "state", // specifies a state ID + DATA: "data" // specifies state data + }, + REQ: { + CREATE: "create", // creates a user ID + VERIFY: "verify", // requests verification of a user ID + STORE: "store", // stores a machine state on the server + LOAD: "load" // loads a machine state from the server + }, + RES: { + CODE: "code", + DATA: "data" + }, + CODE: { + OK: "ok", + FAIL: "error" + }, + FAIL: { + DUPLICATE: "user already exists", + VERIFY: "unable to verify user", + BADSTATE: "invalid state parameter", + NOSTATE: "no machine state", + BADLOAD: "unable to load machine state", + BADSTORE: "unable to save machine state" + } +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + */ + +var Keys = { + /* + * Keys and/or key combinations that generate common ASCII codes. + * + * NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js; + * if something's missing, that's probably the more appropriate table to add it to. + * + * TODO: The Closure Compiler doesn't inline all references to these values, at least those with + * quoted property names, which is why I've 'unquoted' as many of them as possible. One solution + * would be to add mnemonics for all of them, not just the non-printable ones (eg, SPACE instead + * of ' ', AMP instead of '&', etc.) + */ + ASCII: { + BREAK: 0, CTRL_A: 1, CTRL_B: 2, CTRL_C: 3, CTRL_D: 4, CTRL_E: 5, CTRL_F: 6, CTRL_G: 7, + CTRL_H: 8, CTRL_I: 9, CTRL_J: 10, CTRL_K: 11, CTRL_L: 12, CTRL_M: 13, CTRL_N: 14, CTRL_O: 15, + CTRL_P: 16, CTRL_Q: 17, CTRL_R: 18, CTRL_S: 19, CTRL_T: 20, CTRL_U: 21, CTRL_V: 22, CTRL_W: 23, + CTRL_X: 24, CTRL_Y: 25, CTRL_Z: 26, + ' ': 32, '!': 33, '"': 34, '#': 35, '$': 36, '%': 37, '&': 38, "'": 39, + '(': 40, ')': 41, '*': 42, '+': 43, ',': 44, '-': 45, '.': 46, '/': 47, + '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, + '8': 56, '9': 57, ':': 58, ';': 59, '<': 60, '=': 61, '>': 62, '?': 63, + '@': 64, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, + H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, + P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, + X: 88, Y: 89, Z: 90, '[': 91, '\\':92, ']': 93, '^': 94, '_': 95, + '`': 96, a: 97, b: 98, c: 99, d: 100, e: 101, f: 102, g: 103, + h: 104, i: 105, j: 106, k: 107, l: 108, m: 109, n: 110, o: 111, + p: 112, q: 113, r: 114, s: 115, t: 116, u: 117, v: 118, w: 119, + x: 120, y: 121, z: 122, '{':123, '|':124, '}':125, '~':126, DEL: 127 + }, + /* + * Browser keyCodes we must pay particular attention to. For the most part, these are non-alphanumeric + * or function keys, some which may require special treatment (eg, preventDefault() if returning false on + * the initial keyDown event is insufficient). + * + * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above. + * + * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined + * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37). + */ + KEYCODE: { + /* 0x08 */ BS: 8, // BACKSPACE (ASCII.CTRL_H) + /* 0x09 */ TAB: 9, // TAB (ASCII.CTRL_I) + /* 0x0A */ LF: 10, // LINE FEED (ASCII.CTRL_J) (TODO: Determine if any key actually generates this) + /* 0x0D */ CR: 13, // CARRIAGE RETURN (ASCII.CTRL_M) + /* 0x10 */ SHIFT: 16, + /* 0x11 */ CTRL: 17, + /* 0x12 */ ALT: 18, + /* 0x13 */ PAUSE: 19, // PAUSE/BREAK + /* 0x14 */ CAPS_LOCK: 20, + /* 0x1B */ ESC: 27, + /* 0x20 */ SPACE: 32, + /* 0x21 */ PGUP: 33, + /* 0x22 */ PGDN: 34, + /* 0x23 */ END: 35, + /* 0x24 */ HOME: 36, + /* 0x25 */ LEFT: 37, + /* 0x26 */ UP: 38, + /* 0x27 */ RIGHT: 39, + /* 0x27 */ FF_QUOTE: 39, + /* 0x28 */ DOWN: 40, + /* 0x2C */ FF_COMMA: 44, + /* 0x2C */ PRTSC: 44, + /* 0x2D */ INS: 45, + /* 0x2E */ DEL: 46, + /* 0x2E */ FF_PERIOD: 46, + /* 0x2F */ FF_SLASH: 47, + /* 0x30 */ ZERO: 48, + /* 0x31 */ ONE: 49, + /* 0x32 */ TWO: 50, + /* 0x33 */ THREE: 51, + /* 0x34 */ FOUR: 52, + /* 0x35 */ FIVE: 53, + /* 0x36 */ SIX: 54, + /* 0x37 */ SEVEN: 55, + /* 0x38 */ EIGHT: 56, + /* 0x39 */ NINE: 57, + /* 0x3B */ FF_SEMI: 59, + /* 0x3D */ FF_EQUALS: 61, + /* 0x5B */ CMD: 91, // aka WIN + /* 0x5B */ FF_LBRACK: 91, + /* 0x5C */ FF_BSLASH: 92, + /* 0x5D */ RCMD: 93, // aka MENU + /* 0x5D */ FF_RBRACK: 93, + /* 0x60 */ NUM_0: 96, + /* 0x60 */ NUM_INS: 96, + /* 0x60 */ FF_BQUOTE: 96, + /* 0x61 */ NUM_1: 97, + /* 0x61 */ NUM_END: 97, + /* 0x62 */ NUM_2: 98, + /* 0x62 */ NUM_DOWN: 98, + /* 0x63 */ NUM_3: 99, + /* 0x63 */ NUM_PGDN: 99, + /* 0x64 */ NUM_4: 100, + /* 0x64 */ NUM_LEFT: 100, + /* 0x65 */ NUM_5: 101, + /* 0x65 */ NUM_CENTER: 101, + /* 0x66 */ NUM_6: 102, + /* 0x66 */ NUM_RIGHT: 102, + /* 0x67 */ NUM_7: 103, + /* 0x67 */ NUM_HOME: 103, + /* 0x68 */ NUM_8: 104, + /* 0x68 */ NUM_UP: 104, + /* 0x69 */ NUM_9: 105, + /* 0x69 */ NUM_PGUP: 105, + /* 0x6A */ NUM_MUL: 106, + /* 0x6B */ NUM_ADD: 107, + /* 0x6D */ NUM_SUB: 109, + /* 0x6E */ NUM_DEL: 110, // aka PERIOD + /* 0x6F */ NUM_DIV: 111, + /* 0x70 */ F1: 112, + /* 0x71 */ F2: 113, + /* 0x72 */ F3: 114, + /* 0x73 */ F4: 115, + /* 0x74 */ F5: 116, + /* 0x75 */ F6: 117, + /* 0x76 */ F7: 118, + /* 0x77 */ F8: 119, + /* 0x78 */ F9: 120, + /* 0x79 */ F10: 121, + /* 0x7A */ F11: 122, + /* 0x7B */ F12: 123, + /* 0x90 */ NUM_LOCK: 144, + /* 0x91 */ SCROLL_LOCK: 145, + /* 0xAD */ FF_DASH: 173, + /* 0xBA */ SEMI: 186, // Firefox: 59 (FF_SEMI) + /* 0xBB */ EQUALS: 187, // Firefox: 61 (FF_EQUALS) + /* 0xBC */ COMMA: 188, + /* 0xBD */ DASH: 189, // Firefox: 173 (FF_DASH) + /* 0xBE */ PERIOD: 190, + /* 0xBF */ SLASH: 191, + /* 0xC0 */ BQUOTE: 192, + /* 0xDB */ LBRACK: 219, + /* 0xDC */ BSLASH: 220, + /* 0xDD */ RBRACK: 221, + /* 0xDE */ QUOTE: 222, + /* 0xE0 */ FF_CMD: 224, // Firefox only (used for both CMD and RCMD) + // + // The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD), + // where the thousands digit is used to store the sum of "binary" digits 1 and/or 2 and/or 4. + // + // Technically, that makes it DCO (Decimal Coded Octal), but then again, BCD should have really + // been called HCD (Hexadecimal Coded Decimal), so if "they" can take liberties, so can I. + // + // ONDOWN is a bias we add to browser keyCodes that we want to handle on "down" rather than on "press". + // + ONDOWN: 1000, + // + // ONRIGHT is a bias we add to browser keyCodes that need to check for a "right" location (default is "left") + // + ONRIGHT: 2000, + // + // FAKE is a bias we add to signal these are fake keyCodes corresponding to internal keystroke combinations. + // The actual values are for internal use only and merely need to be unique and used consistently. + // + FAKE: 4000 + }, + /* + * The set of values that a browser may store in the 'location' property of a keyboard event object + * which we also support. + */ + LOCATION: { + LEFT: 1, + RIGHT: 2, + NUMPAD: 3 + } +}; + +/* + * Check the event object's 'location' property for a non-zero value for the following ONRIGHT keys. + */ +Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT; + + +/* + * Maps Firefox keyCodes to their more common keyCode counterparts; a number of entries in this table + * are no longer valid (if indeed they ever were), so they've been commented out. It's likely that I + * simply extended this table to resolve additional differences in other browsers (ie, Opera), but without + * browser-specific checks, it's not safe to perform all the mappings shown below. + */ +Keys.FF_KEYCODES = {}; +Keys.FF_KEYCODES[Keys.KEYCODE.FF_SEMI] = Keys.KEYCODE.SEMI; // 59 -> 186 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.KEYCODE.EQUALS; // 61 -> 187 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.KEYCODE.DASH; // 173 -> 189 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_CMD] = Keys.KEYCODE.CMD; // 224 -> 91 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_COMMA] = Keys.KEYCODE.COMMA; // 44 -> 188 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_PERIOD] = Keys.KEYCODE.PERIOD; // 46 -> 190 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_SLASH] = Keys.KEYCODE.SLASH; // 47 -> 191 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BQUOTE] = Keys.KEYCODE.BQUOTE; // 96 -> 192 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_LBRACK = Keys.KEYCODE.LBRACK; // 91 -> 219 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BSLASH] = Keys.KEYCODE.BSLASH; // 92 -> 220 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_RBRACK] = Keys.KEYCODE.RBRACK; // 93 -> 221 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_QUOTE] = Keys.KEYCODE.QUOTE; // 39 -> 222 + +/* + * Maps non-ASCII keyCodes to their ASCII counterparts + */ +Keys.NONASCII_KEYCODES = {}; +Keys.NONASCII_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['-']; // 173 -> 45 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[';']; // 186 -> 59 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['=']; // 187 -> 61 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.DASH] = Keys.ASCII['-']; // 189 -> 45 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.COMMA] = Keys.ASCII[',']; // 188 -> 44 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['.']; // 190 -> 46 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SLASH] = Keys.ASCII['/']; // 191 -> 47 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['`']; // 192 -> 96 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['[']; // 219 -> 91 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['\\']; // 220 -> 92 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII[']']; // 221 -> 93 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.QUOTE] = Keys.ASCII["'"]; // 222 -> 39 + +/* + * Maps unshifted keyCodes to their shifted counterparts; to be used when a shift-key is down. + * Alphabetic characters are handled in code, since they must also take CAPS_LOCK into consideration. + */ +Keys.SHIFTED_KEYCODES = {}; +Keys.SHIFTED_KEYCODES[Keys.ASCII['1']] = Keys.ASCII['!']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['2']] = Keys.ASCII['@']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['3']] = Keys.ASCII['#']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['4']] = Keys.ASCII['$']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['5']] = Keys.ASCII['%']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['6']] = Keys.ASCII['^']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['7']] = Keys.ASCII['&']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['8']] = Keys.ASCII['*']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['9']] = Keys.ASCII['(']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['0']] = Keys.ASCII[')']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[':']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['+']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.COMMA] = Keys.ASCII['<']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.DASH] = Keys.ASCII['_']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['>']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SLASH] = Keys.ASCII['?']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['~']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['{']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['|']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII['}']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.QUOTE] = Keys.ASCII['"']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['_']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.ASCII['+']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_SEMI] = Keys.ASCII[':']; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + */ + +class Str { + /** + * isValidInt(s, base) + * + * The built-in parseInt() function has the annoying feature of returning a partial value (ie, + * up to the point where it encounters an invalid character); eg, parseInt("foo", 16) returns 0xf. + * + * So it's best to use our own Str.parseInt() function, which will in turn use this function to + * validate the entire string. + * + * @param {string} s is the string representation of some number + * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported + * @return {boolean} true if valid, false if invalid (or the specified base isn't supported) + */ + static isValidInt(s, base) + { + if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null; + if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null; + if (base == 8) return s.match(/^-?[0-7]+$/) !== null; + if (base == 2) return s.match(/^-?[01]+$/) !== null; + return false; + } + + /** + * parseInt(s, base) + * + * This is a wrapper around the built-in parseInt() function. Our wrapper recognizes certain prefixes + * ('$' or "0x" for hex, '#' or "0o" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for + * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values; + * see isValidInt() for details. + * + * The use of multiple prefix/suffix combinations is undefined (although for the record, we process + * prefixes first). We do NOT support the "0b" prefix to indicate binary UNLESS one or more commas are + * also present (because "0b" is also a valid hex sequence), and we do NOT support a single leading zero + * to indicate octal (because such a number could also be decimal or hex). Any number of commas are + * allowed; we remove them all before calling the built-in parseInt(). + * + * More recently, we've added support for "^D", "^O", and "^B" prefixes to accommodate the base overrides + * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively). + * If this support turns out to adversely affect other debuggers, then it will have to be "conditionalized". + * Similarly, we've added support for "K", "M", and "G" MACRO-10-style suffixes that add 3, 6, or 9 zeros + * to the value to be parsed, respectively. + * + * @param {string} s is the string representation of some number + * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes + * @return {number|undefined} corresponding value, or undefined if invalid + */ + static parseInt(s, base) + { + var value; + + if (s) { + if (!base) base = 10; + + var ch, chPrefix, chSuffix; + var fCommas = (s.indexOf(',') > 0); + if (fCommas) s = s.replace(/,/g, ''); + + ch = chPrefix = s.charAt(0); + if (chPrefix == '#') { + base = 8; + chPrefix = ''; + } + else if (chPrefix == '$') { + base = 16; + chPrefix = ''; + } + if (ch != chPrefix) { + s = s.substr(1); + } + else { + ch = chPrefix = s.substr(0, 2); + if (chPrefix == '0b' && fCommas || chPrefix == '^B') { + base = 2; + chPrefix = ''; + } + else if (chPrefix == '0o' || chPrefix == '^O') { + base = 8; + chPrefix = ''; + } + else if (chPrefix == '^D') { + base = 10; + chPrefix = ''; + } + else if (chPrefix == '0x') { + base = 16; + chPrefix = ''; + } + if (ch != chPrefix) s = s.substr(2); + } + ch = chSuffix = s.slice(-1); + if (chSuffix == 'Y' || chSuffix == 'y') { + base = 2; + chSuffix = ''; + } + else if (chSuffix == '.') { + base = 10; + chSuffix = ''; + } + else if (chSuffix == 'H' || chSuffix == 'h') { + base = 16; + chSuffix = ''; + } + else if (chSuffix == 'K') { + chSuffix = '000'; + } + else if (chSuffix == 'M') { + chSuffix = '000000'; + } + else if (chSuffix == 'G') { + chSuffix = '000000000'; + } + if (ch != chSuffix) s = s.slice(0, -1) + chSuffix; + /* + * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the + * number before parsing, and then applied to the value after parsing. If n is omitted, 35 is assumed, + * which is a net shift of zero. If n < 35, then a left shift of (35 - n) is required; if n > 35, then + * a right shift of -(35 - n) is required. + */ + var v, shift = 0; + if (base <= 10) { + var match = s.match(/(-?[0-9]+)B([0-9]*)/); + if (match) { + s = match[1]; + shift = 35 - ((match[2] || 35) & 0xff); + } + } + if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) { + /* + * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful. + * + * value = v|0; + */ + if (shift) { + /* + * Since binary shifting is a logical operation, and since shifting by division only works properly + * with positive numbers, we must convert a negative value to a positive value, by computing the two's + * complement. + */ + if (v < 0) v += Math.pow(2, 36); + if (shift > 0) { + v *= Math.pow(2, shift); + } else { + v = Math.trunc(v / Math.pow(2, -shift)); + } + } + value = v; + } + } + return value; + } + + /** + * toBase(n, radix, cch, sPrefix, nGrouping) + * + * Displays the given number as an unsigned integer using the specified radix and number of digits. + * + * @param {number|null|undefined} n + * @param {number} radix (ie, the base) + * @param {number} cch (the desired number of digits) + * @param {string} [sPrefix] (default is none) + * @param {number} [nGrouping] + * @return {string} + */ + static toBase(n, radix, cch, sPrefix = "", nGrouping = 0) + { + /* + * An initial "falsey" check for null takes care of both null and undefined; + * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough. + * + * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN, + * since JavaScript coerces such operands to zero, but I think there's "value" in seeing those + * values displayed differently. + */ + var s = ""; + if (isNaN(n)) { + n = null; + } else if (n != null) { + /* + * Callers that produced an input by dividing by a power of two rather than shifting (in order + * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply + * ignore, but if the integer portion is zero and the sign is negative, we should probably treat + * this value as a sign-extension. + */ + if (n < 0 && n > -1) n = -1; + /* + * Negative values should be two's complemented according to the number of digits; for example, + * 12 octal digits implies an upper limit 8^12. + */ + if (n < 0) { + n += Math.pow(radix, cch); + } + if (n >= Math.pow(radix, cch)) { + cch = Math.ceil(Math.log(n) / Math.log(radix)); + } + } + var g = nGrouping || -1; + while (cch-- > 0) { + if (!g) { + s = ',' + s; + g = nGrouping; + } + if (n == null) { + s = '?' + s; + } else { + var d = n % radix; + d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10); + s = String.fromCharCode(d) + s; + n = Math.trunc(n / radix); + } + g--; + } + return sPrefix + s; + } + + /** + * toBin(n, cch, nGrouping) + * + * Converts an integer to binary, with the specified number of digits (up to a maximum of 36). + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36) + * @param {number} [nGrouping] + * @return {string} the binary representation of n + */ + static toBin(n, cch, nGrouping) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1; + var v = Math.abs(n); + if (v <= 0b11111111) { + cch = 8; + } else if (v <= 0b111111111111111111) { + cch = 18; + } else { + cch = 36; + } + } else if (cch > 36) cch = 36; + return Str.toBase(n, 2, cch, "", nGrouping); + } + + /** + * toBinBytes(n, cb, fPrefix) + * + * Converts an integer to binary, with the specified number of bytes (up to the default of 4). + * + * @param {number|null|undefined} n (interpreted as a 32-bit value) + * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum) + * @param {boolean} [fPrefix] + * @return {string} the binary representation of n + */ + static toBinBytes(n, cb, fPrefix) + { + var s = ""; + if (!cb || cb > 4) cb = 4; + for (var i = 0; i < cb; i++) { + if (s) s = ',' + s; + s = Str.toBin(n & 0xff, 8) + s; + n >>= 8; + } + return (fPrefix? "0b" : "") + s; + } + + /** + * toOct(n, cch, fPrefix) + * + * Converts an integer to octal, with the specified number of digits (default of 6; max of 12) + * + * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw + * an exception, whereas this function will return '?' characters. + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12) + * @param {boolean} [fPrefix] + * @return {string} the octal representation of n + */ + static toOct(n, cch, fPrefix) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1; + var v = Math.abs(n); + if (v <= 0o777777) { + cch = 6; + } else if (v <= 0o77777777) { + cch = 8; + } else { + cch = 12; + } + } else if (cch > 12) cch = 12; + return Str.toBase(n, 8, cch, fPrefix? "0o" : ""); + } + + /** + * toDec(n, cch) + * + * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11) + * + * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw + * an exception, whereas this function will return '?' characters. + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11) + * @return {string} the decimal representation of n + */ + static toDec(n, cch) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1; + var v = Math.abs(n); + if (v <= 99999) { + cch = 5; + } else { + cch = 11; + } + } else if (cch > 11) cch = 11; + return Str.toBase(n, 10, cch); + } + + /** + * toHex(n, cch, fPrefix) + * + * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9). + * + * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16) + * will return "-7fffffff" instead of "80000001". Moreover, if n is undefined, n.toString() will + * throw an exception, whereas this function will return '?' characters. + * + * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution, + * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values: + * + * s = (n < 0? n + 0x100000000 : n).toString(16); + * s = "00000000".substr(0, 8 - s.length) + s; + * s = s.substr(0, cch).toUpperCase(); + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9) + * @param {boolean} [fPrefix] + * @return {string} the hex representation of n + */ + static toHex(n, cch, fPrefix) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1; + var v = Math.abs(n); + if (v <= 0xffff) { + cch = 4; + } else if (v <= 0xffffffff) { + cch = 8; + } else { + cch = 9; + } + } else if (cch > 9) cch = 9; + return Str.toBase(n, 16, cch, fPrefix? "0x" : ""); + } + + /** + * toHexByte(b) + * + * Alias for Str.toHex(b, 2, true) + * + * @param {number|null|undefined} b is a byte value + * @return {string} the hex representation of b + */ + static toHexByte(b) + { + return Str.toHex(b, 2, true); + } + + /** + * toHexWord(w) + * + * Alias for Str.toHex(w, 4, true) + * + * @param {number|null|undefined} w is a word (16-bit) value + * @return {string} the hex representation of w + */ + static toHexWord(w) + { + return Str.toHex(w, 4, true); + } + + /** + * toHexLong(l) + * + * Alias for Str.toHex(l, 8, true) + * + * @param {number|null|undefined} l is a dword (32-bit) value + * @return {string} the hex representation of w + */ + static toHexLong(l) + { + return Str.toHex(l, 8, true); + } + + /** + * getBaseName(sFileName, fStripExt) + * + * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead. + * + * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only + * if it matches the second parameter (eg, path.basename("/foo/bar/baz/asdf/quux.html", ".html") returns "quux"). + * + * @param {string} sFileName + * @param {boolean} [fStripExt] + * @return {string} + */ + static getBaseName(sFileName, fStripExt) + { + var sBaseName = sFileName; + + var i = sFileName.lastIndexOf('/'); + if (i >= 0) sBaseName = sFileName.substr(i + 1); + + /* + * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters. + */ + i = sBaseName.indexOf('&'); + if (i > 0) sBaseName = sBaseName.substr(0, i); + + if (fStripExt) { + i = sBaseName.lastIndexOf("."); + if (i > 0) { + sBaseName = sBaseName.substring(0, i); + } + } + return sBaseName; + } + + /** + * getExtension(sFileName) + * + * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead. + * + * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it. + * + * @param {string} sFileName + * @return {string} the filename's extension (in lower-case and EXCLUDING the "."), or an empty string + */ + static getExtension(sFileName) + { + var sExtension = ""; + var i = sFileName.lastIndexOf("."); + if (i >= 0) { + sExtension = sFileName.substr(i + 1).toLowerCase(); + } + return sExtension; + } + + /** + * endsWith(s, sSuffix) + * + * @param {string} s + * @param {string} sSuffix + * @return {boolean} true if s ends with sSuffix, false if not + */ + static endsWith(s, sSuffix) + { + return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1; + } + + /** + * escapeHTML(sHTML) + * + * @param {string} sHTML + * @return {string} with HTML entities "escaped", similar to PHP's htmlspecialchars() + */ + static escapeHTML(sHTML) + { + return sHTML.replace(/[&<>"']/g, function(m) + { + return Str.aHTMLEscapeMap[m]; + }); + } + + /** + * replace(sSearch, sReplace, s) + * + * The JavaScript replace() function ALWAYS interprets "$" specially in replacement strings, even when + * the search string is NOT a RegExp; specifically: + * + * $$ Inserts a "$" + * $& Inserts the matched substring + * $` Inserts the portion of the string that precedes the matched substring + * $' Inserts the portion of the string that follows the matched substring + * $n Where n is a positive integer less than 100, inserts the nth parenthesized sub-match string, + * provided the first argument was a RegExp object + * + * So, if a replacement string containing dollar signs passes through a series of replace() calls, untold + * problems could result. Hence, this function, which simply uses the replacement string as-is. + * + * Similar to the JavaScript replace() method (when sSearch is a string), this replaces only ONE occurrence + * (ie, the FIRST occurrence); it might be nice to add options to replace the LAST occurrence and/or ALL + * occurrences, but we'll revisit that later. + * + * @param {string} sSearch + * @param {string} sReplace + * @param {string} s + * @return {string} + */ + static replace(sSearch, sReplace, s) + { + var i = s.indexOf(sSearch); + if (i >= 0) { + s = s.substr(0, i) + sReplace + s.substr(i + sSearch.length); + } + return s; + } + + /** + * replaceAll(sSearch, sReplace, s) + * + * @param {string} sSearch + * @param {string} sReplace + * @param {string} s + * @return {string} + */ + static replaceAll(sSearch, sReplace, s) + { + var a = {}; + a[sSearch] = sReplace; + return Str.replaceArray(a, s); + } + + /** + * replaceArray(a, s) + * + * @param {Object} a + * @param {string} s + * @return {string} + */ + static replaceArray(a, s) + { + var sMatch = ""; + for (var k in a) { + /* + * As noted in: + * + * http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/ + * + * inside character classes, only backslash, caret, hyphen and the closing bracket need to be + * escaped. And in fact, if you ensure that the closing bracket is first, the caret is not first, + * and the hyphen is last, you can avoid escaping those as well. + */ + k = k.replace(/([\\[\]*{}().+?])/g, "\\$1"); + sMatch += (sMatch? '|' : '') + k; + } + return s.replace(new RegExp('(' + sMatch + ')', "g"), function(m) + { + return a[m]; + }); + } + + /** + * pad(s, cch, fPadLeft) + * + * NOTE: the maximum amount of padding currently supported is 40 spaces. + * + * @param {string} s is a string + * @param {number} cch is desired length + * @param {boolean} [fPadLeft] (default is padding on the right) + * @return {string} the original string (s) with spaces padding it to the specified length + */ + static pad(s, cch, fPadLeft) + { + var sPadding = " "; + return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch); + } + + /** + * stripLeadingZeros(s, fPad) + * + * @param {string} s + * @param {boolean} [fPad] + * @return {string} + */ + static stripLeadingZeros(s, fPad) + { + var cch = s.length; + s = s.replace(/^0+([0-9A-F]+)$/i, "$1"); + if (fPad) s = Str.pad(s, cch, true); + return s; + } + + /** + * trim(s) + * + * @param {string} s + * @return {string} + */ + static trim(s) + { + if (String.prototype.trim) { + return s.trim(); + } + return s.replace(/^\s+|\s+$/g, ""); + } + + /** + * toASCIICode(b) + * + * @param {number} b + * @return {string} + */ + static toASCIICode(b) + { + var s; + if (b != Str.ASCII.CR && b != Str.ASCII.LF) { + s = Str.aASCIICodes[b]; + } + if (s) { + s = '<' + s + '>'; + } else { + s = String.fromCharCode(b); + } + return s; + } +} + +Str.aHTMLEscapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; + +/* + * Future home of a general-purpose ASCII table. TODO: Flesh it out. + */ +Str.ASCII = { + LF: 0x0A, + CR: 0x0D +}; + +/* + * Table for converting "unprintable" ASCII codes into mnemonics, to more clearly see what's being printed. + */ +Str.aASCIICodes = { + 0x00: "NUL", + 0x01: "SOH", // (CTRL_A) Start of Heading + 0x02: "STX", // (CTRL_B) Start of Text + 0x03: "ETX", // (CTRL_C) End of Text + 0x04: "EOT", // (CTRL_D) End of Transmission + 0x05: "ENQ", // (CTRL_E) Enquiry + 0x06: "ACK", // (CTRL_F) Acknowledge + 0x07: "BEL", // (CTRL_G) Bell + 0x08: "BS", // (CTRL_H) Backspace + 0x09: "TAB", // (CTRL_I) Horizontal Tab + 0x0A: "LF", // (CTRL_J) Line Feed (New Line) + 0x0B: "VT", // (CTRL_K) Vertical Tab + 0x0C: "FF", // (CTRL_L) Form Feed (New Page) + 0x0D: "CR", // (CTRL_M) Carriage Return + 0x0E: "SO", // (CTRL_N) Shift Out + 0x0F: "SI", // (CTRL_O) Shift In + 0x10: "DLE", // (CTRL_P) Data Link Escape + 0x11: "XON", // (CTRL_Q) Device Control 1 (aka DC1) + 0x12: "DC2", // (CTRL_R) Device Control 2 + 0x13: "XOFF", // (CTRL_S) Device Control 3 (aka DC3) + 0x14: "DC4", // (CTRL_T) Device Control 4 + 0x15: "NAK", // (CTRL_U) Negative Acknowledge + 0x16: "SYN", // (CTRL_V) Synchronous Idle + 0x17: "ETB", // (CTRL_W) End of Transmission Block + 0x18: "CAN", // (CTRL_X) Cancel + 0x19: "EM", // (CTRL_Y) End of Medium + 0x1A: "SUB", // (CTRL_Z) Substitute + 0x1B: "ESC", // Escape + 0x1C: "FS", // File Separator + 0x1D: "GS", // Group Separator + 0x1E: "RS", // Record Separator + 0x1F: "US" // Unit Separator +}; + +Str.TYPES = { + NULL: 0, + BYTE: 1, + WORD: 2, + DWORD: 3, + NUMBER: 4, + STRING: 5, + BOOLEAN: 6, + OBJECT: 7, + ARRAY: 8 +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + */ + +/** + * @typedef {{ + * mask: number, + * shift: number + * }} + */ +var BitField; + +/** + * @typedef {Object.} + */ +var BitFields; + +class Usr { + /** + * binarySearch(a, v, fnCompare) + * + * @param {Array} a is an array + * @param {number|string|Array|Object} v + * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare] + * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point + */ + static binarySearch(a, v, fnCompare) + { + var left = 0; + var right = a.length; + var found = 0; + if (fnCompare === undefined) { + fnCompare = function(a, b) + { + return a > b ? 1 : a < b ? -1 : 0; + }; + } + while (left < right) { + var middle = (left + right) >> 1; + var compareResult; + compareResult = fnCompare(v, a[middle]); + if (compareResult > 0) { + left = middle + 1; + } else { + right = middle; + found = !compareResult; + } + } + return found ? left : ~left; + } + + /** + * binaryInsert(a, v, fnCompare) + * + * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the + * element is inserted into the array at the appropriate index. + * + * @param {Array} a is an array + * @param {number|string|Array|Object} v is the value to insert + * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare] + */ + static binaryInsert(a, v, fnCompare) + { + var index = Usr.binarySearch(a, v, fnCompare); + if (index < 0) { + a.splice(-(index + 1), 0, v); + } + } + + /** + * getTimestamp() + * + * @return {string} timestamp containing the current date and time ("yyyy-mm-dd hh:mm:ss") + */ + static getTimestamp() + { + return Usr.formatDate("Y-m-d H:i:s"); + } + + /** + * getMonthDays(nMonth, nYear) + * + * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100), + * so we have no idea what century the year 0 might refer to. When using the normal leap-year formula, 0 fails + * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap + * year. Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year. + * + * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD, + * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and + * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what + * a real RTC actually does. + * + * @param {number} nMonth (1-12) + * @param {number} nYear (normally a 4-digit year, but it may also be mod 100) + * @return {number} the maximum (1-based) day allowed for the specified month and year + */ + static getMonthDays(nMonth, nYear) + { + var nDays = Usr.aMonthDays[nMonth - 1]; + if (nDays == 28) { + if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) { + nDays++; + } + } + return nDays; + } + + /** + * formatDate(sFormat, date) + * + * @param {string} sFormat (eg, "F j, Y", "Y-m-d H:i:s") + * @param {Date} [date] (default is the current time) + * @return {string} + * + * Supported identifiers in sFormat include: + * + * a: lowercase ante meridiem and post meridiem (am or pm) + * d: day of the month, 2 digits with leading zeros (01,02,...,31) + * D: 3-letter day of the week ("Sun","Mon",...,"Sat") + * F: month ("January","February",...,"December") + * g: hour in 12-hour format, without leading zeros (1,2,...,12) + * h: hour in 24-hour format, without leading zeros (0,1,...,23) + * H: hour in 24-hour format, with leading zeros (00,01,...,23) + * i: minutes, with leading zeros (00,01,...,59) + * j: day of the month, without leading zeros (1,2,...,31) + * l: day of the week ("Sunday","Monday",...,"Saturday") + * m: month, with leading zeros (01,02,...,12) + * M: 3-letter month ("Jan","Feb",...,"Dec") + * n: month, without leading zeros (1,2,...,12) + * s: seconds, with leading zeros (00,01,...,59) + * y: 2-digit year (eg, 14) + * Y: 4-digit year (eg, 2014) + * + * For more inspiration, see: http://php.net/manual/en/function.date.php (of which we support ONLY a subset). + */ + static formatDate(sFormat, date) + { + var sDate = ""; + if (!date) date = new Date(); + var iHour = date.getHours(); + var iDay = date.getDate(); + var iMonth = date.getMonth() + 1; + for (var i = 0; i < sFormat.length; i++) { + var ch; + switch ((ch = sFormat.charAt(i))) { + case 'a': + sDate += (iHour < 12 ? "am" : "pm"); + break; + case 'd': + sDate += ('0' + iDay).slice(-2); + break; + case 'D': + sDate += Usr.asDays[date.getDay()].substr(0, 3); + break; + case 'F': + sDate += Usr.asMonths[iMonth - 1]; + break; + case 'g': + sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour)); + break; + case 'h': + sDate += iHour; + break; + case 'H': + sDate += ('0' + iHour).slice(-2); + break; + case 'i': + sDate += ('0' + date.getMinutes()).slice(-2); + break; + case 'j': + sDate += iDay; + break; + case 'l': + sDate += Usr.asDays[date.getDay()]; + break; + case 'm': + sDate += ('0' + iMonth).slice(-2); + break; + case 'M': + sDate += Usr.asMonths[iMonth - 1].substr(0, 3); + break; + case 'n': + sDate += iMonth; + break; + case 's': + sDate += ('0' + date.getSeconds()).slice(-2); + break; + case 'y': + sDate += ("" + date.getFullYear()).slice(-2); + break; + case 'Y': + sDate += date.getFullYear(); + break; + default: + sDate += ch; + break; + } + } + return sDate; + } + + /** + * defineBitFields(bfs) + * + * Prepares a bit field definition for use with getBitField() and setBitField(); eg: + * + * var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3}); + * + * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31). + * + * Usr.setBitField(bfs.num, n, 1); + * + * The above set bit field "bfs.num" in numeric variable "n" to the value 1. + * + * @param {Object} bfs + * @return {BitFields} + */ + static defineBitFields(bfs) + { + var bit = 0; + for (var f in bfs) { + var width = bfs[f]; + var mask = ((1 << width) - 1) << bit; + bfs[f] = {mask: mask, shift: bit}; + bit += width; + } + return bfs; + } + + /** + * initBitFields(bfs, ...) + * + * @param {BitFields} bfs + * @param {...number} var_args + * @return {number} a value containing all supplied bit fields + */ + static initBitFields(bfs, var_args) + { + var v = 0, i = 1; + for (var f in bfs) { + if (i >= arguments.length) break; + v = Usr.setBitField(bfs[f], v, arguments[i++]); + } + return v; + } + + /** + * getBitField(bf, v) + * + * @param {BitField} bf + * @param {number} v is a value containing bit fields + * @return {number} the value of the bit field in v defined by bf + */ + static getBitField(bf, v) + { + return (v & bf.mask) >> bf.shift; + } + + /** + * setBitField(bf, v, n) + * + * @param {BitField} bf + * @param {number} v is a value containing bit fields + * @param {number} n is a value to store in v in the bit field defined by bf + * @return {number} updated v + */ + static setBitField(bf, v, n) + { + return (v & ~bf.mask) | ((n << bf.shift) & bf.mask); + } + + /** + * indexOf(a, t, i) + * + * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it. + * + * @param {Array} a + * @param {*} t + * @param {number} [i] + * @returns {number} + */ + static indexOf(a, t, i) + { + if (Array.prototype.indexOf) { + return a.indexOf(t, i); + } + i = i || 0; + if (i < 0) i += a.length; + if (i < 0) i = 0; + for (var n = a.length; i < n; i++) { + if (i in a && a[i] === t) return i; + } + return -1; + } +} + +Usr.asDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; +Usr.asMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; +Usr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + +/** + * getTime() + * + * @return {number} the current time, in milliseconds + */ +Usr.getTime = Date.now || function() { return +new Date(); }; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + */ + + +/* + * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties + * and functions of JavaScript-in-the-Browser: + * + * Property Description + * --- + * Infinity A numeric value that represents positive/negative infinity + * NaN "Not-a-Number" value + * undefined Indicates that a variable has not been assigned a value + * + * Function Description + * --- + * decodeURI() Decodes a URI + * decodeURIComponent() Decodes a URI component + * encodeURI() Encodes a URI + * encodeURIComponent() Encodes a URI component + * escape() Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead + * eval() Evaluates a string and executes it as if it was script code + * isFinite() Determines whether a value is a finite, legal number + * isNaN() Determines whether a value is an illegal number + * Number() Converts an object's value to a number + * parseFloat() Parses a string and returns a floating point number + * parseInt() Parses a string and returns an integer + * String() Converts an object's value to a string + * unescape() Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead + * + * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions + * of the *window* object. + * + * Property Description + * --- + * closed Returns a Boolean value indicating whether a window has been closed or not + * defaultStatus Sets or returns the default text in the statusbar of a window + * document Returns the Document object for the window (See Document object) + * frames Returns an array of all the frames (including iframes) in the current window + * history Returns the History object for the window (See History object) + * innerHeight Returns the inner height of a window's content area + * innerWidth Returns the inner width of a window's content area + * length Returns the number of frames (including iframes) in a window + * location Returns the Location object for the window (See Location object) + * name Sets or returns the name of a window + * navigator Returns the Navigator object for the window (See Navigator object) + * opener Returns a reference to the window that created the window + * outerHeight Returns the outer height of a window, including toolbars/scrollbars + * outerWidth Returns the outer width of a window, including toolbars/scrollbars + * pageXOffset Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window + * pageYOffset Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window + * parent Returns the parent window of the current window + * screen Returns the Screen object for the window (See Screen object) + * screenLeft Returns the x coordinate of the window relative to the screen + * screenTop Returns the y coordinate of the window relative to the screen + * screenX Returns the x coordinate of the window relative to the screen + * screenY Returns the y coordinate of the window relative to the screen + * self Returns the current window + * status Sets or returns the text in the statusbar of a window + * top Returns the topmost browser window + * + * Method Description + * --- + * alert() Displays an alert box with a message and an OK button + * atob() Decodes a base-64 encoded string + * blur() Removes focus from the current window + * btoa() Encodes a string in base-64 + * clearInterval() Clears a timer set with setInterval() + * clearTimeout() Clears a timer set with setTimeout() + * close() Closes the current window + * confirm() Displays a dialog box with a message and an OK and a Cancel button + * createPopup() Creates a pop-up window + * focus() Sets focus to the current window + * moveBy() Moves a window relative to its current position + * moveTo() Moves a window to the specified position + * open() Opens a new browser window + * print() Prints the content of the current window + * prompt() Displays a dialog box that prompts the visitor for input + * resizeBy() Resizes the window by the specified pixels + * resizeTo() Resizes the window to the specified width and height + * scroll() This method has been replaced by the scrollTo() method. + * scrollBy() Scrolls the content by the specified number of pixels + * scrollTo() Scrolls the content to the specified coordinates + * setInterval() Calls a function or evaluates an expression at specified intervals (in milliseconds) + * setTimeout() Calls a function or evaluates an expression after a specified number of milliseconds + * stop() Stops the window from loading + */ + +class Web { + /** + * log(s, type) + * + * For diagnostic output only. DEBUG must be true (or "--debug" specified via the command-line) + * for Component.log() to display anything. + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + */ + static log(s, type) + { + Component.log(s, type); + } + + /** + * notice(s, fPrintOnly, id) + * + * @param {string} s is the message text + * @param {boolean} [fPrintOnly] + * @param {string} [id] is the caller's ID, if any + */ + static notice(s, fPrintOnly, id) + { + Component.notice(s, fPrintOnly, id); + } + + /** + * getResource(sURL, dataPost, fAsync, done, progress) + * + * Request the specified resource (sURL), and once the request is complete, notify done(). + * + * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no + * idea when the request is complete or what the response was. done() is passed three parameters: + * + * done(sURL, sResource, nErrorCode) + * + * If nErrorCode is zero, sResource should contain the requested data; otherwise, an error occurred. + * + * If dataPost is set to a string, that string can be used to control the response format; + * by default, the response format is plain text, but you can specify "bytes" to request arbitrary + * binary data, which should come back as a string of bytes. + * + * TODO: The "bytes" option works by calling overrideMimeType(), which was never a best practice. + * Instead, we should implement supported response types ("text" and "arraybuffer", at a minimum) + * by setting xmlHTTP.responseType to one of those values before calling xmlHTTP.send(). + * + * @param {string} sURL + * @param {string|Object|null} [dataPost] for a POST request (default is a GET request) + * @param {boolean} [fAsync] is true for an asynchronous request + * @param {function(string,string,number)} [done] + * @param {function(number)} [progress] + * @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet + */ + static getResource(sURL, dataPost, fAsync = false, done, progress) + { + var nErrorCode = 0, sResource = null, response = null; + + if (typeof resources == 'object' && (sResource = resources[sURL])) { + if (done) done(sURL, sResource, nErrorCode); + return [sResource, nErrorCode]; + } + else if (fAsync && typeof resources == 'function') { + resources(sURL, function(sResource, nErrorCode) + { + if (done) done(sURL, sResource, nErrorCode); + }); + return response; + } + + if (DEBUG) { + /* + * The larger resources we put on archive.pcjs.org should also be available locally... + */ + sURL = sURL.replace(/^http:\/\/archive.pcjs.org(\/.*)\/([^\/]*)$/, "$1/archive/$2"); + } + + + var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP")); + if (fAsync) { + xmlHTTP.onreadystatechange = function() + { + if (xmlHTTP.readyState !== 4) { + if (progress) progress(1); + return; + } + /* + * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple + * times when debugging. Unfortunately, that's not the only XMLHttpRequest problem that occurs when + * debugging, so I think the WebKit problem is deeper than that. When we have multiple XMLHttpRequests + * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be + * happening are mis-notifications rather than redundant notifications. + * + * xmlHTTP.onreadystatechange = undefined; + */ + sResource = xmlHTTP.responseText; + /* + * The normal "success" case is an HTTP status code of 200, but when testing with files loaded + * from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible". + */ + if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && Web.getHostProtocol() == "file:") { + if (MAXDEBUG) Web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes"); + } + else { + nErrorCode = xmlHTTP.status || -1; + Web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode); + } + if (progress) progress(2); + if (done) done(sURL, sResource, nErrorCode); + }; + } + + if (progress) progress(0); + + if (dataPost && typeof dataPost == "object") { + var sDataPost = ""; + for (var p in dataPost) { + if (!dataPost.hasOwnProperty(p)) continue; + if (sDataPost) sDataPost += "&"; + sDataPost += p + '=' + encodeURIComponent(dataPost[p]); + } + sDataPost = sDataPost.replace(/%20/g, '+'); + if (MAXDEBUG) Web.log("Web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes"); + xmlHTTP.open("POST", sURL, fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it) + xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xmlHTTP.send(sDataPost); + } else { + if (MAXDEBUG) Web.log("Web.getResource(GET " + sURL + ")"); + xmlHTTP.open("GET", sURL, fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it) + if (dataPost == "bytes") { + xmlHTTP.overrideMimeType("text/plain; charset=x-user-defined"); + } + xmlHTTP.send(); + } + + if (!fAsync) { + sResource = xmlHTTP.responseText; + if (xmlHTTP.status == 200) { + if (MAXDEBUG) Web.log("Web.getResource(" + sURL + "): returned " + sResource.length + " bytes"); + } else { + nErrorCode = xmlHTTP.status || -1; + Web.log("Web.getResource(" + sURL + "): error code " + nErrorCode); + } + if (done) done(sURL, sResource, nErrorCode); + response = [sResource, nErrorCode]; + } + return response; + } + + /** + * parseMemoryResource(sURL, sData) + * + * This converts a variety of JSON-style data streams into an Object with the following properties: + * + * aBytes + * aSymbols + * addrLoad + * addrExec + * + * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if + * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes', + * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and + * stored in 'aBytes'. + * + * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output + * object as: + * + * aData + * + * @param {string} sURL + * @param {string} sData + * @return {Object|null} (resource) + */ + static parseMemoryResource(sURL, sData) + { + var i; + var resource = { + aBytes: null, + aSymbols: null, + addrLoad: null, + addrExec: null + }; + + if (sData.charAt(0) == "[" || sData.charAt(0) == "{") { + try { + var a, ib, data; + + if (sData.substr(0, 1) == "<") { // if the "data" begins with a "<"... + /* + * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid, + * but more recent server configs now display a somewhat friendlier HTML error page. The downside, + * however, is that the original error has been buried, and we've received "data" that isn't actually + * tape data. So if the data we've received appears to be "HTML-like", we treat it as an error message. + */ + throw new Error(sData); + } + + /* + * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to + * eval(). In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in + * IE9 with an "Out of memory" exception. One work-around would be to chop the data into chunks + * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it. + * + * However, it turns out that using JSON.parse(sDiskData) instead of eval("(" + sDiskData + ")") + * is a much easier fix. The only drawback is that we must first quote any unquoted property names + * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular; + * the following RegExp replacements take care of those requirements. + * + * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and + * while I've stopped using hex values in DumpAPI responses (at least when "format=json" is specified), + * I can't guarantee they won't show up in "legacy" images, and there's no simple RegExp replacement + * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect + * any hex prefixes ("0x") in the sequence. Ditto for error messages, which appear like so: + * + * ["unrecognized disk path: test.img"] + */ + if (sData.indexOf("0x") < 0 && sData.indexOf("0o") < 0 && sData.substr(0, 2) != '["') { + data = JSON.parse(sData.replace(/([a-z]+):/gm, '"$1":').replace(/\/\/[^\n]*/gm, "")); + } else { + data = eval("(" + sData + ")"); + } + + resource.addrLoad = data['load']; + resource.addrExec = data['exec']; + + if (a = data['bytes']) { + resource.aBytes = a; + } + else if (a = data['words']) { + /* + * Convert all words into bytes + */ + resource.aBytes = new Array(a.length * 2); + for (i = 0, ib = 0; i < a.length; i++) { + resource.aBytes[ib++] = a[i] & 0xff; + resource.aBytes[ib++] = (a[i] >> 8) & 0xff; + + } + } + else if (a = data['longs']) { + /* + * Convert all dwords (longs) into bytes + */ + resource.aBytes = new Array(a.length * 4); + for (i = 0, ib = 0; i < a.length; i++) { + resource.aBytes[ib++] = a[i] & 0xff; + resource.aBytes[ib++] = (a[i] >> 8) & 0xff; + resource.aBytes[ib++] = (a[i] >> 16) & 0xff; + resource.aBytes[ib++] = (a[i] >> 24) & 0xff; + } + } + else if (a = data['data']) { + resource.aData = a; + } + else { + resource.aBytes = data; + } + + if (resource.aBytes) { + if (!resource.aBytes.length) { + Component.error("Empty resource: " + sURL); + resource = null; + } + else if (resource.aBytes.length == 1) { + Component.error(resource.aBytes[0]); + resource = null; + } + } + resource.aSymbols = data['symbols']; + + } catch (e) { + Component.error("Resource data error (" + sURL + "): " + e.message); + resource = null; + } + } + else { + /* + * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace. + */ + var ab = []; + var sHexData = sData.replace(/\n/gm, " ").replace(/ +$/, ""); + var asHexData = sHexData.split(" "); + for (i = 0; i < asHexData.length; i++) { + var n = parseInt(asHexData[i], 16); + if (isNaN(n)) { + Component.error("Resource data error (" + sURL + "): invalid hex byte (" + asHexData[i] + ")"); + break; + } + ab.push(n & 0xff); + } + if (i == asHexData.length) resource.aBytes = ab; + } + return resource; + } + + /** + * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName) + * + * Send a report (eg, bug report) to the server. + * + * @param {string} sApp (eg, "PCjs") + * @param {string} sVer (eg, "1.02") + * @param {string} sURL (eg, "/devices/pc/machine/5150/mda/64kb/machine.xml") + * @param {string} sUser (ie, the user key, if any) + * @param {string} sType (eg, "bug"); one of ReportAPI.TYPE.* + * @param {string} sReport (eg, unparsed state data) + * @param {string} [sHostName] (default is http://SITEHOST) + */ + static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName) + { + var dataPost = {}; + dataPost[ReportAPI.QUERY.APP] = sApp; + dataPost[ReportAPI.QUERY.VER] = sVer; + dataPost[ReportAPI.QUERY.URL] = sURL; + dataPost[ReportAPI.QUERY.USER] = sUser; + dataPost[ReportAPI.QUERY.TYPE] = sType; + dataPost[ReportAPI.QUERY.DATA] = sReport; + var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT; + Web.getResource(sReportURL, dataPost, true); + } + + /** + * getHost() + * + * @return {string} + */ + static getHost() + { + return ("http://" + (window? window.location.host : SITEHOST)); + } + + /** + * getHostURL() + * + * @return {string|null} + */ + static getHostURL() + { + return (window? window.location.href : null); + } + + /** + * getHostProtocol() + * + * @return {string} + */ + static getHostProtocol() + { + return (window? window.location.protocol : "file:"); + } + + /** + * getUserAgent() + * + * @return {string} + */ + static getUserAgent() + { + return (window? window.navigator.userAgent : ""); + } + + /** + * hasLocalStorage + * + * true if localStorage support exists, is enabled, and works; false otherwise + * + * @return {boolean} + */ + static hasLocalStorage() + { + if (Web.fLocalStorage == null) { + var f = false; + if (window) { + try { + window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest); + f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest); + window.localStorage.removeItem(Web.sLocalStorageTest); + } catch (e) { + Web.logLocalStorageError(e); + f = false; + } + } + Web.fLocalStorage = f; + } + return Web.fLocalStorage; + } + + /** + * logLocalStorageError(e) + * + * @param {Error} e is an exception + */ + static logLocalStorageError(e) + { + Web.log(e.message, "localStorage error"); + } + + /** + * getLocalStorageItem(sKey) + * + * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available + * + * @param {string} sKey + * @return {string|null|undefined} sValue + */ + static getLocalStorageItem(sKey) + { + var sValue; + if (window) { + try { + sValue = window.localStorage.getItem(sKey); + } catch (e) { + Web.logLocalStorageError(e); + } + } + return sValue; + } + + /** + * setLocalStorageItem(sKey, sValue) + * + * @param {string} sKey + * @param {string} sValue + * @return {boolean} true if localStorage is available, false if not + */ + static setLocalStorageItem(sKey, sValue) + { + try { + window.localStorage.setItem(sKey, sValue); + return true; + } catch (e) { + Web.logLocalStorageError(e); + } + return false; + } + + /** + * removeLocalStorageItem(sKey) + * + * @param {string} sKey + */ + static removeLocalStorageItem(sKey) + { + try { + window.localStorage.removeItem(sKey); + } catch (e) { + Web.logLocalStorageError(e); + } + } + + /** + * getLocalStorageKeys() + * + * @return {Array} + */ + static getLocalStorageKeys() + { + var a = []; + try { + for (var i = 0, c = window.localStorage.length; i < c; i++) { + a.push(window.localStorage.key(i)); + } + } catch (e) { + Web.logLocalStorageError(e); + } + return a; + } + + /** + * reloadPage() + */ + static reloadPage() + { + if (window) window.location.reload(); + } + + /** + * isUserAgent(s) + * + * Check the browser's user-agent string for the given substring; "iOS" and "MSIE" are special values you can + * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of "MSIE"). + * + * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating + * the "MSIE" string (which MSDN calls a "version token"; see http://msdn.microsoft.com/library/ms537503.aspx); + * they say "public websites should rely on feature detection, rather than browser detection, in order to design + * their sites for browsers that don't support the features used by the website." So, in IE11, we get a user-agent + * that tries to fool apps into thinking the browser is more like WebKit or Gecko: + * + * Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko + * + * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained + * some very critical browser-specific code; turning on IE's "Compatibility Mode" didn't help either, because + * that's a sledgehammer solution which restores the old user-agent string but also disables other features like + * HTML5 canvas support. As an interim solution, I'm treating any "MSIE" check as a check for either "MSIE" or + * "Trident". + * + * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't + * any code that cares about "MSIE", but I've left the change in place, because I wouldn't be surprised if I'll + * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture. + * + * @param {string} s is a substring to search for in the user-agent; as noted above, "iOS" and "MSIE" are special values + * @return {boolean} is true if the string was found, false if not + */ + static isUserAgent(s) + { + if (window) { + var userAgent = Web.getUserAgent(); + /* + * Here's one case where we have to be careful with Component, because when isUserAgent() is called by + * the init code below, component.js hasn't been loaded yet. The simple solution for now is to remove the call. + * + * Web.log("agent: " + userAgent); + * + * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure + * Compiler (v20130823) failing to detect the entire expression as a boolean. + */ + return s == "iOS" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == "MSIE" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0); + } + return false; + } + + /** + * isMobile() + * + * Check the browser's user-agent string for the substring "Mobi", as per Mozilla recommendation: + * + * https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent + * + * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not + */ + static isMobile() + { + return Web.isUserAgent("Mobi"); + } + + /** + * findProperty(obj, sProp, sSuffix) + * + * If both sProp and sSuffix are set, then any browser-specific prefixes are inserted between sProp and sSuffix, + * and if a match is found, it is returned without sProp. + * + * For example, if findProperty(document, 'on', 'fullscreenchange') discovers that 'onwebkitfullscreenchange' exists, + * it will return 'webkitfullscreenchange', in preparation for an addEventListener() call. + * + * More commonly, sSuffix is not used, so whatever property is found is returned as-is. + * + * @param {Object|null|undefined} obj + * @param {string} sProp + * @param {string} [sSuffix] + * @return {string|null} + */ + static findProperty(obj, sProp, sSuffix) + { + if (obj) { + for (var i = 0; i < Web.asBrowserPrefixes.length; i++) { + var sName = Web.asBrowserPrefixes[i]; + if (sSuffix) { + sName += sSuffix; + var sEvent = sProp + sName; + if (sEvent in obj) return sName; + } else { + if (!sName) { + sName = sProp[0]; + } else { + sName += sProp[0].toUpperCase(); + } + sName += sProp.substr(1); + if (sName in obj) return sName; + } + } + } + return null; + } + + /** + * getURLParm(sParm) + * + * First looks for sParm exactly as specified, then looks for the lower-case version. + * + * @param {string} sParm + * @return {string|undefined} + */ + static getURLParm(sParm) + { + if (!Web.parmsURL) { + Web.parmsURL = Web.parseURLParms(); + } + return Web.parmsURL[sParm] || Web.parmsURL[sParm.toLowerCase()]; + } + + /** + * parseURLParms(sParms) + * + * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?') + * @return {Object} containing properties for each parameter found + */ + static parseURLParms(sParms) + { + var aParms = {}; + if (window) { // an alternative to "if (typeof module === 'undefined')" if require("defines") was used + if (!sParms) { + /* + * Note that window.location.href returns the entire URL, whereas window.location.search + * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call). + */ + sParms = window.location.search.substr(1); + } + var match; + var pl = /\+/g; // RegExp for replacing addition symbol with a space + var search = /([^&=]+)=?([^&]*)/g; + var decode = function(s) + { + return decodeURIComponent(s.replace(pl, " ")); + }; + + while ((match = search.exec(sParms))) { + aParms[decode(match[1])] = decode(match[2]); + } + } + return aParms; + } + + /** + * downloadFile(sData, sType, fBase64, sFileName) + * + * @param {string} sData + * @param {string} sType + * @param {boolean} [fBase64] + * @param {string} [sFileName] + */ + static downloadFile(sData, sType, fBase64, sFileName) + { + var link = null, sAlert; + var sURI = "data:application/" + sType + (fBase64? ";base64" : "") + ","; + + if (!Web.isUserAgent("Firefox")) { + sURI += (fBase64? sData : encodeURI(sData)); + } else { + sURI += (fBase64? sData : encodeURIComponent(sData)); + } + if (sFileName) { + link = document.createElement('a'); + if (typeof link.download != 'string') link = null; + } + if (link) { + link.href = sURI; + link.download = sFileName; + document.body.appendChild(link); // Firefox allegedly requires the link to be in the body + link.click(); + document.body.removeChild(link); + sAlert = 'Check your Downloads folder for ' + sFileName + '.'; + } else { + window.open(sURI); + sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.'; + } + return sAlert; + } + + /** + * onCountRepeat(n, fnRepeat, fnComplete, msDelay) + * + * Call fnRepeat() n times with an msDelay millisecond delay between calls, + * then call fnComplete() when n has been exhausted OR fnRepeat() returns false. + * + * @param {number} n + * @param {function()} fnRepeat + * @param {function()} fnComplete + * @param {number} [msDelay] + */ + static onCountRepeat(n, fnRepeat, fnComplete, msDelay) + { + var fnTimeout = function doCountRepeat() + { + n -= 1; + if (n >= 0) { + if (!fnRepeat()) n = 0; + } + if (n > 0) { + setTimeout(fnTimeout, msDelay || 0); + return; + } + fnComplete(); + }; + fnTimeout(); + } + + /** + * onClickRepeat(e, msDelay, msRepeat, fn) + * + * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter, + * as long as HTML control Object e has an active "down" event and fn() returns true. + * + * @param {Object} e + * @param {number} msDelay + * @param {number} msRepeat + * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls + */ + static onClickRepeat(e, msDelay, msRepeat, fn) + { + var ms = 0, timer = null, fIgnoreMouseEvents = false; + + var fnRepeat = function doClickRepeat() + { + if (fn(ms === msRepeat)) { + timer = setTimeout(fnRepeat, ms); + ms = msRepeat; + } + }; + e.onmousedown = function() + { + // Web.log("onMouseDown()"); + if (!fIgnoreMouseEvents) { + if (!timer) { + ms = msDelay; + fnRepeat(); + } + } + }; + e.ontouchstart = function() + { + // Web.log("onTouchStart()"); + if (!timer) { + ms = msDelay; + fnRepeat(); + } + }; + e.onmouseup = e.onmouseout = function() + { + // Web.log("onMouseUp()/onMouseOut()"); + if (timer) { + clearTimeout(timer); + timer = null; + } + }; + e.ontouchend = e.ontouchcancel = function() + { + // Web.log("onTouchEnd()/onTouchCancel()"); + if (timer) { + clearTimeout(timer); + timer = null; + } + /* + * Devices that generate ontouch* events ALSO generate onmouse* events, + * and generally do so immediately after all the touch events are complete, + * so unless we want double the action, we need to ignore mouse events. + */ + fIgnoreMouseEvents = true; + }; + } + + /** + * onPageEvent(sName, fn) + * + * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but + * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively. + * + * The only components that should still use onPageEvent() are THIS component (see the bottom of this file) + * and components that need to capture other events (eg, the 'onresize' event in the Video component). + * + * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers + * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'], + * etc, themselves. However, that's less of a concern now, because assuming everyone else is now using + * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one. + * + * NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may + * erroneously replace them (eg, window.onpageshow is a good example). + * + * @param {string} sFunc + * @param {function()} fn + */ + static onPageEvent(sFunc, fn) + { + if (window) { + var fnPrev = window[sFunc]; + if (typeof fnPrev !== 'function') { + window[sFunc] = fn; + } else { + /* + * TODO: Determine whether there's any value in receiving/sending the Event object that the + * browser provides when it generates the original event. + */ + window[sFunc] = function onWindowEvent() + { + if (fnPrev) fnPrev(); + fn(); + }; + } + } + }; + + /** + * onInit(fn) + * + * Use this instead of setting window.onload. Allows multiple JavaScript modules to define their own 'onload' event handler. + * + * @param {function()} fn + */ + static onInit(fn) + { + Web.aPageEventHandlers['init'].push(fn); + }; + + /** + * onShow(fn) + * + * @param {function()} fn + * + * Use this instead of setting window.onpageshow. Allows multiple JavaScript modules to define their own 'onpageshow' event handler. + */ + static onShow(fn) + { + Web.aPageEventHandlers['show'].push(fn); + }; + + /** + * onExit(fn) + * + * @param {function()} fn + * + * Use this instead of setting window.onunload. Allows multiple JavaScript modules to define their own 'onunload' event handler. + */ + static onExit(fn) + { + Web.aPageEventHandlers['exit'].push(fn); + }; + + /** + * doPageEvent(afn) + * + * @param {Array.} afn + */ + static doPageEvent(afn) + { + if (Web.fPageEventsEnabled) { + try { + for (var i = 0; i < afn.length; i++) { + afn[i](); + } + } catch (e) { + Web.notice("An unexpected exception occurred:\n\n" + e.message + "\n\nPlease send this information to support@pcjs.org. Thanks."); + } + } + }; + + /** + * enablePageEvents(fEnable) + * + * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default) + */ + static enablePageEvents(fEnable) + { + if (!Web.fPageEventsEnabled && fEnable) { + Web.fPageEventsEnabled = true; + if (Web.fPageLoaded) Web.sendPageEvent('init'); + if (Web.fPageShowed) Web.sendPageEvent('show'); + return; + } + Web.fPageEventsEnabled = fEnable; + } + + /** + * sendPageEvent(sEvent) + * + * This allows us to manually trigger page events. + * + * @param {string} sEvent (one of 'init', 'show' or 'exit') + */ + static sendPageEvent(sEvent) + { + if (Web.aPageEventHandlers[sEvent]) { + Web.doPageEvent(Web.aPageEventHandlers[sEvent]); + } + } +} + +Web.parmsURL = null; // initialized on first call to parseURLParms() + +Web.aPageEventHandlers = { + 'init': [], // list of window 'onload' handlers + 'show': [], // list of window 'onpageshow' handlers + 'exit': [] // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible) +}; + +Web.asBrowserPrefixes = ['', 'moz', 'ms', 'webkit']; + +Web.fPageLoaded = false; // set once the page's first 'onload' event has occurred +Web.fPageShowed = false; // set once the page's first 'onpageshow' event has occurred +Web.fPageEventsEnabled = true; // default is true, set to false (or true) by enablePageEvents() + +/** + * fLocalStorage + * + * true if localStorage support exists, is enabled, and works; "falsey" otherwise + * + * @type {boolean|null} + */ +Web.fLocalStorage = null; + +/** + * TODO: Is there any way to get the Closure Compiler to stop inlining this string? This isn't cutting it. + * + * @const {string} + */ +Web.sLocalStorageTest = "PCjs.localStorage"; + +Web.onPageEvent('onload', function onPageLoad() { + Web.fPageLoaded = true; + Web.doPageEvent(Web.aPageEventHandlers['init']); +}); + +Web.onPageEvent('onpageshow', function onPageShow() { + Web.fPageShowed = true; + Web.doPageEvent(Web.aPageEventHandlers['show']); +}); + +Web.onPageEvent(Web.isUserAgent("iOS")? 'onpagehide' : (Web.isUserAgent("Opera")? 'onunload' : 'onbeforeunload'), function onPageUnload() { + Web.doPageEvent(Web.aPageEventHandlers['exit']); +}); + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + */ + +/* + * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile + * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled. For more information about + * the JSDoc types supported by the Closure Compiler: + * + * https://developers.google.com/closure/compiler/docs/js-for-compiler#types + * + * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like + * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace + * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc. + * + * I prefer sticking with traditional C-style idioms, in part because they are more portable. That + * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code + * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need. + * + * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults. + * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need + * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like + * default parameters. + */ + + +/** + * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default, + * it deters us from defining named properties on our components; eg: + * + * this['exports'] = {...} + * + * results in an error: + * + * Cannot do '[]' access on a struct + * + * So, in order to define 'exports', we must override the @struct assumption by annotating + * the class as @unrestricted (or @dict). Note that this must be done both here and in the + * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference* + * the named property either. + * + * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to + * define every single property the class uses in its constructor, which results in a fair + * bit of redundant initialization, since many properties aren't (and don't need to be) fully + * initialized until the appropriate init(), reset(), restore(), etc. function is called. + * + * The upside, however, may be that since the structure of the class is completely defined by + * the constructor, JavaScript engines may be able to optimize and run more efficiently. + * + * @unrestricted + */ +class Component { + /** + * Component(type, parms, bitsMessage) + * + * A Component object requires: + * + * type: a user-defined type name (eg, "CPU") + * + * and accepts any or all of the following (parms) properties: + * + * id: component ID (default is "") + * name: component name (default is ""; if blank, toString() will use the type name only) + * comment: component comment string (default is undefined) + * + * Component subclasses will usually have additional (parms) properties. + * + * @param {string} type + * @param {Object} [parms] + * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0) + */ + constructor(type, parms, bitsMessage) + { + this.type = type; + + if (!parms) parms = {'id': "", 'name': ""}; + + this.id = parms['id'] || ""; + this.name = parms['name']; + this.comment = parms['comment']; + this.parms = parms; + + /* + * The following Component properties need to be accessible by other machines and/or command scripts; + * well, OK, or we could have exported some new functions to walk the contents of these properties, as we + * did with findMachineComponent(), but this works just as well. + * + * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it + * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the + * Compiler wants us to change all the other references to bracket notation as well. + */ + this.exports = this['exports'] = {}; + this.bindings = this['bindings'] = {}; + + var i = this.id.indexOf('.'); + if (i < 0) { + this.idComponent = this.id; + } else { + this.idMachine = this.id.substr(0, i); + this.idComponent = this.id.substr(i + 1); + } + + /* + * Gather all the various component flags (booleans) into a single "flags" object, and encourage + * subclasses to do the same, to reduce the property clutter we have to wade through while debugging. + */ + this.flags = { + ready: false, + busy: false, + busyCancel: false, + initDone: false, + powered: false, + unloading: false, + error: false + }; + + this.fnReady = null; + this.clearError(); + this.bitsMessage = bitsMessage || 0; + + this.cmp = null; + this.bus = null; + this.cpu = null; + this.dbg = null; + + /* + * TODO: Consider adding another parameter to the Component() constructor that allows components to tell + * us if they support single or multiple instances per machine. For example, there can be multiple SerialPort + * components per machine, but only one CPU component (some machines also support an FPU, but that component + * is considered separate from the CPU). + * + * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly + * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive + * CPU controls. + */ + Component.add(this); + } + + /** + * Component.add(component) + * + * @param {Component} component + */ + static add(component) + { + /* + * This just generates a lot of useless noise, handy in the early days, not so much these days.... + * + * if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")"); + */ + Component.components.push(component); + } + + /** + * Component.addMachine(idMachine) + * + * @param {string} idMachine + */ + static addMachine(idMachine) + { + Component.machines[idMachine] = {}; + } + + /** + * Component.addMachineResource(idMachine, sName, data) + * + * @param {string} idMachine + * @param {string|null} sName (name of the resource) + * @param {*} data + */ + static addMachineResource(idMachine, sName, data) + { + /* + * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used, + * so addMachine() is never called, so resources do not need to be recorded. + */ + if (Component.machines[idMachine] && sName) { + Component.machines[idMachine][sName] = data; + } + } + + /** + * Component.getMachineResources(idMachine) + * + * @param {string} idMachine + * @return {Object|undefined} + */ + static getMachineResources(idMachine) + { + return Component.machines[idMachine]; + } + + /** + * Component.getTime() + * + * @return {number} the current time, in milliseconds + */ + static getTime() + { + return Date.now() || +new Date(); + } + + /** + * Component.log(s, type) + * + * For diagnostic output only. + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + */ + static log(s, type) + { + if (!COMPILED) { + if (s) { + var sElapsed = "", sMsg = (type? (type + ": ") : "") + s; + if (typeof Usr != "undefined") { + if (Component.msStart === undefined) { + Component.msStart = Component.getTime(); + } + sElapsed = (Component.getTime() - Component.msStart) + "ms: "; + } + sMsg = sMsg.replace(/\r/g, '\\r').replace(/\n/g, ' '); + if (window && window.console) console.log(sElapsed + sMsg); + } + } + } + + /** + * Component.assert(f, s) + * + * Verifies conditions that must be true (for DEBUG builds only). + * + * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds. + * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds. + * + * @param {boolean} f is the expression we are asserting to be true + * @param {string} [s] is description of the assertion on failure + */ + static assert(f, s) + { + if (DEBUG) { + if (!f) { + if (!s) s = "assertion failure"; + Component.log(s); + throw new Error(s); + } + } + } + + /** + * Component.print(s) + * + * Components that inherit from this class should use this.print(), rather than Component.print(), because + * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the + * class method would improperly affect any other machines loaded on the same page). + * + * @this {Component} + * @param {string} s + */ + static print(s) + { + if (!COMPILED) { + var i = s.lastIndexOf('\n'); + if (i >= 0) { + Component.println(s.substr(0, i)); + s = s.substr(i + 1); + } + Component.printBuffer += s; + } + } + + /** + * Component.println(s, type, id) + * + * Components that inherit from this class should use this.println(), rather than Component.println(), because + * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the + * class method would improperly affect any other machines loaded on the same page). + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + * @param {string} [id] is the caller's ID, if any + */ + static println(s, type, id) + { + if (!COMPILED) { + s = Component.printBuffer + (s || ""); + Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type); + Component.printBuffer = ""; + } + } + + /** + * Component.notice(s, fPrintOnly, id) + * + * notice() is like println() but implies a need for user notification, so we alert() as well. + * + * @param {string} s is the message text + * @param {boolean} [fPrintOnly] + * @param {string} [id] is the caller's ID, if any + * @return {boolean} + */ + static notice(s, fPrintOnly, id) + { + if (!COMPILED) { + Component.println(s, Component.TYPE.NOTICE, id); + } + if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s); + return true; + } + + /** + * Component.warning(s) + * + * @param {string} s describes the warning + */ + static warning(s) + { + if (!COMPILED) { + Component.println(s, Component.TYPE.WARNING); + } + Component.alertUser(s); + } + + /** + * Component.error(s) + * + * @param {string} s describes the error; an alert() is displayed as well + */ + static error(s) + { + if (!COMPILED) { + Component.println(s, Component.TYPE.ERROR); + } + Component.alertUser(s); + } + + /** + * Component.alertUser(sMessage) + * + * @param {string} sMessage + */ + static alertUser(sMessage) + { + if (window) { + window.alert(sMessage); + } else { + Component.log(sMessage); + } + }; + + /** + * Component.confirmUser(sPrompt) + * + * @param {string} sPrompt + * @returns {boolean} true if the user clicked OK, false if Cancel/Close + */ + static confirmUser(sPrompt) + { + var fResponse = false; + if (window) { + fResponse = window.confirm(sPrompt); + } + return fResponse; + } + + /** + * Component.promptUser() + * + * @param {string} sPrompt + * @param {string} [sDefault] + * @returns {string|null} + */ + static promptUser(sPrompt, sDefault) + { + var sResponse = null; + if (window) { + sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault); + } + return sResponse; + } + + /** + * Component.appendControl(control, sText) + * + * @param {Object} control + * @param {string} sText + */ + static appendControl(control, sText) + { + control.value += sText; + /* + * Prevent the + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',dateRTC:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + mouse + ,serial:'',scaleMouse: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + + 0.5 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate:,flicker: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + + diff --git a/versions/pcx86/1.36.2/document.css b/versions/pcx86/1.36.2/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pcx86/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pcx86/1.36.2/document.xsl b/versions/pcx86/1.36.2/document.xsl new file mode 100644 index 0000000000..e175f2d28f --- /dev/null +++ b/versions/pcx86/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pcx86/1.36.2/machine.xsl b/versions/pcx86/1.36.2/machine.xsl new file mode 100644 index 0000000000..99369d6c1c --- /dev/null +++ b/versions/pcx86/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.36.2/manifest.xsl b/versions/pcx86/1.36.2/manifest.xsl new file mode 100644 index 0000000000..f59c2e3659 --- /dev/null +++ b/versions/pcx86/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pcx86/1.36.2/outline.xsl b/versions/pcx86/1.36.2/outline.xsl new file mode 100644 index 0000000000..2692165e11 --- /dev/null +++ b/versions/pcx86/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.36.2/pcx86-dbg.js b/versions/pcx86/1.36.2/pcx86-dbg.js new file mode 100644 index 0000000000..354ff072b1 --- /dev/null +++ b/versions/pcx86/1.36.2/pcx86-dbg.js @@ -0,0 +1,908 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86seg.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86fpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86func.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86help.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86mods.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86ops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86op0f.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/parallel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/mouse.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 +*/ +var l,aa;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +var ca="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},da="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this; +function ea(a,b){if(b){var c=da;a=a.split(".");for(var d=0;da?-b:b}});ea("Math.sign",function(a){return a?a:function(a){a=Number(a);return!a||isNaN(a)?a:0":62,"?":63,"@":64,fe:65,si:66,ti:67,ui:68,E:69,vi:70,wi:71,xi:72,yi:73,zi:74,Ai:75,Bi:76,Ci:77,Di:78,Ei:79,Fi:80,Q:81,Gi:82,Hi:83,Ii:84,Ji:85,Ki:86,Li:87,Mi:88,Ni:89,ag:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,ge:97,sl:98,ul:99,d:100,e:101,Dl:102,El:103,Fl:104,Gl:105,Wm:106,k:107,Ym:108,dn:109,n:110,on:111,p:112,q:113,r:114,Mo:115,t:116,Qo:117, +Ro:118,So:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Op:127},ga={};ga[173]=n["-"];ga[186]=n[";"];ga[187]=n["="];ga[189]=n["-"];ga[188]=n[","];ga[190]=n["."];ga[191]=n["/"];ga[192]=n["`"];ga[219]=n["["];ga[220]=n["\\"];ga[221]=n["]"];ga[222]=n["'"];var ha={};ha[n["1"]]=n["!"];ha[n["2"]]=n["@"];ha[n["3"]]=n["#"];ha[n["4"]]=n.$;ha[n["5"]]=n["%"];ha[n["6"]]=n["^"];ha[n["7"]]=n["&"];ha[n["8"]]=n["*"];ha[n["9"]]=n["("];ha[n["0"]]=n[")"];ha[186]=n[":"];ha[187]=n["+"];ha[188]=n["<"];ha[189]=n._; +ha[190]=n[">"];ha[191]=n["?"];ha[192]=n["~"];ha[219]=n["{"];ha[220]=n["|"];ha[221]=n["}"];ha[222]=n['"'];ha[173]=n._;ha[61]=n["+"];ha[59]=n[":"]; +function ia(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function la(a,b,c){b?36=b?8:262143>=b?18:36);return ja(a,2,b,"",c)} +function ma(a,b,c){b?12=b?6:16777215>=b?8:12);return ja(a,8,b,c?"0o":"")}function q(a,b,c){b?9=b?4:4294967295>=b?8:9);return ja(a,16,b,c?"0x":"")}function na(a){return q(a,2,!0)}function oa(a){return q(a,4,!0)}function pa(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return ua[a]})}function va(a,b,c){return c?(" "+a).slice(-b):(a+" ").slice(0,b)}function wa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var ua={"&":"&","<":"<",">":">",'"':""","'":"'"},xa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};function ya(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0d?"am":"pm";break;case "d":c+=("0"+e).slice(-2);break;case "D":c+=Aa[b.getDay()].substr(0,3);break;case "F":c+=Ba[f-1];break;case "g":c+=d?12c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;ca?this.Ce=this.id:(this.ee=this.id.substr(0,a),this.Ce=this.id.substr(a+1));this.Z={ready:!1,mf:!1,Zg:!1,pf:!1,bc:!1,Ae:!1,error:!1};this.ng=null;this.Z.error=!1;this.fc=c||0;this.ca=this.H=this.na=this.oa=null;mb.push(this)} +function nb(a,b,c){ob[a]&&b&&(ob[a][b]=c)}function ab(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a,b){a.value+=b;b=a.value;8192e?d+=b+"\n":d=d.substr(0,e)+c+d.substr(e+b.length);8192Math.abs(a.B-b)?1:2),1==a.G?b=a.B:2==a.G&&(d=a.A));a.A=d;a.B=b;if(0<=d&&d>d.shift;d=g*a.na.B;f=(g+f.iq)*a.na.B-1;0f&&(d=f);c=d;break a}c=-1}if(-1!==c&&(c&=-16,c!=a.N)){b=c;if(a.context&&a.K&&a.L){e=bc-cc;f=a.K.width;a.L.fillStyle=dc;a.L.fillRect(0,e,f,cc);d=e+ec;g=a.K;var h=a.L,k,m=null.style.color,p=a.ka=10;a.D=p;a.J=d;a.ea=a.ba=ec;k||(k=a.U||a.ba+"px "+fc);a.aa=a.U=k;g&&(a.P=g);h&&(a.I=h,a.V=m||"white");a.M=a.P.width/24|0;if(null==b)gc(a,"Mouse over memory to dump");else for(gc(a,q(b,8,!0),null,0,1),k=1;16>=k;k++){d="";for(g=1;8>=g;g++)h=a.na,m=b++,h=h.aa[(m&h.C)>>>h.A].be(m&h.D,m),gc(a,q(h,2),null,1), +d+=32<=h&&128>h?String.fromCharCode(h):".";gc(a,d,null,0,1)}a.context.drawImage(a.K,0,e,f,cc,a.ra,a.va,a.la,a.qa)}a.N=c}}}function gc(a,b,c,d,e){a.I.font=a.aa;a.I.fillStyle=a.V;a.I.fillText(b,a.D,a.J);a.D+=a.M;null!=c&&(16!=a.pa?b=c.toString():(b=8>a.fa?"0x":"",b+=q(c,a.fa)),a.I.fillText(b,a.D,a.J),a.D+=a.M);d&&(a.D+=a.M*d);e&&(a.D=a.ka,a.J+=(a.ea+2)*(e||1))} +function Wb(){for(var a=!1,b=vb(document,"pcx86","panel"),c=0;c>2,bc=Zb,dc="black",cc=Zb>>1;Xa(Wb); +function hc(a,b,c){ib.call(this,"Bus",a);this.H=b;this.ca=c;this.I=a.busWidth||20;this.ba=Math.pow(2,this.I);this.N=this.C=this.ba-1|0;this.A=32==this.I||20>=this.I?12:24>=this.I?14:15;this.B=1<>2;this.D=this.B-1;this.M=this.ba/this.B|0;this.P=this.M-1;this.F=[];this.G=[];this.K=this.L=!1;this.V=[];this.U=[];a=new w;ic(a,this.ca);this.aa=Array(this.M);for(b=0;b>>a.A;0g&&(p=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.za)return k.Be+=k.za-f,k.za=f,!0;if(f>=k.za+k.Be){p=k.size-(f-m);p>g&&(p=g);k.Be=f-k.za+p;f=m+a.B;g-=p;h++;continue}}return lc(a,mc,f,g)}f=new w(f,p,a.B,d,e);ic(f,a.ca,k);a.aa[h++]=f;f=m+a.B;g-=p}return 0>=g?(nc(a.H),a.H.Z.Xa||(e=c/1024|0,a.status((e?e+"Kb ":c+" bytes ")+oc[d]+" at "+q(b))),!0):lc(a,pc,b,c)} +function jc(a,b){32==a.I?b?a.J&&(qc(a,1048576,1048576,a.J),a.J=null):a.J||(a.J=rc(a,1048576,1048576),qc(a,1048576,1048576,rc(a,0,1048576))):20>>this.A;0>>a.A;0>>=a.A;0>>a.A;0>>this.A].Cc(a&this.D,a)};function Ec(a,b){var c=b&a.D,d=(b&a.C)>>>a.A;return c!=a.D?a.aa[d].Kf(c,b):a.aa[d++].be(c,b)|a.aa[d&a.P].be(0,b+1)<<8} +l.ub=function(a,b){this.aa[(a&this.C)>>>this.A].Ec(a&this.D,b&255,a)};function Fc(a,b,c){var d=b&a.D,e=(b&a.C)>>>a.A;d!=a.D?a.aa[e].pi(d,c&65535,b):(a.aa[e++].cf(d,c&255,b),a.aa[e&a.P].cf(0,c>>8&255,b+1))}l.uj=function(){return null}; +function Gc(a,b){var c=0,d=[],e=!a.J&&a.N==a.C;e||jc(a,!0);for(var f=0;f>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,e);a.ca&&a.L!=g[1]&&Pc(a.ca,b,k)}else a.ca&&(Ob(a.ca,a,b,k,e),a.L&&Pc(a.ca,b,k));f+=h<<3;b+=h;c-=h}}function lc(a,b,c,d,e){b="Memory block error ("+b+": "+q(c)+","+q(d)+")";e?a.ca?a.ca.message(b):a.log(b):ab(b);return!1}var ac,Qc={nn:20,count:8,hq:1,type:3},Rc=0,Sc;for(Sc in Qc){var Tc=Qc[Sc];Qc[Sc]={en:(1<>1),this.W=new Int32Array(this.I,0,c>>2),tc(this,Ac?Bc:Cc);else{this.W=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};l.ni=function(a,b,c){this.Ec(a++,b&255,c++);this.Ec(a++,b>>8&255,c++);this.Ec(a++,b>>16&255,c++);this.Ec(a,b>>>24,c)};l.vo=function(a){return this.W[a>>2]>>>((a&3)<<3)&255}; +l.Ho=function(a){var b=a>>2;a=(a&3)<<3;var c=this.W[b]>>a;return 24>a?c&65535:c&255|(this.W[b+1]&255)<<8};l.Bo=function(a){var b=a>>2;a=(a&3)<<3;var c=this.W[b];a&&(c=c>>>a|this.W[b+1]<<32-a);return c};l.Xo=function(a,b){var c=a>>2;a=(a&3)<<3;this.W[c]=this.W[c]&~(255<>2;a=(a&3)<<3;24>a?this.W[c]=this.W[c]&~(65535<>8);this.Oa=!0}; +l.cp=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.W[c]=b;this.Oa=!0};l.uo=function(a,b){this.ca&&null!=this.za&&hd(this.ca,this.za+a)||this.C&&id(this.C,b,1,!1);return this.be(a,b)};l.Go=function(a,b){this.ca&&null!=this.za&&hd(this.ca,this.za+a,2)||this.C&&id(this.C,b,2,!1);return this.Kf(a,b)};l.Ao=function(a,b){this.ca&&null!=this.za&&hd(this.ca,this.za+a,4)||this.C&&id(this.C,b,4,!1);return this.hi(a,b)}; +l.Wo=function(a,b,c){this.ca&&null!=this.za&&jd(this.ca,this.za+a)||this.C&&id(this.C,c,1,!0);this.D?this.df(0,b,c):this.cf(a,b,c)};l.ip=function(a,b,c){this.ca&&null!=this.za&&jd(this.ca,this.za+a,2)||this.C&&id(this.C,c,2,!0);this.D?this.df(0,b,c):this.pi(a,b,c)};l.bp=function(a,b,c){this.ca&&null!=this.za&&jd(this.ca,this.za+a,4)||this.C&&id(this.C,c,4,!0);this.D?this.df(0,b,c):this.K(a,b,c)};l.xo=function(a,b){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.F;return this.vd.Cc(a,b)}; +l.Jo=function(a,b){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.F;return this.vd.Jf(a,b)};l.Do=function(a,b){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.F;return this.vd.Od(a,b)};l.Zo=function(a,b,c){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.J;this.vd.Ec(a,b,c)};l.lp=function(a,b,c){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.J;this.vd.Qf(a,b,c)};l.fp=function(a,b,c){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.J;this.vd.Pf(a,b,c)}; +l.yo=function(a,b){return kd(this.C,b,!1).Cc(a,b)};l.Ko=function(a,b){return kd(this.C,b,!1).Jf(a,b)};l.Eo=function(a,b){return kd(this.C,b,!1).Od(a,b)};l.$o=function(a,b,c){kd(this.C,c,!0).Ec(a,b,c)};l.mp=function(a,b,c){kd(this.C,c,!0).Qf(a,b,c)};l.gp=function(a,b,c){kd(this.C,c,!0).Pf(a,b,c)};l.to=function(a){return this.Qa[a]};l.Pk=function(a){return this.Qa[a]};l.wo=function(a){this.pb.W[this.A]|=32;this.qb.W[this.B]|=32;this.Cc=this.Pk;return this.Qa[a]}; +l.Fo=function(a){return this.G.getUint16(a,!0)};l.Uk=function(a){return a&1?this.Qa[a]|this.Qa[a+1]<<8:this.Ud[a>>1]};l.Io=function(a){this.pb.W[this.A]|=32;this.qb.W[this.B]|=32;this.Jf=this.Uk;return a&1?this.Qa[a]|this.Qa[a+1]<<8:this.Ud[a>>1]};l.zo=function(a){return this.G.getInt32(a,!0)};l.Rk=function(a){return a&3?this.Qa[a]|this.Qa[a+1]<<8|this.Qa[a+2]<<16|this.Qa[a+3]<<24:this.W[a>>2]}; +l.Co=function(a){this.pb.W[this.A]|=32;this.qb.W[this.B]|=32;this.Od=this.Rk;return a&3?this.Qa[a]|this.Qa[a+1]<<8|this.Qa[a+2]<<16|this.Qa[a+3]<<24:this.W[a>>2]};l.Vo=function(a,b){this.Qa[a]=b;this.Oa=!0};l.bl=function(a,b){this.Qa[a]=b;this.Oa=!0};l.Yo=function(a,b){this.Qa[a]=b;this.pb.W[this.A]|=32;this.qb.W[this.B]|=96;this.Ec=this.bl;this.vd.Oa=!0};l.hp=function(a,b){this.G.setUint16(a,b,!0);this.Oa=!0};l.dl=function(a,b){a&1?(this.Qa[a]=b,this.Qa[a+1]=b>>8):this.Ud[a>>1]=b;this.Oa=!0}; +l.kp=function(a,b){a&1?(this.Qa[a]=b,this.Qa[a+1]=b>>8):this.Ud[a>>1]=b;this.pb.W[this.A]|=32;this.qb.W[this.B]|=96;this.Qf=this.dl;this.vd.Oa=!0};l.ap=function(a,b){this.G.setInt32(a,b,!0);this.Oa=!0};l.cl=function(a,b){a&3?(this.Qa[a]=b,this.Qa[a+1]=b>>8,this.Qa[a+2]=b>>16,this.Qa[a+3]=b>>24):this.W[a>>2]=b;this.Oa=!0}; +l.ep=function(a,b){a&3?(this.Qa[a]=b,this.Qa[a+1]=b>>8,this.Qa[a+2]=b>>16,this.Qa[a+3]=b>>24):this.W[a>>2]=b;this.pb.W[this.A]|=32;this.qb.W[this.B]|=96;this.Pf=this.cl;this.vd.Oa=!0};function ld(a){Pb&&!Ac&&(a=a<<24|a<<8&16711680|a>>8&65280|a>>>24);return a} +var Xc=0,zc=2,Yc=5,$c=6,oc="NONE RAM ROM VIDEO H/W UNPAGED PAGED".split(" "),Wc=0,bd=[],Dc=[w.prototype.vo,w.prototype.Xo,w.prototype.Ho,w.prototype.jp,w.prototype.Bo,w.prototype.cp],gd=[w.prototype.uo,w.prototype.Wo,w.prototype.Go,w.prototype.ip,w.prototype.Ao,w.prototype.bp],ad=[w.prototype.xo,w.prototype.Zo,w.prototype.Jo,w.prototype.lp,w.prototype.Do,w.prototype.fp],Zc=[w.prototype.yo,w.prototype.$o,w.prototype.Ko,w.prototype.mp,w.prototype.Eo,w.prototype.gp]; +if(Pb)var Cc=[w.prototype.to,w.prototype.Vo,w.prototype.Fo,w.prototype.hp,w.prototype.zo,w.prototype.ap],Bc=[w.prototype.Pk,w.prototype.bl,w.prototype.Uk,w.prototype.dl,w.prototype.Rk,w.prototype.cl],md=[w.prototype.wo,w.prototype.Yo,w.prototype.Io,w.prototype.kp,w.prototype.Co,w.prototype.ep]; +function sd(a,b){ib.call(this,"CPU",a,1);b=a.cycles||b;var c=a.multiplier||1;this.Y={};this.Y.Zd=b;this.Y.Fj=this.Y.qh=this.Y.Cd=c;this.Y.qg=Math.round(this.Y.Zd/1E4)/100;this.Y.Ld=this.Y.te=this.Y.qg*this.Y.Cd;this.Z.li=this.Z.Xa=this.Z.Rf=!1;this.Z.je=a.autoStart;this.Z.jj=!1;this.Z.Ke=!1;this.Y.uf=this.Y.Ue=0;this.Y.wf=a.csStart;this.Y.Te=a.csInterval;this.Y.Ve=a.csStop;this.qa=[];this.xj=this.Lo.bind(this)}ba(sd,ib);l=sd.prototype; +l.uc=function(a,b,c,d){this.oa=a;this.na=b;this.ca=d;for(b=0;b=a.Y.Ue&&(a.Y.Ue+=a.Y.Te,c=!0);0<=a.Y.Ve&&a.Y.Ve<=Cd(a)&&(a.Y.Te=a.Y.Ve=-1,yd(a),a.Ub(),c=!0);c&&a.O(Cd(a)+" cycles: checksum="+q(a.Y.uf))}} +l.Eb=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.ma[b]=c;a=!0;break;case "run":this.ma[b]=c;c.onclick=function(){var a=d.Z.Xa,b;if(b=d.oa)if(b=d.oa,b.Z.Ae&&(b.Z.Ae=!1,b.Z.pf&&!b.Z.bc&&b.Ye(Dd)),b.Z.bc)b=!0;else{var c=null,h,k=xb(b.id);for(h=0;ha.Y.Cd)b=a.Y.Cd;a.Y.Ej=Math.round(1E3/wd);a.Y.jn=Math.floor(a.Y.Zd/wd*b);a.Y.qh=b} +function Cd(a,b){var c=a.Hd+a.nd+a.md-a.A;b&&1a.Y.qg&&(c=Math.round(c/a.Y.Cd));return c}function xd(a){a.Hd=a.nd=a.md=a.A=0;yd(a);Ed(a,a.Y.Fj)} +function Ed(a,b,c){var d=!0;if(void 0!==b){0b[1])&&(c=a.Y.Zd*a.Y.qh/1E3*c|0,a.Z.Xa&&(c+=Jd(a)),b[1]=c)}function Kd(a){for(var b=[],c=0;cthis.Y.Ej&&(this.Y.zd+=a,this.Y.zd>this.Y.tf&&(this.Y.zd=this.Y.tf))}try{this.Z.Rf=!1;do{for(var b,c=this.Z.Ke?1:this.Y.Zd*this.Y.qh|0,d=this.qa.length-1;0<=d;d--){var e=this.qa[d];0>e[1]||c>e[1]&&(c=e[1])}b=c;if(this.V){Ld(this.V);var f=this.V,a=b,g=f.qa[0];if(g.qe){var h=(Cd(f.H,f.M)-g.jd)/f.Ea|0,k=Md(f,0)-h;g.mode==Nd&&(k-=h);var m=k*f.Ea|0;g.mode==Nd&&(m>>= +1);a>m&&(a=m)}b=a;var p=this.V,a=b;if(p.A&&p.A[Pd]&Qd){var v=p.aa-Cd(p.H,p.M);0v&&(a=v)}b=a}try{this.Kg(b)}catch(G){if("number"!=typeof G)throw G;}for(var a=b=Jd(this),u=this.qa.length-1;0<=u;u--){var D=this.qa[u];0>D[1]||(D[1]-=a,0>=D[1]&&(D[1]=-1,D[3](),0<=D[2]&&Id(this,u,D[2])))}Bd(this,b)}while(this.Z.Xa&&!this.Z.Rf)}catch(G){this.Ub();zd(this);this.oa&&this.oa.stop(Ea(),Cd(this));Gb(this,G.stack||G.message);return}if(this.Z.Xa){b=setTimeout;c=this.xj;this.Y.ue=Ea();d=this.Y.Ej;this.Y.sg&& +(d=Math.round(d*this.Y.sg/this.Y.jn));d-=this.Y.ue-this.Y.tf;if(e=this.Y.ue-this.Y.zd)this.Y.Ld=Math.round(this.nd/(10*e))/100,864E5<=e&&(this.Hd=0,this.V&&Ld(this.V,!0),Ed(this));0>d?(-1E3>d&&(this.Y.zd-=d),d=0):this.Y.Ld>>0)+b>this.Nb&&(8088>=this.Lb.da?this.Lb.M|=8:x.call(this.Lb,13));return this.ta+a|0};l.bj=function(a,b){return(a>>>0)+b<=this.Nb?this.ta+a|0:this.hg()};l.wl=function(a,b){return(a>>>0)+b>this.Nb?this.ta+a|0:this.hg()};l.hg=function(){x.call(this.Lb,13,0);return-1}; +l.dj=function(a,b){return(a>>>0)+b<=this.Nb?this.ta+a|0:this.jg()};l.xl=function(a,b){return(a>>>0)+b>this.Nb?this.ta+a|0:this.jg()};l.jg=function(){x.call(this.Lb,13,0);return-1};function ae(a,b,c,d,e){a.T=b;a.ta=d;a.Sa=e;a.Nb=(e>>>0)+1;a.ob=c;a.type=c&7936;a.ext=c>>16&192;a.Ob=(b&4?a.Lb.Gb.ta:a.Lb.Kb)+(b&65528)|0;a.id>>0)+1;a.ob=e;a.type=e&7936;a.ext=0;a.Ob=b;a.id>>0)+1,a.ob=a.A.ob,a.type=a.A.type,a.ext=a.A.ext,a.Ob=a.A.Ob,a.A.T=-1,Td(a,!0,!0,!1),a.ta;a.A.T=-1;var f=e.ja(b+0),g=e.ja(b+4),h=g&7936,k=e.ja(b+2)|(g&255)<<16,m=e.ja(b+6),p=c&65528;if(80386<=e.da){var v=f,k=k|(m&65280)<<16,f=f|(m&15)<<16;m&128&&(f=f<<12|4095)}switch(a.id){case de:var u=a.C;a.Pe=!1;if(u&&c==Vd&&a.B.length){var D=a.B[a.Hf-1];if(D&&!D())return-1}var G=c&3,I=(g&24576)>>13,D=-1,J,P;p||b>= +e.Kb&&b=a.Cb&&(G>a.Cb&&(D=ee(e),fe(e,ee(e),!0),ge(e,D),a.Pe=!0),D=0);else{if(256==h||2304==h)return he(a,c,u)?a.ta:-1;if(1024==h)D=2,P=0,Gh||2048==(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,11,c&65532),-1}break;case $d:if(!p||4096>h||512!=(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,12,c&65532), +-1;break;case be:u=h&-513;if(!p||256!=u&&2304!=u)return x.call(e,13,c&65532),-1;2304==u&&(a.Si=k+e.ja(k+102)|0,a.ql=k+a.Sa|0);break;case Zd:if(!(h&4096)&&768>>0)+1,a.ob=g,a.type=h,a.ext=m,a.Ob=b,Td(a,!0,!0,!1));return k} +function he(a,b,c){var d=a.Lb,e=a.Cb,f=d.ka.T,g=d.ka.ta;if(!c){if(!(d.ka.type&512))return x.call(d,13,b&65532),!1;d.ib(d.ka.Ob+4,d.ka.ob&=-513)}if(-1===d.ka.load(b))return!1;var h=d.ka.ta;if(!1!==c){if(d.ka.type&512)return x.call(d,13,b&65532),!1;d.ib(d.ka.Ob+4,d.ka.ob|=512)}d.ka.type=d.ka.type&-513|d.ka.ob&512;256==d.ka.type||768==d.ka.type?(d.ib(g+14,z(d)),d.ib(g+16,qe(d)),d.ib(g+18,d.D),d.ib(g+20,d.I),d.ib(g+22,d.L),d.ib(g+24,d.G),d.ib(g+26,y(d)),d.ib(g+28,d.N),d.ib(g+30,d.K),d.ib(g+32,d.J),d.ib(g+ +34,d.pa.T),d.ib(g+36,d.ba.T),d.ib(g+38,d.U.T),d.ib(g+40,d.Fa.T),d.Gb.load(d.ja(h+42)),re(d,d.ja(h+16)|(c?16384:0)),d.D=d.ja(h+18),d.I=d.ja(h+20),d.L=d.ja(h+22),d.G=d.ja(h+24),d.N=d.ja(h+28),d.K=d.ja(h+30),d.J=d.ja(h+32),d.pa.load(d.ja(h+34)),d.Fa.load(d.ja(h+40)),se(d,d.ja(h+14),d.ja(h+36)),b=38,g=26,a.Cb>>0)+1)}; +function Td(a,b,c,d){void 0===c&&(c=!!(a.Lb.ra&1));a.fd=!1;if(c)if(a.load=a.pg,a.Cj=a.bn,a.Bb=a.bj,a.Vb=a.dj,void 0===d&&(d=!!(a.Lb.P&131072)),d)a.load=a.G,a.Bb=a.D,a.Vb=a.F,a.Cb=a.rc=3,a.X=2,a.R=a.wa=65535,a.Sa=65535,a.Nb=a.Sa+1,a.Mc=a.X,a.Ob=-1,a.Pe=!1;else{if(!(a.T&-4))a.Bb=a.hg,a.Vb=a.jg;else if(a.type&4096){6144==(a.type&6656)&&(a.Bb=a.hg);if(a.type&2048||!(a.type&512))a.Vb=a.jg;1024==(a.type&3072)&&(a.Bb==a.bj&&(a.Bb=a.wl),a.Vb==a.dj&&(a.Vb=a.xl),a.fd=!0);b&&a.id>13,80386>a.Lb.da||!(a.ext&64)?(a.X=2,a.R=65535):(a.X=4,a.R=-1),a.Mc=a.X,a.wa=a.R)}else a.load=a.mh,a.Cj=a.cn,a.Bb=a.ig,a.Vb=a.ig,a.Cb=a.rc=0,a.Ob=-1,a.Pe=!1}var de=1,pe=2,$d=3,be=4,Zd=6,Vd=1; +function ue(a){var b,c=+a.model||8088;switch(c){default:b=4772727;break;case 80286:b=6E6;break;case 80386:b=16E6}sd.call(this,a,b);this.da=c;a=a.stepping;this.Rd=c+(a?ia(a,16):0);this.Ri=61442;this.Qd=1792;this.ri=28672;this.Sf=4;this.Ra=255;this.B=80286<=this.da?Rb:Qb;this.xa=ve;this.aj=we;this.hj=xe;this.lj=ye;if(80186<=this.da&&(this.xa=ve.slice(),this.aj=we.slice(),this.hj=xe.slice(),this.Ra=31,this.xa[15]=ze,this.xa[96]=Ee,this.xa[97]=Fe,this.xa[98]=Ge,this.xa[99]=ze,this.xa[100]=ze,this.xa[101]= +ze,this.xa[102]=ze,this.xa[103]=ze,this.xa[104]=He,this.xa[105]=Ie,this.xa[106]=Je,this.xa[107]=Ke,this.xa[108]=Le,this.xa[109]=Me,this.xa[110]=Ne,this.xa[111]=Oe,this.xa[192]=Pe,this.xa[193]=Qe,this.xa[200]=Re,this.xa[201]=Se,this.xa[241]=Te,this.aj[7]=Ue,this.hj[7]=Ue,80286<=this.da)){this.Ri=2;this.Qd|=28672;this.Sf=0;this.xa[15]=Ve;this.rd=We.slice();for(c=0;c=this.Rd&&(this.rd[166]=gf,this.rd[167]=hf)}}this.Vf=[];this.Wf=[];this.Yf=0;xd(this);this.Z.complete=this.Z.ij=!1;this.rj=0;this.tc=this.aa=[];this.lb=this.Mg=this.Fb=this.Tf=this.ef=this.ff=this.cd=0;jf(this)}ba(ue,sd);function kf(a,b,c,d){b=(d?a.tc:a.aa)[b>>>a.lb];c?--b.me||fd(b):--b.le||ed(b);d&&nc(a)} +function lf(a){var b;if(a.aa===a.tc){a.aa=Array(a.Tf);a.Xf=new w(null,0,0,Yc,null,a);ic(a.Xf,a.ca);for(b=0;b>>20,f=a.tc[(a.Uc+e&a.ff)>>>a.lb],g=f.Od(e);if(!(g&1))return d||nf.call(a,b,!1,c),a.gf;if(!(g&4)&&3==a.Pa)return d||nf.call(a,b,!0,c),a.gf;var h=(b&4190208)>>>10,g=a.tc[((g&-4096)+h&a.ff)>>>a.lb],k=g.Od(h);if(!(k&1))return d||nf.call(a,b,!1,c),a.gf;if(!(k&4)&&3==a.Pa)return d||nf.call(a,b,!0,c),a.gf;c=a.tc[((k&-4096)+(b&4095)&a.ff)>>>a.lb];if(d)return c;d=b>>>a.lb;k=a.aa[d];b&=-4096;var m;0>2;b.qb=g;b.B=h>>2;Pb&&Ac&&c.W&&!c.controller&&!c.le&&!c.me?(b.Qa=c.Qa,b.Ud=c.Ud,b.W=c.W,tc(b,md)):(b.F=c?ld(32):0,b.J=c?ld(96):0,tc(b,ad));ic(b,a.ca,k);a.aa[d]=b;a.Uf.push(d);return b}function of(a){a.aa!==a.tc&&(a.aa=a.tc,a.Xf=null,a.Uf=null,a.gf=null)}l=ue.prototype;l.reset=function(){jf(this);xd(this);this.Z.error=!1}; +function uf(a,b){var c;switch(b){case 0:c=a.D;break;case 1:c=a.I;break;case 2:c=a.L;break;case 3:c=a.G;break;case 4:c=y(a);break;case 5:c=a.N;break;case 6:c=a.K;break;case 7:c=a.J}return c}function vf(a,b,c){switch(b){case 0:a.D=c;break;case 1:a.I=c;break;case 2:a.L=c;break;case 3:a.G=c;break;case 4:ge(a,c);break;case 5:a.N=c;break;case 6:a.K=c;break;case 7:a.J=c}} +function jf(a){a.D=0;a.G=0;a.I=0;a.L=0;a.Ac=0;a.N=0;a.K=0;a.J=0;a.wc=!1;a.Ea=a.cb=0;a.Xm=[0,0];a.Zm=[0,0];a.Aa=0;a.qj=0;a.fa=0;a.ra=65520;a.Qb=0;a.ad=1023;a.P=a.mc=0;a.Td=a.hf=a.Sd=a.De=0;a.Lc=-1;a.od=a.Tc=-1;a.pd=a.va=-1;a.ba=new Sd(a,de,"CS");a.Fa=new Sd(a,pe,"DS");a.pa=new Sd(a,pe,"ES");a.U=new Sd(a,$d,"SS");ge(a,0);fe(a,0);if(80386<=a.da){switch(a.Rd){case 80562:case 80563:a.L=771;break;case 80578:a.L=772;break;case 80594:a.L=773;break;case 80595:case 80596:a.L=776}a.ra=16;a.Ng=0;a.qd=0;a.Uc= +0;a.Rb=[0,0,0,0,null,null,0,0];a.$f=[null,null,null,null,null,null,0,0];a.Ka=new Sd(a,pe,"FS");a.La=new Sd(a,pe,"GS");of(a)}a.Qg=new Sd(a,0,"NULL");a.Ga=a.Fa;a.Sb=a.U;a.M=a.ha=0;a.C=a.F=-1;a.Ia=a.Qg;a.ab=0;if(80286>a.da)se(a,0,65535);else{a.Kb=0;a.Ic=65535;a.Gb=new Sd(a,5,"LDT",!0);a.ka=new Sd(a,be,"TSS",!0);a.zb=new Sd(a,Zd,"VER",!0);se(a,65520,61440);var b,c=z(a);b=a.ba;var d=-65536;80386>b.Lb.da&&(d&=16777215);b=b.ta=d;a.ea=b+c|0;a.Og=(b>>>0)+(a.ba.Sa>>>0)+1}re(a,0);ie(a)} +function wf(a){2==a.Mc?(a.Wb=a.ja,a.lc=xf,a.vc=yf,a.ld=zf,2==a.X?(a.la=Af,a.Ba=Bf,a.mb=Cf):(a.la=Df,a.Ba=Ef,a.mb=Ff)):(a.Wb=a.ia,a.lc=Gf,a.vc=Hf,a.ld=If,2==a.X?(a.la=Jf,a.Ba=Kf,a.mb=Lf):(a.la=Mf,a.Ba=Nf,a.mb=Of))}function je(a,b){a.X!=b&&(a.ha|=1024,a.X=b,a.R=2==b?65535:-1,Pf(a))}function Pf(a){2==a.X?(a.Hb=32768,a.nb=a.ja,a.hc=a.ib,2==a.Mc?(a.la=Af,a.Ba=Bf,a.mb=Cf):(a.la=Jf,a.Ba=Kf,a.mb=Lf)):(a.Hb=-2147483648,a.nb=a.ia,a.hc=a.eb,2==a.Mc?(a.la=Df,a.Ba=Ef,a.mb=Ff):(a.la=Mf,a.Ba=Nf,a.mb=Of))} +function Qf(a){a.Mc=a.ba.Mc;a.wa=a.ba.wa;wf(a);a.X=a.ba.X;a.R=a.ba.R;Pf(a);a.ha&=-3073}l.sj=function(){var a=this.D+this.G+this.I+this.L+y(this)+this.N+this.K+this.J|0;return a=a+z(this)+this.ba.T+this.Fa.T+this.U.T+this.pa.T+qe(this)|0};function Rf(a,b,c){void 0===a.Vf[b]&&(a.Vf[b]=[]);a.Vf[b].push(c)}function Sf(a,b,c){c&&(null==a.Wf[b]&&a.Yf++,a.Wf[b]=c)}function Tf(a,b){var c=a.Wf[b];null!=c&&(c(--a.Yf),delete a.Wf[b])} +function Uf(a,b){for(var c=a.Rb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Rb[e],g=g&~(d>>2&3);b?a.aa[g>>>a.lb].td(g&a.Fb,f,a):(g=a.aa[g>>>a.lb],f?--g.me||fd(g):--g.le||ed(g))}c>>=2;d>>=4}}function id(a,b,c,d){if(!(a.M&8192)&&a.Rb[7]&255){c--;var e=a.Rb[7],f=e>>16;d=d?1:0==d?3:0;for(var g=0;4>g;g++){if(e&3&&(f&3)==d){var h=f>>2;if(b+c>=a.Rb[g]&&b<=a.Rb[g]+h){a.Rb[6]|=1<>=2;f>>=4}}} +function ie(a,b,c){void 0===b&&(b=!!(a.ra&1));void 0===c&&(c=!!(a.P&131072));a.lj=b&&!c?Vf:ye;Td(a.ba,!1,b,c);Td(a.Fa,!1,b,c);Td(a.U,!1,b,c);Td(a.pa,!1,b,c);80386<=a.da&&(Td(a.Ka,!1,b,c),Td(a.La,!1,b,c));Qf(a)} +l.save=function(a){var b=new Wf(this);b.set(0,[this.D,this.G,this.I,this.L,y(this),this.N,this.K,this.J]);var c=z(this),d=this.ba.save(),e=this.Fa.save(),f=this.U.save(),g=this.pa.save(),h;null!=this.Kb?(h=[this.ra,this.Kb,this.Ic,this.Qb,this.ad,this.Gb.save(),this.ka.save(),this.mc],80386<=this.da&&(h.push(this.Ng),h.push(this.qd),h.push(this.Uc),h.push(this.Rb),h.push(this.$f))):h=null;c=[c,d,e,f,g,h,qe(this)];80386<=this.da&&(c.push(this.Ka.save()),c.push(this.La.save()));b.set(1,c);b.set(2,[this.Ga.dc, +this.Sb.dc,this.M,this.ha,this.ab,this.C,this.F]);b.set(3,[0,this.Hd,this.Y.Cd,a,Kd(this)]);b.set(4,Gc(this.na,!!(this.ra&-2147483648)));return b.data()}; +l.restore=function(a){var b=a[0];this.D=b[0];this.G=b[1];this.I=b[2];this.L=b[3];var c=b[4];this.N=b[5];this.K=b[6];this.J=b[7];b=a[1];this.ba.restore(b[1]);this.Fa.restore(b[2]);this.U.restore(b[3]);this.pa.restore(b[4]);var d=b[5];d&&d.length&&(this.ra=d[0],this.Kb=d[1],this.Ic=d[2],this.Qb=d[3],this.ad=d[4],this.Gb.restore(d[5]),this.ka.restore(d[6]),this.mc=d[7],80386<=this.da&&(this.Ng=d[8],this.qd=d[9],this.Uc=d[10],this.Rb=d[11],this.$f=d[12]),ie(this));re(this,b[6]);var d=!1,e;a:{e=this.na; +var f=a[4],g;for(g=0;g>>0)+(a.ba.Sa>>>0)+1;a.Pa=a.ba.Cb;Qf(a)} +function se(a,b,c,d){var e=a.ba;e.Hf=b;e.C=d;b=e.load(c);return-1!==b?(Zf(a,b+(a.ba.Hf&a.ba.R)),a.ba.Pe):null}function $f(a,b){var c=(a.ea>>>0)+b;c>a.Og&&(8088>=a.da?(c=a.ba.ta+(c-a.Og&a.R),2==b&&(a.M|=8)):x.call(a,13,0));return c|0}function ag(a){a.ea=a.pd}function y(a){return a.Ac&~a.U.wa|a.Ca-a.U.ta}function ge(a,b){a.Ac=b;a.Ca=a.U.ta+(b&a.U.wa)|0} +function bg(a,b,c,d,e,f){if(63!=(e&63)&&e!=a.resultType){var g=(e^a.resultType)&a.resultType;g&&(g&1&&cg(a),g&2&&dg(a),g&4&&eg(a),g&8&&fg(a),g&16&&gg(a),g&32&&hg(a))}f?(a.Td=d,a.Sd=b):(a.Td=b,a.Sd=d);a.hf=c;a.De=d;a.resultType=e}function ig(a,b,c,d,e){a.resultType=c|26;a.De=b;d?jg(a):kg(a);e?lg(a):mg(a);return b}function ng(a,b,c,d){c&d?jg(a):kg(a);(b^c)&d?lg(a):mg(a)}function og(a){return cg(a)?1:0} +function cg(a){a.resultType&1&&(a.P&=-2,(a.Td^(a.Td^a.hf)&(a.hf^a.Sd))&a.resultType&-2147450752&&(a.P|=1),a.resultType&=-2);return a.P&1}function dg(a){a.resultType&2&&(a.P&=-5,38505>>((a.De^a.De>>4)&15)&1&&(a.P|=4),a.resultType&=-3);return a.P&4}function eg(a){a.resultType&4&&(a.P&=-17,(a.Sd^a.Td^a.hf)&16&&(a.P|=16),a.resultType&=-5);return a.P&16}function fg(a){a.resultType&8&&(a.P&=-65,a.De&((a.resultType&-2147450752)-1|a.resultType&-2147450752)||(a.P|=64),a.resultType&=-9);return a.P&64} +function gg(a){a.resultType&16&&(a.P&=-129,a.De&a.resultType&-2147450752&&(a.P|=128),a.resultType&=-17);return a.P&128}function hg(a){a.resultType&32&&(a.P&=-2049,(a.Td^a.Sd)&(a.hf^a.Sd)&a.resultType&-2147450752&&(a.P|=2048),a.resultType&=-33);return a.P&2048}function kg(a){a.resultType&=-2;a.P&=-2}function pg(a){a.resultType&=-5;a.P&=-17}function qg(a){a.resultType&=-9;a.P&=-65}function mg(a){a.resultType&=-33;a.P&=-2049}function jg(a){a.resultType&=-2;a.P|=1} +function rg(a){a.resultType&=-5;a.P|=16}function sg(a){a.resultType&=-9;a.P|=64}function lg(a){a.resultType&=-33;a.P|=2048}function qe(a){return a.P&-2262|cg(a)|dg(a)|eg(a)|fg(a)|gg(a)|hg(a)}function tg(a,b){b|=a.ra&1|65520;a.ra=a.ra&-65536|b&65535;a.ra&1&&ie(a,!0)}function re(a,b,c){a.ra&1||(b&=~a.ri);void 0===c&&(c=a.Pa);c?b=b&-12289|a.P&12288:a.mc=(b&12288)>>12;c>a.mc&&(b=b&-513|a.P&512);a.resultType=128;a.P=a.P&~(a.Qd|2261)|b&(a.Qd|2261)|a.Ri;a.P&256&&(a.ab|=2,a.M|=4)} +function ug(a,b,c,d){var e=0;if(a.ra&1&&(a.Pa>a.mc||a.P&131072)&&a.ka.Si)for(var f=a.ka.Si+(b>>>3),e=(1<>>=8,f++;return e?(r(a,256)&&Nb(a,"checkIOPM("+oa(b)+","+c+","+(d?"input":"output")+"): trapped",!0,!0),x.call(a,13,0),!1):!0} +l.Eb=function(a,b,c){switch(b){case "EAX":case "EBX":case "ECX":case "EDX":case "ESP":case "EBP":case "ESI":case "EDI":case "EIP":case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "IP":case "PC":case "CS":case "DS":case "SS":case "ES":case "FS":case "GS":case "CR0":case "CR2":case "CR3":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "V":this.ma[b]=c;this.rj++;a=!0;break;default:a=sd.prototype.Eb.call(this,a,b,c)}return a}; +function vg(a,b,c,d){var e=(d?a.tc:a.aa)[(b&a.cd)>>>a.lb];e&&e.type==Yc&&(e=kd(a,b,!1,!0));if(e){var f=b&a.Fb;if(!c||1==c)return e.be(f,b);if(2==c)return f>>this.lb].Cc(a&this.Fb,a)}; +l.ja=function(a){var b=a&this.Fb,c=(a&this.cd)>>>this.lb;this.A-=this.B.yg;if(b>>this.lb;if(b>>this.lb].Ec(a&this.Fb,b&255,a)}; +l.ib=function(a,b){var c=a&this.Fb,d=(a&this.cd)>>>this.lb;this.A-=this.B.yg;c>8&255,a+1))};l.eb=function(a,b){var c=a&this.Fb,d=(a&this.cd)>>>this.lb;this.A-=this.B.yg;if(c>>=8}}; +function wg(a,b,c){a.Ia=b;a.vb=c&a.wa;a.C=b.Bb(a.vb,1);return a.M&1?0:a.ya(a.C)}function C(a,b){return wg(a,a.Ga,b)}function xg(a,b){return wg(a,a.Sb,b)}function yg(a,b,c){a.Ia=b;a.vb=c&a.wa;a.C=b.Bb(a.vb,a.X);if(a.M&9){if(a.M&1)return 0;a=a.ya(a.C)|a.ya(b.Bb(0,1))<<8}else a=a.nb(a.C);return a}function E(a,b){a.Ia=a.Ga;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,2);if(a.M&9){if(a.M&1)return 0;b=a.ya(a.C)|a.ya(a.Ia.Bb(0,1))<<8;a.M&=-9}else b=a.ja(a.C);return b} +function Bg(a,b){a.Ia=a.Sb;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,2);if(a.M&9){if(a.M&1)return 0;b=a.ya(a.C)|a.ya(a.Ia.Bb(0,1))<<8;a.M&=-9}else b=a.ja(a.C);return b}function F(a,b){a.Ia=a.Ga;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,4);return a.M&1?0:a.ia(a.C)}function Cg(a,b){a.Ia=a.Sb;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,4);return a.M&1?0:a.ia(a.C)}function Dg(a,b){a.M&2||a.ub(a.Ia.Vb(a.vb,1),b)}function Eg(a,b){if(!(a.M&2)){var c=a.Ia.Vb(a.vb,2);a.M&8?(a.ub(c,b),a.ub(a.Ia.Vb(0,1),b>>8),a.M&=-9):a.ib(c,b)}} +function Fg(a,b){a.M&2||a.eb(a.Ia.Vb(a.vb,4),b)}function ke(a,b,c){c=b.Bb(c,a.X);a.M&8?(b=a.ya(c)|a.ya(b.Bb(0,1))<<8,a.M&=-9):b=a.nb(c);return b}function Gg(a,b,c,d){c=b.Vb(c,a.X);a.M&8?(a.ub(c,d),a.ub(b.Vb(0,1),d>>8),a.M&=-9):a.hc(c,d)}l.sa=function(){var a=$f(this,1),b=this.ya(this.ea);this.ea=a;return b};function Hg(a){var b,c=$f(a,2);a.M&8?(b=a.ya(a.ea)|a.ya(c-1)<<8,a.M&=-9):b=a.ja(a.ea);a.ea=c;return b} +function H(a){var b,c=$f(a,a.Mc);a.M&8?(b=a.ya(a.ea)|a.ya(c-1)<<8,a.M&=-9):b=a.Wb(a.ea);a.ea=c;return b}l.Ha=function(){var a,b=$f(this,this.X);this.M&8?(a=this.ya(this.ea)|this.ya(b-1)<<8,this.M&=-9):a=this.nb(this.ea);this.ea=b;return a};l.S=function(){var a=$f(this,1),b=this.ya(this.ea)<<24>>24;this.ea=a;return b}; +function ee(a){var b=a.nb(a.Ca);a.Ca=a.Ca+a.X|0;var c=(a.Pg>>>0)-(a.Ca>>>0);0>c&&(8088>=a.da?(ge(a,a.Ca-a.U.ta&a.U.wa),-1>c&&(b=b&255|a.ya(a.Ca-1)<<8)):-1>c?x.call(a,12,0):(!a.U.fd&&a.U.Sa==a.U.wa||a.U.fd&&!a.U.Sa)&&ge(a,a.Ca-a.U.ta&a.U.wa));return b}function oe(a,b){le(a,b,a.X)} +function le(a,b,c,d){d=void 0===d?c:d;var e=a.Ca-c|0,f=(e>>>0)-(a.zj>>>0);if(0>f){if(8088>=a.da&&-1==f){a.ub(e+1,b>>8);ge(a,e-a.U.ta&a.U.wa);a.ub(a.Ca,b);return}if(!a.U.fd&&a.U.Sa==a.U.wa||a.U.fd&&!a.U.Sa){if(f>-c){x.call(a,12,0);return}ge(a,e-a.U.ta&a.U.wa);e=a.Ca}else{x.call(a,12,0);return}}switch(d){case 1:a.ub(e,b);break;case 2:a.ib(e,b);break;case 4:a.eb(e,b)}a.Ca=e} +function Ig(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.da)2this.da?0:1,e=0;2>e;e++){switch(d){case 0:if(this.ab&1&&this.P&512){var f=Kg(this.V);if(-1<=f&&(this.ab&=-2,0<=f)){this.ab&=-5;Lg.call(this, +f);d=!0;break a}}break;case 1:if(this.ab&2){this.ab&=-3;80386<=this.da&&(this.Rb[6]|=16384);Lg.call(this,1);d=!0;break a}}d=1-d}d=!1}if(d&&!a){this.O("interrupt dispatched");this.M=0;break}if(this.ab&4){this.M=this.A=0;break}}if(b){if(Mg(this.ca,this.ea,c)){this.Ub();break}c=1}this.M=0;this.xa[this.sa()].call(this)}while(0>11;Rg(this);Sg(this,a[b++]);for(c=0;c=Tg&&gh(a,hh))}function Rg(a){a.ga&=-129;a.ga&~a.cc&63&&(a.ga|=128);if(a.ga&128&&!(a.cc&128))return a=a.V,a.da>=Tg?ih(a,hh):a.fa&jh||Lg.call(a.H,2),!0;a=a.V;a.da>=Tg&&gh(a,hh);return!1}function kh(a,b){80387<=a.da||(b&=-65);a.ga|=b;return Rg(a)} +function Pg(a){return a.ga|a.B<<11}function lh(a,b){return isFinite(b)?!0:!kh(a,Infinity===b?8:16)}function mh(a,b,c){var d=null;null!=b&&null!=c&&(d=b+c,lh(a,d)||(d=null));return d}function nh(a,b,c){var d=null;null!=b&&null!=c&&(d=b-c,lh(a,d)||(d=null));return d}function oh(a,b,c){var d=null;null!=b&&null!=c&&(d=b*c,lh(a,d)||(d=null));return d}function ph(a,b,c){var d=null;null==b||null==c||!c&&kh(a,2)||(d=b/c,lh(a,d)||(d=null));return d} +function qh(a,b,c){if(null!=b&&null!=c){var d=0;isNaN(b)||isNaN(c)?d=17664:(b-=c,0>b?d=256:b||(d=16384));a.ga=a.ga&-18177|d;return!0}return!1}function rh(a,b,c){if(null==b)return null;var d=a.cc&3072;d?d=1024==d||3072==d&&0=c){if(kh(a,1))return null;d=-c}else if(d<-c){if(kh(a,1))return null;d=-c}a.G[0]=d|0;2147483648d&&(a.G[1]=-1))}return d} +function sh(a,b){var c=3;a.C&1<=c;c<<=1)3!=(b&3)&&(a.C|=c),b>>=2}function th(a){var b=a.B+0&7;return a.C&1<>16}function yh(a){return a.H.ia(a.H.C)}function zh(a){a.ha[0]=a.H.ia(a.H.C);return a.aa[0]}function Ah(a){a.G[0]=a.H.ia(a.H.C);a.G[1]=a.H.ia(a.H.C+4);return a.K[0]} +function Bh(a){a.D[0]=a.H.ia(a.H.C);a.D[1]=a.H.ia(a.H.C+4);a.D[2]=a.H.ja(a.H.C+8);return a.D}l.ki=function(){this.H.eb(this.H.C,this.G[0])};l.al=function(){this.H.eb(this.H.C,this.G[0]);this.H.eb(this.H.C+4,this.G[1])};function Ch(a){a.H.eb(a.H.C,a.D[0]);a.H.eb(a.H.C+4,a.D[1]);a.H.ib(a.H.C+8,a.D[2])}function Dh(a,b){var c=b[1],d=(b[2]&32768)>>4,e=b[2]&32767;b=b[0]>>>11|c<<21;c=c>>11&1048575;32767==e?e=2047:e&&(e+=-15360,0>=e&&(e=2047,b=c=0));a.G[0]=b;a.G[1]=c|(d|e)<<20;return a.K[0]} +function wh(a,b,c){var d=c>>20&2047,e=2147483648|(c&1048575)<<11|b>>>21;2047==d?d=32767:d?d+=15360:e&=2147483647;a.D[0]=b<<11;a.D[1]=e;a.D[2]=c>>16&32768|d;return a.D}function Eh(a,b){for(var c=0,d=1;b--;)c+=(a&15)*d,d*=10,a>>=4;return c}function Fh(a,b){for(var c=0,d=0;b--;)c|=a%10<>11;Rg(a);Sg(a,d.nb(b+=d.X));!(d.ra&1)||d.P&131072?(a.I=d.nb(b+=d.X),c=d.nb(b+=d.X),a.P=c&2047,a.I|=(c&-4096)<<4,a.M=-1,a.J=d.nb(b+=d.X),a.J|=(d.nb(b+=d.X)&-4096)<<4,a.N=-1):(a.I=d.nb(b+=d.X),c=d.nb(b+=d.X),a.M=c&65535,a.P=c>>16&2047,a.J=d.nb(b+=d.X),a.N=d.nb(b+=d.X)&65535);return b+d.X} +function Jh(a,b){var c=a.H;c.hc(b,a.cc);c.hc(b+=c.X,Pg(a));c.hc(b+=c.X,Qg(a));if(!(c.ra&1)||c.P&131072){var d=(a.M<<4)+a.I;c.hc(b+=c.X,d);c.hc(b+=c.X,d>>4&-4096|a.P);d=(a.N<<4)+a.J;c.hc(b+=c.X,d);c.hc(b+=c.X,d>>4&-4096)}else c.hc(b+=c.X,a.I),c.hc(b+=c.X,a.M|a.P<<16),c.hc(b+=c.X,a.J),c.hc(b+=c.X,a.N);return b+c.X}function Kh(){this.ga&=-32896;Rg(this)}function Lh(){qh(this,L(this,0),L(this,this.A))}function Mh(){qh(this,L(this,0),L(this,this.A))&&Gh(this)}function Nh(){Mh.call(this)} +function Oh(){M(this,0,ph(this,L(this,0),zh(this)))}function Ph(){this.C&=~(1<>20&2047)-1023),this.G[1]=(this.G[1]|1072693248)&-1073741825,Hh(this,this.K[0]))},102:function(){this.B=this.B-1&7;this.ga&=-513},103:function(){this.B= +this.B+1&7;this.ga&=-513},112:function(){M(this,0,L(this,0)%L(this,1))},113:function(){M(this,1,L(this,1)*Math.log(L(this,0)+1)/Math.LN2)&&Gh(this)},114:function(){var a=L(this,0),b=null;if(0<=a||!kh(this,1))b=Math.sqrt(a),lh(this,b)||(b=null);M(this,0,b)},116:function(){M(this,0,rh(this,L(this,0),hi))},117:function(){var a=L(this,0),b=L(this,1);null!=a&&null!=b&&M(this,0,a*Math.pow(2,0>>0);Hh(this,a)},6:function(){var a=rh(this,Gh(this));null!=a&&(this.D[0]=Fh(a,8),this.D[1]=Fh(a/1E8,8),this.D[2]=Fh(a/1E16,2),0>a&&(this.D[2]|=32768),Ch(this))},7:function(){null!=rh(this,L(this,0),hi)&&(this.al(),Gh(this))},48:function(){Ph.call(this);Gh(this)},49:bi,50:Xh,51:Xh,52:$h}},ji=[Kh,Qh,Rh,Sh,Th,Uh,Yh,Vh,Zh,$h];Xa(function(){for(var a=vb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.B.Ij;(bd)&&x.call(this,5);this.M|=2;return a}function si(a,b){var c=0;if(b){qg(this);for(var d=1;d&this.R;){if(b&d){a=c;break}d<<=1;c++}}else sg(this);this.A-=11+3*c;return a}function ti(a,b){var c=0;if(b){qg(this);for(var d=2==this.X?15:31,e=1<>>=1;c++;d--}}else sg(this);this.A-=11+3*c;return a} +function ui(a,b){a&1<<(b&(2==this.X?15:31))?jg(this):kg(this);this.A-=-1===this.C?3:6;this.M|=2;return a}function vi(a,b){b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=-1===this.C?6:8;return a^b}function wi(a,b){b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=-1===this.C?6:8;return a&~b}function xi(a,b){b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=-1===this.C?6:8;return a|b} +function yi(a,b){if(-1===this.C)return ui.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=6;this.M|=2;return a}function zi(a,b){if(-1===this.C)return vi.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=8;return a^b} +function Ai(a,b){if(-1===this.C)return wi.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=8;return a&~b}function Bi(a,b){if(-1===this.C)return xi.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=8;return a|b} +function Ci(a,b){bg(this,a,b,a-b|0,191,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.yh:this.B.Mb;this.M|=2;return a}function Di(a,b){bg(this,a,b,a-b|0,this.Hb|63,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.yh:this.B.Mb;this.M|=2;return a} +function Ei(a){if(this.Kc){var b=this.Kc,c=this.qj,d=this.fa,e=d>>3&7;b.A=d&7;var f=(3>(d>>6&3)?0:48)+e;(217==c||219==c)&&52<=f&&(f=e<<4|b.A);if(e=ii[c][f]){if(0>ji.indexOf(e)){var f=b.H,g=f.pd;8087==b.da&&(f.ha&16&&g++,f.ha&32&&g++);b.M=f.ba.T;b.I=g-f.ba.ta;-1!==f.C&&(b.N=f.Ia.T,b.J=f.C-f.Ia.ta);b.P=(c&7)<<8|d}e.call(b)}}this.A-=-1===this.C?2:8;return a}function Fi(a){if(80186>this.da)return Gi.call(this,a);x.call(this,13,0);return a}function Ue(a){x.call(this,6);return a} +function Gi(a){Xe.call(this);return a}function Hi(a,b){a=Ii.call(this,this.S(),b);80386>this.da&&(this.A-=12);return a}function Ji(a,b){a=this.Ha();a=2==this.X?Ii.call(this,a,b):Ki.call(this,a,b);80386>this.da&&(this.A-=12);return a}function Li(a,b){var c=!1;0>b&&(b=-b|0,c=!c);0>a&&(a=-a|0,c=!c);Mi.call(this,a,b);c&&(this.Ea=~this.Ea+1|0,this.cb=~this.cb+(this.Ea?0:1)|0)} +function Ii(a,b){a=(a<<16>>16)*(b<<16>>16)|0;32767a?(jg(this),lg(this)):(kg(this),mg(this));this.A-=-1===this.C?9:12;return a&65535}function Ki(a,b){Li.call(this,a,b);this.cb!=this.Ea>>31?(jg(this),lg(this)):(kg(this),mg(this));this.A-=-1===this.C?9:12;return this.Ea}function Ni(a,b){this.A-=14+(-1===this.C?0:2);qg(this);-1!==this.zb.load(b)&&this.zb.rc>=this.Pa&&this.zb.rc>=(b&3)&&(sg(this),a=this.zb.ob&-256,2=this.Pa)&&this.zb.rc>=(b&3))return sg(this),this.zb.Sa;qg(this);return a}function Ui(a,b){if(-1===this.C)return Xe.call(this),a;fe(this,this.ja(this.C+this.X));this.A-=this.B.Xe;return b} +function Vi(a,b){this.A-=-1===this.F?-1===this.C?this.B.sk:this.B.rk:this.B.pk;return b}function Wi(a,b){switch(this.fa>>3&7){case 4:this.Aa=this.D;break;case 5:this.Aa=this.I;break;case 6:this.Aa=this.L;break;case 7:this.Aa=this.G}return b}function Xi(a,b){return b} +function Yi(a,b){a=this.fa>>3&7;switch(a){case 0:this.Aa=this.D;break;case 2:this.Aa=this.L;break;case 3:this.Aa=this.G;break;default:if(80286==this.da||80386==this.da&&4!=a&&5!=a)x.call(this,6);else switch(a){case 1:this.Aa=this.I;break;case 4:this.Aa=y(this);break;case 5:this.Aa=this.N;break;case 6:this.Aa=this.K;break;case 7:this.Aa=this.J}}return Vi.call(this,0,b)} +function Zi(a,b){switch(this.fa>>3&7){case 0:b=this.pa.T;break;case 1:b=this.ba.T;break;case 2:b=this.U.T;break;case 3:b=this.Fa.T;break;case 4:if(80386<=this.da){b=this.Ka.T;break}x.call(this,6);b=a;break;case 5:if(80386<=this.da){b=this.La.T;break}default:x.call(this,6),b=a}-1!==this.F&&je(this,2);return Vi.call(this,0,b)} +function Mi(a,b){if(a&-65536||b&-65536){var c=b&65535;b>>>=16;var d=a&65535;a>>>=16;var e=c*d,d=(e>>>16)+b*d,f=d>>>16,d=(d&65535)+c*a;this.Ea=d<<16|e&65535;this.cb=f+((d>>>16)+b*a)|0}else this.Ea=a*b|0,this.cb=0}function $i(a,b){this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return ig(this,a|b,128)}function aj(a,b){this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return ig(this,a|b,this.Hb)&this.R} +function bj(a,b){var c=a-b-og(this)|0;bg(this,a,b,c,191,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&255}function cj(a,b){var c=a-b-og(this)|0;bg(this,a,b,c,this.Hb|63,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&this.R}function dj(){return hg(this)?1:0}function nj(){return cg(this)?1:0}function oj(){return cg(this)?0:1}function pj(){return fg(this)?1:0}function qj(){return fg(this)?0:1}function rj(){return cg(this)||fg(this)?1:0} +function sj(){return cg(this)||fg(this)?0:1}function tj(){return gg(this)?1:0}function uj(){return gg(this)?0:1}function vj(){return dg(this)?1:0}function wj(){return dg(this)?0:1}function xj(){return!gg(this)!=!hg(this)?1:0}function yj(){return!gg(this)!=!hg(this)?0:1}function zj(){return fg(this)||!gg(this)!=!hg(this)?1:0}function Aj(){return fg(this)||!gg(this)!=!hg(this)?0:1}function Bj(a,b){return Cj.call(this,a,b,this.sa())}function Dj(a,b){return Ej.call(this,a,b,this.sa())} +function Fj(a,b){return Cj.call(this,a,b,this.I&31)}function Gj(a,b){return Ej.call(this,a,b,this.I&31)}function Hj(a,b){return Ij.call(this,a,b,this.sa())}function Jj(a,b){return Kj.call(this,a,b,this.sa())}function Lj(a,b){return Ij.call(this,a,b,this.I&31)}function Mj(a,b){return Kj.call(this,a,b,this.I&31)}function Nj(a,b){var c=a-b|0;bg(this,a,b,c,191,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&255} +function Oj(a,b){var c=a-b|0;bg(this,a,b,c,this.Hb|63,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&this.R}function Pj(a,b){ig(this,a&b,128);this.A-=-1===this.F?-1===this.C?this.B.$h:this.B.Df:this.B.Df;this.M|=2;return a}function Qj(a,b){ig(this,a&b,this.Hb);this.A-=-1===this.F?-1===this.C?this.B.$h:this.B.Df:this.B.Df;this.M|=2;return a}function Rj(a,b){var c=this.D&this.R,d=(1<<(this.I&31))-1;return a&~(d<>(this.D&this.R)&(1<<(this.I&31))-1&this.R}function Tj(a,b){if(-1===this.C){switch(this.fa&7){case 0:this.D=this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}this.A-=this.B.bi}else this.F=this.C,Dg(this,a),this.A-=this.B.ai;return b} +function Uj(a,b){if(-1===this.C){switch(this.fa&7){case 0:this.D=this.D&~this.R|a;break;case 1:this.I=this.I&~this.R|a;break;case 2:this.L=this.L&~this.R|a;break;case 3:this.G=this.G&~this.R|a;break;case 4:ge(this,y(this)&~this.R|a);break;case 5:this.N=this.G&~this.R|a;break;case 6:this.K=this.K&~this.R|a;break;case 7:this.J=this.J&~this.R|a}this.A-=this.B.bi}else{this.F=this.C;if(!(this.M&2)){var c=this.Ia.Vb(this.vb,this.X);this.M&8?(this.ub(c,a),this.ub(this.Ia.Vb(0,1),a>>8),this.M&=-9):this.hc(c, +a)}this.A-=this.B.ai}return b}function Vj(a,b){a^=b;ig(this,a,128);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return a}function Wj(a,b){this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return ig(this,a^b,this.Hb)&this.R}function Xj(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Yj(a){var b=a-1|0;bg(this,a,1,b,this.Hb|62,!0);this.A-=2;return a&~this.R|b&this.R} +function Zj(a,b,c){c>>>=0;if(!c||c<=b>>>0)return!1;var d=0,e=1,f=this.Xm;f[0]=c>>>0;f[1]=0;c=this.Zm;c[0]=a>>>0;for(c[1]=b>>>0;0>>=0,a[1]++),e+=e;do 0<=Xj(c,f)&&(a=c,b=f,a[0]-=b[0],a[1]-=b[1],0>a[0]&&(a[0]>>>=0,a[1]--),d+=e),a=f,a[0]>>>=1,a[1]&1&&(a[0]=(a[0]|2147483648)>>>0),a[1]>>>=1,e/=2;while(1<=e);this.Ea=d;this.cb=c[0];return!0}function ak(a){var b=a+1|0;bg(this,a,1,b,this.Hb|62);this.A-=2;return a&~this.R|b&this.R} +function bk(a){this.ra=a;ie(this);this.ra&-2147483648?lf(this):of(this)}function te(a){this.Uc=a;nc(this)}function ck(a){this.M|=1;this.vc.call(this,a);this.A-=-1===this.C?4:5}function Cj(a,b,c){if(c){16>>16-c)&65535;ig(this,a,32768,d&32768)}return a}function Ej(a,b,c){if(c){var d=a<>>32-c;ig(this,a,-2147483648,d&-2147483648)}return a} +function Ij(a,b,c){if(c){16>>c-1;a=(d>>>1|b<<16-c)&65535;ig(this,a,32768,d&1)}return a}function Kj(a,b,c){if(c){var d=a>>>c-1;a=d>>>1|b<<32-c;ig(this,a,-2147483648,d&1)}return a}function dk(){this.A-=-1===this.C?2:this.B.Fk;return 1}function ek(){var a=this.I&255;this.A-=(-1===this.C?this.B.Th:this.B.Sh)+(a<this.Lc?(-1!=this.od&&(this.od!==this.ba.T&&(this.ba.Cb=this.od&3,Yf(this,this.od)),this.od=-1),this.pd!==this.ea&&Zf(this,this.pd),-1!=this.Tc&&(this.Tc!==this.U.T&&fe(this,this.Tc),this.Tc=-1),-1!==this.va&&(this.va!==this.Ca&&ge(this,this.Ac&~this.U.wa|this.va-this.U.ta),this.va=-1)):8!=this.Lc?(b=0,a=8):(b=0,a=-1,jf(this),e=d=!1)):Zf(this,this.pd);var f=a,g=b,h=32,k=vg(this,this.ea);204!=k||this.ad||(d=!1);this.P&131072&&(6== +f&&99==k||13==f&&205==k)&&(d=!1);!1===d&&(h|=1);983040<=this.ea&&1048575>=this.ea&&(d=!1);r(this,h|-2147483648)&&(d=!0);if(r(this,h)||d){var m=this.Z.Xa,f="Fault "+na(f)+(null!=g?" ("+oa(g)+")":"")+" on opcode "+na(k);d&&m&&(f+=" (blocked)");this.ca?(Nb(this,f,d||h,!0),d&&(d=m,this.ca.Ub())):(this.Da(f),this.Ub())}if(d&&e)throw-1;if(e)throw this.Lc=a,jk.call(this,a,b,c),this.pd=this.ea,this.M=1==a?this.M|8192:this.M|4096,a;} +function nf(a,b,c){this.qd=a;a=0;b&&(a|=1);c&&(a|=2);3==this.Pa&&(a|=4);x.call(this,14,a)}function lk(a){var b=a.ob&7680;a.T&65528&&(6144==b||7168==b||7168>b&&a.rc>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&255;break;case 1:b=this.I&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.D>>8&255;break;case 5:b=this.I>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function yf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=C(this,this.G+this.K);this.F=this.C;break;case 1:b=C(this,this.G+this.J);this.F=this.C;break;case 2:b=xg(this,this.N+this.K);this.F=this.C;break;case 3:b=xg(this,this.N+this.J);this.F=this.C;break;case 4:b=C(this,this.K);this.F=this.C;break;case 5:b=C(this,this.J);this.F=this.C;break;case 6:b=C(this,H(this));this.F=this.C;break;case 7:b=C(this,this.G);this.F=this.C;break;case 64:b=C(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:b=C(this,this.G+this.J+this.S());this.F=this.C;break;case 66:b=xg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=xg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:b=C(this,this.K+this.S());this.F=this.C;break;case 69:b=C(this,this.J+this.S());this.F=this.C;break;case 70:b=xg(this,this.N+this.S());this.F=this.C;break;case 71:b=C(this,this.G+this.S());this.F=this.C;break;case 128:b=C(this,this.G+this.K+H(this));this.F=this.C;break;case 129:b=C(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:b=xg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=xg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:b=C(this,this.K+H(this));this.F=this.C;break;case 133:b=C(this,this.J+H(this));this.F=this.C;break;case 134:b=xg(this,this.N+H(this));this.F=this.C;break;case 135:b=C(this,this.G+H(this));this.F=this.C;break;case 192:b=this.D&255;break;case 193:b=this.I&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.D>>8&255;break; +case 197:b=this.I>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b=this.G>>8&255;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&255;break;case 1:c=this.I&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.D>>8&255;break;case 5:c=this.I>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Dg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Dg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Dg(this, +a);this.A-=this.B.xc;break;case 6:Dg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Dg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Dg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Dg(this,a);this.A-=this.B.Za;break;case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I= +this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function zf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=C(this,this.G+this.K);this.F=this.C;break;case 1:c=C(this,this.G+this.J);this.F=this.C;break;case 2:c=xg(this,this.N+this.K);this.F=this.C;break;case 3:c=xg(this,this.N+this.J);this.F=this.C;break;case 4:c=C(this,this.K);this.F=this.C;break;case 5:c=C(this,this.J);this.F=this.C;break;case 6:c=C(this,H(this));this.F=this.C;break;case 7:c=C(this,this.G);this.F=this.C;break;case 64:c=C(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:c=C(this,this.G+this.J+this.S());this.F=this.C;break;case 66:c=xg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=xg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:c=C(this,this.K+this.S());this.F=this.C;break;case 69:c=C(this,this.J+this.S());this.F=this.C;break;case 70:c=xg(this,this.N+this.S());this.F=this.C;break;case 71:c=C(this,this.G+this.S());this.F=this.C;break;case 128:c=C(this,this.G+this.K+H(this));this.F=this.C;break;case 129:c=C(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:c=xg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=xg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:c=C(this,this.K+H(this));this.F=this.C;break;case 133:c=C(this,this.J+H(this));this.F=this.C;break;case 134:c=xg(this,this.N+H(this));this.F=this.C;break;case 135:c=C(this,this.G+H(this));this.F=this.C;break;case 192:c=this.D&255;break;case 193:c=this.I&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break; +case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Dg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Dg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Dg(this,a);this.A-=this.B.xc;break;case 6:Dg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Dg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Dg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Dg(this, +a);this.A-=this.B.Za;break;case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I=this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function Af(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=E(this,this.G+this.K);this.A-=this.B.Rc;break;case 1:c=E(this,this.G+this.J);this.A-=this.B.Sc;break;case 2:c=Bg(this,this.N+this.K);this.A-=this.B.Sc;break;case 3:c=Bg(this,this.N+this.J);this.A-=this.B.Rc;break;case 4:c=E(this,this.K);this.A-=this.B.xc;break;case 5:c=E(this,this.J);this.A-=this.B.xc;break;case 6:c=E(this,H(this));this.A-=this.B.Ad;break;case 7:c=E(this,this.G);this.A-=this.B.xc;break;case 64:c=E(this,this.G+this.K+ +this.S());this.A-=this.B.Xb;break;case 65:c=E(this,this.G+this.J+this.S());this.A-=this.B.Yb;break;case 66:c=Bg(this,this.N+this.K+this.S());this.A-=this.B.Yb;break;case 67:c=Bg(this,this.N+this.J+this.S());this.A-=this.B.Xb;break;case 68:c=E(this,this.K+this.S());this.A-=this.B.Za;break;case 69:c=E(this,this.J+this.S());this.A-=this.B.Za;break;case 70:c=Bg(this,this.N+this.S());this.A-=this.B.Za;break;case 71:c=E(this,this.G+this.S());this.A-=this.B.Za;break;case 128:c=E(this,this.G+this.K+H(this)); +this.A-=this.B.Xb;break;case 129:c=E(this,this.G+this.J+H(this));this.A-=this.B.Yb;break;case 130:c=Bg(this,this.N+this.K+H(this));this.A-=this.B.Yb;break;case 131:c=Bg(this,this.N+this.J+H(this));this.A-=this.B.Xb;break;case 132:c=E(this,this.K+H(this));this.A-=this.B.Za;break;case 133:c=E(this,this.J+H(this));this.A-=this.B.Za;break;case 134:c=Bg(this,this.N+H(this));this.A-=this.B.Za;break;case 135:c=E(this,this.G+H(this));this.A-=this.B.Za;break;case 192:c=this.D&65535;break;case 193:c=this.I& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535;break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&65535;break;case 1:b=this.I&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=y(this)&65535;break;case 5:b=this.N&65535;break;case 6:b=this.K&65535;break;case 7:b=this.J&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-65536|a;break;case 1:this.I=this.I&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:ge(this,y(this)&-65536|a);break;case 5:this.N=this.N&-65536|a;break;case 6:this.K=this.K&-65536|a;break;case 7:this.J=this.J&-65536|a}} +function Bf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=E(this,this.G+this.K);this.F=this.C;break;case 1:b=E(this,this.G+this.J);this.F=this.C;break;case 2:b=Bg(this,this.N+this.K);this.F=this.C;break;case 3:b=Bg(this,this.N+this.J);this.F=this.C;break;case 4:b=E(this,this.K);this.F=this.C;break;case 5:b=E(this,this.J);this.F=this.C;break;case 6:b=E(this,H(this));this.F=this.C;break;case 7:b=E(this,this.G);this.F=this.C;break;case 64:b=E(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:b=E(this,this.G+this.J+this.S());this.F=this.C;break;case 66:b=Bg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=Bg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:b=E(this,this.K+this.S());this.F=this.C;break;case 69:b=E(this,this.J+this.S());this.F=this.C;break;case 70:b=Bg(this,this.N+this.S());this.F=this.C;break;case 71:b=E(this,this.G+this.S());this.F=this.C;break;case 128:b=E(this,this.G+this.K+H(this));this.F=this.C;break;case 129:b=E(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:b=Bg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=Bg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:b=E(this,this.K+H(this));this.F=this.C;break;case 133:b=E(this,this.J+H(this));this.F=this.C;break;case 134:b=Bg(this,this.N+H(this));this.F=this.C;break;case 135:b=E(this,this.G+H(this));this.F=this.C;break;case 192:b=this.D&65535;break;case 193:b=this.I&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=y(this)&65535; +break;case 197:b=this.N&65535;break;case 198:b=this.K&65535;break;case 199:b=this.J&65535;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&65535;break;case 1:c=this.I&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=y(this)&65535;break;case 5:c=this.N&65535;break;case 6:c=this.K&65535;break;case 7:c=this.J&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Eg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Eg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Eg(this, +a);this.A-=this.B.xc;break;case 6:Eg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Eg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Eg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Eg(this,a);this.A-=this.B.Za;break;case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)&-65536|a);break; +case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a}} +function Cf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=E(this,this.G+this.K);this.F=this.C;break;case 1:c=E(this,this.G+this.J);this.F=this.C;break;case 2:c=Bg(this,this.N+this.K);this.F=this.C;break;case 3:c=Bg(this,this.N+this.J);this.F=this.C;break;case 4:c=E(this,this.K);this.F=this.C;break;case 5:c=E(this,this.J);this.F=this.C;break;case 6:c=E(this,H(this));this.F=this.C;break;case 7:c=E(this,this.G);this.F=this.C;break;case 64:c=E(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:c=E(this,this.G+this.J+this.S());this.F=this.C;break;case 66:c=Bg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=Bg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:c=E(this,this.K+this.S());this.F=this.C;break;case 69:c=E(this,this.J+this.S());this.F=this.C;break;case 70:c=Bg(this,this.N+this.S());this.F=this.C;break;case 71:c=E(this,this.G+this.S());this.F=this.C;break;case 128:c=E(this,this.G+this.K+H(this));this.F=this.C;break;case 129:c=E(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:c=Bg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=Bg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:c=E(this,this.K+H(this));this.F=this.C;break;case 133:c=E(this,this.J+H(this));this.F=this.C;break;case 134:c=Bg(this,this.N+H(this));this.F=this.C;break;case 135:c=E(this,this.G+H(this));this.F=this.C;break;case 192:c=this.D&65535;break;case 193:c=this.I&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535; +break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Eg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Eg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Eg(this,a);this.A-=this.B.xc;break;case 6:Eg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Eg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Eg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Eg(this, +a);this.A-=this.B.Za;break;case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)&-65536|a);break;case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a}} +function Df(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=F(this,this.G+this.K);this.A-=this.B.Rc;break;case 1:c=F(this,this.G+this.J);this.A-=this.B.Sc;break;case 2:c=Cg(this,this.N+this.K);this.A-=this.B.Sc;break;case 3:c=Cg(this,this.N+this.J);this.A-=this.B.Rc;break;case 4:c=F(this,this.K);this.A-=this.B.xc;break;case 5:c=F(this,this.J);this.A-=this.B.xc;break;case 6:c=F(this,H(this));this.A-=this.B.Ad;break;case 7:c=F(this,this.G);this.A-=this.B.xc;break;case 64:c=F(this,this.G+this.K+ +this.S());this.A-=this.B.Xb;break;case 65:c=F(this,this.G+this.J+this.S());this.A-=this.B.Yb;break;case 66:c=Cg(this,this.N+this.K+this.S());this.A-=this.B.Yb;break;case 67:c=Cg(this,this.N+this.J+this.S());this.A-=this.B.Xb;break;case 68:c=F(this,this.K+this.S());this.A-=this.B.Za;break;case 69:c=F(this,this.J+this.S());this.A-=this.B.Za;break;case 70:c=Cg(this,this.N+this.S());this.A-=this.B.Za;break;case 71:c=F(this,this.G+this.S());this.A-=this.B.Za;break;case 128:c=F(this,this.G+this.K+H(this)); +this.A-=this.B.Xb;break;case 129:c=F(this,this.G+this.J+H(this));this.A-=this.B.Yb;break;case 130:c=Cg(this,this.N+this.K+H(this));this.A-=this.B.Yb;break;case 131:c=Cg(this,this.N+this.J+H(this));this.A-=this.B.Xb;break;case 132:c=F(this,this.K+H(this));this.A-=this.B.Za;break;case 133:c=F(this,this.J+H(this));this.A-=this.B.Za;break;case 134:c=Cg(this,this.N+H(this));this.A-=this.B.Za;break;case 135:c=F(this,this.G+H(this));this.A-=this.B.Za;break;case 192:c=this.D;break;case 193:c=this.I;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D;break;case 1:b=this.I;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=y(this);break;case 5:b=this.N;break;case 6:b=this.K;break;case 7:b=this.J;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D=a;break;case 1:this.I=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:ge(this, +a);break;case 5:this.N=a;break;case 6:this.K=a;break;case 7:this.J=a}} +function Ef(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=F(this,this.G+this.K);this.F=this.C;break;case 1:b=F(this,this.G+this.J);this.F=this.C;break;case 2:b=Cg(this,this.N+this.K);this.F=this.C;break;case 3:b=Cg(this,this.N+this.J);this.F=this.C;break;case 4:b=F(this,this.K);this.F=this.C;break;case 5:b=F(this,this.J);this.F=this.C;break;case 6:b=F(this,H(this));this.F=this.C;break;case 7:b=F(this,this.G);this.F=this.C;break;case 64:b=F(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:b=F(this,this.G+this.J+this.S());this.F=this.C;break;case 66:b=Cg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=Cg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:b=F(this,this.K+this.S());this.F=this.C;break;case 69:b=F(this,this.J+this.S());this.F=this.C;break;case 70:b=Cg(this,this.N+this.S());this.F=this.C;break;case 71:b=F(this,this.G+this.S());this.F=this.C;break;case 128:b=F(this,this.G+this.K+H(this));this.F=this.C;break;case 129:b=F(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:b=Cg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=Cg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:b=F(this,this.K+H(this));this.F=this.C;break;case 133:b=F(this,this.J+H(this));this.F=this.C;break;case 134:b=Cg(this,this.N+H(this));this.F=this.C;break;case 135:b=F(this,this.G+H(this));this.F=this.C;break;case 192:b=this.D;break;case 193:b=this.I;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=y(this);break;case 197:b=this.N;break; +case 198:b=this.K;break;case 199:b=this.J;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D;break;case 1:c=this.I;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=y(this);break;case 5:c=this.N;break;case 6:c=this.K;break;case 7:c=this.J;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Fg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Fg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Fg(this,a);this.A-=this.B.xc;break;case 6:Fg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Fg(this, +a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Fg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Fg(this,a);this.A-=this.B.Za;break;case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a}} +function Ff(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=F(this,this.G+this.K);this.F=this.C;break;case 1:c=F(this,this.G+this.J);this.F=this.C;break;case 2:c=Cg(this,this.N+this.K);this.F=this.C;break;case 3:c=Cg(this,this.N+this.J);this.F=this.C;break;case 4:c=F(this,this.K);this.F=this.C;break;case 5:c=F(this,this.J);this.F=this.C;break;case 6:c=F(this,H(this));this.F=this.C;break;case 7:c=F(this,this.G);this.F=this.C;break;case 64:c=F(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:c=F(this,this.G+this.J+this.S());this.F=this.C;break;case 66:c=Cg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=Cg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:c=F(this,this.K+this.S());this.F=this.C;break;case 69:c=F(this,this.J+this.S());this.F=this.C;break;case 70:c=Cg(this,this.N+this.S());this.F=this.C;break;case 71:c=F(this,this.G+this.S());this.F=this.C;break;case 128:c=F(this,this.G+this.K+H(this));this.F=this.C;break;case 129:c=F(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:c=Cg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=Cg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:c=F(this,this.K+H(this));this.F=this.C;break;case 133:c=F(this,this.J+H(this));this.F=this.C;break;case 134:c=Cg(this,this.N+H(this));this.F=this.C;break;case 135:c=F(this,this.G+H(this));this.F=this.C;break;case 192:c=this.D;break;case 193:c=this.I;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break; +case 198:c=this.K;break;case 199:c=this.J}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Fg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Fg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Fg(this,a);this.A-=this.B.xc;break;case 6:Fg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Fg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Fg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Fg(this, +a);this.A-=this.B.Za;break;case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a}} +function Gf(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=C(this,this.D);break;case 1:c=C(this,this.I);break;case 2:c=C(this,this.L);break;case 3:c=C(this,this.G);break;case 4:c=C(this,nk.call(this,0));break;case 5:c=C(this,H(this));break;case 6:c=C(this,this.K);break;case 7:c=C(this,this.J);break;case 64:c=C(this,this.D+this.S());break;case 65:c=C(this,this.I+this.S());break;case 66:c=C(this,this.L+this.S());break;case 67:c=C(this,this.G+this.S());break;case 68:c=C(this,nk.call(this,1)+this.S()); +break;case 69:c=xg(this,this.N+this.S());break;case 70:c=C(this,this.K+this.S());break;case 71:c=C(this,this.J+this.S());break;case 128:c=C(this,this.D+H(this));break;case 129:c=C(this,this.I+H(this));break;case 130:c=C(this,this.L+H(this));break;case 131:c=C(this,this.G+H(this));break;case 132:c=C(this,nk.call(this,2)+H(this));break;case 133:c=xg(this,this.N+H(this));break;case 134:c=C(this,this.K+H(this));break;case 135:c=C(this,this.J+H(this));break;case 192:c=this.D&255;break;case 193:c=this.I& +255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&255;break;case 1:b=this.I&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.D>>8&255;break;case 5:b=this.I>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function Hf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=C(this,this.D);this.F=this.C;break;case 1:b=C(this,this.I);this.F=this.C;break;case 2:b=C(this,this.L);this.F=this.C;break;case 3:b=C(this,this.G);this.F=this.C;break;case 4:b=C(this,nk.call(this,0));this.F=this.C;break;case 5:b=C(this,H(this));this.F=this.C;break;case 6:b=C(this,this.K);this.F=this.C;break;case 7:b=C(this,this.J);this.F=this.C;break;case 64:b=C(this,this.D+this.S());this.F=this.C;break;case 65:b=C(this,this.I+this.S()); +this.F=this.C;break;case 66:b=C(this,this.L+this.S());this.F=this.C;break;case 67:b=C(this,this.G+this.S());this.F=this.C;break;case 68:b=C(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:b=xg(this,this.N+this.S());this.F=this.C;break;case 70:b=C(this,this.K+this.S());this.F=this.C;break;case 71:b=C(this,this.J+this.S());this.F=this.C;break;case 128:b=C(this,this.D+H(this));this.F=this.C;break;case 129:b=C(this,this.I+H(this));this.F=this.C;break;case 130:b=C(this,this.L+H(this));this.F= +this.C;break;case 131:b=C(this,this.G+H(this));this.F=this.C;break;case 132:b=C(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:b=xg(this,this.N+H(this));this.F=this.C;break;case 134:b=C(this,this.K+H(this));this.F=this.C;break;case 135:b=C(this,this.J+H(this));this.F=this.C;break;case 192:b=this.D&255;break;case 193:b=this.I&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.D>>8&255;break;case 197:b=this.I>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b= +this.G>>8&255;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&255;break;case 1:c=this.I&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.D>>8&255;break;case 5:c=this.I>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I= +this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:Dg(this,a)}} +function If(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=C(this,this.D);this.F=this.C;break;case 1:c=C(this,this.I);this.F=this.C;break;case 2:c=C(this,this.L);this.F=this.C;break;case 3:c=C(this,this.G);this.F=this.C;break;case 4:c=C(this,nk.call(this,0));this.F=this.C;break;case 5:c=C(this,H(this));this.F=this.C;break;case 6:c=C(this,this.K);this.F=this.C;break;case 7:c=C(this,this.J);this.F=this.C;break;case 64:c=C(this,this.D+this.S());this.F=this.C;break;case 65:c=C(this,this.I+this.S()); +this.F=this.C;break;case 66:c=C(this,this.L+this.S());this.F=this.C;break;case 67:c=C(this,this.G+this.S());this.F=this.C;break;case 68:c=C(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:c=xg(this,this.N+this.S());this.F=this.C;break;case 70:c=C(this,this.K+this.S());this.F=this.C;break;case 71:c=C(this,this.J+this.S());this.F=this.C;break;case 128:c=C(this,this.D+H(this));this.F=this.C;break;case 129:c=C(this,this.I+H(this));this.F=this.C;break;case 130:c=C(this,this.L+H(this));this.F= +this.C;break;case 131:c=C(this,this.G+H(this));this.F=this.C;break;case 132:c=C(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:c=xg(this,this.N+H(this));this.F=this.C;break;case 134:c=C(this,this.K+H(this));this.F=this.C;break;case 135:c=C(this,this.J+H(this));this.F=this.C;break;case 192:c=this.D&255;break;case 193:c=this.I&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c= +this.G>>8&255;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I=this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:Dg(this,a)}} +function Jf(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=E(this,this.D);break;case 1:c=E(this,this.I);break;case 2:c=E(this,this.L);break;case 3:c=E(this,this.G);break;case 4:c=E(this,nk.call(this,0));break;case 5:c=E(this,H(this));break;case 6:c=E(this,this.K);break;case 7:c=E(this,this.J);break;case 64:c=E(this,this.D+this.S());break;case 65:c=E(this,this.I+this.S());break;case 66:c=E(this,this.L+this.S());break;case 67:c=E(this,this.G+this.S());break;case 68:c=E(this,nk.call(this,1)+this.S()); +break;case 69:c=Bg(this,this.N+this.S());break;case 70:c=E(this,this.K+this.S());break;case 71:c=E(this,this.J+this.S());break;case 128:c=E(this,this.D+H(this));break;case 129:c=E(this,this.I+H(this));break;case 130:c=E(this,this.L+H(this));break;case 131:c=E(this,this.G+H(this));break;case 132:c=E(this,nk.call(this,2)+H(this));break;case 133:c=Bg(this,this.N+H(this));break;case 134:c=E(this,this.K+H(this));break;case 135:c=E(this,this.J+H(this));break;case 192:c=this.D&65535;break;case 193:c=this.I& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535;break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&65535;break;case 1:b=this.I&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=y(this)&65535;break;case 5:b=this.N&65535;break;case 6:b=this.K&65535;break;case 7:b=this.J&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-65536|a;break;case 1:this.I=this.I&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:ge(this,y(this)&-65536|a);break;case 5:this.N=this.N&-65536|a;break;case 6:this.K=this.K&-65536|a;break;case 7:this.J=this.J&-65536|a}} +function Kf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=E(this,this.D);this.F=this.C;break;case 1:b=E(this,this.I);this.F=this.C;break;case 2:b=E(this,this.L);this.F=this.C;break;case 3:b=E(this,this.G);this.F=this.C;break;case 4:b=E(this,nk.call(this,0));this.F=this.C;break;case 5:b=E(this,H(this));this.F=this.C;break;case 6:b=E(this,this.K);this.F=this.C;break;case 7:b=E(this,this.J);this.F=this.C;break;case 64:b=E(this,this.D+this.S());this.F=this.C;break;case 65:b=E(this,this.I+this.S()); +this.F=this.C;break;case 66:b=E(this,this.L+this.S());this.F=this.C;break;case 67:b=E(this,this.G+this.S());this.F=this.C;break;case 68:b=E(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:b=Bg(this,this.N+this.S());this.F=this.C;break;case 70:b=E(this,this.K+this.S());this.F=this.C;break;case 71:b=E(this,this.J+this.S());this.F=this.C;break;case 128:b=E(this,this.D+H(this));this.F=this.C;break;case 129:b=E(this,this.I+H(this));this.F=this.C;break;case 130:b=E(this,this.L+H(this));this.F= +this.C;break;case 131:b=E(this,this.G+H(this));this.F=this.C;break;case 132:b=E(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:b=Bg(this,this.N+H(this));this.F=this.C;break;case 134:b=E(this,this.K+H(this));this.F=this.C;break;case 135:b=E(this,this.J+H(this));this.F=this.C;break;case 192:b=this.D&65535;break;case 193:b=this.I&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=y(this)&65535;break;case 197:b=this.N&65535;break;case 198:b=this.K&65535;break; +case 199:b=this.J&65535;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&65535;break;case 1:c=this.I&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=y(this)&65535;break;case 5:c=this.N&65535;break;case 6:c=this.K&65535;break;case 7:c=this.J&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)& +-65536|a);break;case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a;break;default:Eg(this,a)}} +function Lf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=E(this,this.D);this.F=this.C;break;case 1:c=E(this,this.I);this.F=this.C;break;case 2:c=E(this,this.L);this.F=this.C;break;case 3:c=E(this,this.G);this.F=this.C;break;case 4:c=E(this,nk.call(this,0));this.F=this.C;break;case 5:c=E(this,H(this));this.F=this.C;break;case 6:c=E(this,this.K);this.F=this.C;break;case 7:c=E(this,this.J);this.F=this.C;break;case 64:c=E(this,this.D+this.S());this.F=this.C;break;case 65:c=E(this,this.I+this.S()); +this.F=this.C;break;case 66:c=E(this,this.L+this.S());this.F=this.C;break;case 67:c=E(this,this.G+this.S());this.F=this.C;break;case 68:c=E(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:c=Bg(this,this.N+this.S());this.F=this.C;break;case 70:c=E(this,this.K+this.S());this.F=this.C;break;case 71:c=E(this,this.J+this.S());this.F=this.C;break;case 128:c=E(this,this.D+H(this));this.F=this.C;break;case 129:c=E(this,this.I+H(this));this.F=this.C;break;case 130:c=E(this,this.L+H(this));this.F= +this.C;break;case 131:c=E(this,this.G+H(this));this.F=this.C;break;case 132:c=E(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:c=Bg(this,this.N+H(this));this.F=this.C;break;case 134:c=E(this,this.K+H(this));this.F=this.C;break;case 135:c=E(this,this.J+H(this));this.F=this.C;break;case 192:c=this.D&65535;break;case 193:c=this.I&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535;break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break; +case 199:c=this.J&65535;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)&-65536|a);break;case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a;break;default:Eg(this,a)}} +function Mf(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=F(this,this.D);break;case 1:c=F(this,this.I);break;case 2:c=F(this,this.L);break;case 3:c=F(this,this.G);break;case 4:c=F(this,nk.call(this,0));break;case 5:c=F(this,H(this));break;case 6:c=F(this,this.K);break;case 7:c=F(this,this.J);break;case 64:c=F(this,this.D+this.S());break;case 65:c=F(this,this.I+this.S());break;case 66:c=F(this,this.L+this.S());break;case 67:c=F(this,this.G+this.S());break;case 68:c=F(this,nk.call(this,1)+this.S()); +break;case 69:c=Cg(this,this.N+this.S());break;case 70:c=F(this,this.K+this.S());break;case 71:c=F(this,this.J+this.S());break;case 128:c=F(this,this.D+H(this));break;case 129:c=F(this,this.I+H(this));break;case 130:c=F(this,this.L+H(this));break;case 131:c=F(this,this.G+H(this));break;case 132:c=F(this,nk.call(this,2)+H(this));break;case 133:c=Cg(this,this.N+H(this));break;case 134:c=F(this,this.K+H(this));break;case 135:c=F(this,this.J+H(this));break;case 192:c=this.D;break;case 193:c=this.I;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D;break;case 1:b=this.I;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=y(this);break;case 5:b=this.N;break;case 6:b=this.K;break;case 7:b=this.J;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D=a;break;case 1:this.I=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:ge(this, +a);break;case 5:this.N=a;break;case 6:this.K=a;break;case 7:this.J=a}} +function Nf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=F(this,this.D);this.F=this.C;break;case 1:b=F(this,this.I);this.F=this.C;break;case 2:b=F(this,this.L);this.F=this.C;break;case 3:b=F(this,this.G);this.F=this.C;break;case 4:b=F(this,nk.call(this,0));this.F=this.C;break;case 5:b=F(this,H(this));this.F=this.C;break;case 6:b=F(this,this.K);this.F=this.C;break;case 7:b=F(this,this.J);this.F=this.C;break;case 64:b=F(this,this.D+this.S());this.F=this.C;break;case 65:b=F(this,this.I+this.S()); +this.F=this.C;break;case 66:b=F(this,this.L+this.S());this.F=this.C;break;case 67:b=F(this,this.G+this.S());this.F=this.C;break;case 68:b=F(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:b=Cg(this,this.N+this.S());this.F=this.C;break;case 70:b=F(this,this.K+this.S());this.F=this.C;break;case 71:b=F(this,this.J+this.S());this.F=this.C;break;case 128:b=F(this,this.D+H(this));this.F=this.C;break;case 129:b=F(this,this.I+H(this));this.F=this.C;break;case 130:b=F(this,this.L+H(this));this.F= +this.C;break;case 131:b=F(this,this.G+H(this));this.F=this.C;break;case 132:b=F(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:b=Cg(this,this.N+H(this));this.F=this.C;break;case 134:b=F(this,this.K+H(this));this.F=this.C;break;case 135:b=F(this,this.J+H(this));this.F=this.C;break;case 192:b=this.D;break;case 193:b=this.I;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=y(this);break;case 197:b=this.N;break;case 198:b=this.K;break;case 199:b=this.J;break;default:b=0}switch(this.fa>> +3&7){case 0:c=this.D;break;case 1:c=this.I;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=y(this);break;case 5:c=this.N;break;case 6:c=this.K;break;case 7:c=this.J;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a;break;default:Fg(this,a)}} +function Of(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=F(this,this.D);this.F=this.C;break;case 1:c=F(this,this.I);this.F=this.C;break;case 2:c=F(this,this.L);this.F=this.C;break;case 3:c=F(this,this.G);this.F=this.C;break;case 4:c=F(this,nk.call(this,0));this.F=this.C;break;case 5:c=F(this,H(this));this.F=this.C;break;case 6:c=F(this,this.K);this.F=this.C;break;case 7:c=F(this,this.J);this.F=this.C;break;case 64:c=F(this,this.D+this.S());this.F=this.C;break;case 65:c=F(this,this.I+this.S()); +this.F=this.C;break;case 66:c=F(this,this.L+this.S());this.F=this.C;break;case 67:c=F(this,this.G+this.S());this.F=this.C;break;case 68:c=F(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:c=Cg(this,this.N+this.S());this.F=this.C;break;case 70:c=F(this,this.K+this.S());this.F=this.C;break;case 71:c=F(this,this.J+this.S());this.F=this.C;break;case 128:c=F(this,this.D+H(this));this.F=this.C;break;case 129:c=F(this,this.I+H(this));this.F=this.C;break;case 130:c=F(this,this.L+H(this));this.F= +this.C;break;case 131:c=F(this,this.G+H(this));this.F=this.C;break;case 132:c=F(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:c=Cg(this,this.N+H(this));this.F=this.C;break;case 134:c=F(this,this.K+H(this));this.F=this.C;break;case 135:c=F(this,this.J+H(this));this.F=this.C;break;case 192:c=this.D;break;case 193:c=this.I;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}a=a[this.fa>> +3&7].call(this,c,b.call(this));switch(d){case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a;break;default:Fg(this,a)}} +function nk(a){var b=this.sa(),c=b>>6,d,e;switch(b>>3&7){case 0:d=this.D;break;case 1:d=this.I;break;case 2:d=this.L;break;case 3:d=this.G;break;case 4:d=0;break;case 5:d=this.N;break;case 6:d=this.K;break;case 7:d=this.J}switch(b&7){case 0:e=this.D;break;case 1:e=this.I;break;case 2:e=this.L;break;case 3:e=this.G;break;case 4:e=y(this);this.Ga=this.Sb;break;case 5:a?(e=this.N,this.Ga=this.Sb):e=H(this);break;case 6:e=this.K;break;case 7:e=this.J}return(d<>8&255;9<(c&15)||eg(this)?(c+=6,80286<=this.da&&255>8&255;9<(c&15)||eg(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.D=this.D&-65536|d<<8|c;a?jg(this):kg(this);b?rg(this):pg(this);this.A-=this.B.ve},function(){this.D=ak.call(this,this.D)},function(){this.I=ak.call(this,this.I)},function(){this.L=ak.call(this,this.L)},function(){this.G=ak.call(this,this.G)},function(){ge(this, +ak.call(this,y(this)))},function(){this.N=ak.call(this,this.N)},function(){this.K=ak.call(this,this.K)},function(){this.J=ak.call(this,this.J)},function(){this.D=Yj.call(this,this.D)},function(){this.I=Yj.call(this,this.I)},function(){this.L=Yj.call(this,this.L)},function(){this.G=Yj.call(this,this.G)},function(){ge(this,Yj.call(this,y(this)))},function(){this.N=Yj.call(this,this.N)},function(){this.K=Yj.call(this,this.K)},function(){this.J=Yj.call(this,this.J)},function(){oe(this,this.D&this.R); +this.A-=this.B.Jc},function(){oe(this,this.I&this.R);this.A-=this.B.Jc},function(){oe(this,this.L&this.R);this.A-=this.B.Jc},function(){oe(this,this.G&this.R);this.A-=this.B.Jc},function(){oe(this,y(this)-2&65535);this.A-=this.B.Jc},function(){oe(this,this.N&this.R);this.A-=this.B.Jc},function(){oe(this,this.K&this.R);this.A-=this.B.Jc},function(){oe(this,this.J&this.R);this.A-=this.B.Jc},function(){this.D=this.D&~this.R|ee(this);this.A-=this.B.oc},function(){this.I=this.I&~this.R|ee(this);this.A-= +this.B.oc},function(){this.L=this.L&~this.R|ee(this);this.A-=this.B.oc},function(){this.G=this.G&~this.R|ee(this);this.A-=this.B.oc},function(){ge(this,y(this)&~this.R|ee(this));this.A-=this.B.oc},function(){this.N=this.N&~this.R|ee(this);this.A-=this.B.oc},function(){this.K=this.K&~this.R|ee(this);this.A-=this.B.oc},function(){this.J=this.J&~this.R|ee(this);this.A-=this.B.oc},ok,pk,qk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Bk,Ck,Dk,ok,pk,qk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Bk,Ck,Dk,Ek,function(){this.mb.call(this, +Tk,this.Ha);this.A-=-1===this.F?1:this.B.xg},Ek,function(){this.mb.call(this,Tk,this.S);this.A-=-1===this.F?1:this.B.xg},function(){this.vc.call(this,Pj)},function(){this.Ba.call(this,Qj)},function(){this.lc.call(this,Tj)},function(){this.la.call(this,Uj)},Gk,Hk,Ik,Jk,function(){this.M|=1;this.Ba.call(this,Zi)},function(){this.M|=1;this.Ga=this.Sb=this.Qg;this.la.call(this,Pi)},function(){var a;this.la.call(this,Yi);switch(this.fa>>3&7){case 0:a=this.D;this.D=this.Aa;ne(this,a);break;case 1:a=this.I; +this.I=this.Aa;Yf(this,a);break;case 2:a=this.L;this.L=this.Aa;fe(this,a);break;case 3:a=this.G;this.G=this.Aa;me(this,a);break;case 4:a=y(this);ge(this,this.Aa);80386<=this.da?this.Ka.load(a):ne(this,a);break;case 5:a=this.N;this.N=this.Aa;80386<=this.da?this.La.load(a):Yf(this,a);break;case 6:a=this.K;this.K=this.Aa;fe(this,a);break;case 7:a=this.J,this.J=this.Aa,me(this,a)}},function(){this.M|=1;this.va=this.Ca;this.Aa=ee(this);this.mb.call(this,Uk,hk);this.va=-1},function(){this.A-=3},function(){var a= +this.D;this.D=this.D&~this.R|this.I&this.R;this.I=this.I&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.L&this.R;this.L=this.L&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.G&this.R;this.G=this.G&~this.R|a&this.R;this.A-=3},function(){var a=this.D,b=y(this);this.D=this.D&~this.R|b&this.R;ge(this,b&~this.R|a&this.R);this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.N&this.R;this.N=this.N&~this.R|a&this.R;this.A-=3},function(){var a= +this.D;this.D=this.D&~this.R|this.K&this.R;this.K=this.K&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.J&this.R;this.J=this.J&~this.R|a&this.R;this.A-=3},function(){this.D=2==this.X?this.D&-65536|this.D<<24>>24&65535:this.D<<16>>16;this.A-=2},function(){this.L=2==this.X?this.L&-65536|(this.D&32768?65535:0):this.D&-2147483648?-1:0;this.A-=this.B.Kj},function(){ik.call(this,this.Ha(),Hg(this));this.A-=this.B.Nj},function(){this.A-=3},function(){var a=qe(this);a&131072&& +3>this.mc?x.call(this,13,0):(oe(this,a&-196609),this.A-=this.B.Jc)},function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var a=ee(this),a=a&65535|this.P&-65536;re(this,a);this.A-=this.B.oc}},function(){var a=this.D>>8&255;a&1?jg(this):kg(this);a&4?(this.resultType&=-3,this.P|=4):(this.resultType&=-3,this.P&=-5);a&16?rg(this):pg(this);a&64?sg(this):qg(this);a&128?(this.resultType&=-17,this.P|=128):(this.resultType&=-17,this.P&=-129);this.A-=this.B.Zb},function(){this.D=this.D&-65281|(qe(this)& +213)<<8;this.A-=this.B.Zb},function(){var a=this.D&-256,b;b=H(this);b=this.ya(this.Ga.Bb(b,1));this.D=a|b;this.A-=this.B.Ih},function(){this.D=this.D&~this.R|ke(this,this.Ga,H(this));this.A-=this.B.Ih},function(){var a=H(this),b=this.D;this.ub(this.Ga.Vb(a,1),b);this.A-=this.B.Jh},function(){Gg(this,this.Ga,H(this),this.D);this.A-=this.B.Jh},function(){var a=1,b=0,c=this.wa,d=this.B.Kh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Mh,this.ha&256||(this.A-=this.B.Lh));if(a--){var e=this.ya(this.Ga.Bb(this.K& +c,1));this.ub(this.pa.Vb(this.J&c,1),e);e=this.P&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Kh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Mh,this.ha&256||(this.A-=this.B.Lh));if(a--){Gg(this,this.pa,this.J&c,ke(this,this.Ga,this.K&c));var e=this.P&1024?-this.X:this.X;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(ag(this), +this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.vh;this.ha&192&&(a=this.I&c,b=1,d=this.B.xh,this.ha&256||(this.A-=this.B.wh));if(a--){var e=wg(this,this.Ga,this.K),f=wg(this,this.pa,this.J);this.F=this.C;Ci.call(this,e,f);e=this.P&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.vh;this.ha&192&&(a=this.I&c,b=1,d=this.B.xh,this.ha&256|| +(this.A-=this.B.wh));if(a--){var e=yg(this,this.Ga,this.K&c),f=yg(this,this.pa,this.J&c);this.F=this.C;Di.call(this,e,f);e=this.P&1024?-this.X:this.X;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this),this.M|=256)}},function(){ig(this,this.D&this.sa(),128);this.A-=this.B.ve},function(){ig(this,this.D&this.Ha(),this.Hb);this.A-=this.B.ve},function(){var a=1,b=0,c=this.wa,d=this.B.Vh;this.ha&192&&(a=this.I&c,b= +1,d=this.B.Xh,this.ha&256||(this.A-=this.B.Wh));if(a--){var e=this.D;this.ub(this.pa.Vb(this.J&c,1),e);this.I=this.I&~c|this.I-b&c;80546<=this.Rd&&80564>=this.Rd&&!(this.ha&2048)!=(103!=this.ya(this.ea))&&(c^=-65536);this.J=this.J&~c|this.J+(this.P&1024?-1:1)&c;this.A-=d;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Vh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Xh,this.ha&256||(this.A-=this.B.Wh));a--&&(Gg(this,this.pa,this.J&c,this.D),this.J=this.J&~c|this.J+(this.P&1024?-this.X: +this.X)&c,this.I=this.I&~c|this.I-b&c,this.A-=d,a&&(ag(this),this.M|=256))},function(){var a=1,b=0,c=this.wa,d=this.B.Ch;this.ha&192&&(a=this.I&c,b=1,d=this.B.Eh,this.ha&256||(this.A-=this.B.Dh));if(a--){var e=this.ya(this.Ga.Bb(this.K&c,1));this.D=this.D&-256|e;this.K=this.K&~c|this.K+(this.P&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Ch;this.ha&192&&(a=this.I&c,b=1,d=this.B.Eh,this.ha&256||(this.A-=this.B.Dh));if(a--){var e= +ke(this,this.Ga,this.K&c);this.D=this.D&~this.R|e;this.K=this.K&~c|this.K+(this.P&1024?-this.X:this.X)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Ph;this.ha&192&&(a=this.I&c,b=1,d=this.B.Rh,this.ha&256||(this.A-=this.B.Qh));if(a--){var e=this.D&255,f=wg(this,this.pa,this.J);this.F=this.C;Ci.call(this,e,f);this.J=this.J&~c|this.J+(this.P&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this), +this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Ph;this.ha&192&&(a=this.I&c,b=1,d=this.B.Rh,this.ha&256||(this.A-=this.B.Qh));if(a--){var e=this.D&this.R,f=yg(this,this.pa,this.J&c);this.F=this.C;Di.call(this,e,f);this.J=this.J&~c|this.J+(this.P&1024?-this.X:this.X)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this),this.M|=256)}},function(){this.D=this.D&-256|this.sa();this.A-=this.B.Zb},function(){this.I=this.I&-256|this.sa();this.A-=this.B.Zb},function(){this.L= +this.L&-256|this.sa();this.A-=this.B.Zb},function(){this.G=this.G&-256|this.sa();this.A-=this.B.Zb},function(){this.D=this.D&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.I=this.I&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.L=this.L&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.G=this.G&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.D=this.D&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.I=this.I&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.L=this.L& +~this.R|this.Ha();this.A-=this.B.Zb},function(){this.G=this.G&~this.R|this.Ha();this.A-=this.B.Zb},function(){ge(this,y(this)&~this.R|this.Ha());this.A-=this.B.Zb},function(){this.N=this.N&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.K=this.K&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.J=this.J&~this.R|this.Ha();this.A-=this.B.Zb},Nk,Ok,Nk,Ok,function(){this.la.call(this,Qi)},function(){this.la.call(this,Oi)},function(){this.M|=1;this.ld.call(this,Vk,this.sa)},function(){this.M|= +1;this.mb.call(this,Vk,this.Ha)},Pk,Qk,Pk,Qk,function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var a=this.B.dk;this.Lc=-1;jk.call(this,3,null,a)}},function(){var a=this.sa();if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var b;a:{b=this.Vf[a];if(void 0!==b)for(var c=0;cthis.mc)x.call(this,13,0);else{var a= +this.B.ek;this.Lc=-1;jk.call(this,4,null,a)}else this.A-=this.B.fk},function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{this.Tc=this.U.T;this.va=this.Ca;this.A-=this.B.bk;if(this.ra&1&&this.P&16384){var a=this.ja(this.ka.ta+0);he(this.ba,a,!1)}else{var a=this.Pa,b=ee(this),c=ee(this),d=ee(this);if(this.P&131072)d=d&131071|this.P&-131072;else if(d&131072){var e=ee(this),f=ee(this),g=ee(this),h=ee(this),k=ee(this),m=ee(this);ie(this,!0,!0);fe(this,f);ge(this,e);ne(this,g);me(this,h);this.Ka.load(k); +this.La.load(m)}null!=se(this,b,c,!1)&&(re(this,d,a),this.Yf&&Tf(this,this.ea))}this.Tc=this.va=-1}},function(){this.ld.call(this,Kk,dk)},function(){this.mb.call(this,2==this.X?Lk:Mk,dk)},function(){this.ld.call(this,Kk,ek)},function(){this.mb.call(this,2==this.X?Lk:Mk,ek)},function(){var a=this.sa();if(a){var b=this.D&255;this.D=this.D&-65536|b/a<<8|b%a;ig(this,this.D,128);this.A-=this.B.Hj}else mk.call(this)},function(){var a=this.D&255,b=(this.D>>8&255)*this.sa()|0,c=a+b|0;this.D=this.D&-65536| +c&255;bg(this,a,b,c,191);this.A-=this.B.Gj},function(){this.D=this.D&-256|(cg(this)?255:0);this.A-=2},function(){this.D=this.D&-256|wg(this,this.Ga,this.G+(this.D&255));this.A-=this.B.Gk},function(){Rk.call(this,216)},function(){Rk.call(this,217)},function(){Rk.call(this,218)},function(){Rk.call(this,219)},function(){Rk.call(this,220)},function(){Rk.call(this,221)},function(){Rk.call(this,222)},function(){Rk.call(this,223)},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b&& +!fg(this)?(B(this,z(this)+a),this.A-=this.B.mk):this.A-=this.B.Fh},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b&&fg(this)?(B(this,z(this)+a),this.A-=this.B.Gh):this.A-=this.B.Hh},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b?(B(this,z(this)+a),this.A-=this.B.lk):this.A-=this.B.Fh},function(){var a=this.S();this.I&this.wa?this.A-=this.B.Hh:(B(this,z(this)+a),this.A-=this.B.Gh)},function(){var a=this.sa();ug(this,a,1,!0)&&(this.D=this.D&-256|Jc(this.na, +a,1,this.ea-2)&255,this.A-=this.B.Ah)},function(){var a=this.sa();ug(this,a,this.X,!0)&&(this.D=this.D&~this.R|Jc(this.na,a,this.X,this.ea-2)&this.R,this.A-=this.B.Ah)},function(){var a=this.sa();ug(this,a,1,!1)&&(Nc(this.na,a,1,this.D&255,this.ea-2),this.A-=this.B.Oh)},function(){var a=this.sa();ug(this,a,this.X,!1)&&(Nc(this.na,a,this.X,this.D&this.R,this.ea-2),this.A-=this.B.Oh)},function(){var a=this.Ha(),b=z(this),a=b+a;oe(this,b);B(this,a);this.A-=this.B.Lj},function(){var a=this.Ha();B(this, +z(this)+a);this.A-=this.B.Bh},function(){se(this,this.Ha(),Hg(this));this.A-=this.B.hk},function(){var a=this.S();B(this,z(this)+a);this.A-=this.B.Bh},function(){var a=this.L&65535;ug(this,a,1,!0)&&(this.D=this.D&-256|Jc(this.na,a,1,this.ea-1)&255,this.A-=this.B.zh)},function(){var a=this.L&65535;ug(this,a,this.X,!0)&&(this.D=this.D&~this.R|Jc(this.na,a,this.X,this.ea-1)&this.R,this.A-=this.B.zh)},function(){var a=this.L&65535;ug(this,a,1,!1)&&(Nc(this.na,a,1,this.D&255,this.ea-1),this.A-=this.B.Nh)}, +function(){var a=this.L&65535;ug(this,a,2,!1)&&(Nc(this.na,a,this.X,this.D&this.R,this.ea-1),this.A-=this.B.Nh)},Sk,Sk,function(){this.M|=132;this.A-=this.B.$c},function(){this.M|=68;this.A-=this.B.$c},function(){this.P&131072?x.call(this,13,0):(this.ab|=4,this.A-=2,this.ca&&r(this,-2147483648)?(ag(this),this.ca.Ub()):this.P&512||(this.ca&&ag(this),this.Ub()))},function(){cg(this)?kg(this):jg(this);this.A-=2},function(){this.wc=!1;this.ld.call(this,Xk,gk);this.wc&&(this.D=this.D&~this.R|this.Ea&this.R)}, +function(){this.wc=!1;this.mb.call(this,Yk,gk);this.wc&&(this.D=this.D&~this.R|this.Ea&this.R,this.L=this.L&~this.R|this.cb&this.R)},function(){kg(this);this.A-=2},function(){jg(this);this.A-=2},function(){this.Pa>this.mc?x.call(this,13,0):(this.P&=-513,this.A-=this.B.Jj)},function(){this.Pa>this.mc?x.call(this,13,0):(this.P|=512,this.M|=4,this.A-=2)},function(){this.P&=-1025;this.A-=2},function(){this.P|=1024;this.A-=2},function(){this.ld.call(this,we,gk)},function(){this.mb.call(this,xe,gk)}],Fk= +[mi,$i,ki,bj,oi,Nj,Vj,Ci],Tk=[ni,aj,li,cj,pi,Oj,Wj,Di],Uk=[function(a,b){this.A-=-1===this.F?this.B.oc:this.B.yk;return b},Fi,Fi,Fi,Fi,Fi,Fi,Fi],Vk=[function(a,b){this.A-=-1===this.F?this.B.qk:this.B.nk;return b},Gi,Gi,Gi,Gi,Gi,Gi,Gi],Kk=[function(a,b){var c=a;if(b&=this.Ra){var d;(b&=7)?(d=a<>8-b)&255):d=a<<7;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ra){var d;(b&=7)?(d=a<<8-b,c=(a>>>b|d)&255):d=a;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ra){var d= +og(this);(b%=9)?(c=(a<>9-b)&255,d=a<>b|d<<8-b|a<<9-b)&255,d=a<<8-b):d<<=7;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ra){var d=0;8>>b-1,a=b>>>1&255,ig(this,a,128,b&1,a&128);return a},Gi,function(a,b){if(b&=this.Ra)9>24>>b-1,a=b>>1&255,ig(this, +a,128,b&1);return a}],Lk=[function(a,b){var c=a;if(b&=this.Ra){var d;(b&=15)?(d=a<>16-b)&65535):d=a<<15;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ra){var d;(b&=15)?(d=a<<16-b,c=(a>>>b|d)&65535):d=a;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ra){var d=og(this);(b%=17)?(c=(a<>17-b)&65535,d=a<>b|d<<16-b|a<<17-b)&65535,d=a<<16-b): +d<<=15;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ra){var d=0;16>>b-1,a=b>>>1&65535,ig(this,a,32768,b&1,a&32768);return a},Gi,function(a,b){if(b&=this.Ra)17>16>>b-1,a=b>>1&65535,ig(this,a,32768,b&1);return a}],Mk=[function(a,b){var c=a;if(b&=this.Ra)c=a<>>32-b,ng(this,c,a<>>b|d;ng(this,c,d,-2147483648)}return c},function(a,b){var c=a;if(b&=this.Ra)c=og(this),c=a<>>32-b>>>1,ng(this,c,a<>>b|c<<32-b|a<<32-b<<1,ng(this,c,a<<32-b,-2147483648);return c},function(a,b){var c=a;if(b&=this.Ra)a<<=b-1,c=a<<1,ig(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Ra)b=a>>>b-1,a=b>>>1,ig(this,a,-2147483648,b&1,a&-2147483648);return a},Gi,function(a, +b){if(b&=this.Ra)b=a>>b-1,a=b>>1,ig(this,a,-2147483648,b&1);return a}],Xk=[function(a,b){b=this.sa();ig(this,a&b,128);this.A-=-1===this.C?this.B.Zh:this.B.Yh;this.M|=2;return a},Gi,function(a){this.A-=-1===this.C?this.B.Cf:this.B.Bf;return a^255},function(a){var b=-a|0;bg(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.Cf:this.B.Bf;return b&255},function(a){this.Ea=(this.D&255)*a&65535;this.Ea&65280?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.uk:this.B.tk;this.M|=2; +return a},function(a){var b=(this.D<<24>>24)*(a<<24>>24)|0;this.Ea=b&65535;127b?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.Zj:this.B.Yj;this.M|=2;return a},function(a,b){if(!a)return mk.call(this),a;var c=(b=this.D&65535)/a;if(255>24,d=(b=this.D<<16>>16)/c|0;if(d!=d<<24>>24||8086== +this.da&&-128==d)return mk.call(this),a;this.Ea=d&255|(b%c&255)<<8;this.wc=!0;this.A-=-1===this.C?this.B.Vj:this.B.Uj;this.M|=2;return a}],Yk=[function(a,b){b=this.Ha();ig(this,a&b,this.Hb);this.A-=-1===this.C?this.B.Zh:this.B.Yh;this.M|=2;return a},Gi,function(a){this.A-=-1===this.C?this.B.Cf:this.B.Bf;return a^this.R},function(a){var b=-a|0;bg(this,0,a,b,this.Hb|63,!0);this.A-=-1===this.C?this.B.Cf:this.B.Bf;return b&this.R},function(a,b){2==this.X?(b=this.D&65535,b=b*a|0,this.Ea=b&65535,this.cb= +b>>16&65535):(Mi.call(this,a,this.D),80563==this.Rd&&68657152==this.D&&129==a&&(this.cb=0));this.cb?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.wk:this.B.vk;this.M|=2;return a},function(a,b){2==this.X?(b=this.D&65535,b=(b<<16>>16)*(a<<16>>16)|0,this.Ea=b&65535,this.cb=b>>16&65535,b=32767b):(Li.call(this,a,this.D),b=this.cb!=this.Ea>>31);b?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.ak:this.B.$j;this.M|=2;return a},function(a, +b){if(2==this.X){if(!a)return mk.call(this),a;b=65536*(this.L&65535)+(this.D&65535);var c=b/a;if(65536<=c)return mk.call(this),a;this.Ea=c&65535;this.cb=b%a&65535}else{if(!Zj.call(this,this.D,this.L,a))return mk.call(this),a;this.Ea|=0;this.cb|=0}this.wc=!0;this.A-=-1===this.C?this.B.Tj:this.B.Sj;this.M|=2;return a},function(a,b){if(2==this.X){if(!a)return mk.call(this),a;var c=a<<16>>16,d=(b=this.L<<16|this.D&65535)/c|0;if(d!=d<<16>>16||8086==this.da&&-32768==d)return mk.call(this),a;this.Ea=d&65535; +this.cb=b%c&65535}else{b=this.D;var c=this.L,d=a,e=0,f=0;0>d&&(d=-d|0,e=1-e);0>c&&(b=-b|0,c=~c+(b?0:1)|0,f=1,e=1-e);!Zj.call(this,b,c,d)||this.Ea>2147483647+e||this.cb>2147483647+f?b=!1:(e&&(this.Ea=-this.Ea),f&&(this.cb=-this.cb),b=!0);if(!b)return mk.call(this),a;this.Ea|=0;this.cb|=0}this.wc=!0;this.A-=-1===this.C?this.B.Xj:this.B.Wj;this.M|=2;return a}],we=[function(a){var b=a+1|0;bg(this,a,1,b,190);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&255},function(a){var b=a-1|0;bg(this,a,1,b,190, +!0);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&255},Gi,Gi,Gi,Gi,Gi,Gi],xe=[function(a){var b=a+1|0;bg(this,a,1,b,this.Hb|62);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&this.R},function(a){var b=a-1|0;bg(this,a,1,b,this.Hb|62,!0);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&this.R},function(a){oe(this,z(this));B(this,a);this.A-=-1===this.C?this.B.Pj:this.B.Oj;this.M|=2;return a},function(a){if(-1===this.C)return Gi.call(this,a);this.va=this.Ca;ik.call(this,a,this.ja(this.C+this.X)); +this.A-=this.B.Mj;this.M|=2;this.va=-1;return a},function(a){B(this,a);this.A-=-1===this.C?this.B.jk:this.B.ik;this.M|=2;return a},function(a){if(-1===this.C)return Gi.call(this,a);se(this,a,this.ja(this.C+this.X));this.A-=this.B.gk;this.M|=2;return a},function(a){var b=a;this.M&512&&(a=a-2&65535,80286>this.da&&(b=a));oe(this,b);this.A-=-1===this.C?this.B.Jc:this.B.Ak;this.M|=2;return a},Gi];function gf(){this.la.call(this,Sj);this.A-=-1===this.C?6:13} +function hf(){this.Ba.call(this,Rj);this.A-=-1===this.C?12:19}var We=Array(256);We[0]=function(){16>(this.ya(this.ea)&56)&&(this.M|=1);this.mb.call(this,this.lj,gk)};We[1]=function(){this.ya(this.ea)&16||(this.M|=1);this.mb.call(this,Zk,gk)};We[2]=function(){!(this.ra&1)||this.P&131072?x.call(this,6):this.la.call(this,Ni)};We[3]=function(){!(this.ra&1)||this.P&131072?x.call(this,6):this.la.call(this,Ti)}; +We[5]=function(){this.Pa?x.call(this,13,0,0,!0):(tg(this,this.ja(2054)),this.J=this.ja(2086),this.K=this.ja(2088),this.N=this.ja(2090),this.G=this.ja(2094),this.L=this.ja(2096),this.I=this.ja(2098),this.D=this.ja(2100),ce(this.pa,2102,this.ja(2084)),ce(this.ba,2108,this.ja(2082)),ce(this.U,2114,this.ja(2080)),ce(this.Fa,2120,this.ja(2078)),re(this,this.ja(2072)),B(this,this.ja(2074)),ge(this,this.ja(2092)),this.Kb=this.ja(2126)|this.ya(2128)<<16,this.Ic=this.Kb+this.ja(2130),this.Qb=this.ja(2138)| +this.ya(2140)<<16,this.ad=this.Qb+this.ja(2142),ce(this.Gb,2132,this.ja(2076)),ce(this.ka,2144,this.ja(2070)),this.A-=195)};We[6]=function(){this.Pa?x.call(this,13,0):(this.ra&=-9,this.A-=2)};We[11]=ze;We[166]=ze;We[255]=ze;var A=[];A[5]=ze; +A[7]=function(){if(this.Pa)x.call(this,13,0,0,!0);else{var a=this.pa.Bb(this.J&this.wa,204);if(-1!==a){bk.call(this,this.ia(a));var b=this.ia(a+168),c=(b&24576)>>13;re(this,this.ia(a+4),c);this.Kb=this.ia(a+112);this.Ic=this.Kb+this.ia(a+116);this.Qb=this.ia(a+100);this.ad=this.Qb+this.ia(a+104);ae(this.Gb,this.ia(a+56),this.ia(a+120),this.ia(a+124),this.ia(a+128));ae(this.ka,this.ia(a+52),this.ia(a+84),this.ia(a+88),this.ia(a+92));this.J=this.ia(a+12);this.K=this.ia(a+16);this.N=this.ia(a+20);this.G= +this.ia(a+28);this.L=this.ia(a+32);this.I=this.ia(a+36);this.D=this.ia(a+40);ae(this.La,this.ia(a+60),this.ia(a+132),this.ia(a+136),this.ia(a+140));ae(this.Ka,this.ia(a+64),this.ia(a+144),this.ia(a+148),this.ia(a+152));ae(this.Fa,this.ia(a+68),this.ia(a+156),this.ia(a+160),this.ia(a+164));ae(this.U,this.ia(a+72),b,this.ia(a+172),this.ia(a+176));ae(this.ba,this.ia(a+76),this.ia(a+180),this.ia(a+184),this.ia(a+188));ae(this.pa,this.ia(a+80),this.ia(a+192),this.ia(a+196),this.ia(a+200));B(this,this.ia(a+ +8));ge(this,this.ia(a+24))}this.A-=122<<(a&3?1:0)}};A[16]=Gk;A[17]=Hk;A[18]=Ik;A[19]=Jk;A[32]=function(){if(this.Pa)x.call(this,13,0);else{var a,b=this.sa();switch((b&56)>>3){case 0:a=this.ra;break;case 2:a=this.qd;break;case 3:a=this.Uc;break;default:Xe.call(this);return}vf(this,b&7,a);this.A-=6}};A[33]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;4==b||5==b?Xe.call(this):(vf(this,a&7,this.Rb[b]),this.A-=22)}}; +A[34]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=uf(this,a&7);switch((a&56)>>3){case 0:bk.call(this,b);this.A-=10;break;case 2:this.qd=b;this.A-=4;break;case 3:te.call(this,b);this.A-=5;break;default:Xe.call(this)}}};A[35]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;4==b||5==b?Xe.call(this):(a=uf(this,a&7),a!=this.Rb[b]&&(Uf(this,!1),this.Rb[b]=a,Uf(this,!0)),this.A-=4>b?22:14)}}; +A[36]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;6>b?Xe.call(this):(vf(this,a&7,this.$f[b]),this.A-=12)}};A[38]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;6>b?Xe.call(this):(this.$f[b]=uf(this,a&7),this.A-=12)}};A[128]=function(){var a=this.Ha();hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[129]=function(){var a=this.Ha();hg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)}; +A[130]=function(){var a=this.Ha();cg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[131]=function(){var a=this.Ha();cg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[132]=function(){var a=this.Ha();fg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[133]=function(){var a=this.Ha();fg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[134]=function(){var a=this.Ha();cg(this)||fg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua}; +A[135]=function(){var a=this.Ha();cg(this)||fg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[136]=function(){var a=this.Ha();gg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[137]=function(){var a=this.Ha();gg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[138]=function(){var a=this.Ha();dg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[139]=function(){var a=this.Ha();dg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)}; +A[140]=function(){var a=this.Ha();!gg(this)!=!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[141]=function(){var a=this.Ha();!gg(this)==!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[142]=function(){var a=this.Ha();fg(this)||!gg(this)!=!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[143]=function(){var a=this.Ha();fg(this)||!gg(this)!=!hg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[144]=function(){ck.call(this,dj)}; +A[145]=function(){ck.call(this,dj)};A[146]=function(){ck.call(this,nj)};A[147]=function(){ck.call(this,oj)};A[148]=function(){ck.call(this,pj)};A[149]=function(){ck.call(this,qj)};A[150]=function(){ck.call(this,rj)};A[151]=function(){ck.call(this,sj)};A[152]=function(){ck.call(this,tj)};A[153]=function(){ck.call(this,uj)};A[154]=function(){ck.call(this,vj)};A[155]=function(){ck.call(this,wj)};A[156]=function(){ck.call(this,xj)};A[157]=function(){ck.call(this,yj)};A[158]=function(){ck.call(this,zj)}; +A[159]=function(){ck.call(this,Aj)};A[160]=function(){le(this,this.Ka.T,this.X,2);this.A-=this.B.we};A[161]=function(){this.va=this.Ca;var a=ee(this);this.Ka.load(a);this.A-=this.B.oc;this.va=-1};A[163]=function(){this.Ba.call(this,yi);-1!==this.C&&(this.A-=6)};A[164]=function(){this.Ba.call(this,2==this.X?Bj:Dj);this.A-=-1===this.C?3:7};A[165]=function(){this.Ba.call(this,2==this.X?Fj:Gj);this.A-=-1===this.C?3:7};A[168]=function(){le(this,this.La.T,this.X,2);this.A-=this.B.we}; +A[169]=function(){this.va=this.Ca;var a=ee(this);this.La.load(a);this.A-=this.B.oc;this.va=-1};A[171]=function(){this.Ba.call(this,Bi);-1!==this.C&&(this.A-=5)};A[172]=function(){this.Ba.call(this,2==this.X?Hj:Jj);this.A-=-1===this.C?3:7};A[173]=function(){this.Ba.call(this,2==this.X?Lj:Mj);this.A-=-1===this.C?3:7};A[175]=function(){this.la.call(this,2==this.X?Ii:Ki)};A[178]=function(){this.la.call(this,Ui)};A[179]=function(){this.Ba.call(this,Ai);-1!==this.C&&(this.A-=5)}; +A[180]=function(){this.la.call(this,Ri)};A[181]=function(){this.la.call(this,Si)}; +A[182]=function(){this.lc.call(this,Wi);switch(this.fa>>3&7){case 0:this.D=this.D&~this.R|this.D&255;break;case 1:this.I=this.I&~this.R|this.I&255;break;case 2:this.L=this.L&~this.R|this.L&255;break;case 3:this.G=this.G&~this.R|this.G&255;break;case 4:this.Ac=this.Ac&~this.R|this.D>>8&255;this.D=this.Aa;break;case 5:this.N=this.N&~this.R|this.I>>8&255;this.I=this.Aa;break;case 6:this.K=this.K&~this.R|this.L>>8&255;this.L=this.Aa;break;case 7:this.J=this.J&~this.R|this.G>>8&255,this.G=this.Aa}this.A-= +-1===this.C?3:6};A[183]=function(){je(this,2);this.la.call(this,Xi);switch(this.fa>>3&7){case 0:this.D=this.D&65535;break;case 1:this.I=this.I&65535;break;case 2:this.L=this.L&65535;break;case 3:this.G=this.G&65535;break;case 4:this.Ac=this.Ac&65535;break;case 5:this.N=this.N&65535;break;case 6:this.K=this.K&65535;break;case 7:this.J=this.J&65535}this.A-=-1===this.C?3:6};A[186]=function(){this.mb.call(this,$k,this.sa)};A[187]=function(){this.Ba.call(this,zi);-1!==this.C&&(this.A-=5)}; +A[188]=function(){this.la.call(this,si)};A[189]=function(){this.la.call(this,ti)}; +A[190]=function(){this.lc.call(this,Wi);switch(this.fa>>3&7){case 0:this.D=this.D&~this.R|(this.D&255)<<24>>24&this.R;break;case 1:this.I=this.I&~this.R|(this.I&255)<<24>>24&this.R;break;case 2:this.L=this.L&~this.R|(this.L&255)<<24>>24&this.R;break;case 3:this.G=this.G&~this.R|(this.G&255)<<24>>24&this.R;break;case 4:this.Ac=this.Ac&~this.R|this.D<<16>>24&this.R;this.D=this.Aa;break;case 5:this.N=this.N&~this.R|this.I<<16>>24&this.R;this.I=this.Aa;break;case 6:this.K=this.K&~this.R|this.L<<16>>24& +this.R;this.L=this.Aa;break;case 7:this.J=this.J&~this.R|this.G<<16>>24&this.R,this.G=this.Aa}this.A-=-1===this.C?3:6};A[191]=function(){je(this,2);this.la.call(this,Xi);switch(this.fa>>3&7){case 0:this.D=this.D<<16>>16;break;case 1:this.I=this.I<<16>>16;break;case 2:this.L=this.L<<16>>16;break;case 3:this.G=this.G<<16>>16;break;case 4:this.Ac=this.Ac<<16>>16;break;case 5:this.N=this.N<<16>>16;break;case 6:this.K=this.K<<16>>16;break;case 7:this.J=this.J<<16>>16}this.A-=-1===this.C?3:6}; +var Vf=[function(){this.A-=2+(-1===this.C?0:1);return this.Gb.T},function(){this.A-=2+(-1===this.C?0:1);return this.ka.T},function(a){this.M|=2;this.Gb.load(a);this.A-=17+(-1===this.C?0:2);return a},function(a){this.M|=2;-1!==this.ka.load(a)&&(this.ib(this.ka.Ob+4,this.ka.ob|=512),this.ka.type|=512);this.A-=17+(-1===this.C?0:2);return a},function(a){this.M|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.zb.load(a)&&2048!=(this.zb.ob&2560)&&(this.zb.rc>=this.Pa&&this.zb.rc>=(a&3)||7168==(this.zb.ob&7168)))return sg(this), +a;qg(this);return a},function(a){this.M|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.zb.load(a)&&512==(this.zb.ob&2560)&&this.zb.rc>=this.Pa&&this.zb.rc>=(a&3))return sg(this),a;qg(this);return a},Gi,Gi],ye=[Ue,Ue,Ue,Ue,Ue,Ue,Gi,Gi],Zk=[function(a){if(-1===this.C)x.call(this,6);else{a=this.Ic-this.Kb;var b=this.Kb;80286==this.da?b|=-16777216:80386<=this.da&&2!=this.X&&(a|=b<<16);this.eb(this.C+2,b);this.A-=11}return a},function(a){if(-1===this.C)x.call(this,6);else{a=this.ad-this.Qb;var b=this.Qb; +80286==this.da?b|=-16777216:80386<=this.da&&2!=this.X&&(a|=b<<16);this.eb(this.C+2,b);this.A-=12}return a},function(a){-1===this.C||this.P&131072?x.call(this,6):(this.Kb=this.ia(this.C+2)&(this.R|this.R<<8),a&=65535,this.Ic=this.Kb+a,this.M|=2,this.A-=11);return a},function(a){-1===this.C||this.P&131072?x.call(this,6):(this.Qb=this.ia(this.C+2)&(this.R|this.R<<8),a&=65535,this.ad=this.Qb+a,this.M|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.C?0:1);return this.ra},Gi,function(a){this.P& +131072?x.call(this,6):(tg(this,a),this.A-=-1===this.C?3:6,this.M|=2);return a},Gi],$k=[Gi,Gi,Gi,Gi,ui,xi,wi,vi]; +function al(a){ib.call(this,"ChipSet",a,32768);var b=a.model;b&&!bl[b]&&ab("Unrecognized ChipSet model: "+b);this.da=bl[b]||cl;this.B=[];b=dl(a[el]);this.B[0]=[b,b];null==b&&(this.L=[360,360],(b=a.floppies)&&b.length&&(this.L=b),fl(this,gl,this.L.length),fl(this,hl,a.monitor||(this.da=Tg&&(this.Ba=this.ka=2);this.M=a.scaleTimers||!1;this.Ra=a.dateRTC;this.Ka=this.La=!1;this.Ia=0;if(a=a.sound)this.Ia="number"!=typeof a||0>a|| +1e||1=Tg){this.D=Nl;this.J=0;this.I=Ol;this.pa=0;this.K=Pl|Ql;512<=Rl(this)&&(this.K|=Sl);+Tl(this,hl,void 0)==Ul&&(this.K|=Vl);(this.da|0)==ul&&(this.K=this.K|Wl|Xl);this.ra= +Yl|Zl;this.U=Array(8);this.N=0;a&&(this.A=Array(zl));$l(this,this.Ra);for(a=am;a<=bm;a++)this.A[a]=0;for(a=cm;ac?c=c?c:12:c=(c-=12)?c+128:140,d=!0);a.A[Pd]&Um||(d&&128>8} +l.save=function(){var a=new Wf(this);a.set(0,[this.B]);for(var b=[],c=0;c=Tg&&(a.set(5,[this.D,this.J,this.I,this.pa,this.K,this.ra]),a.set(6,[this.U[7],this.U,this.N,this.A,this.la,this.aa]));return a.data()}; +l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.B=b[0]:(this.B[0][0]=b[0],this.B[1][0]=b[1]&15,this.B[0][1]=b[2],this.B[1][1]=b[3]&15);Fl(this);b=a[1];for(c=0;c=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='
    '+f+"
    \n"}e.innerHTML=d;en(a,b,c,!0)}function fn(a,b,c){if(b=(a=gn[a.da|0])&&a[b])for(var d in b)if(a=b[d],a.zc&1<g.rb[0]&&(g.rb[0]=255,g.rb[1]--,0>g.rb[1]&&(g.rb[1]=255)));return h}function vn(a,b,c,d,e,f){var g=a.F[b];r(a,768)&&t(a,d,e,f,"DMA"+b+".CHANNEL"+c+".COUNT["+g.Ab+"]",null,!0);a=g.pc[c];a.rb[g.Ab]=a.qc[g.Ab]=e;g.Ab^=1}function wn(a,b,c,d){var e=a.F[b],f=e.Pb|xn;e.Pb&=~yn;r(a,768)&&t(a,c,null,d,"DMA"+b+".STATUS",f,!0);return f} +function zn(a,b,c,d,e){var f=a.F[b];r(a,768)&&t(a,c,d,e,"DMA"+b+".REQ",null,!0);a=d&3;f.Pb=f.Pb&~(16<>2].pc[b&3],c,d,e)}function Dn(a,b,c){b=a.F[b>>2].pc[b&3];b.kg&&b.dh&&b.zg?(c&&(b.done=c),b.se||Nn(a,b,!0)):c&&c(!0)} +function Nn(a,b,c){c&&(b.count=b.rb[1]<<8|b.rb[0],b.type=b.mode&On,b.pj=b.lg=!1);for(var d=!1;0<=b.count&&(c=b.eg<<16|b.wb[1]<<8|b.wb[0],b.type==Pn?(d=!0,function(c){b.dh.call(b.kg,b.zg,-1,function(e,g){0>e&&(b.pj||(b.pj=!0),e=255);b.se||a.na.ub(c,e);(d=g)&&setTimeout(function(){Qn(b)||Nn(a,b)},0)})}(c)):b.type==Rn?(c=a.na.ya(c),0>b.dh.call(b.kg,b.zg,c)&&(b.lg=!0)):b.type!=Sn&&(b.lg=!0)),!d&&!Qn(b););} +function Qn(a){if(!a.lg&&0<=--a.count&&(a.mode&Tn?(a.wb[0]--,0>a.wb[0]&&(a.wb[0]=255,a.wb[1]--,0>a.wb[1]&&(a.wb[1]=255))):(a.wb[0]++,255>3];b=1<<(b&7);d.ec&b||(d.ec|=b,d.We=c||0,io(a))}function gh(a,b){var c=a.jc[b>>3];b=1<<(b&7);c.ec&b&&(c.ec&=~b,io(a))}function io(a,b){var c,d=-1;1>=1),Fd(a.H,e))),b==vo&&c==zo&&Ym(a))}function Ao(a,b,c,d){t(a,c,null,d,"PIT"+b+".CTRL",null,2048);return b?a.xa:a.va} +function Bo(a,b,c,d,e){t(a,c,d,e,"PIT"+b+".CTRL",null,2048);e=0;c=d&Co;b?(e=3,a.xa=d):a.va=d;if(c==Do){if(!(d&Eo))for(c=0;2>=c;c++)if(d&Fo<=c;c++)d&Fo<>=Ko;var f=d&Lo,g=d&Mo;d&=No;if(d==Oo)Jo(a,e+c);else{e+=c;var h=a.qa[e];h.Nf=d;h.mode=g;h.Yg=f;h.qc=[0,0];h.rb=[0,0];h.ne=[0,0];h.gd=!1;h.Me=!1;h.qe=!1;h.Qe=!1;ro(a,e);b==vo&&c==wo&&gh(a,xo);b==vo&&c==zo&&255== +a.jc[0].ud&&a.G==(Po|Qo|Ro|So)&&(b=a.qa[0],b.Pc[0]=b.qc[0],b.Pc[1]=b.qc[1],b.jd=Cd(a.H,a.M))}}}function yo(a,b){a=a.qa[b];(b=a.qc[1]<<8|a.qc[0])||(b=1==a.Zc?256:65536);return b}function Md(a,b){a=a.qa[b];(b=a.Pc[1]<<8|a.Pc[0])||(b=1==a.Zc?256:65536);return b}function Jo(a,b){yl(a,b);var c=a.qa[b];c.ne[0]=c.rb[0];c.ne[1]=c.rb[1];c.Me=!0;ro(a,b)}function ro(a,b){a=a.qa[b];a.xd=a.Nf==To?1:0;a.Zc=a.Nf==Uo?2:1} +function yl(a,b,c){var d=a.qa[b];if(d.qe&&(b!=zo||a.G&Po)){var e=Cd(a.H,a.M),f=(e-d.jd)/a.Ea|0;0>f&&(d.jd=e,f=0);var g=yo(a,b),h=Md(a,b)-f;d.mode==to?(0>=h&&(h=0),h||(d.gd=!0,d.qe=!1,b||ih(a,xo))):d.mode==Vo?(d.gd=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.Pc[0]=h&255,d.Pc[1]=h>>8&255,d.jd=e,!b&&d.gd&&ih(a,xo))):d.mode==Nd&&(h-=f,0>=h&&(d.gd=!d.gd,h=g+h,0>=h&&(h=g),d.Pc[0]=h&255,d.Pc[1]=h>>8&255,d.jd=e,!b&&d.gd&&ih(a,xo)));d.rb[0]=h&255;d.rb[1]=h>>8&255;c&&(a.jd=0)}return d} +function Ld(a,b){for(var c=0;c=Tg){b=a.H.Y.Zd;c=Cd(a.H,a.M);null==a.Ca&&(a.la=Cd(a.H,a.M),a.Pa=1024,a.Ca=Math.floor(a.H.Y.Zd/a.Pa),Wm(a));c>=a.aa&&(a.A[ym]|=Wo,a.A[Pd]&Qd&&(a.A[ym]|=Xo,ih(a,Yo)),a.aa=c+a.Ca);a.A[lm]==a.A[mm]&&a.A[nm]==a.A[om]&&a.A[pm]==a.A[qm]&&(a.A[ym]|=Zo,a.A[Pd]&$o&&(a.A[ym]|=Xo,ih(a,Yo)));var d=c-a.la,e=Math.floor(d/b);if(e&&!(a.A[Pd]&ap)){for(;e--;)if(60<=++a.A[lm]&&(a.A[lm]=0,60<=++a.A[nm]&&(a.A[nm]=0,24<=++a.A[pm]))){a.A[pm]=0;a.A[rm]=a.A[rm]% +7+1;var f;f=a.A[um];var g=Da[a.A[tm]-1];28==g&&(f%4||!(f%100)&&f%400||g++);f=g;++a.A[sm]>f&&(a.A[sm]=1,12<++a.A[tm]&&(a.A[tm]=1,a.A[um]=(a.A[um]+1)%100))}a.A[ym]|=bp;a.A[Pd]&cp&&(a.A[ym]|=Xo,ih(a,Yo))}a.la=c-d%b}}l.Am=function(a,b){var c=this.Aa;this.ha&dp&&(this.G&ep?c=this.B[0][1]:this.C&&(c=fp(this.C)));t(this,a,null,b,"PPI_A",c);return c};l.ho=function(a,b,c){t(this,a,b,c,"PPI_A");this.Aa=b};l.Bm=function(a,b){var c=this.G;t(this,a,null,b,"PPI_B",c);return c}; +l.io=function(a,b,c){t(this,a,b,c,"PPI_B");gp(this,b)};function gp(a,b){var c=!!(b&hp),d=!!(a.G&hp);a.G=b;a.C&&ip(a.C,!(b&ep),!!(b&So));c!=d&&Ym(a,c)}l.Cm=function(a,b){var c=0,c=(this.da|0)==Dl?this.G&Qo?c|this.B[1][1]&jp:c|this.B[1][1]>>4&1:this.G&kp?c|this.B[0][1]>>4:c|this.B[0][1]&15;this.G&Po&&yl(this,zo).gd&&(c=this.G&hp?c|lp:c|mp);t(this,a,null,b,"PPI_C",c,32896);return c};l.jo=function(a,b,c){t(this,a,b,c,"PPI_C");this.Fa=b};l.Dm=function(a,b){var c=this.ha;t(this,a,null,b,"PPI_CTRL",c);return c}; +l.ko=function(a,b,c){t(this,a,b,c,"PPI_CTRL");this.ha=b};l.Ml=function(a,b){var c=this.C?fp(this.C):0;t(this,a,null,b,"8041_KBD",c);this.ea&=~np;return c};l.rn=function(a,b,c){t(this,a,b,c,"8041_KBD")};l.Ll=function(a,b){var c=this.G;t(this,a,null,b,"8041_CTRL",c);return c};l.qn=function(a,b,c){t(this,a,b,c,"8041_CTRL");gp(this,b)};l.Nl=function(a,b){var c=this.ea;t(this,a,null,b,"8041_STATUS",c);return c}; +l.Ol=function(a,b){var c=this.pa;t(this,a,null,b,"8042_OUTBUFF",c,16384);this.D&=~(np|op);this.C&&pp(this.C);return c}; +l.tn=function(a,b,c){t(this,a,b,c,"8042_INBUF.DATA",null,16384);if(this.D&qp)switch(this.J){case rp:sp(this,b);break;case tp:up(this,b);break;default:if(sp(this,this.I&~Ol),this.C){a=this.C;c=b;var d=-1;r(a)&&Nb(a,"sendCmd("+na(c)+")");switch(a.G||c){case vp:d=wp;xp(a);break;case yp:a.G&&(c=0);zp(a,wp);a.G=c;break;case Ap:a.G&&(c=0);zp(a,wp);a.G=c;break;default:Nb(a,"sendCmd(): unrecognized command")}Bp(this,d)}}this.J=b;this.D&=~qp}; +l.Pl=function(a,b){var c=this.G&~(Cp|Dp)|(Cd(this.H)&64?Dp:0);t(this,a,null,b,"8042_RWREG",c,16384);return c};l.un=function(a,b,c){t(this,a,b,c,"8042_RWREG",null,16384);gp(this,b)};l.Ql=function(a,b){t(this,a,null,b,"8042_STATUS",this.D,16384);a=this.D&255;this.D&op&&(this.D|=np,this.D&=~op);return a}; +l.sn=function(a,b,c){t(this,a,b,c,"8042_INBUFF.CMD",null,16384);this.J=b;this.D|=qp;a=0;this.J>=Ep&&(a=this.J^15,this.J=Ep);switch(this.J){case Fp:Bp(this,this.I);break;case Gp:sp(this,this.I|Ol);break;case Hp:sp(this,this.I&~Ol);this.C&&pp(this.C);break;case Ip:this.C&&(a=this.C,a.A=[],r(a)&&Nb(a,"scan codes flushed"));sp(this,this.I|Ol);Bp(this,Jp);up(this,Yl|Zl);break;case Kp:Bp(this,Lp);break;case Mp:Bp(this,this.K);break;case Np:Bp(this,this.ra);break;case Op:Bp(this,this.I&Ol?0:Pp);break;case Ep:a& +1&&jf(this.H)}};function sp(a,b){a.I=b;a.D=a.D&~Qp|b&Rp;a.C&&ip(a.C,!!(b&Sp),!(b&Ol))}function Bp(a,b,c){0<=b&&(a.pa=b,c?a.D|=np:(a.D&=~np,a.D|=op))}function up(a,b){a.ra=b;jc(a.na,!!(b&Zl));b&Yl||jf(a.H)}function Tp(a,b){a.da>4)+(c&15),e=!0);if(d==pm||d==qm)e&&23=c?c=12==c?0:c:(c-=116,c=24==c?12:c))}}else c=b;this.A[d]=c;d==Pd&&a&Qd&&b&Qd&&Wm(this)};l.Mk=function(a,b,c){t(this,a,b,c,"NMI");this.fa=b};l.Tn=function(a,b,c){t(this,a,b,c,"FPU.CLEAR")};l.Un=function(a,b,c){t(this,a,b,c,"FPU.RESET");this.Kc&&Og(this.Kc)}; +l.Rm=function(a){if(r(this,16)&&Wk(this.ca,26,a)){var b=this.H.D>>8;Sf(this.H,a,function(a,d){return function(c){d=Cd(a.H)-d;var e,g=a.H.L&255,h=a.H.L>>8,k=a.H.L&255,m=a.H.L>>8;if(2==b||3==b)e=" CH(hour)="+oa(h)+" CL(min)="+na(g)+" DH(sec)="+na(m);else if(4==b||5==b)e=" CX(year)="+oa(a.H.I)+" DH(month)="+na(m)+" DL(day)="+na(k);g=a.ca;h=d;g.message("INT "+na(26)+": C="+(cg(g.H)?1:0)+(e||"")+" (cycles="+h+(c?",level="+(c+1):"")+")")}}(this,Cd(this.H)))}return!0}; +function Ym(a,b){if(a.P){void 0!==b?a.Ka=b:b=!!(a.Ka&&a.H&&a.H.Z.Xa);var c=Math.round(kl/yo(a,zo));if(20>c||2E4>>4,0,this.G,this.C,this.Jd),delete this.Jd);return!0};bq.prototype.$b=function(){return!0}; +function cq(a,b,c,d){if(d)a.Da("Unable to load system ROM (error "+d+": "+b+")",0>d);else{nb(a.ee,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.Jd=e.symbols;if(!a.A.length){ab("Empty ROM: "+b);return}if(1==a.A.length){ab(a.A[0]);return}}catch(h){a.Da("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e>>d.A].cf(e&d.D,a.A[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(c=0;cthis.B?am:23,c=a.A[b]|a.A[b+1]<<8,c=c+(this.A>>10);a.A[b]=c&255;a.A[b+1]=c>>8;km(a)}}else ab("No RAM allocated")}; +l.save=function(){var a=new Wf(this);this.controller&&a.set(0,this.controller.save());return a.data()};l.restore=function(a){return this.controller?this.controller.restore(a[0]):!0};function jq(a){this.D=a;this.C=lq;this.H=mq;this.B=nq;this.A=null}l=jq.prototype;l.save=function(){return[this.C,this.B]};l.restore=function(a){this.ub(0,a[0]&255);this.ub(2,a[1]&255);return!0};l.ya=function(a){var b=255;2>a?b=a&1?this.H>>8:this.H&255:4>a&&(b=a&1?this.B>>8:this.B&255);return b}; +l.ub=function(a,b){if(a)2==a&&(this.B=this.B&-256|b);else if(b!=(this.C&255)){a=this.D.na;if(b&oq)this.A&&(qc(a,pq,qq,this.A),this.A=null);else{this.A||(this.A=rc(a,pq,qq));var c=rc(a,rq,qq);qc(a,pq,qq,c,b&sq?1:zc)}this.C=this.C&-256|b}};l.tj=function(){return tq};l.eh=function(){return uq};var kq=-2134900736,rq=16646144,pq=917504,qq=131072,oq=1,sq=2,lq=65535,mq=2575,nq=2,tq=[null,0],uq=[function(a){return this.controller.ya(a)},null,null,function(a,b){this.controller.ub(a,b)},null,null]; +Xa(function(){for(var a=vb(document,"pcx86","ram"),b=0;b=n.ge&&d<=n.z&&(d-=n.ge-n.fe),d=Gq[e]==d),d){(a=a.ma["key-"+e])&&void 0!==c&&(a.style.color=c?"#ffffff":"#000000",a.style.backgroundColor=c?"#000000":"#ffffff");break}}}l.uc=function(a,b,c,d){this.oa=a;this.na=b;this.H=c;this.ca=d;this.V=Vb(a,"ChipSet");this.I=ud(a,"autoType")||this.I;Rf(c,33,this.Sm.bind(this))}; +l.Sm=function(){if(10==(this.H.D>>8&255))if(this.P=!0,this.L)this.L(),this.L=null,this.P=!1;else{var a=this.I;!this.F&&a&&(this.F=a,this.ih(this.F))}return!0};function wq(a,b){var c=0;a.da=null;"string"==typeof b&&(a.da=b.toUpperCase(),c=Jq.indexOf(a.da),0>c&&(c=0));if(b=Jq[c])a.ha=parseInt(b.substr(2),10)}function xp(a){Nb(a,"keyboard reset",65792);a.A=[];zp(a,Kq)}function ip(a,b,c){a.N!==c&&(a.N=a.U=c)&&(a.J=!0);a.K!==b&&(a.K=b)&&!a.U&&Vp(a,!0);a.K&&a.U&&(xp(a),a.U=!1)} +function zp(a,b){a.V&&(a.A.unshift(b),a.J=!0,Tp(a.V,b))}function pp(a){var b=0;a.A.length&&a.J&&(b=a.A[0],a.V&&Tp(a.V,b));r(a)&&Nb(a,b?"scan code "+na(b)+" available":"no scan codes available")}function fp(a){var b=0;a.A.length&&(b=a.A[0]);r(a)&&Nb(a,"scan code "+na(b)+" delivered");return b}function Vp(a,b){0>=1);if(b&Pq){if(!1===d)return!0;d=null}null==d?d=!((c?a.D:a.kc)&b):d||b&Qq&&(b=Qq);if(c){a.D&=~b;d&&(a.D|=b);c=b;var f,g;for(g in Rq)d="led-"+g,e=Rq[g],c&&c!=e||!(f=a.ma[d])||(f.style.backgroundColor=a.D&e?"#00ff00":"#000000")}else a.kc&=~b,d&&(a.kc|=b);return!0}}return!1} +function Aq(a,b,c){if((N[b]||N[b+=1E3])&&a.H&&a.H.Z.Xa){Nq[b]&&a.B.length&&0e||(e==a.B.length&&(d={},d.ze=b,d.kc=a.kc,Iq(a,b,!0),e++),0b.Bd){if(!b.nf){Hq(a,b.ze);return}b.nf=!1;c=a.ka}else c=1==b.Bd++?500:100;b.mi=setTimeout(function(a){return function(){Sq(a,b)}}(a),c)}} +function Uq(a,b,c){var d=b;if(b>=n.fe&&b<=n.ag)!(a.kc&(Vq|Wq|Xq))==c&&(d=b+(n.ge-n.fe));else if(b>=n.ge&&b<=n.z)!!(a.kc&(Vq|Wq|Xq))==c&&(d=b-(n.ge-n.fe));else if(!!(a.kc&(Vq|Wq))==c){if(a=ha[b])d=a}else if(a=ga[b])d=a;return d}l.Ag=function(a){a||(this.kc&=~Qq)}; +function xq(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;if(!yq(a.oa))return!1;a.C="";zb(a.ee);var h=Uq(a,g,!0);a.bh&&h==n["`"]&&(g=h=27);if(N[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),Fq(a,h,!1,c)){if(20==g||144==g||145==g)a.fa||(c=e=!0);if(!(c||91!=g&&93!=g))for(var k=0;k=n.fe&&b<=n.ag||b>=n.ge&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==gr||f==hr?d.push(f|(c?0:fr)):(h==O?a.D&(Vq|Wq)||a.D&Xq&&b||(g=h):h==ir?a.D&(Yq|jr)||(g=h):h==kr?a.D&(Zq|lr)||(g=h):d.push(f|(c?0:fr)),g&&(c?d.unshift(g):d.push(g|fr)))}for(c=0;c"]]=52|O<<8;N[n["/"]]=53; +N[n["?"]]=53|O<<8;N[3016]=54;N[1044]=55;N[1018]=kr;N[1032]=57;N[Bq]=58;N[1112]=59;N[1113]=60;N[1114]=61;N[1115]=62;N[1116]=63;N[1117]=64;N[1118]=65;N[1119]=66;N[1120]=67;N[1121]=68;N[Cq]=69;N[Dq]=70;N[1036]=71;N[1038]=72;N[1033]=73;N[1109]=74;N[1037]=75;N[1101]=76;N[1039]=77;N[1107]=78;N[1035]=79;N[1040]=80;N[1034]=81;N[1045]=82;N[1046]=er;N[4027]=84;N[1122]=87;N[1123]=88;N[1091]=91;N[1093]=93;N[1224]=91;N[or]=46|ir<<8;N[$q]=70|ir<<8;N[4046]=er|ir<<8|kr<<16;N[4045]=82|ir<<8|kr<<16; +N[4013]=28|ir<<8|kr<<16;var vp=255,yp=243,Ap=237,Kq=170,wp=250,nr=255,mr=20;Xa(function(){for(var a=vb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.sc=c[0];this.Vc=c[1];this.Ze=c[2];this.ga=c[3];this.ic=c[4]&255;this.Eg=c[4]>>8&255;this.$a=c[5];this.nh=rr;this.dg=tr;this.ae=this.$a[ur]|this.$a[vr]<<8;this.cg=63;if(b>=fq){this.cg=255; +this.nh=sr;this.dg=wr;(b=c[6])||(b=[!1,0,Array(xr),0,f==Ul?0:yr,0,0,Array(zr),0,0,0,Array(Ar),0,[this.fb,this.Tb,this.wd],Array(this.wd>>2),Br|Cr|Dr|Er|Fr,0,-1,0,-1,0,-1,0,0,0,0,Gr,Hr,0,0,Ir,Array(Jr)]);this.Le=b[0];this.Dd=b[1];this.Dc=b[2];this.Sg=Kr;this.Hg=b[3];this.af=b[4];this.Mf=b[5];this.Gd=b[6];this.ce=b[7];this.Ug=Lr;this.Vk=b[8];this.Wk=b[9];this.Fd=b[10];this.Ed=b[11];this.Tg=Mr;this.xb=b[12];d=b[13];"number"==typeof d&&(d=[this.fb,this.Tb,d]);this.fb=d[0];this.Tb=d[1];d=this.wd>>2;if((this.ed= +b[14])&&this.ed.length=fq){var c=[];c[0]=a.Le;c[1]=a.Dd;c[2]=a.Dc;c[3]=a.Hg;c[4]=a.af;c[5]=a.Mf;c[6]=a.Gd;c[7]=a.ce;c[8]=a.Vk;c[9]=a.Wk;c[10]=a.Fd;c[11]=a.Ed;c[12]=a.xb;c[13]=[a.fb,a.Tb,a.wd];var d;if(d=a.ed){var e=0,f=[];if(void 0!==d[0])for(var g=0;2>g;g++)for(var h=g;h>1;f[e++]=k;h=m}f.length=fq){var d=0,e=0,f=0;switch(b){case Vr:d=Wr;a.Ma==hq&&(e=Xr);break;case Yr:a.Ma==fq&&(d=Zr);break;case $r:d=as;a.Ma==hq&&(e=bs);break;case cs:d=ds;a.Ma==hq&&(e=es);break;case fs:d=gs;a.Ma==hq&&(f=hs);break;case is:d=js,a.Ma==hq&&(f=ks)}d&&(c|=a.$a[ls]&d?256:0,c|=a.$a[ls]&e?512:0,c|=a.$a[ms]&f?512:0)}return c} +var vr=12,ur=13,rr=18,Vr=6,ls=7,Wr=1,ds=2,as=4,gs=8,js=16,Zr=32,Xr=32,es=64,bs=128,ms=9,hs=32,ks=64,Yr=10,$r=16,cs=18,fs=21,is=24,sr=25,ns={},os=(ns[0]=255,ns[1]=255,ns[2]=255,ns[3]=15,ns[4]=127,ns[5]=31,ns[6]=127,ns[7]=127,ns[8]=3,ns[9]=31,ns[10]=127,ns[11]=31,ns[vr]=63,ns[ur]=255,ns[14]=63,ns[15]=255,ns[16]=63,ns[17]=255,ns),tr="HTOTAL HDISP HSPOS HSWIDTH VTOTAL VTOTADJ VDISP VSPOS ILMODE MAXSCAN CURSTART CUREND STARTHIGH STARTLOW CURHIGH CURLOW PENHIGH PENLOW".split(" "),wr="HTOTAL HDEND HBSTART HBEND HRSTART HREND VTOTAL OVERFLOW PRESCAN MAXSCAN CURSTART CUREND STARTHIGH STARTLOW CURHIGH CURLOW VRSTART VREND VDEND OFFSET UNDERLINE VBSTART VBEND MODECTRL LINECOMP".split(" "), +xr=20,Kr="PAL00 PAL01 PAL02 PAL03 PAL04 PAL05 PAL06 PAL07 PAL08 PAL09 PAL0A PAL0B PAL0C PAL0D PAL0E PAL0F MODE OVERSCAN PLANES HPAN".split(" "),yr=1,Gr=1,zr=5,Lr=["RESET","CLOCKING","MAPMASK","CHARMAP","MEMMODE"],Hr=255,Ir=0,Jr=256,Ar=9,Mr="SRESET ESRESET COLORCMP DATAROT READMAP MODE MISC COLORDC BITMASK".split(" "),Br=1024,Cr=4096,Sr=65280,Dr=0,Er=16,Ur=255,Fr=-2147483648,Nr=[];Nr[2]=Br;Nr[3]=Br|Cr;Nr[16]=1280;Nr[512]=Dr;Nr[1024]=Dr|32;Nr[1536]=Dr|96;Nr[2560]=Dr|160;Nr[3584]=Dr|224;Nr[768]=Dr|Er; +Nr[4096]=1;Nr[8192]=2;Nr[24576]=98;Nr[40960]=162;Nr[57344]=226;var Tr=[];Tr[Br]=function(a){a+=this.H;return(this.controller.xb=this.W[a])>>this.controller.ci&255};Tr[Br|16384]=function(a){return(this.controller.xb=this.W[(a&-4)+this.H])>>((a&3)<<3)&255};Tr[Br|Cr]=function(a){a+=this.H;var b=this.controller.xb=this.W[a&-2];return(a&1?b>>8:b)&255}; +Tr[1280]=function(a){a+=this.H;a=this.controller.xb=this.W[a];for(var b=this.controller.ph,c=this.controller.oh&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};Tr[Dr]=function(a,b){a+=this.H;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|32]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|96]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b&=this.controller.xb;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|160]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b|=this.controller.xb;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|224]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b^=this.controller.xb;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)};Tr[Dr|4]=function(a,b){var c=(a&-4)+this.H;a=(a&3)<<3;b=b<>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Db;b=this.controller.Ef&b|this.controller.xb&~b;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +function Q(a,b,c,d,e){ib.call(this,"Video",a,262144);var f=this,g;this.ad=Ma("Gecko/");this.da=a.model;var h=qs[this.da]||qs.mda;this.Ma=h[0];this.wd=a.memory||0;this.od=a.switches;this.Sb=a.randomize;null==this.Sb&&(this.Sb=1);this.ea=a.mode;if(null==this.ea||null==rs[this.ea])this.ea=h[1];this.Rb=a.charCols;this.Ic=a.charRows;if(void 0===this.Rb||void 0===this.Ic)this.Rb=rs[this.ea][0],this.Ic=rs[this.ea][1];this.aa=a.screenWidth;this.ka=a.screenHeight;this.cd=a.scale;this.Rd=12<=Math.round(this.aa/ +this.Rb);this.N=b;this.L=c;this.F=(this.og=d)||b||null;this.mc=a.screenColor||"black";this.nd=(1-(Qa("flicker")||a.flicker||0)).toString();this.Hb=!1;b&&(b.style.backgroundColor=this.mc);e&&(e.style.backgroundColor=this.mc);b=a.smoothing;(c=Qa("smoothing"))&&(b="true"==c);null!=b&&(g=Na(this.L,"imageSmoothingEnabled"))&&(this.L[g]=b);this.pd=a.touchScreen;this.lb=ss;this.G=null;this.Qd=a.autoLock;this.fb=this.Tb=0;this.ra=[];this.ha=Array(this.Ma==hq?256:16);this.Ia=!1;if(this.P=e)if(g=Na(e,"requestFullscreen")|| +Na(e,"requestFullScreen")){this.P.A=e[g];if(e=Na(document,"on","fullscreenchange")){var k=Na(document,"fullscreenElement")||Na(document,"fullScreenElement");document.addEventListener(e,function(){ts(f,!!k)},!1)}(e=Na(document,"on","fullscreenerror"))&&document.addEventListener(e,function(){ts(f,null)},!1)}if(this.F&&(this.F.onfocus=function(){return f.Ag(!0)},this.F.onblur=function(){return f.Ag(!1)},this.F.re=(g=Na(this.F,"requestPointerLock"))&&this.F[g],this.F.B=(g=Na(this.F,"exitPointerLock"))&& +this.F[g],this.F.re&&(e=Na(document,"on","pointerlockchange")))){var m=Na(document,"pointerLockElement");document.addEventListener(e,function(){f.Gf(!(!m||document[m]!==f.F))},!1)}(this.Aa=a.fontROM)&&"json"!=ra(this.Aa)&&(this.Aa=Ga()+"/api/v1/dump?file="+this.Aa+"&format=bytes")}ba(Q,ib);l=Q.prototype; +l.uc=function(a,b,c,d){var e=this;this.na=b;this.H=c;this.ca=d;c=+ud(a,"randomize");0<=c&&1>=c&&(this.Sb=c);c=(c=qs[this.da])&&c[0];c!==us&&(Ic(b,this,vs),Mc(b,this,ws));c!==xs&&(Ic(b,this,ys),Mc(b,this,zs));this.Ma>=fq&&(Ic(b,this,As),Mc(b,this,Bs));this.Ma==hq&&(Ic(b,this,Cs),Mc(b,this,Ds));d&&xl(d,262144,function(a){if(e.B)if(a[0]){var b=e.B;if(b.ed){var c,d,f,g=!1,h=8,G=8,I=-1,J=b.video.D>>3;for(c=0;c=d&&(G=d,g=!0);break;case "p":0<=d&&3>=d&&(I=d);break;case "w":d=b.fb&&(f-=b.fb);a="";for(c=0;cI?q(K):la(K>>(I<<3),8));g&&(f+=J-G);a&&(a+="\n");a+=P}a&&b.ca.O(a);b.B=f}else b.ca.O("no buffer")}else e.ca.O("BIOSMODE: "+na(e.la)),b=e.B,Qr(b,"CRTC",b.ic,b.$a,b.dg),b.Ma>=fq&&(Qr(b," GRC",b.Fd,b.Ed,b.Tg),Qr(b, +" SEQ",b.Gd,b.ce,b.Ug),Qr(b," ATC",b.Dd,b.Dc,b.Sg),Qr(b," ATCINDX",b.Dd),b.ca.O(" ATCDATA: "+b.Le),Qr(b," FEAT",b.Mf),Qr(b," MISC",b.af),Qr(b," STATUS0",b.Hg)),Qr(b," STATUS1",b.ga),b.Ma!=xs&&b.Ma!=us||Qr(b," MODEREG",b.Vc),b.Ma==us&&Qr(b," COLOR",b.Ze),b.Ma>=fq&&(b.ca.O(" LATCHES: "+q(b.xb)),b.ca.O(" ACCESS: "+q(b.rg,4)),b.ca.O("Use 'dump video [addr]' to dump video memory"));else e.ca.O("no active video card")});if((this.C=Vb(a,"Keyboard"))&&this.N){for(var f in this.ma)0c&&(a=Math.round(c/b*100)+"%")}d.ad?(d.N.style.width=a,d.N.style.width=a,d.N.style.display="block",d.N.style.margin="auto"):(d.P.style.width=a,d.P.style.height="auto");d.P.style.backgroundColor=d.mc;d.P.A()}d.F&&d.F.focus()}}:c.parentNode.removeChild(c), +!0;case "lockPointer":return this.Td=c.textContent,this.F&&this.F.re?c.onclick=function(){d.re(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){Js(d,!0)},!0}return!1};function ts(a,b){!b&&a.P&&(a.ad?a.N.style.width=a.N.style.height="":a.P.style.width=a.P.style.height="");Nb(a,"notifyFullScreen("+b+")",!0);a.C&&(a.C.bh=b)} +l.re=function(a){var b=!1;this.F&&(a?this.F.re&&(this.F.re(),this.G&&this.G.Gf(!0),b=!0):this.F.B&&(this.F.B(),this.G&&this.G.Gf(!1),b=!0),this.F&&this.F.focus());return b};l.Gf=function(a){this.G&&(this.G.Gf(a),this.C&&(this.C.bh=a));var b=this.ma.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.Td)}; +function Es(a,b){var c=a.F;c&&!a.lb&&(a.lb=b,c.addEventListener("touchstart",function(b){aq(a.V,b);a.lb!=Hs&&Ls(a,b,!0)},!1),b!=Hs&&(c.addEventListener("touchmove",function(b){Ls(a,b)},!0),c.addEventListener("touchend",function(b){Ls(a,b,!1)},!1),a.mb=a.vb=a.qd=-1,a.Ac=!1,a.Kb=null,a.wc=!1,a.Sd=function(){a.wc=!0;a.G.Yd(Ms,!0)}))}l.Ag=function(a){this.C&&this.C.Ag(a)}; +function Ls(a,b,c){var d,e,f=0,g=0;d=a.N;do isNaN(d.offsetLeft)||(f+=d.offsetLeft,g+=d.offsetTop);while(d=d.offsetParent);var h=a.aa/a.N.offsetWidth,k=a.ka/a.N.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*k;if(a.lb==Gs)c&&Aq(a.C,Ns[e/(a.ka/3)|0][d/(a.aa/3)|0],!0);else if(a.G){g=a.Ac;f=b.timeStamp-a.qd;!0===c?(a.Ac=500f){a.G.Yd(Ms,!0);a.G.Yd(Ms,!1);return}}if(c||0>a.mb||0>a.vb)a.mb=d,a.vb=e;c=Math.round(d-a.mb);b=Math.round(e-a.vb);a.mb=d;a.vb=e;a.G.sf(c,b,a.mb,a.vb)}}l.ac=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.$b=function(a){return a?this.save():!0}; +l.reset=function(){var a=0;this.V&&(a=+Tl(this.V,hl,void 0));this.da||(this.Ma=a==Ul?xs:us);this.ea=Os;switch(this.Ma){case hq:a=7;break;case fq:var b=Ps[this.Fb];b&&(a=b[0]);a||(a=4);break;case xs:a=Ul;this.ea=Qs;break;default:a=2}this.fa!==a&&(this.fa=a);this.B=null;this.U=this.hc=new pr(this,xs);this.K=this.Gb=new pr(this,us);this.Ma>1&255,c=c>>8&~Us,c>>4==(c&15)&&(c^=15)):(d=c&255,c=(c&256?Vs|Ws:Xs|Ys)|Zs&c>>8);Fc(this.na,b,d|c<<8)}Js(this,!0)}};function Rs(a){a.A.af&yr?(a.U=a.hc,a.K=a.A):(a.U=a.A,a.K=a.Gb)}l.save=function(){var a=new Wf(this);a.set(0,Pr(this.hc));a.set(1,Pr(this.Gb));a.set(2,[this.fa,this.ea,this.la]);a.set(3,Pr(this.A));return a.data()}; +l.restore=function(a){var b=a[2];this.fa=b[0];this.ea=b[1];this.la=b[2];this.B=null;this.U=this.hc=new pr(this,xs,a[0]);this.K=this.Gb=new pr(this,us,a[1]);this.A=new pr(this,this.Ma,a[3],this.wd);this.A.sc&&Rs(this);Ss(this);if(!$s(this))return!1;at(this);return!0}; +function Is(a,b,c,d){if(d)a.Da("Unable to load font ROM (error "+d+": "+b+")",0>d);else{nb(a.ee,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){ab("Empty font ROM: "+b);return}if(1==f.length){ab(f[0]);return}if(8192==f.length)gq(a,f,[6144,0]);else if(2048==f.length)gq(a,f,[0]);else{a.Da("Unrecognized font data length ("+f.length+")");return}}catch(g){a.Da("Font ROM data error: "+g.message);return}(a.L||a.ca)&&Jb(a)}} +function bt(a,b){if(1==b)return a.ha[0]=ct[Xs],a.ha[1]=ct[Vs],a.ha;if(2==b){var c=a.B.Ze;if(a.B===a.A){var d=a.A.Dc[0],c=d&7;d&16&&(c|=8);18!=a.A.Dc[1]&&(c|=32)}a.ha[0]=ct[c&15];c=c&32?dt:et;for(d=0;de;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.ha[e]=[g,h,f,255];else{var k=d&&d[255];b=null!=c.Dc[15]?c.Dc:ft;for(e=0;16>e;e++)f=b[e]&63,k?(f|= +(c.Dc[20]&12)<<4,c.Dc[16]&128&&(f&=-49,f|=(c.Dc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.ha[e]=[g,h,f,255]}a.Ia=!0}return a.ha}function gq(a,b,c,d){a.zb=b;a.Pa=c;a.Fa=d} +function Ss(a,b){var c=!1;if(window&&a.zb&&(!b||a.I)){var d=0,e=a.Fa?a.Fa:8,f=bt(a);null!=a.Pa[0]&>(a,ht,a.Pa[0],d,e,8,a.zb,f)&&(c=!0);d=a.Fa?0:2048;e=a.Fa?a.Fa:9;null!=a.Pa[1]&&(gt(a,it,a.Pa[1],d,e,14,a.zb,jt,kt)&&(c=!0),a.Fa&>(a,a.Ma,a.Pa[1],0,a.Fa,14,a.zb,f)&&(c=!0))}b||(a.ba=-1,a.Ba=-1,a.va=0);return c}function gt(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(lt(a,b,c,d,e,f,g,h,k)&&(m=!0),a.Rd&<(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function lt(a,b,c,d,e,f,g,h,k){var m=!1,p=b&1?0:1,v=a.ra[b],u=16>h.length?h.length:16;v||(v={Gc:e<ka||!P?ka:8,lb=db.createImageData(m.Gc,m.Hc);for(Oa=0;256>Oa;Oa++){for(eb=0;eb=ka-2,Od=Z[eb>(8<=kb&&192<=Oa&&223>=Oa?7:kb)?D:jb;mt(lb,zg,ef,Ag);I&&mt(lb,zg+1,ef,Ag)}db.putImageData(lb,(Oa&15)*m.Gc,(Oa>>4)*m.Hc)}m.Fe[G]="#"+q(D[0],2)+q(D[1],2)+q(D[2],2);m.Pi[G]=D;m.Rg[G]=qa;m=!0}}a.ra[b]=v;return m}function nt(a){0a.Ba&&(a.Ba=0):a.Ba=-1} +function at(a){if(a.I){for(var b=10;15>=b;b++)if(null==a.B.$a[b])return;var c=a.B.$a[10],b=c&31,d=a.B.$a[11]&os[11],e=a.B.$a[9]&os[9],f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)ot(a);else{c=a.B.$a[15];c|=(a.B.$a[14]&a.B.cg)<<8;a.ba!=c&&(ot(a),a.ba=c);d=d-b+1;if(a.rd!=b||a.Tc!=d)a.rd=b,a.Tc=d;a.xa=e+1;nt(a)}}} +function ot(a){if(0<=a.ba){if(void 0!==a.M){var b=pt<<8,c=a.M[a.ba];if(c&b){var c=c&~b,b=a.ba%a.D,d=a.ba/a.D|0;a.I&&a.ra[a.I]&&(a.Ea&&qt(a,b,d,c,a.Ea),qt(a,b,d,c));a.M[a.ba]=c}}a.ba=-1}} +function rt(a){var b,c=a.B;a.Uc=!1;var d=c.Ed[5];if(null!=d){b=Br;var e=Dr,f=c.Ed[3]&31;switch(d&3){case 0:if(f){e=Dr|32;switch(f&24){case 8:e=Dr|96;break;case 16:e=Dr|160;break;case 24:e=Dr|224}c.Qc=f&7}break;case 1:e=1;break;case 2:switch(f&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.Ma==hq&&(e=3,c.Qc=f&7)}d&8&&(b=1280);c=c.ce[4];null!=c&&(c&4||(b|=Cr,e|=Er),d&64&&(c&8&&(b|=16384,e|=4),a.Uc=!0));b|=e}return b} +function st(a,b){var c=a.B;return c&&null!=b&&b!=c.rg?(c.Jg(b),a.na.Jg(c.fb,c.Tb,c.eh(),!0),!0):!1} +function $s(a,b){var c,d=a.la,e=a.B;if(e)if(e.Ma==xs)d=Qs;else if(e.Ma>=fq){var d=null,f=e.wd>>2,g=32768=e.$a[cs]?xt:yt:zt:g&128|| +350>f?d=m?At:Bt:480<=f&&(d=a.fa==Ul?Ct:Dt):d=m?7-d:Et:d-=m?2:0);c=rt(a)}}else e.Vc&8?(e.Vc&2?(d=e.Vc&16?Et:Ft,e.Vc&4||--d):(d=e.Vc&1?Os:Gt,e.Vc&4&&--d),a.Hb&&(a.N.style.opacity="1",a.Hb=!1)):!a.Hb&&1>+a.nd&&(a.Hb=!0,a.N.style.opacity=a.nd,e=a.H,e.Z.Rf=!0,zd(e));else a.la=null,null==d&&(d=a.ea);if(!Ts(a,d,b))return!1;st(a,c);return!0} +function Ts(a,b,c){if(null!=b&&(b!=a.la||c)){a.Hd=0;a.la=b;a.Ia=!1;b=a.B||(b==Qs?a.U:a.K);if(b!=a.B||b.fb!=a.fb||b.Tb!=a.Tb){ot(a);if(a.fb){if(!wc(a.na,a.fb,a.Tb))return!1;a.B&&(a.B.sc=!1)}a.B=b;b.sc=!0;a.fb=b.fb;a.Tb=b.Tb;if(!kc(a.na,b.fb,b.Tb,3,b===a.A?b:null))return!1}a:{a.I=0;a.D=a.Rb;a.J=a.Ic;a.La=a.D;a.Qb=rs[Qs][2];b=0;if(c=rs[a.la])a.D=c[0],a.J=c[1],a.Qb=c[2],b=c[3],a.I=c[4],4!=a.fa&&7!=a.fa||a.B!==a.A||a.I!=ht||(7==(a.A.$a[ms]&31)?a.J=350>Rr(a.A,cs)?43:50:a.I=a.Ma);a.md=a.D*a.J|0;a.ld=a.md/ +a.Qb|0;a.Ra=a.ld;a.lc=0;void 0!==b&&(a.Ra=(a.Ra<<1)+b|0,a.lc=a.Ra+b>>1);if(a.ra.length){a.qa=a.aa/a.D|0;a.pa=a.ka/a.J|0;if(a.I){b=a.ra[a.I];if(!b)break a;c=a.ra[a.I<<1];a.cd&&80==a.D?c&&a.qa>=3*c.Gc>>2&&(a.I<<=1,b=c):(c&&a.qa>=c.Gc&&(a.I<<=1,b=c),a.cd||(a.qa=b.Gc,a.pa=b.Hc));a.ab=a.cb=0;b&&(a.ab=a.D*b.Gc,a.cb=a.J*b.Hc)}else a.qa=a.pa=1,a.ab=a.D,a.cb=a.J;a.Ka=a.L.createImageData(a.ab,a.cb);a.Ca=document.createElement("canvas");a.Ca.width=a.ab;a.Ca.height=a.cb;a.Ea=a.Ca.getContext("2d");a.Kc=a.Lc=0; +a.tc=a.aa;a.vc=a.ka;b=a.aa-a.D*a.qa;c=a.ka-a.J*a.pa;0>1,a.tc-=b);0>1,a.vc-=c);if(b||c)a.L.fillStyle=a.N.style.backgroundColor,a.L.fillRect(0,0,a.aa,a.ka)}}fu(a,!0);Js(a)}return!0}function mt(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function hu(a){a.va=-1;a.Ga=!1;var b=a.ld;if(void 0===a.M||a.M.length!=b)a.M=Array(b)}function fu(a,b){b||(a.Ia=!1);hu(a)} +function qt(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.ra[a.I];h.jf&&(d=h.jf[d]);var k=g>>4&15;h.jf&&(k=h.jf[k]);e?(b*=h.Gc,c*=h.Hc,e.fillStyle=h.Fe[k],e.fillRect(b,c,h.Gc,h.Hc)):(b=b*a.qa+a.Kc,c=c*a.pa+a.Lc,a.L.fillStyle=h.Fe[k],a.L.fillRect(b,c,a.qa,a.pa));g&iu&&(k=(f&15)*h.Gc,f=(f>>4)*h.Hc,e?e.drawImage(h.Rg[d],k,f,h.Gc,h.Hc,b,c,h.Gc,h.Hc):a.L.drawImage(h.Rg[d],k,f,h.Gc,h.Hc,b,c,a.qa,a.pa));g&pt&&(f=a.rd,g=a.Tc,e?(a.xa&&a.xa!==h.Hc&&(f=f*h.Hc/a.xa|0,g=g*h.Hc/a.xa|0),e.fillStyle=h.Fe[d],e.fillRect(b, +c+f,h.Gc,g)):(a.xa&&a.xa!==a.pa&&(f=f*a.pa/a.xa|0,g=g*a.pa/a.xa|0),a.L.fillStyle=h.Fe[d],a.L.fillRect(b,c+f,a.qa,g)))} +function Js(a,b){b=void 0===b?!1:b;if(a.Z.bc){var c=!1,d=a.B;d&&(d!==a.A?d.Vc&8&&(c=!0):d.Dd&32&&(c=!0));if(c||b){if(b)hu(a);else if(void 0===a.M)return;c=!1;!(b||++a.Hd&15)&&0<=a.Ba&&(a.Ba++,c=!0);var e=a.md,f=a.fb,g=f,h=g+a.Tb;a.la>=xt&&(f=g=655360,h=g+65536);if(ju(a,d)&8||d.Ff&&d.Ff=fq&&d.$a[19]&&d.$a[19]<<1!=d.$a[1]+1&&(a.La=d.$a[19]<<(a.I?1:d.$a[20]&64?3:4),k=(a.La*(a.J-1)+a.D)/ +a.Qb|0,a.la<=Qs&&(k<<=1));var p=d=0;g+k>h&&(p=k,g>=h?(d=f+(g-h),k=0):(d=f,k=h-g,p-=k));h=a.ba-(m>>1);g=ku(a,f,g,k,0,h,e,b,c);p&&(g+=ku(a,f,d,p,0+g,h,e,b,c));g&&(a.Ga=!0)}}} +function ku(a,b,c,d,e,f,g,h,k){var m=d>>1;m>g&&(m=g);var p=c+d;if(h=!h&&a.Ga){h=a.na;for(var v=!0,u=c>>>h.A,D=h.B-(c&h.D);0f)return m;c+=f<<1;e+=f;g=e+1}}if(a.I){if(a.ra[a.I]){b=c;c=e;k=f=e=0;h=iu<<8;d=1048575;u=a.B.Vc&32;a.Ma>=fq&&(u=a.B.Dc[16]&8);v=a.ba-a.B.ae;u&&(k=Us<<8,d&=~k,a.Ba&2||(d&=~h));for(a.va=0;b>1;g=0;c=a.Qb;e=b;f=16==c?65536:196608;k=16==c?1:2;h=bt(a,k);var v=d=0,u=a.D,D=0,G=a.J,I=0;for(a.va=0;e>8|(J&255)<<8,P=f,K=16;d>=k))>>(K-=k);mt(a.Ka,d++,v,h[Z])}d>D&&(D=d);v=I&&(I=v+1)}e+=2;g++;if(d>=a.D){d= +0;v+=2;if(v>a.J)break;v==a.J&&(v=1,e=b+a.lc)}}ua.D?a.La-a.D-I>>3:0;for(a.va=0;c>=8;k>v&&(v=k);h=D&&(D=h+1)}c+=G;if(k>=a.D){k=0;if(++h>a.J)break;c+=J}}I&& +(g=0)}else{m=0;g=p-c;e=bt(a);f=a.B.ed;h=k=0;d=a.D;v=0;u=a.J;D=0;G=a.B.Dc[19]&15;I=a.La>a.D?a.La-a.D-G>>3:0;for(a.va=0;cP&&(K=P)):(J<<=G,K-=G,a.Ga=!1):(a.Ga&&J===a.M[m]?(k+=K,K=0):a.M[m]=J,m++);if(K){kv&&(v=k);h=D&&(D=h+1)}if(k>=a.D){k=0;if(++h>a.J)break;c+=I}}G&&(g=0)}da&&(b.uh=a,a=-a|0);a%b.rh>b.hn&&(c|=1);a%b.sh>b.kn&&(c|=9);b.di=a/b.sh|0;return c}l.wm=function(a,b){return mu(this,this.U,a,b)};l.co=function(a,b,c){var d=this.U;d.Eg=d.ic;d.ic=b&31;t(this,a,b,c,"CRTC.INDX")};l.vm=function(a,b){return nu(this,this.U,a,b)};l.bo=function(a,b,c){ou(this,this.U,a,b,c)};l.xm=function(a,b){return pu(this,this.U,b)};l.eo=function(a,b,c){a=this.U;t(this,a.port+4,b,c,"MODE");a.Vc=b;$s(this,!1)}; +l.ym=function(a,b){return qu(this,this.U,b)};l.Lk=function(a,b,c){this.A.Mf=this.A.Mf&-4|b&3;t(this,a,b,c,"FEAT")};l.Vl=function(a,b){a=this.A.Dd;b&&!r(this)||t(this,960,null,b,"ATC.INDX",a);return a};l.ol=function(a,b){a=this.A.Dc[this.A.Dd&31];b&&!r(this)||t(this,960,null,b,"ATC."+this.A.Sg[this.A.Dd&31],a);return a}; +l.Kk=function(a,b,c){var d=this.A,e=d.Dd&32;if(d.Le){d.Le=!1;var f=d.Dd&31;if(16<=f||!e)if(ru||d.Dc[f]!==b)c&&!r(this)||t(this,a,b,c,"ATC."+d.Sg[f]),d.Dc[f]=b,fu(this,!1)}else d.Dd=b,t(this,a,b,c,"ATC.INDX"),d.Le=!0,b&32&&!e&&Ss(this,!0)&&Js(this,!0),a=d.$a[ur],a|=(d.$a[vr]&d.cg)<<8,d.ae!=a&&(d.ae=a,fu(this)),d.Ff=0}; +l.Im=function(a,b){a=0;if(this.Ma==fq)a=3-((this.A.af&12)>>2),a=(this.Fb&1<>this.A.yc&63;b&&!r(this)||t(this,969,null,b,"DAC.DATA["+na(this.A.bd)+"]["+na(this.A.yc)+"]",a);this.A.yc+=6;12Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.height="auto";0<=Ha().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth, +d.screenHeight),c.onresize(null));var f=+(Qa("aspect")||d.aspect);f&&.3<=f&&3.33>=f&&(Wa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ma("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Q(d,e,g,f,c);ub(d,c)}}); +function su(a){ib.call(this,"ParallelPort",a,4194304);this.G=a.adapter;switch(this.G){case 1:this.D=956;this.C=7;break;case 2:this.D=888;this.C=7;break;case 3:this.D=632;this.C=5;break;default:ab("Unrecognized parallel adapter #"+this.G);return}this.A=this.B=null;a=a.binding;"console"==a?this.B="":sb(this,a,tu)}ba(su,ib);l=su.prototype;l.Eb=function(a,b,c){switch(b){case tu:return this.ma[b]=this.A=c,!0}return!1}; +l.uc=function(a,b,c,d){this.na=b;this.H=c;this.ca=d;this.V=Vb(a,"ChipSet");Ic(b,this,uu,this.D);Mc(b,this,vu,this.D);Jb(this)};l.ac=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.$b=function(a){return a?this.save():!0};l.reset=function(){wu(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Pb;c[b]=this.kf;a.set(0,c);return a.data()};l.restore=function(a){return wu(this,a[0])}; +function wu(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Pb=b[c++];a.kf=b[c];return!0}l.jm=function(a,b){var c=this.F;t(this,a,null,b,"DATA",c);return c};l.Hm=function(a,b){var c=this.Pb;t(this,a,null,b,"STAT",c);return c};l.fm=function(a,b){var c=this.kf;t(this,a,null,b,"CTRL",c);return c}; +l.Pn=function(a,b,c){t(this,a,b,c,"DATA");this.F=b;this.Pb|=xu;a=!1;Nb(this,"transmitByte("+na(b)+")");this.A&&(8==b?this.A.value=this.A.value.slice(0,-1):(this.A.value+=String.fromCharCode(b),this.A.scrollTop=this.A.scrollHeight),a=!0);if(null!=this.B){if(10==b||1024<=this.B.length)this.O(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b));a=!0}a&&(this.Pb&=~xu);yu(this)};l.Kn=function(a,b,c){t(this,a,b,c,"CTRL");this.kf=b;yu(this)}; +function yu(a){a.V&&a.C&&(a.kf&zu&&!(a.Pb&xu)?ih(a.V,a.C):gh(a.V,a.C))}var tu="buffer",xu=64,zu=16,uu={0:su.prototype.jm,1:su.prototype.Hm,2:su.prototype.fm},vu={0:su.prototype.Pn,2:su.prototype.Kn};Xa(function(){for(var a=vb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=wa(c[0]);if(d!=this.Ce)return;c=wa(c[1]);if(this.G=yb(c)){var e=this.G.exports;if(e){var f=e.connect;f&&f.call(this.G,this.P);if(this.ba=e.receiveData){this.P=a;this.U=e.receiveStatus;this.status("Connected "+this.ee+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.ac=function(a,b){if(!b)if(this.yj(this.P),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.$b=function(a){return a?this.save():!0};l.reset=function(){Gu(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.fa;c[b++]=this.ka;c[b++]=this.L;c[b++]=this.M;c[b++]=this.F;c[b++]=this.D;c[b++]=this.aa;c[b++]=this.A;c[b++]=this.B;c[b]=this.J;a.set(0,c);return a.data()};l.restore=function(a){return Gu(this,a[0])}; +function Gu(a,b){var c=0;b||(b=[0,0,Hu,0,Iu,0,0,Ju|Ku,a.ra,[]]);a.fa=b[c++];a.ka=b[c++];a.L=b[c++];a.M=b[c++];a.F=b[c++];a.D=b[c++];a.aa=b[c++];a.A=b[c++];a.B=b[c++];a.J=b[c];return!0}l.Lf=function(a){if("number"==typeof a)this.J.push(a);else if("string"==typeof a)for(var b=0;b>8:this.M;t(this,a,null,b,this.D&Qu?"DLM":"IER",c);return c};l.rm=function(a,b){var c=this.F;this.F|=Iu;t(this,a,null,b,"IIR",c);return c};l.sm=function(a,b){var c=this.D;t(this,a,null,b,"LCR",c);return c}; +l.um=function(a,b){var c=this.aa;t(this,a,null,b,"MCR",c);return c};l.tm=function(a,b){var c=this.A;t(this,a,null,b,"LSR",c);return c};l.zm=function(a,b){var c=this.B;this.B&=~(Mu|Nu);t(this,a,null,b,"MSR",c);return c}; +l.no=function(a,b,c){t(this,a,b,c,this.D&Qu?"DLL":"THR");if(this.D&Qu)this.L=this.L&-256|b;else{this.ka=b;this.A&=~(Ju|Ku);a=!1;Nb(this,"transmitByte("+na(b)+")");this.ba&&this.ba.call(this.G,b)&&(a=!0);if(this.C){if(13==b)this.K=0;else if(8==b)this.C.value=this.C.value.slice(0,-1),0":String.fromCharCode(b);a=d.length;32>b&&1==a&&(a=0);9==b&&(a=this.pa||8,a-=this.K%a,this.pa&&(d=va("",a)));!this.K&&a&&(10!=this.qa&&(d="\n"+d),this.la&& +(d=String.fromCharCode(this.la)+d));this.C.value+=d;this.C.scrollTop=this.C.scrollHeight;this.K+=a}this.qa=b;a=!0}else if(null!=this.I){if(10==b||1024<=this.I.length)this.O(this.I),this.I="";10!=b&&(this.I+=String.fromCharCode(b));a=!0}a&&(this.A=this.A|Ju|Ku,Ou(this))}};l.Zn=function(a,b,c){t(this,a,b,c,this.D&Qu?"DLM":"IER");this.D&Qu?this.L=this.L&255|b<<8:this.M=b};l.$n=function(a,b,c){t(this,a,b,c,"LCR");this.D=b}; +l.ao=function(a,b,c){var d=b^this.aa;t(this,a,b,c,"MCR");this.aa=b;d&(Ru|Su)&&this.U&&(a=0,this.P?(a|=b&Su?32:0,a|=b&Ru?320:0):(a|=b&Su?16:0,a|=b&Ru?1048576:0),this.U.call(this.G,a))};function Ou(a){var b=-1;a.A&Pu&&a.M&Tu?b=Uu:a.A&Ju&&a.M&Vu?b=Wu:a.B&(Mu|Nu)&&a.M&Xu&&(b=Yu);0<=b?(a.F&=~(Iu|Zu),a.F|=b,a.V&&a.N&&ih(a.V,a.N,100)):(a.F|=Iu,a.V&&a.N&&gh(a.V,a.N))} +var Du="buffer",Hu=384,Tu=1,Vu=2,Xu=8,Iu=1,Uu=4,Wu=2,Yu=0,Zu=6,Qu=128,Ru=1,Su=2,Pu=1,Ju=32,Ku=64,Mu=1,Nu=2,Bu=16,Cu=32,Eu={0:Au.prototype.Em,1:Au.prototype.qm,2:Au.prototype.rm,3:Au.prototype.sm,4:Au.prototype.um,5:Au.prototype.tm,6:Au.prototype.zm},Fu={0:Au.prototype.no,1:Au.prototype.Zn,3:Au.prototype.$n,4:Au.prototype.ao};Xa(function(){for(var a=vb(document,"pcx86","serial"),b=0;ba.A||0>a.B)a.A=b.screenX,a.B=b.screenY;a.N?(c=b.movementX||b.mozMovementX||b.webkitMovementX||0,d=b.movementY||b.mozMovementY||b.webkitMovementY||0):(c=b.screenX-a.A,d=b.screenY-a.B);a.A=b.screenX;a.B=b.screenY;a.sf(c,d,a.A,a.B)}} +l.Yd=function(a,b){if(this.sc&&this.H&&this.H.Z.Xa){var c="mouse button"+a+" "+(b?"dn":"up");switch(a){case Ms:if(this.L!=b){this.L=b;fv(this,c);return}break;case gv:if(this.M!=b){this.M=b;fv(this,c);return}}Nb(this,c+": ignored")}};l.sf=function(a,b,c,d){this.sc&&this.H&&this.H.Z.Xa&&(a=Math.round(Math.abs(a)*this.K)*Math.sign(a)||Math.sign(a),b=Math.round(Math.abs(b)*this.K)*Math.sign(b)||Math.sign(b),a||b)&&(r(this,16777216)&&Nb(this,"moveMouse("+a+","+b+")"),this.I=a,this.J=b,fv(this,null,c,d))}; +function fv(a,b,c,d){var e=64|(a.L?32:0)|(a.M?16:0)|(a.J&192)>>4|(a.I&192)>>6,f=a.I&63,g=a.J&63;r(a,8388608)&&Nb(a,(b?b+": ":"")+(void 0!==d?"mouse ("+c+","+d+"): ":"")+"serial packet ["+na(e)+","+na(f)+","+na(g)+"]",0,!0);a.G.Lf([e,f,g]);a.I=a.J=0} +l.ml=function(a){var b=1048592==(a&1048592);if(b){if(!this.sc){var c=!1;this.C&16||(this.reset(),Nb(this,"serial mouse reset"),c=!0);this.C&1048576||(Nb(this,"serial mouse ID requested"),c=!0);c&&(this.G.Lf([hv,hv]),Nb(this,"serial mouse ID sent"));av(this);this.sc=b}}else this.sc&&(Nb(this,"serial mouse inactive"),bv(this),this.sc=b);this.C=a};var hv=77,Ms=0,gv=2;Xa(function(){for(var a=vb(document,"pcx86","mouse"),b=0;b>2;var e=d=0,a=new DataView(a,0,c);g.A=Array(g.sb);for(c=0;cb.indexOf("/api/v1/dump")&&(a=ra(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=pv(this,b),this.mg=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):sa(b, +"/")&&(c="dir"),f=Ga()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.Oe?"":d)+"&format=json"));var k="Loading "+f+"...";return!!Fa(f,null,!0,function(a,b,c){qv(g,a,b,c)},function(){g.O(k,Fb.Ee)})}; +function qv(a,b,c,d){var e=null;a.Re=!1;var f=!(!(0>d&&a.oa)||a.oa.Z.bc);if(a.mg)d?a.Da('Unable to connect to disk "'+a.G+'" (error '+d+": "+c+")",f):(a.D=!0,rv(a),e=a);else if(d)a.Da('Unable to load disk "'+a.kd+'" (error '+d+": "+b+")",f);else{nb(a.controller.ee,b,c);try{if(0g&&0c.indexOf("0x")&& +'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+c+")");if(h.length)if(1==h.length)ab(h[0]);else{a.sb=h.length;a.gb=h[0].length;a.Wa=h[0][0].length;var k=h[0][0][0];a.Na=k&&k.length||512;for(d=c=0;d>2,p=k.pattern;void 0===p&&(p=k.pattern=0);var v=k.data;if(void 0===v){var u=k.bytes;if(void 0!==u&&u.length){for(var D=m<<2,G=u.length;G< +D;G++)u[G]=p;sv(k,u,0)}else k.data=v=[],u&&(k.pattern=p|p<<8|p<<16|p<<24);delete k.bytes}ov(k,d,f);for(D=0;Db;b++){if(128==uv(a,e,c+0,1)){d.If=uv(a,e,c+8,4);(e=tv(a,d.If))&&(f=!0);break}c+=16}if(!f)return}d.rf||(d.rf=uv(a,e,19,2)||uv(a,e,32,4),d.qf=uv(a,e,14,2),d.lh=d.qf+uv(a,e,22,2)*uv(a,e,16,1),d.th=uv(a,e,17,2),d.vf=uv(a,e,13,1));d.jh=d.lh+((32*d.th+(d.Na-1))/d.Na|0);d.gn=(d.rf-d.jh)/d.vf|0;d.ug=4084>=d.gn?12:16;d.Il=12==d.ug?4086:65526;b=[];for(e=d.lh;e>=8;f+=2;if(k)for(;m--;)Iv(d,f,1),254>=k?(p=k,v=Iv(d,f+1),f+=3):(p=Iv(d,f+3,1),v=Iv(d,f+4),f+=6),d.sd[p]&&(d.sd[p].he[h]=[v]),d.A[h]=[p,v],h++;else h+=m}(g=xv(e,Lv,c))&&Mv(e,g+c);g=xv(e,Nv,c);h=xv(e,Ov,c);g&&h&&Mv(e,g,g+h)}}}} +function wv(a,b,c,d,e){var f,g=a.C.length,h=b.Na/32|0;b.mq=d+"\\";for(var k=0;kG)break;for(var I=u.jh+(G-2)*u.vf,J=0;J>3,1),d?e=16==b.ug?e<<8:c&7?e<<4:(e&15)<<8:c&7&&(e>>=4));return e} +function tv(a,b){var c=a.gb*a.Wa,d=b/c|0;return dg)break;e|=g<=f)break;e+=String.fromCharCode(f)}return e}function ov(a,b,c,d,e,f){a||(a={sector:d,length:e,data:[],pattern:f});a.Jl=b;a.Kl=c;a.hd=a.Oc=0;a.Oa=!1;return a} +function pv(a,b){b="action=open&volume="+b+("&mode="+a.mode);b+="&chs="+a.sb+":"+a.gb+":"+a.Wa+":"+a.Na;b+="&machine="+mv(a.controller);b+="&user="+nv(a.controller);return Ga()+"/api/v1/disk?"+b} +function Rv(a,b,c,d,e,f,g){if(a.D){var h;h="action=read&volume="+a.G;h+="&chs="+a.sb+":"+a.gb+":"+a.Wa+":"+a.Na;h=h+("&addr="+b+":"+c+":"+d+":"+e)+("&machine="+mv(a.controller));h+="&user="+nv(a.controller);Fa(Ga()+"/api/v1/disk?"+h,null,f,function(h,m,p){h=[b,c,d,e,f,g];var k=!1,u=h[0],D=h[1],G=h[2],I=h[3];if(!p){m=JSON.parse(m);for(k=0;I--;){var J=a.seek(u,D,G,!0);if(!J)break;sv(J,m,k);k+=J.length;G++}k=h[4]}(h=h[5])&&h(p,k)})}else g&&g(-1,!1)} +function Sv(a,b,c,d,e,f,g){if(a.D){var h={};a.M=!0;h.action="write";h.volume=a.G;h.chs=a.sb+":"+a.gb+":"+a.Wa+":"+a.Na;h.addr=b+":"+c+":"+d+":"+e;h.machine=mv(a.controller);h.user=nv(a.controller);h.data=JSON.stringify(f);Fa(Ga()+"/api/v1/disk",h,g,function(f,h,p){var k=[b,c,d,e,g];f=k[0];h=k[1];var m=k[2],D=k[3],k=k[4];a.M=!1;if(0<=f&&fb&&(b=0);2E3>2,e=Array(d),f=0;f>2,e=a.data;a=a.pattern;for(var f=0;f>8&255;c[d++]=g>>16&255;c[d++]=g>>24&255}return c}l.read=function(a,b){var c=-1;if(a&&b>2,c=(d>((b&3)<<3)&255;return c}; +l.write=function(a,b,c){if(this.Re)return!1;if(b>2;b=(b&3)<<3;for(var g=d.length;g<=f;g++)d[g]=e;a.Oc?f=a.hd+a.Oc&&(a.Oc+=f-(a.hd+a.Oc)+1):(a.hd=f,a.Oc=1);d[f]=d[f]&~(255<=this.A.length||k>=this.A[h].length||m>=this.A[h][k].length){c="sector (CHS="+h+":"+k+":"+m+") out of range ("+ +b+" changes applied)";b=-1;break}if(this.Re){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;kb?-2!=b&&this.Da("Unable to restore disk '"+this.kd+": "+c):rv(this);return b}; +l.toJSON=function(){var a;a=0;for(var b;b=tv(this,a++);)Xv(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")}; +function Xv(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}var jv=0;function Qv(a,b,c,d,e,f){this.ua=a;this.dc=c;this.Vg=d;this.$i=e;this.ie=f}function Iv(a,b,c){var d;c=c||2;var e=b&511,f=tv(a.ua,a.ie[b>>9]);if(f){if(e+c<=f.length)return uv(a.ua,f,e,c);for(e=d=0;c--;)d|=Iv(a,b++,1)<=e.ei&&a<=e.Hk){d=a-=e.ei;var f,g;for(g in e.he){var h=e.he[g],k=a-h[0];if(!k){c=this.Of+"!"+h[1];break}b&&0g.ua.restore(D)&&(h=!1);h&&g.ua&&void 0!==g.Va&&(g.hb=g.ua.seek(g.Ib,g.bb,g.jb));h||(e=!1)}a.G=b[c++]||0;a.cc=b[c]||ow;return e} +function iw(a){var b=0,c=[];c[b++]=a.Ya;c[b++]=0;c[b++]=a.ga;c[b++]=a.F;c[b++]=a.D;c[b++]=a.C;c[b++]=a.I;for(var d=b++,e=0,f=[],g=0;gmw(a,e,b,c,!1,d);){if(!window.confirm("Click OK to reload the original disk and discard any changes."))return!1;var f=a,g=c,h;for(h=0;ha.sb||f[1]>a.gb)&&(this.Da('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Ya)),b=null);b?(a.ua=b,a.Yk=c,a.ye=d,rw(this,d)||fw(this,c,d),nw(this,c,d,b),f=b.info(),this.G|=sw,a.Se||this.Da('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Ya),a.oe||e),a.tg=f[0],a.xf=f[1],a.yf=f[2],this.oa&&this.oa.dd()):a.Ne=!1;a.oe&&(a.oe=!1,--this.K||Jb(this));aw(this,a.Ya);a.Se&&(a.Se(),a.Se=null)}; +function fw(a,b,c,d){if((a=a.ma.listDisks)&&a.options){for(var e=0;e'+a+"");c.innerHTML=a}}l.To=function(a){for(var b=0;b=this.C&&(this.ga&=~(vw|ww),this.D=this.C=0);return c}; +l.Rn=function(a,b,c){r(this)&&t(this,a,b,c,"DATA["+this.C+"]");this.C=yw[a].Kd){b=!1;this.D=0;a=zw(this);var d,e,f,g,h=a&xw;switch(h){case Aw:zw(this);zw(this);Bw(this);break;case Cw:c=zw(this);this.Ya=c&3;d=this.A[this.Ya];Bw(this);Dw(this,(d.tb&Ew)>>>24);break;case Fw:case Gw:c=zw(this);b=c>>2&1;this.Ya=c&3;d=this.A[this.Ya];d.bb=b;c=d.Ib=zw(this);e=zw(this);f=d.jb=zw(this);g=zw(this);d.yb=128<>2&1;this.Ya= +c&3;d=this.A[this.Ya];c=d.Ib;e=d.bb=b;f=d.jb=1;g=0;d.tb=qw;d.ua&&(d.hb=d.ua.seek(d.Ib,d.bb,d.jb))?g=d.hb.length>>8:d.tb=Hw|Iw;Kw(this,d,a,b,c,e,f,g);b=!0;break;case Rw:c=zw(this);b=c>>2&1;this.Ya=c&3;d=this.A[this.Ya];c=d.Ib;e=d.bb=b;f=1;g=zw(this);d.yb=128<>2&1,c=zw(this),d.Ib+=c-d.Vd,0>d.Ib&&(d.Ib=0),d.Ib>=d.sb&&(d.Ib=d.sb-1),d.Vd=c,d.tb=Mw,d.Ib||(d.tb|=Nw),Bw(this),b=!0}0>>8);Dw(a,(b.tb&Uw)>>>16);var k=0;if(e!=b.Ib||f!=b.bb)k=g=1;c&Vw&&(f^=k,d||(k=0));Dw(a,e+k);Dw(a,f);Dw(a,g);Dw(a,h)}function zw(a){var b=a.F[a.D];a.D++;return b}function Bw(a){a.D=a.C=0}function Dw(a,b){a.F[a.C++]=b}l.gl=function(a,b,c){void 0===b||0>b?this.xe(a,c):c(-1,!1)};l.hl=function(a,b){return void 0!==b&&0<=b?Ww(a,b):-1}; +l.yl=function(a,b){if(void 0!==b&&0<=b)a:if(a.tb)a=-1;else{a.Yc[a.Je++]=b;if(a.Je==a.Yc.length){a.Ib=a.Yc[0];a.bb=a.Yc[1];a.jb=a.Yc[2];a.yb=128<Ww(a,a.Wi)){a=-1;break a}a.gg++}a.gg>=a.Wd&&(b=-1);a=b}else a=-1;return a};l.xe=function(a,b){var c=-1,d=null,e=0;if(!a.tb&&a.ua){do{if(a.hb&&(e=a.Va,0<=(c=a.ua.read(a.hb,a.Va++)))){d=a.hb;break}a.hb=a.ua.seek(a.Ib,a.bb,a.jb);if(!a.hb){a.tb=Xw|Iw;break}a.Va=0;Yw(a)}while(1)}b(c,!1,d,e)}; +function Ww(a,b){if(a.tb||!a.ua)return-1;do{if(a.hb&&a.ua.write(a.hb,a.Va++,b))break;a.hb=a.ua.seek(a.Ib,a.bb,a.jb);if(!a.hb){a.tb=Zw|Iw;b=-1;break}a.Va=0;Yw(a)}while(1);return b}function Yw(a){a.jb++;a.jb>=a.yf+1&&(a.jb=1,a.bb++,a.bb>=a.xf&&(a.bb=0,a.Ib++))}var lw="Floppy Drive",tw=4,uw=8,ww=16,vw=64,jw=128,Aw=3,Cw=4,Fw=5,Gw=6,Lw=7,Ow=8,Qw=10,Rw=13,Sw=15,xw=31,Vw=128,qw=0,Hw=8,Mw=32,Iw=64,kw=192,Pw=255,Jw=512,Xw=1024,Zw=8192,Tw=65280,Uw=16711680,Nw=268435456,Ew=-16777216,sw=128,ow=0;aa={}; +var yw={3:{Kd:3,Xd:0,name:aa.Zp},4:{Kd:2,Xd:1,name:aa.Xp},5:{Kd:9,Xd:7,name:aa.eq},6:{Kd:9,Xd:7,name:aa.Tp},7:{Kd:2,Xd:0,name:aa.Vp},8:{Kd:1,Xd:2,name:aa.Yp},10:{Kd:2,Xd:7,name:aa.Up},13:{Kd:6,Xd:7,name:aa.Pp},15:{Kd:3,Xd:0,name:aa.Wp}},dw={1009:Yv.prototype.lm,1012:Yv.prototype.nm,1013:Yv.prototype.km,1015:Yv.prototype.mm},ew={1010:Yv.prototype.Sn,1013:Yv.prototype.Rn,1015:Yv.prototype.Qn}; +Xa(function(){for(var a=vb(document,"pcx86","fdc"),b=0;bk.ua.restore(g)&&(D=!1),D&&void 0!==k.Va&&(k.hb=k.ua.seek(k.Pd,k.bb,k.jb+k.fg)));D||(e=!1);null!=a.P&&1>=d&&(a.P|=(f.type&3)<<(1-d<< +1))}0<=a.Ya&&(a.B=a.A[a.Ya]);return e} +function hx(a){var b=0,c=[];a.M?(c[b++]=a.I,c[b++]=a.va,c[b++]=a.J,c[b++]=a.fa,c[b++]=a.ea,c[b++]=a.ba,c[b++]=a.U,c[b++]=a.ga,c[b++]=a.ha,c[b++]=[a.L,a.Ya]):(c[b++]=a.P,c[b++]=a.ga,c[b++]=a.F,c[b++]=a.D,c[b++]=a.C,c[b++]=a.ra,c[b++]=a.pa,c[b++]=a.qa,c[b++]=a.N);for(var d=0,e=[],f=0;f=this.C&&(this.D=this.C=0,this.ga&=~(qx|rx|sx));return c};l.po=function(a,b,c){t(this,a,b,c,"DATA["+this.C+"]");this.C=a&&(this.ga|=qx,this.ga&=~ux,vx(this))};l.Om=function(a,b){var c=this.ga;t(this,a,null,b,"STATUS",c);this.D=a.B.Na?(a.ga=xx,a.xe(a.B,function(b){0<=b?(yx(a),a.V&&a.V.da==ul&&(a.ga=0),a.ga=a.ga|ix|zx|Ax):(a.ga=Bx,a.I=Cx)},!1)):a.ga=ix|zx));return d}l.kl=function(a,b){return wx(this,a,b)|wx(this,a,b)<<8}; +function Dx(a,b,c,d){if(a.B&&a.B.yb>=a.B.Na)if(0>Ex(a.B,c))a.ga=Bx,a.I=Cx;else if(1==a.B.Va||a.B.Va==a.B.Na)r(a,1048832)&&t(a,b,c,d,"DATA["+a.B.Va+"]"),1=a.B.Na&&(a.ga|=Ax))}l.yn=function(a,b,c){Dx(this,a,b&255,c);Dx(this,a,b>>8&255,c)};l.Ul=function(a,b){var c=this.I;t(this,a,null,b,"ERROR",c);return c};l.Dn=function(a,b,c){t(this,a,b,c,"WPREC");this.va=b};l.Wl=function(a,b){var c=this.J;t(this,a,null,b,"SECCNT",c);return c}; +l.Bn=function(a,b,c){t(this,a,b,c,"SECCNT");this.J=b};l.Xl=function(a,b){var c=this.fa;t(this,a,null,b,"SECNUM",c);return c};l.Cn=function(a,b,c){t(this,a,b,c,"SECNUM");this.fa=b};l.Sl=function(a,b){var c=this.ea;t(this,a,null,b,"CYLLO",c);return c};l.xn=function(a,b,c){t(this,a,b,c,"CYLLO");this.ea=b};l.Rl=function(a,b){var c=this.ba;t(this,a,null,b,"CYLHI",c);return c};l.wn=function(a,b,c){t(this,a,b,c,"CYLHI");this.ba=b};l.Tl=function(a,b){var c=this.U;t(this,a,null,b,"DRVHD",c);return c}; +l.zn=function(a,b,c){t(this,a,b,c,"DRVHD");this.U=b;this.ga=this.A[this.U&Fx?1:0]?this.ga|ix|zx:this.ga&~ix};l.Yl=function(a,b){var c=this.ga;t(this,a,null,b,"STATUS",c);this.ga&ix&&(this.ga&=~xx);return c};l.vn=function(a,b,c){t(this,a,b,c,"COMMAND");this.ha=b;this.V&&gh(this.V,14);Gx(this)};l.An=function(a,b,c){t(this,a,b,c,"FDR");this.L&Hx&&!(b&Hx)&&(this.I=Ix);this.L=b}; +function Gx(a){var b=!1,c=a.ha,d=a.U&Fx?1:0,e=a.U&Jx,f=a.ea|(a.ba&Kx)<<8,g=a.fa,h=a.J||256;a.Ya=-1;a.B=null;a.I=Lx;a.ga=ix|zx;var k=a.A[d];k?(k.Pd=f,k.bb=e,k.jb=g,k.yb=h*k.Na,c=c>=Mx?c:c&Nx,k.hb=null,k.Va=0,k.errorCode=0,a.Ya=d,a.B=k):c=-1;switch(c&Nx){case Ox:b=!0;break;case Px:a.ga=xx;a.xe(k,function(b){0<=b&&a.V?(yx(a),a.ga=ix|zx|Ax):(a.ga=Bx,a.I=Cx)},!1);break;case Qx:a.ga=Ax;break;case Rx:b=!0;break;case Sx:b=!0;break;case Mx:a.I=Ix;b=!0;break;case Tx:k.gb=e+1,k.Wa=h,b=!0}b&&yx(a)} +function yx(a){!a.V||a.L&Ux||ih(a.V,14,120)} +function vx(a){a.D=0;var b=Vx(a),c=Vx(a),d=c&32,e=d>>5,f=c&31,g=Vx(a),h=Vx(a),k=g<<2&768|h,m=g&63,p=Vx(a),v=Vx(a),u=a.A[e];u&&(u.Pd=k,u.bb=f,u.jb=m,u.yb=p*u.Na);switch(b){case Wx:Xx(a,u?u.errorCode:Yx);Zx(a,c);Zx(a,g);Zx(a,h);Zx(a,$x|d);b=-1;break;case tx:for(c=0;0<=(b=Vx(a));)u&&cb?this.xe(a,c):c(-1,!1)};l.jl=function(a,b){return void 0!==b&&0<=b?Ex(a,b):-1}; +l.zl=function(a,b){void 0!==b&&0<=b?(a.VaEx(a,a.Wi)){a=-1;break a}a.gg++}a.gg>=a.Wd&&(b=-1);a=b}else a=-1;return a}; +function hy(a,b,c){b.errorCode=Yx;if(b.ua&&(b.hb=null,a.V)){b.errorCode=kx;Mn(a.V,3,a,"dmaRead",b);Dn(a.V,3,function(a){a||b.errorCode!=kx||(b.errorCode=Yx);c(b.errorCode?ay:$x)});return}c(b.errorCode?ay:$x)}function jy(a,b,c){b.errorCode=Yx;if(b.ua&&(b.hb=null,a.V)){b.errorCode=kx;Mn(a.V,3,a,"dmaWrite",b);Dn(a.V,3,function(a){a||(b.errorCode==kx&&(b.errorCode=Yx),b.errorCode==my&&(b.errorCode=kx));c(b.errorCode?ay:$x)});return}c(b.errorCode?ay:$x)} +function ly(a,b,c){b.errorCode=Yx;b.He&&b.He.length==b.yb||(b.He=Array(b.yb));b.Va=0;a.V?(b.errorCode=kx,Mn(a.V,3,a,"dmaWriteBuffer",b),Dn(a.V,3,function(a){a||b.errorCode!=kx||(b.errorCode=Yx);c(b.errorCode?ay:$x)})):c(b.errorCode?ay:$x)} +l.xe=function(a,b,c){var d=-1,e=null,f=0;if(a.errorCode)return b&&b(d,!1,e,f),d;var g=!1!==c?1:0;if(a.hb&&(f=a.Va,d=a.ua.read(a.hb,a.Va),a.Va+=g,0<=d))return e=a.hb,b&&b(d,!1,e,f),d;if(b){if(a.ua)return a.ua.seek(a.Pd,a.bb,a.jb+a.fg,!1,function(c,k){(a.hb=c)?(e=c,f=a.Va=0,ny(a),d=a.ua.read(a.hb,a.Va),a.Va+=g):a.errorCode=my;b(d,k,e,f)}),d;a.errorCode=my;b(d,!1,e,f)}return d}; +function Ex(a,b){if(a.errorCode)return-1;do{if(a.hb&&a.ua.write(a.hb,a.Va++,b))break;a.ua&&a.ua.seek(a.Pd,a.bb,a.jb+a.fg,!0,function(b){a.hb=b});if(!a.hb){a.errorCode=my;b=-1;break}a.Va=0;ny(a)}while(1);return b}function ny(a){a.jb++;var b=1-a.fg;a.jb>=a.Wa+b&&(a.jb=b,a.bb++,a.bb>=a.gb&&(a.bb=0,a.Pd++))}l.Pm=function(){var a=this.H.L&255;!(this.H.D>>8)&&128>8||!this.V)||(a=!(this.V.jc[0].ud&64));return a?!0:!1}; +var lx="Hard Drive",ox=["XTC","ATC","COMPAQ"],mx=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966, +6],19:[1023,8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}],ex=496,Ix=1,Lx=0,Cx=16,Kx=3,Jx=15,Fx=16,Bx=1,Ax=8,zx=16,ix=64,xx=128,Ox=16,Px=32,Qx=48,Rx=64,Sx= +112,Mx=144,Tx=145,Nx=240,Ux=2,Hx=4,$x=0,ay=2,dy=0,ey=1,Wx=3,fy=5,gy=8,iy=10,tx=12,ky=15,by=224,cy=228,kx=0,Yx=4,my=20,jx=0,ux=1,qx=2,rx=4,sx=8,px=32,bx={800:$w.prototype.Nm,801:$w.prototype.Om,802:$w.prototype.Mm},ax={496:$w.prototype.kl,497:$w.prototype.Ul,498:$w.prototype.Wl,499:$w.prototype.Xl,500:$w.prototype.Sl,501:$w.prototype.Rl,502:$w.prototype.Tl,503:$w.prototype.Yl},dx={800:$w.prototype.po,801:$w.prototype.so,802:$w.prototype.ro,803:$w.prototype.qo,807:$w.prototype.fi,811:$w.prototype.fi, +815:$w.prototype.fi},cx={496:$w.prototype.yn,497:$w.prototype.Dn,498:$w.prototype.Bn,499:$w.prototype.Cn,500:$w.prototype.xn,501:$w.prototype.wn,502:$w.prototype.zn,503:$w.prototype.vn,1014:$w.prototype.An};Xa(function(){for(var a=vb(document,"pcx86","hdc"),b=0;bthis.A&&this.C.length&&(this.A=0);if(0>this.A||a!=this.C[this.A])this.C.splice(0,0,a),this.A=0;this.A--}else this.fa?a="end":a=this.C[this.A+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(wa(a.substring(d,f))),d=f+1}}return b}; +function py(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a<<32-b>>32-b:(b=Math.pow(2,b-1),a>=b?(d=a%b,(a/b|0)&1&&(d-=b)):a<-b&&(d=a%b,((-a-1)/b|0)&1?d&&(d+=b):d||(d-=b)));a!=d&&(a=d);return a} +function qy(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= +f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case ",,":e=py(e,18,!0)*Math.pow(2,18)+py(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=py(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=ry(a,b,0,b.length,a.D,c);void 0!==d&&e&&zy(a,null,d)}return d} +function Ay(a,b){var c,d=a.ha[0],e=a.ha[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=yy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?xy(a,g):"undefined")}if(a.Ea.length)for(d=a.Ea[0],e=a.Ea[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Ok(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.ba-a.ka}if(null== +e)break;b=b.replace(d[0],e.toString())}return b}function ty(a,b){for(;b;){switch(b&3){case 1:a=-py(a);break;case 2:a|=-1;break;case 3:for(var c=35;0<=c&&!(a&Math.pow(2,c));)c--;a=35-c}b>>>=2}return a} +function sy(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.fh(b);if(0<=f)f=a.gh(f);else if(f=b,a.I[f]?f=a.I[f].value:(f=f.substr(0,6),f=a.I[f]&&a.I[f].value),null!=f){var h=a.I[b]&&a.I[b].Po;h&&(g?g.push(h):(g=yy(a,h,d),void 0!==g?f+=g:(d||a.O("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=ia(b,1c&&(d+=" '"+String.fromCharCode(c)+"'"));a.O((null!=b?b+": ":"")+d);return e}function By(a,b){var c=0;if(a.I){if(b)return zy(a,b,a.I[b]&&a.I[b].value);b=Object.keys(a.I);b.sort();for(var d=0;d=Math.abs(b)?5:11;b=ja(b,10,a);break;default:b=q(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var vy={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},uy={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20}; +function Cy(a){oy.call(this,a);this.ra=4;this.la=5;this.wa=1048575;this.N=Dy(this,0,0);this.Ca=Dy(this,0,0);this.ea=Dy(this,0,0);this.F=[];this.B=this.V=this.L=[];Ey(this);this.xa=0;Fy(this);this.Fa={};Gy(this,a.messages);this.Ka=a.commands;var b=this;window?void 0===window.pcx86&&(window.pcx86=function(a){return Hy(b,a)}):void 0===global.pcx86&&(global.pcx86=function(a){return Hy(b,a)})}ba(Cy,oy);l=Cy.prototype; +l.uc=function(a,b,c,d){this.na=b;this.H=c;this.oa=a;this.cb=Vb(a,"FDC");this.Pa=Vb(a,"HDC");this.Kc=Vb(a,"FPU");this.G=Vb(a,"Mouse");(a=ud(a,"messages"))&&Gy(this,a);this.la=b.I>>2;this.wa=b.N;this.ab=new Sd(this.H,7,"DBG");this.pa=Iy;80186<=this.H.da&&(this.pa=Iy.slice(),this.pa[15]=Jy,80286<=this.H.da&&(this.pa[15]=Ky,80386<=this.H.da&&(this.ra=8)));xl(this,64,function(a){Ly(d,d.H.tc,a[0])});xl(this,4,function(a){if(a=a[0]){var b=sy(d,a);if(void 0===b)d.O("invalid selector: "+a);else if(a=My(d, +b,Ny),d.O("dumpSel("+oa(a?a.T:b)+"): %"+q(a?a.Ob:null,d.la)),a){var c,b=!1;if(a.type&4096)a.type&2048?(c="code"+(a.type&512?",readable":",execonly"),a.type&1024&&(c+=",conforming")):(c="data"+(a.type&512?",writable":",readonly"),a.type&1024&&(c+=",expdown")),a.type&256&&(c+=",accessed");else{var e=Oy[a.type];e&&(c=e[0],b=e[1])}!c||a.ob&32768||(c+=",not present");d.O((b?"seg="+oa(a.ta&65535)+" off="+oa(a.Sa):"base="+q(a.ta,d.la)+" limit="+Py(a.Sa))+" type="+na(a.type>>8)+" ("+c+") ext="+oa(a.ext&-65296)+ +" dpl="+na(a.rc))}}else d.O("no selector")});xl(this,134217728,function(a){var b;(a=a[0])&&(b=sy(d,a));if(void 0===b)d.O("invalid MCB");else for(d.O("dumpMCB("+oa(b)+")");b;){a=Dy(d,0,b);var c=d.ya(a,1),e=d.Wc(a,2),k=d.Wc(a,5);if(77!=c&&90!=c)break;d.O(Qy(0,b)+": '"+String.fromCharCode(c)+"' PID="+oa(e)+" LEN="+oa(k)+' "'+Ry(d,a,8)+'"');b+=1+k}});xl(this,128,function(a){Ly(d,d.H.aa,a[0],d.H.aa!==d.H.tc)});xl(this,8,function(a){a:{if(a=a[0]){var b=sy(d,a);if(void 0===b){d.O("invalid task selector: "+ +a);break a}a=My(d,b,Ny)}else a=d.H.ka;d.O("dumpTSS("+oa(a?a.T:b)+"): %"+q(a?a.ta:null,d.la));if(a){var b="",c=a.type&-513,e=256==c?4:8,k=256==c?Sy:Ty,m,p,v,u;for(u in k)m=k[u],p=a.ta+m,v=vg(d.H,p,2),2304==c&&(v|=vg(d.H,p+2,2)<<16),b&&(b+="\n"),b+=oa(m)+" "+va(u+":",11)+q(v,e);if(2304==c)for(u=0,m=v>>>16;mu;){p=a.ta+m;v=vg(d.H,p,2);p=2;c="";if(!p||4>=8;b+="\n"+oa(m)+" ports "+oa(u)+"-"+oa(u+15)+": "+(""+c);u+=16;m+=2}d.O(b)}}});this.J= +null;this.La=0;this.Ga=!1;Rf(this.H,48,this.Tm.bind(this));Rf(this.H,65,this.Um.bind(this));this.aa=null;Rf(this.H,104,this.Vm.bind(this));Jb(this)};function Uy(a,b,c,d,e,f){b=Ry(a,b);var g=My(a,d),g=g?g.Sa+1:0,h=(e?"_CODE":"_DATA")+q(c,2);f&&r(a,128)&&a.message(b+" "+(e?"code":"data")+"("+q(c,4)+")=#"+q(d,4)+" len "+q(g));e=Vy(a,b,c);e[b+h]=0;dq(a,b,c,d,0,null,g,e)} +function Wy(a,b,c,d){var e=a.Wc(b,2),f=a.Wc(b,2),g=Xy(a,b,4),h=Xy(a,b,4),k=Dy(a,Xy(a,b,4),a.Wc(b,2));b=Dy(a,Xy(a,b,4),a.Wc(b,2));b=Ry(a,b).toUpperCase();var k=Ry(a,k).toUpperCase(),m=(c?"_CODE":"_DATA")+q(e,2);d&&r(a,128)&&a.message((b==k?"":b+"!")+k+" "+(c?"code":"data")+"("+q(e,4)+")="+q(f,4)+":"+q(g)+" len "+q(h));c=Vy(a,k,e);c[k+m]=g;dq(a,k,e,f,g,null,h,c)}function Yy(a,b,c){c=Ry(a,c).toUpperCase();Zy(a,c,b)} +l.Tm=function(){var a=this.H;if(null!=this.J&&2752554==a.D){var b=a.L&65535,c=a.K&65535,d=Dy(this,y(a)+12,a.U.T);switch(Xy(this,d)){case 336:Wy(this,Dy(this,a.G,b),!c,!!this.J)}}return!0}; +l.Um=function(a){var b=this.H,c=b.D&65535,d=b.G&65535,e=b.I&65535,f=b.L&65535,g=b.K&65535,h=b.J&65535,k=b.pa.T;if(null==this.J)return 79==c&&Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Nb(a,"INT 0x41 handling enabled",128),a.J=!0):(Nb(a,"INT 0x41 monitoring enabled",128),a.J=!1)}}(this)),!0;switch(c){case 79:this.J&&(b.D=b.D&-65536|62342,Nb(this,"INT 0x41 handling enabled",128));break;case 80:Uy(this,Dy(this,h,k),d+1,e,!(g&1),!!this.J);break;case 82:Zy(this,null, +d);break;case 127:this.J&&(b.D=b.D&-65536|(this.Ga?0:1));break;case 131:this.J&&(a=Dy(this,b.L,e),this.La++?(this.O("TRAPFAULT failed"),$y(this,this.B,a,!0,!0),this.La=0,this.Ub()):(this.O("INT 0x41 TRAPFAULT: fault="+oa(d)+" error="+q(b.K,8,!0)+" addr="+az(a)),this.td(this.B,a,!0),Fy(this,!0)));break;case 141:this.J&&(b.D=b.D&-65536|1);break;case 336:Wy(this,Dy(this,b.G,f),!g,!!this.J);break;case 338:Yy(this,d,Dy(this,b.J,f))}this.Ga=!1;return!this.J}; +l.Vm=function(a){var b=this.H,c=b.D&255,d=b.D>>8&255,e=b.G&65535,f=b.I&65535,g=b.L&65535,h=b.J&65535,k=b.pa.T;if(null==this.aa){if(67==d){if(609437257==b.ia((b.ba.T<<4)+10)||1111835735==b.ia((b.ba.T<<4)+95))return!0;Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Nb(a,"INT 0x68 handling enabled",128),a.J=a.aa=!0):(Nb(a,"INT 0x68 monitoring enabled",128),a.aa=!1)}}(this))}return!0}switch(d){case 67:this.aa&&(b.D=b.D&-65536|62342);break;case 68:this.aa&&(a=Ud(b.ba,this.vl.bind(this)))&& +(b.J=a[0],ne(b,a[1]));break;case 72:Zy(this,null,e);break;case 80:32==c?Uy(this,Dy(this,h,k),0,f,!0,!!this.aa):128>c?Uy(this,Dy(this,h,k),e+1,c&64?g:f,!(c&1),!!this.aa):Wy(this,Dy(this,h,k),!(c&1),!!this.aa),this.aa&&(b.D=b.D&-256|1)}return!this.aa};l.vl=function(){var a=this.H;5==(a.D&255)&&(a.I=a.K=0,a.D=a.D&-256|1);return!1}; +l.Eb=function(a,b,c){var d=this;switch(b){case "debugInput":return this.va=this.ma[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Hy(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.A>>0)+1;a.ob=f;a.type=g;a.ext=k;a.Ob=d;Td(a,!0,!0,!1)}}return a}l.Wb=function(a,b,c){var d=a&&a.za;if(null==d&&(d=-1,a)){var e=My(this,a.T,a.type);e&&(b=a.Ja||0,c=c||1,d=e=-1===e.Ob||e.fd&&(b>>>0)+c>e.Nb||!e.fd&&(b>>>0)+c<=e.Nb?e.ta+b|0:-1,a.za=d)}return d};l.ya=function(a,b){var c=255,d=this.Wb(a,!1,1);-1!==d&&(c=vg(this.H,d,1,a.type==ez)|0,b&&fz(this,a,b));return c}; +l.nb=function(a,b){return a.Jb?Xy(this,a,b?4:0):this.Wc(a,b?2:0)};l.Wc=function(a,b){var c=65535,d=this.Wb(a,!1,2);-1!==d&&(c=vg(this.H,d,2,a.type==ez)|0,b&&fz(this,a,b));return c};function Xy(a,b,c){var d=-1,e=a.Wb(b,!1,4);-1!==e&&(d=vg(a.H,e,4,b.type==ez)|0,c&&fz(a,b,c));return d}l.ub=function(a,b,c,d){var e=this.Wb(a,!0,1);if(-1!==e){if(a.type!=ez)this.H.ub(e,b);else{var f=this.na;f.aa[(e&f.C)>>>f.A].cf(e&f.D,b&255,e)}c&&fz(this,a,c);d||zd(this.H,!0)}}; +l.fl=function(a,b,c){var d=this.Wb(a,!0,2);-1!==d&&(a.type!=ez?this.H.ib(d,b):Fc(this.na,d,b),c&&fz(this,a,c),zd(this.H,!0))};function Dy(a,b,c,d,e,f,g){return gz(a,{},b,c,d,e,f,g)}function gz(a,b,c,d,e,f,g,h){b.Ja=c||0;b.T=d;b.za=e;b.type=f||(cz(a)?Ny:dz);b.Jb=null!=g?g:!(!a.H||4!=a.H.ba.X);b.gc=null!=h?h:!(!a.H||4!=a.H.ba.Mc);b.yd=!1;return b}function hz(a){return[a.Ja,a.T,a.za,a.yd,a.Jb,a.gc,a.Ie,a.ah]}function iz(a){return{Ja:a[0],T:a[1],za:a[2],yd:a[3],Jb:a[4],gc:a[5],Ie:a[6],ah:a[7]}} +function jz(a,b,c){if(null!=b.T&&(a=My(a,b.T,b.type))){var d=b.Ja&a.wa;if(!a.fd){if(d>>>0>=a.Nb)return!1}else if(d>>>0f?null!=h?(g=yy(a,b,void 0),f=null):(f=yy(a,b,void 0),null==f&&(g=null)):(h=yy(a,b.substring(0,f),void 0),g=yy(a,b.substring(f+1),void 0),f=null)}null!=g&&(e=Dy(a,g,h,f,c),d||jz(a,e,!0)||(a.O("invalid offset: "+az(e)),e=null));return e}function nz(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.pl=a.Bg(b.Xk=c[2]))}l.Ok=function(a,b){var c=kz(this,b);return a.replace("["+b+"]",c?q(this.nb(c),c.Jb?8:4):"undefined")}; +function fz(a,b,c){c=c||1;null!=b.za&&(b.za+=c);null!=b.T&&(b.Ja+=c,jz(a,b)||(b.Ja=0,b.za=null))}function Qy(a,b,c){return null!=b?q(b,4)+":"+q(a,a&-65536||c?8:4):q(a)}function az(a){var b;switch(a.type){case dz:case oz:b="&";break;case Ny:b="#";break;case mz:b="%";break;case ez:b="%%";break;default:b=a.T?"":"%"}return a.type>=mz||null==a.T?b+q(a.za):b+Qy(a.Ja,a.T,a.gc)} +function Ry(a,b,c){var d="";for(c=c||256;d.length>>a.H.lb;g=1}a.O("blockid "+(d?"linear ":"physical")+" blockaddr used size type");a.O("-------- --------- ---------- ------ ------ ----");c=-1;for(var h=0;g--;)(d=b[f])&&d.type==Yc&&(d=kd(a.H,e,!1,!0)),d.type==c?h++||a.O("..."):(c=d.type,h=oc[c],c==$c&&(d=d.vd,h+=" -> "+oc[d.type]),d&&a.O(q(d.id,8)+" %"+q(f<c&&(c=Ca(qz,a.substr(b,2))));return c}; +function rz(a,b){var c=0,d=a.gh(b);if(null!=d)switch(b){case sz:case tz:case uz:case vz:case wz:case xz:case yz:case zz:c=2;break;case Az:case Bz:case Cz:case Dz:case Ez:case Fz:case Gz:case Hz:case Iz:case Jz+Kz:case Jz+Lz:case Jz+Mz:case Jz+Nz:case Jz+Oz:case Jz+Pz:c=4;break;case Qz:case Rz:case Sz:case Tz:case Uz:case Vz:case Wz:case Xz:case Yz:case Zz:case $z:case aA:case bA:c=8;break;case cA:c=a.ra}return c?q(d,c):"??"} +l.gh=function(a){var b;if(0<=a){var c=this.H;switch(a){case sz:b=c.D&255;break;case tz:b=c.I&255;break;case uz:b=c.L&255;break;case vz:b=c.G&255;break;case wz:b=c.D>>8&255;break;case xz:b=c.I>>8&255;break;case yz:b=c.L>>8&255;break;case zz:b=c.G>>8&255;break;case Az:b=c.D&65535;break;case Bz:b=c.I&65535;break;case Cz:b=c.L&65535;break;case Dz:b=c.G&65535;break;case Ez:b=y(c)&65535;break;case Fz:b=c.N&65535;break;case Gz:b=c.K&65535;break;case Hz:b=c.J&65535;break;case Iz:b=z(c)&65535;break;case cA:b= +qe(c);break;case Jz+Kz:b=c.pa.T;break;case Jz+Lz:b=c.ba.T;break;case Jz+Mz:b=c.U.T;break;case Jz+Nz:b=c.Fa.T;break;default:if(80286==this.H.da)a==Yz&&(b=c.ra);else if(80386<=this.H.da)switch(a){case Qz:b=c.D;break;case Rz:b=c.I;break;case Sz:b=c.L;break;case Tz:b=c.G;break;case Uz:b=y(c);break;case Vz:b=c.N;break;case Wz:b=c.K;break;case Xz:b=c.J;break;case Yz:b=c.ra;break;case Zz:b=c.Ng;break;case $z:b=c.qd;break;case aA:b=c.Uc;break;case Jz+Oz:b=c.Ka.T;break;case Jz+Pz:b=c.La.T;break;case bA:b= +z(c)}}}return b}; +function dA(a,b){b=Ay(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.fh(b,c+1),0<=e&&(b=b.substr(0,c)+rz(a,e)+b.substr(c+1+qz[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ia(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=kz(a,e))?(d=e+' "'+Ry(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=kz(a,e))?(fz(a,d), +d=e+' "'+Ry(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+az(Dy(this,z(this.H),this.H.ba.T))+" (%"+q(this.H.ea)+")");this.fc&536870912?this.Ba.push(a):this.Aa&&a==this.Aa||(this.Aa=a,this.fc&-2147483648&&(this.Ub(),a+=" (cpu halted)"),this.O(a),this.H&&(a=this.H,a.Z.Rf=!0,zd(a)))}; +function Wk(a,b,c,d){var e,f;if(!d&&(d=r(a,1)&&0>eA.indexOf(b),!d)){var g=fA[b];g&&(d=r(a,g)?!0:524288==g&&r(a,g=1048576))}d&&(e=a.H.D>>8&255,f=a.H.L&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Sb[b])&&g[e]||"")&&(g=" "+dA(a,g)),a.message("INT "+na(b)+": AH="+na(e)+" at "+Qy(c-2-a.H.ba.ta,a.H.ba.T)+g));return d} +function Ob(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.fc&h)==h)h=null,null!=e&&(h=a.H.ba.T,e-=a.H.ba.ta),a.message(b.Ce+"."+(null!=d?"outPort":"inPort")+"("+oa(c)+","+(f?f:"unknown")+(null!=d?","+na(d):"")+")"+(null!=g?": "+na(g):"")+(null!=e?" at "+Qy(e,h):""))}l.hh=function(){this.O("Type ? for help with PCx86 Debugger commands");gA(this);if(this.Ka){var a=this.Ka;this.Ka=null;Hy(this,a)}}; +function Fy(a,b){var c;if(Jg(a)){if(!a.U||!a.U.length){a.U=Array(hA);for(c=0;c>>g.lb].td(f&g.Fb,a==this.L);h&&nc(g)}}e&&(a.push(b),c?(null!=b.za&&(b.T=null),b.yd=!0):(d||oA(this,a,a.length-1,"set"),Fy(this)));return e}; +function $y(a,b,c,d,e){for(var f=!1,g=pA(a,a.Wb(c)),h=1;h>3&7,D=(3>(g>>6&3)?0:48)+u;(217==f||219==f)&&52<=D&&(D=u<<4|g&7);(u=xA[f])&&(v=u[D]);v&&(p=yA,k=v,m=k[0])}m>=p.length&&(g=a.ya(b,1),k=zA[m-p.length][g>>3&7],m=k[0]);p=p[m];u=k.length-1;v="";b.Jb&&(m==AA? +p="CWDE":m==BA?p="CDQ":m>=CA&&m<=DA&&(p+="D"));if(164<=f&&167>=f||170<=f&&175>=f)u=0,b.Jb&&"W"==p.slice(-1)&&(p=p.slice(0,-1)+"D");for(var f=-1,D=!0,G=1;G<=u;G++){var I,J;I="";J=k[G];if(void 0!==J){0>f&&(f=J>>EA);m==FA&&(f==GA?v="[%800]":f==HA&&(v="ES:["+(b.gc?"E":"")+"DI]"));var P=J&IA;if(P!=JA)if(P==KA)D=!1;else{var K=J&LA;if(K>=R)if(0>g&&(g=a.ya(b,1)),K>6,qa=g&7;if(3>jb){P=!p.indexOf("FI");if(!jb&&(!J.gc&&6==qa||J.gc&&5==qa))jb=2;else{if(J.gc)if(4!=qa)qa+= +8;else{var Z=K,db=jb,Oa=J,kb=Z.ya(Oa,1),eb=kb>>6,uc=kb>>3&7,kb=kb&7,lb="";if(db||5!=kb)lb=NA[kb+8];4!=uc&&(lb&&(lb+="+"),lb+=NA[uc+8],eb&&(lb+="*"+(1<>24),2)):Z+("+"+q(K,2))):2==jb&&(Z&&(Z+="+"),J.gc?(K=Xy(K,J,4),Z+=q(K)):(K=K.Wc(J,2),Z+=q(K,4)));Z="["+Z+"]";if(1==ka){K="";I&=IA;I==S&&(I=J.Jb?OA:T);switch(I){case PA:K="FAR";break;case U:K="BYTE";break;case T:if(P){K="INT16";break}K="WORD"; +break;case OA:K="DWORD";break;case QA:if(P){K="INT32";break}case RA:K="REAL32";break;case SA:if(P){K="INT64";break}case TA:K="REAL64";break;case UA:K="REAL80";break;case VA:K="BCD80"}K&&(Z=K+" "+Z)}}else Z=WA(K,qa,I,J);I=Z}else I=K==MA?WA(a,g&7,J,b):WA(a,g>>3&7,J,b);else if(K==XA)I="1";else if(K==V){I=a;P=J;K=b;J=" ";switch(P&IA){case U:P&W&&(J=q(I.ya(K,1),2));break;case YA:J=q(I.ya(K,1)<<24>>24,K.Jb?8:4);break;case S:if(K.Jb){J=q(Xy(I,K,4));break}case T:J=q(I.Wc(K,2),4);break;case PA:K=Dy(I,I.nb(K, +!0),I.Wc(K,2),null,K.type,K.Jb,K.gc);J=az(K);I=ZA(I,K);I[0]&&(J+=" ("+I[0]+")");break;default:J="imm("+oa(P)+")"}I=J}else K==$A?(b.gc?(I=8,J=Xy(a,b,4)):(I=4,J=a.Wc(b,2)),I="["+q(J,I)+"]"):K==aB?(I=P==U?a.ya(b,1)<<24>>24:a.nb(b,!0),J=b.Ja+I&(b.Jb?-1:65535),I=q(J,b.Jb?8:4),J=ZA(a,Dy(a,J,b.T)),J[0]&&(I+=" ("+J[0]+")")):K==X?I=P==bB?"ST":P==cB?"ST("+(g&7)+")":WA(a,(J&dB)>>8,J,b):K==eB?I=WA(a,(J&dB)>>8,fB,b):K==gB?I="DS:[SI]":K==hB&&(I="ES:[DI]");if(!I||!I.length){v="INVALID";break}0Pz||b>=Oz&&80386>a.H.da)return"??";b+=Jz}else if(e==kB)b+=Yz;else if(e==lB)b+=mB;else if(e==nB)b+=oB;else if(a=c&IA,a>=T&&(b=Az&&b<=Hz&&4a.H.da&&(d="\n"+d,c+=e,e="");c+="\n"+rB(a,a.H.ba,b)+" ";80386<=a.H.da&&(e+="\n",c+=rB(a,a.H.Ka,b)+" "+rB(a,a.H.La,b)+"\n");c+=sB(a,"LD",a.H.Gb.T,a.H.Gb.ta,a.H.Gb.ta+a.H.Gb.Sa)+" "+sB(a,"GD",null,a.H.Kb,a.H.Ic)+" "+sB(a,"ID", +null,a.H.Qb,a.H.ad)+" ";c=c+(d+" "+e)+qB(a,Yz);80386<=a.H.da&&(c+=qB(a,$z)+qB(a,aA))}else 80386<=a.H.da&&(c+=rB(a,a.H.Ka,b)+" "+rB(a,a.H.La,b)+" ");return c+=qB(a,cA)+pB(a,"V")+pB(a,"D")+pB(a,"I")+pB(a,"T")+pB(a,"S")+pB(a,"Z")+pB(a,"A")+pB(a,"P")+pB(a,"C")}l.ej=function(a,b){return a[0]>b[0]?1:a[0]>>0,p],I=ya(D,u,a.ej);0>I&&D.splice(-(I+1),0,u)}G&&(v.a=G.replace(/''/g,'"'))}a.F.push({Of:b,mn:c,T:d,Ja:e,za:f,$m:g,Jd:h,Oi:m})} +function Zy(a,b,c){for(var d=0;d>>0,f=a.Wb(b)>>>0,g=0;g>>0,p=h.za;null!=p&&(p>>>=0);var v=h.$m;48==k&&(k=40);if(k==b.T&&e>=m&&e=p&&fc?(a.O("out of data at address "+az(b)),p=!0):(a.ub(b,c,1,!0),m++)})})(a,g);zd(a.H, +!0);a.O(m+" bytes read at "+b)}else a.O("sector "+e+" request out of range");else a.O("drive "+d+" not loaded");else a.O("invalid drive: "+d)}else a.O("disk controller not present")}}else a.O("load commands:"),a.O("\tl [address] [drive #] [sector #] [# sectors]")} +function jA(a,b){var c;if(b&&"?"==b[1])a.O("register commands:"),a.O("\tr\tdump registers"),a.Kc&&a.O("\trfp\tdump floating-point registers"),a.O("\trp\tdump all registers"),a.O("\trx [#]\tset flag or register x to [#]");else{var d;null==c&&(c=!0);if(b&&1f;f++){var g=c,e=null;if(f=a.ra&&(h=null);switch(h){case "AL":a.H.D= +a.H.D&-256|g&255;break;case "AH":a.H.D=a.H.D&-65281|g<<8&255;break;case "AX":a.H.D=a.H.D&-65536|g&65535;break;case "BL":a.H.G=a.H.G&-256|g&255;break;case "BH":a.H.G=a.H.G&-65281|g<<8&255;break;case "BX":a.H.G=a.H.G&-65536|g&65535;break;case "CL":a.H.I=a.H.I&-256|g&255;break;case "CH":a.H.I=a.H.I&-65281|g<<8&255;break;case "CX":a.H.I=a.H.I&-65536|g&65535;break;case "DL":a.H.L=a.H.L&-256|g&255;break;case "DH":a.H.L=a.H.L&-65281|g<<8&255;break;case "DX":a.H.L=a.H.L&-65536|g&65535;break;case "SP":ge(a.H, +y(a.H)&-65536|g&65535);break;case "BP":a.H.N=a.H.N&-65536|g&65535;break;case "SI":a.H.K=a.H.K&-65536|g&65535;break;case "DI":a.H.J=a.H.J&-65536|g&65535;break;case "DS":me(a.H,g);break;case "ES":ne(a.H,g);break;case "SS":fe(a.H,g);break;case "CS":Yf(a.H,g);a.N=Dy(a,z(a.H),a.H.ba.T);break;case "IP":case "EIP":B(a.H,g);a.N=Dy(a,z(a.H),a.H.ba.T);break;case "PC":case "PS":re(a.H,g);break;case "C":g?jg(a.H):kg(a.H);break;case "P":g?(e=a.H,e.resultType&=-3,e.P|=4):(e=a.H,e.resultType&=-3,e.P&=-5);break; +case "A":g?rg(a.H):pg(a.H);break;case "Z":g?sg(a.H):qg(a.H);break;case "S":g?(e=a.H,e.resultType&=-17,e.P|=128):(e=a.H,e.resultType&=-17,e.P&=-129);break;case "I":g?(e=a.H,e.P|=512):(e=a.H,e.P&=-513);break;case "D":g?(e=a.H,e.P|=1024):(e=a.H,e.P&=-1025);break;case "V":g?lg(a.H):mg(a.H);break;default:var k=!0;if(80286<=a.H.da)switch(k=!1,h){case "MS":tg(a.H,g);break;case "TR":-1===a.H.ka.load(g)&&(f=!1);break;default:if(k=!0,80386<=a.H.da)switch(k=!1,h){case "EAX":a.H.D=g;break;case "EBX":a.H.G=g; +break;case "ECX":a.H.I=g;break;case "EDX":a.H.L=g;break;case "ESP":ge(a.H,g);break;case "EBP":a.H.N=g;break;case "ESI":a.H.K=g;break;case "EDI":a.H.J=g;break;case "FS":a.H.Ka.load(g);break;case "GS":a.H.La.load(g);break;case "CR0":a.H.ra=g;bk.call(a.H,g);break;case "CR2":a.H.qd=g;break;case "CR3":a.H.Uc=g;te.call(a.H,g);break;default:k=!0}}if(k){a.O("unknown register: "+e);return}}if(!f){a.O("invalid value: "+b);return}zd(a.H);a.O("updated registers:")}}a.O(tB(a,d));c&&(a.N=Dy(a,z(a.H),a.H.ba.T), +kA(a,az(a.N)))}}function BB(a,b){b=wa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.O(dA(a,c[2])):yy(a,b,!1)}function CB(a,b,c){for(var d=null,e=b.Ja,f=e,g=1;6>=g&&e;g++){if(2e&&(e=1);4096h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.O(m)}h[3]&&(g=h[3],f=null);f=sA(a,b,g,f);b.ah||d||d++;a.O(f);a.N=b;e-=b.za-k;c++}}} +l.Bg=function(a,b,c){if(b)if(a){0>this.A&&this.C.length&&(this.A=0);if(0>this.A||a!=this.C[this.A])this.C.splice(0,0,a),this.A=0;this.A--}else a=this.C[this.A+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(wa(a.substring(d,f))),d=f+1}}return b}; +function rA(a,b,c){var d=!0;try{if(!b.length||"end"==b)a.fa&&(a.O("ended assemble at "+az(a.ea)),a.N=a.ea,a.fa=!1),b="";else if(!c){var e=">> ";a.H.ra&1&&(e=a.H.P&131072?"-- ":"## ");a.O(e+b)}var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.Aa=null;if(Ib(a)&&0p||"z">>20;Ra.Ti=a.H.Uc+Ra.Ik;Ra.pb=qf.aa[(Ra.Ti&qf.C)>>>qf.A];Ra.Aj=Ra.pb.Od(Ra.Ik);Ra.Jk=(Ug&4190208)>>>10;Ra.Ui=(Ra.Aj&-4096)+Ra.Jk;Ra.qb=qf.aa[(Ra.Ui&qf.C)>>>qf.A];Ra.Bj=Ra.qb.Od(Ra.Jk);Ra.rl=(Ra.Bj&-4096)+(Ug&4095)}if(pf=Ra){a.O("linear PDE addr PDE PTE addr PTE physical");a.O("--------- ---------- -------- ---------- -------- ----------");var Ae="%"+q(Ug),Ae=Ae+(" %%"+pz(pf.Ti,pf.Aj)),Ae= +Ae+(" %%"+pz(pf.Ui,pf.Bj,!0)),Ae=Ae+(" %%"+q(pf.rl));a.O(Ae)}else a.O("unsupported operation")}}else a.O("missing address")}else{if("d"==qa){if("disk"==db){Z[0]="l";Z[1]="json";yB(a,Z);break a}for(jb in Tb)if(Z[1]==jb){var Ht=a.Fa[jb];Ht?(Z.shift(),Z.shift(),Ht(Z)):a.O("no dump registered for "+db);break a}db||(qa=a.mb||"db")}if("dh"==qa){var It=db,Jt=Oa,Vg=kb,Vg=void 0===Vg?"history":Vg,Kt="",Lt=0,Oc=a.qa,nd=a.U;if(nd.length){var yc=+It||a.Ra,Wg=+Jt||10;isNaN(yc)?yc=Wg:Kt="more ";yc>nd.length&& +(a.O("note: only "+nd.length+" available"),yc=nd.length);Oc-=yc;0>Oc&&(null==nd[nd.length-1].T?(yc=Oc+yc,Oc=0):Oc+=nd.length);var Bm=[];"call"==Jt&&(Wg=1E5,Bm=["CALL"]);for(void 0!==It&&a.O(yc+" instructions earlier:");0=nd.length&&(Oc=0);a.Ra=yc; +Lt++;Wg--}}Lt||(a.O("no "+Kt+"history available"),a.Ra=void 0)}else if("di"==qa){Z.shift();var Cm=Z[0];if(Cm){var Yg=sy(a,Cm);if(void 0===Yg||0>Yg||255"abwd".indexOf(qa[1]))a.O("unrecognized dump command"); +else{a.mb=qa;var Be=kz(a,db);if(Be&&(null!=Be.T||null!=Be.za)){var rf=0;if(Oa){if("l"==Oa.charAt(0))Oa=Oa.substr(1)||kb,rf=sy(a,Oa);else{var St=kz(a,Oa);if(!St)break a;rf=St.Ja-Be.Ja+1}if(0>rf||65536>4||1,Fm=4==sf?16:a.D;"a"==qa[1]&&(Dm=!0,Em=25,Fm=160,Zg=Em*Fm);for(;Em--&&0gj?String.fromCharCode(gj):Dm?"":".";Zg--}Ce&&(Ce+="\n");Ce=Dm?Ce+fj:Ce+(db+" "+Hm+va(fj,fj.length+3*ah+1,!0))}Ce&&a.O(Ce.replace(/\s*$/,""));a.Ca=Be}}}}}break;case "e":if("else"==g[0])break;var hj=1,Tt=255,Ut=a.ya,Vt=a.ub;"ew"==g[0]&&(hj=2,Tt=65535,Ut=a.Wc,Vt=a.fl);var Wt=hj<<1,Xt=g[1];if(null==Xt)a.O("edit memory commands:"),a.O("\teb [a] [...] edit bytes at address a"),a.O("\tew [a] [...] edit words at address a");else{var ij=kz(a,Xt);if(ij)for(var jj= +2;jjMm;){for(var pd=null,yC=256;Wd.Ja>>>0>>0;){dh.Ja=a.nb(Wd,!0);if(null==Wd.za||!yC--)break;dh.T=Zt;if(pd=CB(a,dh))break;dh.T=a.nb(Wd);if(pd=CB(a,dh,!0)){Zt=a.nb(Wd,!0);0=this.D||(this.D=1);this.F=0;this.pa=a.busWidth||a.buswidth;this.A=ZB;this.P=null;this.L=this.ha=!1;this.ra=ud(this,"url")||"";this.va=(Math.random()+.1).toString(36).substr(2,12);this.B=$B(this);if(this.H=tb("CPU",this.id)){this.ca=tb("Debugger",this.id);this.C=[];for(b=null;b=Vb(this,"Video",b);)this.C.push(b);this.na=new hc({id:this.ee+".bus", +busWidth:this.pa},this.H,this.ca);var e,f=xb(this.id);this.K=(this.J=tb("Panel",this.id))&&this.J.ma.print;this.ka=this.Da;this.la=this.print;this.qa=this.O;this.K&&(this.ka=this.J.Da,this.la=this.J.print,this.qa=this.J.O);for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bZB){if(d.load(this.P)){this.G=new Wf(this,"1.36.2",jC);this.G.load()&&(a!=iC&&kC(this,d)&&(a=lC),mC(this.G));this.G.set(hC,za("Y-m-d H:i:s"));nC(this.G);var e=this.A&&!this.L;if(a==iC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=gC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.Da("Error: "+g),"unable to verify user"==g&&(La(oC,""),this.B=null)):this.O(f+": "+g),mC(d),d.load()?(c=gC(d),e=!0):c=!1))}e&&eC(this,c?d:null)}else a==lC&&d.clear()}else eC(this);delete this.P;delete this.V}e=xb(this.id);for(f=0;fa[1];a=a[2];if(d=this.ma.power)d.textContent="Shutdown";this.Z.bc=!0;this.H&&(pC(this, +this.H,b,c,a),this.H.je());this.fa&&(kC(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.F=0;zb(this.ee,ud(this,"autoScript"))};function kC(a,b){if(!a.Z.Ae){if(pb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.36.2"};d.url=a.ra;d.user=c;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1} +function EB(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new Wf(a,"1.36.2"),g=new Wf(a,"1.36.2",fC),h=za("Y-m-d H:i:s");g.set(hC,h);f.set(hC,h);f.set(qC,"1.36.2");f.set(rC,window?window.location.href:null);f.set(sC,Ha());a.H&&a.H.$b&&(d=a.H.$b(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.Z.bc=!1,!1===d&&(e=null)));for(var h=xb(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/, +"$1PCx86$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/gi;m=p.exec(f);)k=0>k.toLowerCase().indexOf(m[1].toLowerCase())?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);JC(a,b,c)}})}else c(a,null)} +function KC(a,b,c,d){function e(a){if(void 0===h){var b=g&&vb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ta(a))}function f(a){e("Error: "+a);k&&(--GC||bb(!0));k=!1}var g,h,k=!0;GC++;ob[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c|| +(c="/versions/pcx86/1.36.2/components.xsl");m=function(d,h){h?HC(c,null,null,!1,e,function(d,k){k?(nb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--GC||bb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--GC||bb(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?HC(b,a,d,!0,e,m):IC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function LC(a,b,c,d){bb(!1);return KC(a,b,c,d)}window.embedPC=LC;window.embedPCx86=LC; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return zb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=tb(d,c+".machine");if(g){var h=g.exports;if(h&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1}}console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=bb;window.sendEvent=fb; +function MC(a,b,c,d){if(!c&&b){d.push(b);a=ob[d[0]];b=null;for(var e in a)if(sa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Fa(b,null,!0,function(a,b){NC(b,d)}):NC(null,d)}else ab("Error ("+c+") requesting "+a)} +function NC(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];if(c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);)/)){var h=ob[f],k={},m;for(m in h){var p=h[m],v=ra(m);if("xml"==v){for(v=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=pa(m)}else"xsl"==v&&(e=m=pa(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),a=Ta(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
    \n')+"...\n",a=a+('\n'; + sAlert += '\n\n'; + sAlert += 'The machine should appear where the
    is located.'; + Component.alertUser(sAlert); + return; + } + Component.alertUser("Missing XML/XSL resources"); +} + +/** + * Prevent the Closure Compiler from renaming functions we want to export, by adding them + * as (named) properties of a global object. + */ +window['savePC'] = savePC; diff --git a/versions/pcx86/1.36.2/pcx86.js b/versions/pcx86/1.36.2/pcx86.js new file mode 100644 index 0000000000..a295db04de --- /dev/null +++ b/versions/pcx86/1.36.2/pcx86.js @@ -0,0 +1,713 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86seg.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86fpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86func.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86help.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86mods.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86ops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86op0f.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/parallel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/mouse.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 +*/ +var l,ba;function ca(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +var da="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ea="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this; +function fa(a,b){if(b){var c=ea;a=a.split(".");for(var d=0;da?-b:b}});fa("Math.sign",function(a){return a?a:function(a){a=Number(a);return!a||isNaN(a)?a:0":62,"?":63,"@":64,Ed:65,sh:66,th:67,vh:68,E:69,wh:70,xh:71,yh:72,zh:73,Ah:74,Bh:75,Ch:76,Dh:77,Eh:78,Fh:79,Gh:80,Q:81,Hh:82,Ih:83,Jh:84,Kh:85,Lh:86,Mh:87,Nh:88,Ph:89,qf:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Fd:97,dk:98,ek:99,d:100,e:101,nk:102,pk:103,qk:104,rk:105,Cl:106,k:107,Dl:108,Hl:109,n:110,Ql:111,p:112,q:113,r:114,ln:115,t:116,on:117, +pn:118,qn:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,no:127},ha={};ha[173]=n["-"];ha[186]=n[";"];ha[187]=n["="];ha[189]=n["-"];ha[188]=n[","];ha[190]=n["."];ha[191]=n["/"];ha[192]=n["`"];ha[219]=n["["];ha[220]=n["\\"];ha[221]=n["]"];ha[222]=n["'"];var p={};p[n["1"]]=n["!"];p[n["2"]]=n["@"];p[n["3"]]=n["#"];p[n["4"]]=n.$;p[n["5"]]=n["%"];p[n["6"]]=n["^"];p[n["7"]]=n["&"];p[n["8"]]=n["*"];p[n["9"]]=n["("];p[n["0"]]=n[")"];p[186]=n[":"];p[187]=n["+"];p[188]=n["<"];p[189]=n._;p[190]=n[">"]; +p[191]=n["?"];p[192]=n["~"];p[219]=n["{"];p[220]=n["|"];p[221]=n["}"];p[222]=n['"'];p[173]=n._;p[61]=n["+"];p[59]=n[":"]; +function ia(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0=b?4:4294967295>=b?8:9);c=c?"0x":"";var d;d=void 0===d?0:d;var e="";isNaN(a)?a=null:null!=a&&(0>a&&-1a&&(a+=Math.pow(16,b)),a>=Math.pow(16,b)&&(b=Math.ceil(Math.log(a)/Math.log(16))));for(var f=d||-1;0=g?48:55),e=String.fromCharCode(g)+e;a=Math.trunc(a/16)}f--}return(void 0===c?"":c)+e} +function ka(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return oa[a]})}function pa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var oa={"&":"&","<":"<",">":">",'"':""","'":"'"},qa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +function ra(a){var b,c="";b||(b=new Date);for(var d=b.getHours(),e=b.getDate(),f=b.getMonth()+1,g=0;gd?"am":"pm";break;case "d":c+=("0"+e).slice(-2);break;case "D":c+=sa[b.getDay()].substr(0,3);break;case "F":c+=ta[f-1];break;case "g":c+=d?12a?this.Be=this.id:(this.Cd=this.id.substr(0,a),this.Be=this.id.substr(a+1));this.X={ready:!1,Ho:!1,Io:!1,Je:!1,Sb:!1,Yd:!1,error:!1};this.Df=null;this.X.error=!1;this.Ea=this.R=this.oa=this.na=null;Ua.push(this)}function Va(a,b,c){Wa[a]&&b&&(Wa[a][b]=c)}function q(a){window&&window.alert(a)} +function Xa(a){var b=!1;window&&(b=window.confirm(a));return b}function Ya(a,b){a.value+=b;b=a.value;8192e?d+=b+"\n":d=d.substr(0,e)+c+d.substr(e+b.length);8192Math.abs(a.B-b)?1:2),1==a.G?b=a.B:2==a.G&&(d=a.A));a.A=d;a.B=b;if(0<=d&&d>d.shift;d=g*a.oa.A;f=(g+f.Jo)*a.oa.A-1;0f&&(d=f);c=d;break a}c=-1}if(-1!==c&&(c&=-16,c!=a.M)){b=c;if(a.context&&a.J&&a.K){e=Ab-Bb;f=a.J.width;a.K.fillStyle=Cb;a.K.fillRect(0,e,f,Bb);d=e+Db;g=a.J;var h=a.K,k,m=null.style.color,r=a.ja=10;a.D=r;a.I=d;a.ba=a.aa=Db;k||(k=a.W||a.aa+"px "+Eb);a.Y=a.W=k;g&&(a.N=g);h&&(a.H=h,a.U=m||"white");a.L=a.N.width/24|0;if(null==b)Fb(a,"Mouse over memory to dump");else for(Fb(a,ja(b,8,!0),null,0,1),k=1;16>=k;k++){d="";for(g=1;8>=g;g++)h=a.oa,m=b++,h=h.Y[(m&h.D)>>>h.B].Bd(m&h.C,m),Fb(a,ja(h,2),null,1), +d+=32<=h&&128>h?String.fromCharCode(h):".";Fb(a,d,null,0,1)}a.context.drawImage(a.J,0,e,f,Bb,a.pa,a.ra,a.la,a.qa)}a.M=c}}}function Fb(a,b,c,d,e){a.H.font=a.Y;a.H.fillStyle=a.U;a.H.fillText(b,a.D,a.I);a.D+=a.L;null!=c&&(16!=a.ma?b=c.toString():(b=8>a.da?"0x":"",b+=ja(c,a.da)),a.H.fillText(b,a.D,a.I),a.D+=a.L);d&&(a.D+=a.L*d);e&&(a.D=a.ja,a.I+=(a.ba+2)*(e||1))} +function ub(){for(var a=!1,b=cb(document,"pcx86","panel"),c=0;c>2,Ab=xb,Cb="black",Bb=xb>>1;Ma(ub); +function Gb(a,b,c){u.call(this,"Bus",a);this.R=b;this.Ea=c;this.F=a.busWidth||20;this.N=Math.pow(2,this.F);this.W=this.D=this.N-1|0;this.B=32==this.F||20>=this.F?12:24>=this.F?14:15;this.A=1<>2;this.C=this.A-1;this.H=this.N/this.A|0;this.K=this.H-1;this.I=[];this.J=[];this.L=[];this.M=[];a=new w;Hb(a,this.Ea);this.Y=Array(this.H);for(b=0;b>>a.B;0g&&(r=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.ee)return k.xe+=k.ee-f,k.ee=f,!0;if(f>=k.ee+k.xe){r=k.size-(f-m);r>g&&(r=g);k.xe=f-k.ee+r;f=m+a.A;g-=r;h++;continue}}return Kb(a,Lb,f,g)}f=new w(f,r,a.A,d,e);Hb(f,a.Ea,k);a.Y[h++]=f;f=m+a.A;g-=r}return 0>=g?(e=a.R,e.pa&-2147483648&&Mb(e),a.R.X.cb||(e=c/1024|0,a.status((e?e+"Kb ":c+" bytes ")+Nb[d]+" at "+ja(b))),!0):Kb(a,Pb,b,c)} +function Ib(a,b){32==a.F?b?a.G&&(Qb(a,1048576,1048576,a.G),a.G=null):a.G||(a.G=Rb(a,1048576,1048576),Qb(a,1048576,1048576,Rb(a,0,1048576))):20>>this.B;0>>a.B;0>>=a.B;0>>a.B;0>>this.B].oc(a&this.C,a)};function bc(a,b){var c=b&a.C,d=(b&a.D)>>>a.B;return c!=a.C?a.Y[d].$e(c,b):a.Y[d++].Bd(c,b)|a.Y[d&a.K].Bd(0,b+1)<<8} +l.Bb=function(a,b){this.Y[(a&this.D)>>>this.B].pc(a&this.C,b&255,a)};function cc(a,b,c){var d=b&a.C,e=(b&a.D)>>>a.B;d!=a.C?a.Y[e].qh(d,c&65535,b):(a.Y[e++].ef(d,c&255,b),a.Y[e&a.K].ef(0,c>>8&255,b+1))} +function dc(a,b){var c=0,d=[],e=!a.G&&a.W==a.D;e||Ib(a,!0);for(var f=0;f>>=f)&k;if(void 0!==g&&g[0])g[0](b,k,e);f+=h<<3;b+=h;c-=h}}function Kb(a,b,c,d,e){b="Memory block error ("+b+": "+ja(c)+","+ja(d)+")";e?a.Ea?a.Ea.message(b):a.log(b):q(b);return!1} +var zb,ic={Pl:20,count:8,Go:1,type:3},jc=0,kc;for(kc in ic){var lc=ic[kc];ic[kc]={Il:(1<>1),this.S=new Int32Array(this.L,0,c>>2),Tb(this,Yb?Zb:$b);else{this.S=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};l.nh=function(a,b,c){this.pc(a++,b&255,c++);this.pc(a++,b>>8&255,c++);this.pc(a++,b>>16&255,c++);this.pc(a,b>>>24,c)};l.Um=function(a){return this.S[a>>2]>>>((a&3)<<3)&255}; +l.fn=function(a){var b=a>>2;a=(a&3)<<3;var c=this.S[b]>>a;return 24>a?c&65535:c&255|(this.S[b+1]&255)<<8};l.$m=function(a){var b=a>>2;a=(a&3)<<3;var c=this.S[b];a&&(c=c>>>a|this.S[b+1]<<32-a);return c};l.vn=function(a,b){var c=a>>2;a=(a&3)<<3;this.S[c]=this.S[c]&~(255<>2;a=(a&3)<<3;24>a?this.S[c]=this.S[c]&~(65535<>8);this.Fa=!0}; +l.Bn=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.S[c]=b;this.Fa=!0};l.Tm=function(a,b){this.F&&zc(this.F,b,1,!1);return this.Bd(a,b)};l.en=function(a,b){this.F&&zc(this.F,b,2,!1);return this.$e(a,b)};l.Zm=function(a,b){this.F&&zc(this.F,b,4,!1);return this.hh(a,b)};l.un=function(a,b,c){this.F&&zc(this.F,c,1,!0);this.H||this.ef(a,b,c)};l.Gn=function(a,b,c){this.F&&zc(this.F,c,2,!0);this.H||this.qh(a,b,c)}; +l.An=function(a,b,c){this.F&&zc(this.F,c,4,!0);this.H||this.R(a,b,c)};l.Wm=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.oc(a,b)};l.hn=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.Ze(a,b)};l.bn=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.Rd(a,b)};l.xn=function(a,b,c){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.M;this.J.pc(a,b,c)}; +l.Jn=function(a,b,c){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.M;this.J.gf(a,b,c)};l.Dn=function(a,b,c){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.M;this.J.ff(a,b,c)};l.Xm=function(a,b){return Ac(this.F,b,!1).oc(a,b)};l.jn=function(a,b){return Ac(this.F,b,!1).Ze(a,b)};l.cn=function(a,b){return Ac(this.F,b,!1).Rd(a,b)};l.yn=function(a,b,c){Ac(this.F,c,!0).pc(a,b,c)};l.Kn=function(a,b,c){Ac(this.F,c,!0).gf(a,b,c)};l.En=function(a,b,c){Ac(this.F,c,!0).ff(a,b,c)};l.Sm=function(a){return this.Ha[a]}; +l.Ej=function(a){return this.Ha[a]};l.Vm=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.oc=this.Ej;return this.Ha[a]};l.dn=function(a){return this.K.getUint16(a,!0)};l.Jj=function(a){return a&1?this.Ha[a]|this.Ha[a+1]<<8:this.ud[a>>1]};l.gn=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.Ze=this.Jj;return a&1?this.Ha[a]|this.Ha[a+1]<<8:this.ud[a>>1]};l.Ym=function(a){return this.K.getInt32(a,!0)}; +l.Gj=function(a){return a&3?this.Ha[a]|this.Ha[a+1]<<8|this.Ha[a+2]<<16|this.Ha[a+3]<<24:this.S[a>>2]};l.an=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.Rd=this.Gj;return a&3?this.Ha[a]|this.Ha[a+1]<<8|this.Ha[a+2]<<16|this.Ha[a+3]<<24:this.S[a>>2]};l.tn=function(a,b){this.Ha[a]=b;this.Fa=!0};l.Qj=function(a,b){this.Ha[a]=b;this.Fa=!0};l.wn=function(a,b){this.Ha[a]=b;this.A.S[this.C]|=32;this.B.S[this.D]|=96;this.pc=this.Qj;this.J.Fa=!0}; +l.Fn=function(a,b){this.K.setUint16(a,b,!0);this.Fa=!0};l.Sj=function(a,b){a&1?(this.Ha[a]=b,this.Ha[a+1]=b>>8):this.ud[a>>1]=b;this.Fa=!0};l.In=function(a,b){a&1?(this.Ha[a]=b,this.Ha[a+1]=b>>8):this.ud[a>>1]=b;this.A.S[this.C]|=32;this.B.S[this.D]|=96;this.gf=this.Sj;this.J.Fa=!0};l.zn=function(a,b){this.K.setInt32(a,b,!0);this.Fa=!0};l.Rj=function(a,b){a&3?(this.Ha[a]=b,this.Ha[a+1]=b>>8,this.Ha[a+2]=b>>16,this.Ha[a+3]=b>>24):this.S[a>>2]=b;this.Fa=!0}; +l.Cn=function(a,b){a&3?(this.Ha[a]=b,this.Ha[a+1]=b>>8,this.Ha[a+2]=b>>16,this.Ha[a+3]=b>>24):this.S[a>>2]=b;this.A.S[this.C]|=32;this.B.S[this.D]|=96;this.ff=this.Rj;this.J.Fa=!0};function Bc(a){pb&&!Yb&&(a=a<<24|a<<8&16711680|a>>8&65280|a>>>24);return a} +var pc=0,Xb=2,qc=5,tc=6,Nb="NONE RAM ROM VIDEO H/W UNPAGED PAGED".split(" "),oc=0,vc=[],ac=[w.prototype.Um,w.prototype.vn,w.prototype.fn,w.prototype.Hn,w.prototype.$m,w.prototype.Bn],yc=[w.prototype.Tm,w.prototype.un,w.prototype.en,w.prototype.Gn,w.prototype.Zm,w.prototype.An],uc=[w.prototype.Wm,w.prototype.xn,w.prototype.hn,w.prototype.Jn,w.prototype.bn,w.prototype.Dn],sc=[w.prototype.Xm,w.prototype.yn,w.prototype.jn,w.prototype.Kn,w.prototype.cn,w.prototype.En]; +if(pb)var $b=[w.prototype.Sm,w.prototype.tn,w.prototype.dn,w.prototype.Fn,w.prototype.Ym,w.prototype.zn],Zb=[w.prototype.Ej,w.prototype.Qj,w.prototype.Jj,w.prototype.Sj,w.prototype.Gj,w.prototype.Rj],Cc=[w.prototype.Vm,w.prototype.wn,w.prototype.gn,w.prototype.In,w.prototype.an,w.prototype.Cn]; +function Dc(a,b){u.call(this,"CPU",a);b=a.cycles||b;var c=a.multiplier||1;this.V={};this.V.yd=b;this.V.zi=this.V.sg=this.V.md=c;this.V.Gf=Math.round(this.V.yd/1E4)/100;this.V.hd=this.V.re=this.V.Gf*this.V.md;this.X.Pj=this.X.cb=this.X.Zf=!1;this.X.Gd=a.autoStart;this.X.ei=!1;this.X.zf=!1;this.V.Hf=this.V.se=0;this.V.If=a.csStart;this.V.Le=a.csInterval;this.V.Me=a.csStop;this.qa=[];this.pi=this.kn.bind(this)}ca(Dc,u);l=Dc.prototype; +l.kc=function(a,b,c,d){this.na=a;this.oa=b;this.Ea=d;for(b=0;ba.V.md)b=a.V.md;a.V.yi=Math.round(1E3/Hc);a.V.Ml=Math.floor(a.V.yd/Hc*b);a.V.sg=b} +function Sc(a,b){var c=a.Ic+a.Sc+a.dd-a.A;b&&1a.V.Gf&&(c=Math.round(c/a.V.md));return c}function Ic(a){a.Ic=a.Sc=a.dd=a.A=0;Jc(a);Pc(a,a.V.zi)} +function Pc(a,b,c){if(void 0!==b){0b[1])&&(c=a.V.yd*a.V.sg/1E3*c|0,a.X.cb&&(c+=Vc(a)),b[1]=c)}function Wc(a){for(var b=[],c=0;cthis.V.yi&&(this.V.Zc+=a,this.V.Zc>this.V.Ke&&(this.V.Zc=this.V.Ke))}try{this.X.Zf=!1;do{for(var b,c=this.X.zf?1:this.V.yd*this.V.sg|0,d=this.qa.length-1;0<=d;d--){var e=this.qa[d];0>e[1]||c>e[1]&&(c=e[1])}b=c;if(this.U){Xc(this.U);var f=this.U,a=b,g=f.qa[0];if(g.Ld){var h=(Sc(f.R,f.M)-g.jd)/f.Ba|0,k=Yc(f,0)-h;g.mode==Zc&&(k-=h);var m=k*f.Ba|0;g.mode==Zc&&(m>>= +1);a>m&&(a=m)}b=a;var r=this.U,a=b;if(r.A&&r.A[$c]&ad){var y=r.Y-Sc(r.R,r.M);0y&&(a=y)}b=a}try{this.uh(b)}catch(N){if("number"!=typeof N)throw N;}for(var a=b=Vc(this),t=this.qa.length-1;0<=t;t--){var z=this.qa[t];0>z[1]||(z[1]-=a,0>=z[1]&&(z[1]=-1,z[3](),0<=z[2]&&Uc(this,t,z[2])))}a=b;if(this.X.zf){var D=!1;this.V.Hf=this.V.Hf+this.li()|0;this.V.se-=a;0>=this.V.se&&(this.V.se+=this.V.Le,D=!0);0<=this.V.Me&&this.V.Me<=Sc(this)&&(this.V.Le=this.V.Me=-1,Jc(this),Mc(this),D=!0);D&&this.qb(Sc(this)+ +" cycles: checksum="+ja(this.V.Hf))}}while(this.X.cb&&!this.X.Zf)}catch(N){Mc(this);Lc(this);this.na&&this.na.stop(va(),Sc(this));nb(this,N.stack||N.message);return}if(this.X.cb){b=setTimeout;c=this.pi;this.V.Od=va();d=this.V.yi;this.V.Jf&&(d=Math.round(d*this.V.Jf/this.V.Ml));d-=this.V.Od-this.V.Ke;if(e=this.V.Od-this.V.Zc)this.V.hd=Math.round(this.Sc/(10*e))/100,864E5<=e&&(this.Ic=0,this.U&&Xc(this.U,!0),Pc(this));0>d?(-1E3>d&&(this.V.Zc-=d),d=0):this.V.hd>>0)+b>this.C&&(8088>=this.A.ca?this.A.K|=8:x.call(this.A,13));return this.va+a|0};l.ai=function(a,b){return(a>>>0)+b<=this.C?this.va+a|0:this.wf()};l.fk=function(a,b){return(a>>>0)+b>this.C?this.va+a|0:this.wf()};l.wf=function(){x.call(this.A,13,0);return-1};l.ci=function(a,b){return(a>>>0)+b<=this.C?this.va+a|0:this.yf()};l.gk=function(a,b){return(a>>>0)+b>this.C?this.va+a|0:this.yf()};l.yf=function(){x.call(this.A,13,0);return-1}; +function hd(a,b,c,d,e){a.ha=b;a.va=d;a.jb=e;a.C=(e>>>0)+1;a.nb=c;a.type=c&7936;a.ext=c>>16&192;a.cc=(b&4?a.A.mc.va:a.A.Jb)+(b&65528)|0;a.id>>0)+1;a.nb=e;a.type=e&7936;a.ext=0;a.cc=b;a.id>>0)+1,a.nb=a.B.nb,a.type=a.B.type,a.ext=a.B.ext,a.cc=a.B.cc,a.B.ha=-1,dd(a,!0,!0,!1),a.va;a.B.ha=-1;var f=e.ga(b+0),g=e.ga(b+4),h=g&7936,k=e.ga(b+2)|(g&255)<<16,m=e.ga(b+6),r=c&65528;if(80386<=e.ca){var y=f,k=k|(m&65280)<<16,f=f|(m&15)<<16;m&128&&(f=f<<12|4095)}switch(a.id){case kd:var t=a.D;a.ne=!1;if(t&&c==ld&&a.F.length){var z=a.F[a.Ye-1];if(z&&!z())return-1}var D=c&3,N=(g&24576)>>13,z=-1,P,aa;r|| +b>=e.Jb&&b=a.tb&&(D>a.tb&&(z=A(e),md(e,A(e),!0),B(e,z),a.ne=!0),z=0);else{if(256==h||2304==h)return nd(a,c,t)?a.va:-1;if(1024==h)z=2,aa=0,Dh||2048==(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,11,c&65532),-1}break;case gd:if(!r||4096>h||512!=(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,12, +c&65532),-1;break;case id:t=h&-513;if(!r||256!=t&&2304!=t)return x.call(e,13,c&65532),-1;2304==t&&(a.Vh=k+e.ga(k+102)|0,a.ck=k+a.jb|0);break;case fd:if(!(h&4096)&&768>>0)+1,a.nb=g,a.type=h,a.ext=m,a.cc=b,dd(a,!0,!0,!1));return k} +function nd(a,b,c){var d=a.A,e=a.tb,f=d.la.ha,g=d.la.va;if(!c){if(!(d.la.type&512))return x.call(d,13,b&65532),!1;d.Za(d.la.cc+4,d.la.nb&=-513)}if(-1===d.la.load(b))return!1;var h=d.la.va;if(!1!==c){if(d.la.type&512)return x.call(d,13,b&65532),!1;d.Za(d.la.cc+4,d.la.nb|=512)}d.la.type=d.la.type&-513|d.la.nb&512;256==d.la.type||768==d.la.type?(d.Za(g+14,F(d)),d.Za(g+16,wd(d)),d.Za(g+18,d.F),d.Za(g+20,d.H),d.Za(g+22,d.L),d.Za(g+24,d.G),d.Za(g+26,C(d)),d.Za(g+28,d.M),d.Za(g+30,d.J),d.Za(g+32,d.I),d.Za(g+ +34,d.xa.ha),d.Za(g+36,d.fa.ha),d.Za(g+38,d.W.ha),d.Za(g+40,d.Ga.ha),d.mc.load(d.ga(h+42)),xd(d,d.ga(h+16)|(c?16384:0)),d.F=d.ga(h+18),d.H=d.ga(h+20),d.L=d.ga(h+22),d.G=d.ga(h+24),d.M=d.ga(h+28),d.J=d.ga(h+30),d.I=d.ga(h+32),d.xa.load(d.ga(h+34)),d.Ga.load(d.ga(h+40)),yd(d,d.ga(h+14),d.ga(h+36)),b=38,g=26,a.tb>>0)+1)}; +function dd(a,b,c,d){void 0===c&&(c=!!(a.A.pa&1));a.ke=!1;if(c)if(a.load=a.Ff,a.vi=a.Fl,a.sb=a.ai,a.Kb=a.ci,void 0===d&&(d=!!(a.A.N&131072)),d)a.load=a.J,a.sb=a.H,a.Kb=a.I,a.tb=a.jc=3,a.T=2,a.O=a.ta=65535,a.jb=65535,a.C=a.jb+1,a.Jc=a.T,a.cc=-1,a.ne=!1;else{if(!(a.ha&-4))a.sb=a.wf,a.Kb=a.yf;else if(a.type&4096){6144==(a.type&6656)&&(a.sb=a.wf);if(a.type&2048||!(a.type&512))a.Kb=a.yf;1024==(a.type&3072)&&(a.sb==a.ai&&(a.sb=a.fk),a.Kb==a.ci&&(a.Kb=a.gk),a.ke=!0);b&&a.id>13,80386>a.A.ca||!(a.ext&64)?(a.T=2,a.O=65535):(a.T=4,a.O=-1),a.Jc=a.T,a.ta=a.O)}else a.load=a.wi,a.vi=a.Gl,a.sb=a.xf,a.Kb=a.xf,a.tb=a.jc=0,a.cc=-1,a.ne=!1}var kd=1,vd=2,gd=3,id=4,fd=6,ld=1; +function Ad(a){var b,c=+a.model||8088;switch(c){default:b=4772727;break;case 80286:b=6E6;break;case 80386:b=16E6}Dc.call(this,a,b);this.ca=c;a=a.stepping;this.pd=c+(a?ia(a,16):0);this.Qh=61442;this.od=1792;this.Oh=28672;this.hf=4;this.Ma=255;this.B=80286<=this.ca?rb:qb;this.ra=Bd;this.Zh=Cd;this.$h=Dd;this.di=Ed;if(80186<=this.ca&&(this.ra=Bd.slice(),this.Zh=Cd.slice(),this.$h=Dd.slice(),this.Ma=31,this.ra[15]=Fd,this.ra[96]=Gd,this.ra[97]=Hd,this.ra[98]=Id,this.ra[99]=Fd,this.ra[100]=Fd,this.ra[101]= +Fd,this.ra[102]=Fd,this.ra[103]=Fd,this.ra[104]=Jd,this.ra[105]=Kd,this.ra[106]=Ld,this.ra[107]=Md,this.ra[108]=Nd,this.ra[109]=Od,this.ra[110]=Pd,this.ra[111]=Qd,this.ra[192]=Rd,this.ra[193]=Sd,this.ra[200]=Td,this.ra[201]=Ud,this.ra[241]=Vd,this.Zh[7]=Wd,this.$h[7]=Wd,80286<=this.ca)){this.Qh=2;this.od|=28672;this.hf=0;this.ra[15]=Xd;this.cd=Yd.slice();for(c=0;c=this.pd&&(this.cd[166]=fe,this.cd[167]=ge)}}this.lf=[];this.Uh=[];this.ag=0;Ic(this);this.X.complete=this.X.hk=!1;this.ji=0;this.Nc=this.Y=[];this.Eb=this.Rh=this.Db=this.jf=this.ze=this.Ae=this.Dc=0;he(this)}ca(Ad,Dc); +function Mb(a){var b;if(a.Y===a.Nc){a.Y=Array(a.jf);a.mf=new w(null,0,0,qc,null,a);Hb(a.mf,a.Ea);for(b=0;b>>20,f=a.Nc[(a.Vc+e&a.Ae)>>>a.Eb],g=f.Rd(e);if(!(g&1))return d||je.call(a,b,!1,c),a.Ce;if(!(g&4)&&3==a.La)return d||je.call(a,b,!0,c),a.Ce;var h=(b&4190208)>>>10,g=a.Nc[((g&-4096)+h&a.Ae)>>>a.Eb],k=g.Rd(h);if(!(k&1))return d||je.call(a,b,!1,c),a.Ce;if(!(k&4)&&3==a.La)return d||je.call(a,b,!0,c),a.Ce;c=a.Nc[((k&-4096)+(b&4095)&a.Ae)>>>a.Eb];if(d)return c;d=b>>>a.Eb;k=a.Y[d];b&=-4096;var m;0>2;b.B=g;b.D=h>>2;pb&&Yb&&c.S&&!c.controller&&!c.fe&&!c.ge?(b.Ha=c.Ha,b.ud=c.ud,b.S=c.S,Tb(b,Cc)):(b.I=c?Bc(32):0,b.M=c?Bc(96):0,Tb(b,uc));Hb(b,a.Ea,k);a.Y[d]=b;a.kf.push(d);return b}function ke(a){a.Y!==a.Nc&&(a.Y=a.Nc,a.mf=null,a.kf=null,a.Ce=null)}l=Ad.prototype;l.reset=function(){he(this);Ic(this);this.X.error=!1}; +function le(a,b){var c;switch(b){case 0:c=a.F;break;case 1:c=a.H;break;case 2:c=a.L;break;case 3:c=a.G;break;case 4:c=C(a);break;case 5:c=a.M;break;case 6:c=a.J;break;case 7:c=a.I}return c}function me(a,b,c){switch(b){case 0:a.F=c;break;case 1:a.H=c;break;case 2:a.L=c;break;case 3:a.G=c;break;case 4:B(a,c);break;case 5:a.M=c;break;case 6:a.J=c;break;case 7:a.I=c}} +function he(a){a.F=0;a.G=0;a.H=0;a.L=0;a.lc=0;a.M=0;a.J=0;a.I=0;a.fc=!1;a.Ba=a.Sa=0;a.Jl=[0,0];a.Ol=[0,0];a.ua=0;a.gi=0;a.aa=0;a.pa=65520;a.Xb=0;a.Qc=1023;a.N=a.Zb=0;a.Zd=a.De=a.sd=a.$d=0;a.sc=-1;a.Tc=a.uc=-1;a.Uc=a.ma=-1;a.fa=new cd(a,kd,"CS");a.Ga=new cd(a,vd,"DS");a.xa=new cd(a,vd,"ES");a.W=new cd(a,gd,"SS");B(a,0);md(a,0);if(80386<=a.ca){switch(a.pd){case 80562:case 80563:a.L=771;break;case 80578:a.L=772;break;case 80594:a.L=773;break;case 80595:case 80596:a.L=776}a.pa=16;a.si=0;a.rd=0;a.Vc=0; +a.Cb=[0,0,0,0,null,null,0,0];a.pf=[null,null,null,null,null,null,0,0];a.rb=new cd(a,vd,"FS");a.vb=new cd(a,vd,"GS");ke(a)}a.cg=new cd(a,0,"NULL");a.Ca=a.Ga;a.Gb=a.W;a.K=a.ba=0;a.C=a.D=-1;a.Da=a.cg;a.Qa=0;if(80286>a.ca)yd(a,0,65535);else{a.Jb=0;a.Oc=65535;a.mc=new cd(a,5,"LDT",!0);a.la=new cd(a,id,"TSS",!0);a.gb=new cd(a,fd,"VER",!0);yd(a,65520,61440);var b,c=F(a);b=a.fa;var d=-65536;80386>b.A.ca&&(d&=16777215);b=b.va=d;a.da=b+c|0;a.bg=(b>>>0)+(a.fa.jb>>>0)+1}xd(a,0);pd(a)} +function ne(a){2==a.Jc?(a.ni=a.ga,a.Yb=oe,a.ec=pe,a.Rc=qe,2==a.T?(a.ja=re,a.za=se,a.eb=te):(a.ja=ue,a.za=ve,a.eb=we)):(a.ni=a.ea,a.Yb=xe,a.ec=ye,a.Rc=ze,2==a.T?(a.ja=Ae,a.za=Be,a.eb=Ce):(a.ja=De,a.za=Ee,a.eb=Fe))}function qd(a,b){a.T!=b&&(a.ba|=1024,a.T=b,a.O=2==b?65535:-1,Ge(a))}function Ge(a){2==a.T?(a.wb=32768,a.mb=a.ga,a.Lb=a.Za,2==a.Jc?(a.ja=re,a.za=se,a.eb=te):(a.ja=Ae,a.za=Be,a.eb=Ce)):(a.wb=-2147483648,a.mb=a.ea,a.Lb=a.Ta,2==a.Jc?(a.ja=ue,a.za=ve,a.eb=we):(a.ja=De,a.za=Ee,a.eb=Fe))} +function He(a){a.Jc=a.fa.Jc;a.ta=a.fa.ta;ne(a);a.T=a.fa.T;a.O=a.fa.O;Ge(a);a.ba&=-3073}l.li=function(){var a=this.F+this.G+this.H+this.L+C(this)+this.M+this.J+this.I|0;return a=a+F(this)+this.fa.ha+this.Ga.ha+this.W.ha+this.xa.ha+wd(this)|0};function Ie(a,b,c){void 0===a.lf[b]&&(a.lf[b]=[]);a.lf[b].push(c)}function Je(a,b){var c=a.Uh[b];null!=c&&(c(--a.ag),delete a.Uh[b])} +function Ke(a,b){for(var c=a.Cb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Cb[e],g=g&~(d>>2&3);if(b){var g=a.Y[g>>>a.Eb],h=a;f?g.ge++||(h&&(g.F=h),xc(g,yc,!1)):g.fe++||(h&&(g.F=h),wc(g,yc,!1))}else g=a.Y[g>>>a.Eb],f?--g.ge||(f=g,f.pc=f.H?f.oh:f.ef,f.gf=f.H?f.ph:f.qh,f.ff=f.H?f.nh:f.R):--g.fe||(f=g,f.oc=f.Bd,f.Ze=f.$e,f.Rd=f.hh)}c>>=2;d>>=4}} +function zc(a,b,c,d){if(!(a.K&8192)&&a.Cb[7]&255){c--;var e=a.Cb[7],f=e>>16;d=d?1:0==d?3:0;for(var g=0;4>g;g++){if(e&3&&(f&3)==d){var h=f>>2;if(b+c>=a.Cb[g]&&b<=a.Cb[g]+h){a.Cb[6]|=1<>=2;f>>=4}}}function pd(a,b,c){void 0===b&&(b=!!(a.pa&1));void 0===c&&(c=!!(a.N&131072));a.di=b&&!c?Le:Ed;dd(a.fa,!1,b,c);dd(a.Ga,!1,b,c);dd(a.W,!1,b,c);dd(a.xa,!1,b,c);80386<=a.ca&&(dd(a.rb,!1,b,c),dd(a.vb,!1,b,c));He(a)} +l.save=function(a){var b=new Me(this);b.set(0,[this.F,this.G,this.H,this.L,C(this),this.M,this.J,this.I]);var c=F(this),d=this.fa.save(),e=this.Ga.save(),f=this.W.save(),g=this.xa.save(),h;null!=this.Jb?(h=[this.pa,this.Jb,this.Oc,this.Xb,this.Qc,this.mc.save(),this.la.save(),this.Zb],80386<=this.ca&&(h.push(this.si),h.push(this.rd),h.push(this.Vc),h.push(this.Cb),h.push(this.pf))):h=null;c=[c,d,e,f,g,h,wd(this)];80386<=this.ca&&(c.push(this.rb.save()),c.push(this.vb.save()));b.set(1,c);b.set(2,[this.Ca.Xf, +this.Gb.Xf,this.K,this.ba,this.Qa,this.C,this.D]);b.set(3,[0,this.Ic,this.V.md,a,Wc(this)]);b.set(4,dc(this.oa,!!(this.pa&-2147483648)));return b.data()}; +l.restore=function(a){var b=a[0];this.F=b[0];this.G=b[1];this.H=b[2];this.L=b[3];var c=b[4];this.M=b[5];this.J=b[6];this.I=b[7];b=a[1];this.fa.restore(b[1]);this.Ga.restore(b[2]);this.W.restore(b[3]);this.xa.restore(b[4]);var d=b[5];d&&d.length&&(this.pa=d[0],this.Jb=d[1],this.Oc=d[2],this.Xb=d[3],this.Qc=d[4],this.mc.restore(d[5]),this.la.restore(d[6]),this.Zb=d[7],80386<=this.ca&&(this.si=d[8],this.rd=d[9],this.Vc=d[10],this.Cb=d[11],this.pf=d[12]),pd(this));xd(this,b[6]);var d=!1,e;a:{e=this.oa; +var f=a[4],g;for(g=0;g>>0)+(a.fa.jb>>>0)+1;a.La=a.fa.tb;He(a)} +function yd(a,b,c,d){var e=a.fa;e.Ye=b;e.D=d;b=e.load(c);return-1!==b?(Pe(a,b+(a.fa.Ye&a.fa.O)),a.fa.ne):null}function Qe(a,b){var c=(a.da>>>0)+b;c>a.bg&&(8088>=a.ca?(c=a.fa.va+(c-a.bg&a.O),2==b&&(a.K|=8)):x.call(a,13,0));return c|0}function Re(a){a.da=a.Uc}function C(a){return a.lc&~a.W.ta|a.Aa-a.W.va}function B(a,b){a.lc=b;a.Aa=a.W.va+(b&a.W.ta)|0} +function Se(a,b,c,d,e,f){if(63!=(e&63)&&e!=a.resultType){var g=(e^a.resultType)&a.resultType;g&&(g&1&&Te(a),g&2&&Ue(a),g&4&&Ve(a),g&8&&We(a),g&16&&Xe(a),g&32&&Ye(a))}f?(a.Zd=d,a.sd=b):(a.Zd=b,a.sd=d);a.De=c;a.$d=d;a.resultType=e}function Ze(a,b,c,d,e){a.resultType=c|26;a.$d=b;d?$e(a):af(a);e?bf(a):cf(a);return b}function df(a,b,c,d){c&d?$e(a):af(a);(b^c)&d?bf(a):cf(a)}function ef(a){return Te(a)?1:0} +function Te(a){a.resultType&1&&(a.N&=-2,(a.Zd^(a.Zd^a.De)&(a.De^a.sd))&a.resultType&-2147450752&&(a.N|=1),a.resultType&=-2);return a.N&1}function Ue(a){a.resultType&2&&(a.N&=-5,38505>>((a.$d^a.$d>>4)&15)&1&&(a.N|=4),a.resultType&=-3);return a.N&4}function Ve(a){a.resultType&4&&(a.N&=-17,(a.sd^a.Zd^a.De)&16&&(a.N|=16),a.resultType&=-5);return a.N&16}function We(a){a.resultType&8&&(a.N&=-65,a.$d&((a.resultType&-2147450752)-1|a.resultType&-2147450752)||(a.N|=64),a.resultType&=-9);return a.N&64} +function Xe(a){a.resultType&16&&(a.N&=-129,a.$d&a.resultType&-2147450752&&(a.N|=128),a.resultType&=-17);return a.N&128}function Ye(a){a.resultType&32&&(a.N&=-2049,(a.Zd^a.sd)&(a.De^a.sd)&a.resultType&-2147450752&&(a.N|=2048),a.resultType&=-33);return a.N&2048}function af(a){a.resultType&=-2;a.N&=-2}function ff(a){a.resultType&=-5;a.N&=-17}function gf(a){a.resultType&=-9;a.N&=-65}function cf(a){a.resultType&=-33;a.N&=-2049}function $e(a){a.resultType&=-2;a.N|=1} +function hf(a){a.resultType&=-5;a.N|=16}function jf(a){a.resultType&=-9;a.N|=64}function bf(a){a.resultType&=-33;a.N|=2048}function wd(a){return a.N&-2262|Te(a)|Ue(a)|Ve(a)|We(a)|Xe(a)|Ye(a)}function kf(a,b){b|=a.pa&1|65520;a.pa=a.pa&-65536|b&65535;a.pa&1&&pd(a,!0)}function xd(a,b,c){a.pa&1||(b&=~a.Oh);void 0===c&&(c=a.La);c?b=b&-12289|a.N&12288:a.Zb=(b&12288)>>12;c>a.Zb&&(b=b&-513|a.N&512);a.resultType=128;a.N=a.N&~(a.od|2261)|b&(a.od|2261)|a.Qh;a.N&256&&(a.Qa|=2,a.K|=4)} +function lf(a,b,c){var d=0;if(a.pa&1&&(a.La>a.Zb||a.N&131072)&&a.la.Vh)for(var e=a.la.Vh+(b>>>3),d=(1<>>=8,e++;return d?(x.call(a,13,0),!1):!0} +l.Ab=function(a,b,c){switch(b){case "EAX":case "EBX":case "ECX":case "EDX":case "ESP":case "EBP":case "ESI":case "EDI":case "EIP":case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "IP":case "PC":case "CS":case "DS":case "SS":case "ES":case "FS":case "GS":case "CR0":case "CR2":case "CR3":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "V":this.ia[b]=c;this.ji++;a=!0;break;default:a=Dc.prototype.Ab.call(this,a,b,c)}return a}; +function mf(a,b,c,d){var e=(d?a.Nc:a.Y)[(b&a.Dc)>>>a.Eb];e&&e.type==qc&&(e=Ac(a,b,!1,!0));if(e){var f=b&a.Db;if(!c||1==c)return e.Bd(f,b);if(2==c)return f>>this.Eb].oc(a&this.Db,a)}; +l.ga=function(a){var b=a&this.Db,c=(a&this.Dc)>>>this.Eb;this.A-=this.B.Of;if(b>>this.Eb;if(b>>this.Eb].pc(a&this.Db,b&255,a)}; +l.Za=function(a,b){var c=a&this.Db,d=(a&this.Dc)>>>this.Eb;this.A-=this.B.Of;c>8&255,a+1))};l.Ta=function(a,b){var c=a&this.Db,d=(a&this.Dc)>>>this.Eb;this.A-=this.B.Of;if(c>>=8}};function nf(a,b,c){a.Da=b;a.fb=c&a.ta;a.C=b.sb(a.fb,1);return a.K&1?0:a.Ia(a.C)} +function I(a,b){return nf(a,a.Ca,b)}function J(a,b){return nf(a,a.Gb,b)}function of(a,b,c){a.Da=b;a.fb=c&a.ta;a.C=b.sb(a.fb,a.T);if(a.K&9){if(a.K&1)return 0;a=a.Ia(a.C)|a.Ia(b.sb(0,1))<<8}else a=a.mb(a.C);return a}function K(a,b){a.Da=a.Ca;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,2);if(a.K&9){if(a.K&1)return 0;b=a.Ia(a.C)|a.Ia(a.Da.sb(0,1))<<8;a.K&=-9}else b=a.ga(a.C);return b} +function L(a,b){a.Da=a.Gb;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,2);if(a.K&9){if(a.K&1)return 0;b=a.Ia(a.C)|a.Ia(a.Da.sb(0,1))<<8;a.K&=-9}else b=a.ga(a.C);return b}function M(a,b){a.Da=a.Ca;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,4);return a.K&1?0:a.ea(a.C)}function O(a,b){a.Da=a.Gb;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,4);return a.K&1?0:a.ea(a.C)}function pf(a,b){a.K&2||a.Bb(a.Da.Kb(a.fb,1),b)}function qf(a,b){if(!(a.K&2)){var c=a.Da.Kb(a.fb,2);a.K&8?(a.Bb(c,b),a.Bb(a.Da.Kb(0,1),b>>8),a.K&=-9):a.Za(c,b)}} +function rf(a,b){a.K&2||a.Ta(a.Da.Kb(a.fb,4),b)}function rd(a,b,c){c=b.sb(c,a.T);a.K&8?(b=a.Ia(c)|a.Ia(b.sb(0,1))<<8,a.K&=-9):b=a.mb(c);return b}function sf(a,b,c,d){c=b.Kb(c,a.T);a.K&8?(a.Bb(c,d),a.Bb(b.Kb(0,1),d>>8),a.K&=-9):a.Lb(c,d)}l.ka=function(){var a=Qe(this,1),b=this.Ia(this.da);this.da=a;return b};function tf(a){var b,c=Qe(a,2);a.K&8?(b=a.Ia(a.da)|a.Ia(c-1)<<8,a.K&=-9):b=a.ga(a.da);a.da=c;return b} +function Q(a){var b,c=Qe(a,a.Jc);a.K&8?(b=a.Ia(a.da)|a.Ia(c-1)<<8,a.K&=-9):b=a.ni(a.da);a.da=c;return b}l.ya=function(){var a,b=Qe(this,this.T);this.K&8?(a=this.Ia(this.da)|this.Ia(b-1)<<8,this.K&=-9):a=this.mb(this.da);this.da=b;return a};l.P=function(){var a=Qe(this,1),b=this.Ia(this.da)<<24>>24;this.da=a;return b}; +function A(a){var b=a.mb(a.Aa);a.Aa=a.Aa+a.T|0;var c=(a.ti>>>0)-(a.Aa>>>0);0>c&&(8088>=a.ca?(B(a,a.Aa-a.W.va&a.W.ta),-1>c&&(b=b&255|a.Ia(a.Aa-1)<<8)):-1>c?x.call(a,12,0):(!a.W.ke&&a.W.jb==a.W.ta||a.W.ke&&!a.W.jb)&&B(a,a.Aa-a.W.va&a.W.ta));return b}function E(a,b){sd(a,b,a.T)} +function sd(a,b,c,d){d=void 0===d?c:d;var e=a.Aa-c|0,f=(e>>>0)-(a.ui>>>0);if(0>f){if(8088>=a.ca&&-1==f){a.Bb(e+1,b>>8);B(a,e-a.W.va&a.W.ta);a.Bb(a.Aa,b);return}if(!a.W.ke&&a.W.jb==a.W.ta||a.W.ke&&!a.W.jb){if(f>-c){x.call(a,12,0);return}B(a,e-a.W.va&a.W.ta);e=a.Aa}else{x.call(a,12,0);return}}switch(d){case 1:a.Bb(e,b);break;case 2:a.Za(e,b);break;case 4:a.Ta(e,b)}a.Aa=e} +function uf(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.ca)2this.ca?0:1;for(var b=0;2>b;b++){switch(a){case 0:if(this.Qa&1&&this.N&512){var c=vf(this.U);if(-1<=c&&(this.Qa&=-2,0<=c)){this.Qa&=-5;wf.call(this,c);break a}}break;case 1:if(this.Qa&2){this.Qa&=-3;80386<= +this.ca&&(this.Cb[6]|=16384);wf.call(this,1);break a}}a=1-a}}if(this.Qa&4){this.K=this.A=0;break}}this.K=0;this.ra[this.ka()].call(this)}while(0>11;Af(this);Bf(this,a[b++]);for(c=0;c=Cf&&Df(a,Ef))}function Af(a){a.Z&=-129;a.Z&~a.F&63&&(a.Z|=128);if(a.Z&128&&!(a.F&128))return a=a.U,a.ca>=Cf?Ff(a,Ef):a.da&Gf||wf.call(a.R,2),!0;a=a.U;a.ca>=Cf&&Df(a,Ef);return!1}function Hf(a,b){80387<=a.ca||(b&=-65);a.Z|=b;return Af(a)} +function If(a,b){return isFinite(b)?!0:!Hf(a,Infinity===b?8:16)}function Jf(a,b,c){var d=null;null!=b&&null!=c&&(d=b+c,If(a,d)||(d=null));return d}function Kf(a,b,c){var d=null;null!=b&&null!=c&&(d=b-c,If(a,d)||(d=null));return d}function Lf(a,b,c){var d=null;null!=b&&null!=c&&(d=b*c,If(a,d)||(d=null));return d}function Mf(a,b,c){var d=null;null==b||null==c||!c&&Hf(a,2)||(d=b/c,If(a,d)||(d=null));return d} +function Nf(a,b,c){if(null!=b&&null!=c){var d=0;isNaN(b)||isNaN(c)?d=17664:(b-=c,0>b?d=256:b||(d=16384));a.Z=a.Z&-18177|d;return!0}return!1}function Of(a,b,c){if(null==b)return null;var d=a.F&3072;d?d=1024==d||3072==d&&0=c){if(Hf(a,1))return null;d=-c}else if(d<-c){if(Hf(a,1))return null;d=-c}a.G[0]=d|0;2147483648d&&(a.G[1]=-1))}return d} +function Pf(a,b){var c=3;a.C&1<=c;c<<=1)3!=(b&3)&&(a.C|=c),b>>=2}function Qf(a){var b=a.B+0&7;return a.C&1<>20&2047;var e=2147483648|(d&1048575)<<11|c>>>21;2047==b?b=32767:b?b+=15360:e&=2147483647;a.D[0]=c<<11;a.D[1]=e;a.D[2]=d>>16&32768|b;d=a.D}return d}function Vf(a){return a.R.ga(a.R.C)<<16>>16} +function Wf(a){return a.R.ea(a.R.C)}function Xf(a){a.ja[0]=a.R.ea(a.R.C);return a.Y[0]}function Yf(a){a.G[0]=a.R.ea(a.R.C);a.G[1]=a.R.ea(a.R.C+4);return a.K[0]}function Zf(a){a.D[0]=a.R.ea(a.R.C);a.D[1]=a.R.ea(a.R.C+4);a.D[2]=a.R.ga(a.R.C+8);return a.D}l.lh=function(){this.R.Ta(this.R.C,this.G[0])};l.Oj=function(){this.R.Ta(this.R.C,this.G[0]);this.R.Ta(this.R.C+4,this.G[1])};function $f(a){a.R.Ta(a.R.C,a.D[0]);a.R.Ta(a.R.C+4,a.D[1]);a.R.Za(a.R.C+8,a.D[2])} +function ag(a,b){var c=b[1],d=(b[2]&32768)>>4,e=b[2]&32767;b=b[0]>>>11|c<<21;c=c>>11&1048575;32767==e?e=2047:e&&(e+=-15360,0>=e&&(e=2047,b=c=0));a.G[0]=b;a.G[1]=c|(d|e)<<20;return a.K[0]}function bg(a,b){for(var c=0,d=1;b--;)c+=(a&15)*d,d*=10,a>>=4;return c}function cg(a,b){for(var c=0,d=0;b--;)c|=a%10<>11;Af(a);Bf(a,d.mb(b+=d.T));!(d.pa&1)||d.N&131072?(a.I=d.mb(b+=d.T),c=d.mb(b+=d.T),a.N=c&2047,a.I|=(c&-4096)<<4,a.L=-1,a.J=d.mb(b+=d.T),a.J|=(d.mb(b+=d.T)&-4096)<<4,a.M=-1):(a.I=d.mb(b+=d.T),c=d.mb(b+=d.T),a.L=c&65535,a.N=c>>16&2047,a.J=d.mb(b+=d.T),a.M=d.mb(b+=d.T)&65535);return b+d.T} +function gg(a,b){var c=a.R;c.Lb(b,a.F);c.Lb(b+=c.T,a.Z|a.B<<11);c.Lb(b+=c.T,zf(a));if(!(c.pa&1)||c.N&131072){var d=(a.L<<4)+a.I;c.Lb(b+=c.T,d);c.Lb(b+=c.T,d>>4&-4096|a.N);d=(a.M<<4)+a.J;c.Lb(b+=c.T,d);c.Lb(b+=c.T,d>>4&-4096)}else c.Lb(b+=c.T,a.I),c.Lb(b+=c.T,a.L|a.N<<16),c.Lb(b+=c.T,a.J),c.Lb(b+=c.T,a.M);return b+c.T}function hg(){this.Z&=-32896;Af(this)}function ig(){Nf(this,R(this,0),R(this,this.A))}function jg(){Nf(this,R(this,0),R(this,this.A))&&dg(this)}function kg(){jg.call(this)} +function lg(){S(this,0,Mf(this,R(this,0),Xf(this)))}function mg(){this.C&=~(1<>20&2047)-1023),this.G[1]=(this.G[1]|1072693248)&-1073741825,eg(this,this.K[0]))},102:function(){this.B=this.B-1&7;this.Z&=-513},103:function(){this.B=this.B+1&7;this.Z&=-513},112:function(){S(this, +0,R(this,0)%R(this,1))},113:function(){S(this,1,R(this,1)*Math.log(R(this,0)+1)/Math.LN2)&&dg(this)},114:function(){var a=R(this,0),b=null;if(0<=a||!Hf(this,1))b=Math.sqrt(a),If(this,b)||(b=null);S(this,0,b)},116:function(){S(this,0,Of(this,R(this,0),Fg))},117:function(){var a=R(this,0),b=R(this,1);null!=a&&null!=b&&S(this,0,a*Math.pow(2,0>>0);eg(this,a)},6:function(){var a= +Of(this,dg(this));null!=a&&(this.D[0]=cg(a,8),this.D[1]=cg(a/1E8,8),this.D[2]=cg(a/1E16,2),0>a&&(this.D[2]|=32768),$f(this))},7:function(){null!=Of(this,R(this,0),Fg)&&(this.Oj(),dg(this))},48:function(){mg.call(this);dg(this)},49:zg,50:ug,51:ug,52:xg}},Hg=[hg,ng,og,pg,qg,rg,vg,sg,wg,xg];Ma(function(){for(var a=cb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.B.Ci;(bd)&&x.call(this,5);this.K|=2;return a}function Qg(a,b){var c=0;if(b){gf(this);for(var d=1;d&this.O;){if(b&d){a=c;break}d<<=1;c++}}else jf(this);this.A-=11+3*c;return a}function Rg(a,b){var c=0;if(b){gf(this);for(var d=2==this.T?15:31,e=1<>>=1;c++;d--}}else jf(this);this.A-=11+3*c;return a} +function Sg(a,b){a&1<<(b&(2==this.T?15:31))?$e(this):af(this);this.A-=-1===this.C?3:6;this.K|=2;return a}function Tg(a,b){b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=-1===this.C?6:8;return a^b}function Ug(a,b){b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=-1===this.C?6:8;return a&~b}function Vg(a,b){b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=-1===this.C?6:8;return a|b} +function Wg(a,b){if(-1===this.C)return Sg.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=6;this.K|=2;return a}function Xg(a,b){if(-1===this.C)return Tg.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=8;return a^b} +function Yg(a,b){if(-1===this.C)return Ug.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=8;return a&~b}function Zg(a,b){if(-1===this.C)return Vg.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=8;return a|b} +function $g(a,b){Se(this,a,b,a-b|0,191,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zg:this.B.zb;this.K|=2;return a}function ah(a,b){Se(this,a,b,a-b|0,this.wb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zg:this.B.zb;this.K|=2;return a} +function bh(a){if(this.qd){var b=this.qd,c=this.gi,d=this.aa,e=d>>3&7;b.A=d&7;var f=(3>(d>>6&3)?0:48)+e;(217==c||219==c)&&52<=f&&(f=e<<4|b.A);if(e=Gg[c][f]){if(0>Hg.indexOf(e)){var f=b.R,g=f.Uc;8087==b.ca&&(f.ba&16&&g++,f.ba&32&&g++);b.L=f.fa.ha;b.I=g-f.fa.va;-1!==f.C&&(b.M=f.Da.ha,b.J=f.C-f.Da.va);b.N=(c&7)<<8|d}e.call(b)}}this.A-=-1===this.C?2:8;return a}function ch(a){if(80186>this.ca)return T.call(this,a);x.call(this,13,0);return a}function Wd(a){x.call(this,6);return a} +function T(a){Zd.call(this);return a}function dh(a,b){a=eh.call(this,this.P(),b);80386>this.ca&&(this.A-=12);return a}function fh(a,b){a=this.ya();a=2==this.T?eh.call(this,a,b):gh.call(this,a,b);80386>this.ca&&(this.A-=12);return a}function hh(a,b){var c=!1;0>b&&(b=-b|0,c=!c);0>a&&(a=-a|0,c=!c);ih.call(this,a,b);c&&(this.Ba=~this.Ba+1|0,this.Sa=~this.Sa+(this.Ba?0:1)|0)} +function eh(a,b){a=(a<<16>>16)*(b<<16>>16)|0;32767a?($e(this),bf(this)):(af(this),cf(this));this.A-=-1===this.C?9:12;return a&65535}function gh(a,b){hh.call(this,a,b);this.Sa!=this.Ba>>31?($e(this),bf(this)):(af(this),cf(this));this.A-=-1===this.C?9:12;return this.Ba}function jh(a,b){this.A-=14+(-1===this.C?0:2);gf(this);-1!==this.gb.load(b)&&this.gb.jc>=this.La&&this.gb.jc>=(b&3)&&(jf(this),a=this.gb.nb&-256,2=this.La)&&this.gb.jc>=(b&3))return jf(this),this.gb.jb;gf(this);return a}function qh(a,b){if(-1===this.C)return Zd.call(this),a;md(this,this.ga(this.C+this.T));this.A-=this.B.te;return b} +function rh(a,b){this.A-=-1===this.D?-1===this.C?this.B.lj:this.B.kj:this.B.ij;return b}function sh(a,b){switch(this.aa>>3&7){case 4:this.ua=this.F;break;case 5:this.ua=this.H;break;case 6:this.ua=this.L;break;case 7:this.ua=this.G}return b}function th(a,b){return b} +function uh(a,b){a=this.aa>>3&7;switch(a){case 0:this.ua=this.F;break;case 2:this.ua=this.L;break;case 3:this.ua=this.G;break;default:if(80286==this.ca||80386==this.ca&&4!=a&&5!=a)x.call(this,6);else switch(a){case 1:this.ua=this.H;break;case 4:this.ua=C(this);break;case 5:this.ua=this.M;break;case 6:this.ua=this.J;break;case 7:this.ua=this.I}}return rh.call(this,0,b)} +function vh(a,b){switch(this.aa>>3&7){case 0:b=this.xa.ha;break;case 1:b=this.fa.ha;break;case 2:b=this.W.ha;break;case 3:b=this.Ga.ha;break;case 4:if(80386<=this.ca){b=this.rb.ha;break}x.call(this,6);b=a;break;case 5:if(80386<=this.ca){b=this.vb.ha;break}default:x.call(this,6),b=a}-1!==this.D&&qd(this,2);return rh.call(this,0,b)} +function ih(a,b){if(a&-65536||b&-65536){var c=b&65535;b>>>=16;var d=a&65535;a>>>=16;var e=c*d,d=(e>>>16)+b*d,f=d>>>16,d=(d&65535)+c*a;this.Ba=d<<16|e&65535;this.Sa=f+((d>>>16)+b*a)|0}else this.Ba=a*b|0,this.Sa=0}function wh(a,b){this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return Ze(this,a|b,128)}function xh(a,b){this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return Ze(this,a|b,this.wb)&this.O} +function yh(a,b){var c=a-b-ef(this)|0;Se(this,a,b,c,191,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&255}function zh(a,b){var c=a-b-ef(this)|0;Se(this,a,b,c,this.wb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&this.O}function Ah(){return Ye(this)?1:0}function Bh(){return Te(this)?1:0}function Ch(){return Te(this)?0:1}function Dh(){return We(this)?1:0}function Eh(){return We(this)?0:1}function Fh(){return Te(this)||We(this)?1:0} +function Gh(){return Te(this)||We(this)?0:1}function Hh(){return Xe(this)?1:0}function Ih(){return Xe(this)?0:1}function Jh(){return Ue(this)?1:0}function Kh(){return Ue(this)?0:1}function Lh(){return!Xe(this)!=!Ye(this)?1:0}function Mh(){return!Xe(this)!=!Ye(this)?0:1}function Nh(){return We(this)||!Xe(this)!=!Ye(this)?1:0}function Oh(){return We(this)||!Xe(this)!=!Ye(this)?0:1}function Ph(a,b){return Qh.call(this,a,b,this.ka())}function Rh(a,b){return Sh.call(this,a,b,this.ka())} +function Th(a,b){return Qh.call(this,a,b,this.H&31)}function Uh(a,b){return Sh.call(this,a,b,this.H&31)}function Vh(a,b){return Wh.call(this,a,b,this.ka())}function Xh(a,b){return ai.call(this,a,b,this.ka())}function bi(a,b){return Wh.call(this,a,b,this.H&31)}function ci(a,b){return ai.call(this,a,b,this.H&31)}function di(a,b){var c=a-b|0;Se(this,a,b,c,191,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&255} +function ei(a,b){var c=a-b|0;Se(this,a,b,c,this.wb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&this.O}function fi(a,b){Ze(this,a&b,128);this.A-=-1===this.D?-1===this.C?this.B.ah:this.B.Ue:this.B.Ue;this.K|=2;return a}function gi(a,b){Ze(this,a&b,this.wb);this.A-=-1===this.D?-1===this.C?this.B.ah:this.B.Ue:this.B.Ue;this.K|=2;return a}function hi(a,b){var c=this.F&this.O,d=(1<<(this.H&31))-1;return a&~(d<>(this.F&this.O)&(1<<(this.H&31))-1&this.O}function ji(a,b){if(-1===this.C){switch(this.aa&7){case 0:this.F=this.F&-256|a;break;case 1:this.H=this.H&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}this.A-=this.B.dh}else this.D=this.C,pf(this,a),this.A-=this.B.bh;return b} +function ki(a,b){if(-1===this.C){switch(this.aa&7){case 0:this.F=this.F&~this.O|a;break;case 1:this.H=this.H&~this.O|a;break;case 2:this.L=this.L&~this.O|a;break;case 3:this.G=this.G&~this.O|a;break;case 4:B(this,C(this)&~this.O|a);break;case 5:this.M=this.G&~this.O|a;break;case 6:this.J=this.J&~this.O|a;break;case 7:this.I=this.I&~this.O|a}this.A-=this.B.dh}else{this.D=this.C;if(!(this.K&2)){var c=this.Da.Kb(this.fb,this.T);this.K&8?(this.Bb(c,a),this.Bb(this.Da.Kb(0,1),a>>8),this.K&=-9):this.Lb(c, +a)}this.A-=this.B.bh}return b}function li(a,b){a^=b;Ze(this,a,128);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return a}function mi(a,b){this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return Ze(this,a^b,this.wb)&this.O}function ni(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function oi(a){var b=a-1|0;Se(this,a,1,b,this.wb|62,!0);this.A-=2;return a&~this.O|b&this.O} +function pi(a,b,c){c>>>=0;if(!c||c<=b>>>0)return!1;var d=0,e=1,f=this.Jl;f[0]=c>>>0;f[1]=0;c=this.Ol;c[0]=a>>>0;for(c[1]=b>>>0;0>>=0,a[1]++),e+=e;do 0<=ni(c,f)&&(a=c,b=f,a[0]-=b[0],a[1]-=b[1],0>a[0]&&(a[0]>>>=0,a[1]--),d+=e),a=f,a[0]>>>=1,a[1]&1&&(a[0]=(a[0]|2147483648)>>>0),a[1]>>>=1,e/=2;while(1<=e);this.Ba=d;this.Sa=c[0];return!0}function qi(a){var b=a+1|0;Se(this,a,1,b,this.wb|62);this.A-=2;return a&~this.O|b&this.O} +function zd(a){this.Vc=a;this.pa&-2147483648&&Mb(this)}function ri(a){this.K|=1;this.ec.call(this,a);this.A-=-1===this.C?4:5}function Qh(a,b,c){if(c){16>>16-c)&65535;Ze(this,a,32768,d&32768)}return a}function Sh(a,b,c){if(c){var d=a<>>32-c;Ze(this,a,-2147483648,d&-2147483648)}return a}function Wh(a,b,c){if(c){16>>c-1;a=(d>>>1|b<<16-c)&65535;Ze(this,a,32768,d&1)}return a} +function ai(a,b,c){if(c){var d=a>>>c-1;a=d>>>1|b<<32-c;Ze(this,a,-2147483648,d&1)}return a}function si(){this.A-=-1===this.C?2:this.B.yj;return 1}function ti(){var a=this.H&255;this.A-=(-1===this.C?this.B.Ug:this.B.Tg)+(a<this.sc?(-1!=this.Tc&&(this.Tc!==this.fa.ha&&(this.fa.tb=this.Tc&3,Oe(this,this.Tc)),this.Tc=-1),this.Uc!==this.da&&Pe(this,this.Uc),-1!=this.uc&&(this.uc!==this.W.ha&&md(this,this.uc),this.uc=-1),-1!==this.ma&&(this.ma!==this.Aa&&B(this,this.lc&~this.W.ta|this.ma-this.W.va),this.ma=-1)):8!=this.sc?(b=0,a=8):(b=0,a=-1,he(this),e=d=!1)):Pe(this,this.Uc);var f=a,g=b,h=mf(this,this.da);204!=h||this.Qc||(d=!1);this.N&131072&&(6==f&& +99==h||13==f&&205==h)&&(d=!1);983040<=this.da&&1048575>=this.da&&(d=!1);if(d){var k=this.X.cb,f="Fault "+ja(f,2,!0)+(null!=g?" ("+ja(g,4,!0)+")":"")+" on opcode "+ja(h,2,!0);d&&k&&(f+=" (blocked)");this.wa(f);Mc(this)}if(d&&e)throw-1;if(e)throw this.sc=a,yi.call(this,a,b,c),this.Uc=this.da,this.K=1==a?this.K|8192:this.K|4096,a;}function je(a,b,c){this.rd=a;a=0;b&&(a|=1);c&&(a|=2);3==this.La&&(a|=4);x.call(this,14,a)} +function Ai(a){var b=a.nb&7680;a.ha&65528&&(6144==b||7168==b||7168>b&&a.jc>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&255;break;case 1:b=this.H&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.F>>8&255;break;case 5:b=this.H>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=this.F&-256|a;break;case 1:this.H= +this.H&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function pe(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=I(this,this.G+this.J);this.D=this.C;break;case 1:b=I(this,this.G+this.I);this.D=this.C;break;case 2:b=J(this,this.M+this.J);this.D=this.C;break;case 3:b=J(this,this.M+this.I);this.D=this.C;break;case 4:b=I(this,this.J);this.D=this.C;break;case 5:b=I(this,this.I);this.D=this.C;break;case 6:b=I(this,Q(this));this.D=this.C;break;case 7:b=I(this,this.G);this.D=this.C;break;case 64:b=I(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=I(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=J(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=J(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=I(this,this.J+this.P());this.D=this.C;break;case 69:b=I(this,this.I+this.P());this.D=this.C;break;case 70:b=J(this,this.M+this.P());this.D=this.C;break;case 71:b=I(this,this.G+this.P());this.D=this.C;break;case 128:b=I(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:b=I(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:b=J(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:b=J(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:b=I(this,this.J+Q(this));this.D=this.C;break;case 133:b=I(this,this.I+Q(this));this.D=this.C;break;case 134:b=J(this,this.M+Q(this));this.D=this.C;break;case 135:b=I(this,this.G+Q(this));this.D=this.C;break;case 192:b=this.F&255;break;case 193:b=this.H&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.F>>8&255;break; +case 197:b=this.H>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b=this.G>>8&255;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&255;break;case 1:c=this.H&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.F>>8&255;break;case 5:c=this.H>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:pf(this,a);this.A-=this.B.Bc;break;case 1:case 2:pf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:pf(this, +a);this.A-=this.B.gc;break;case 6:pf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:pf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:pf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:pf(this,a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H= +this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function qe(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=I(this,this.G+this.J);this.D=this.C;break;case 1:c=I(this,this.G+this.I);this.D=this.C;break;case 2:c=J(this,this.M+this.J);this.D=this.C;break;case 3:c=J(this,this.M+this.I);this.D=this.C;break;case 4:c=I(this,this.J);this.D=this.C;break;case 5:c=I(this,this.I);this.D=this.C;break;case 6:c=I(this,Q(this));this.D=this.C;break;case 7:c=I(this,this.G);this.D=this.C;break;case 64:c=I(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=I(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=J(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=J(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=I(this,this.J+this.P());this.D=this.C;break;case 69:c=I(this,this.I+this.P());this.D=this.C;break;case 70:c=J(this,this.M+this.P());this.D=this.C;break;case 71:c=I(this,this.G+this.P());this.D=this.C;break;case 128:c=I(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:c=I(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:c=J(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:c=J(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:c=I(this,this.J+Q(this));this.D=this.C;break;case 133:c=I(this,this.I+Q(this));this.D=this.C;break;case 134:c=J(this,this.M+Q(this));this.D=this.C;break;case 135:c=I(this,this.G+Q(this));this.D=this.C;break;case 192:c=this.F&255;break;case 193:c=this.H&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break; +case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:pf(this,a);this.A-=this.B.Bc;break;case 1:case 2:pf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:pf(this,a);this.A-=this.B.gc;break;case 6:pf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:pf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:pf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:pf(this, +a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function re(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=K(this,this.G+this.J);this.A-=this.B.Bc;break;case 1:c=K(this,this.G+this.I);this.A-=this.B.Cc;break;case 2:c=L(this,this.M+this.J);this.A-=this.B.Cc;break;case 3:c=L(this,this.M+this.I);this.A-=this.B.Bc;break;case 4:c=K(this,this.J);this.A-=this.B.gc;break;case 5:c=K(this,this.I);this.A-=this.B.gc;break;case 6:c=K(this,Q(this));this.A-=this.B.$c;break;case 7:c=K(this,this.G);this.A-=this.B.gc;break;case 64:c=K(this,this.G+this.J+this.P()); +this.A-=this.B.Mb;break;case 65:c=K(this,this.G+this.I+this.P());this.A-=this.B.Nb;break;case 66:c=L(this,this.M+this.J+this.P());this.A-=this.B.Nb;break;case 67:c=L(this,this.M+this.I+this.P());this.A-=this.B.Mb;break;case 68:c=K(this,this.J+this.P());this.A-=this.B.Pa;break;case 69:c=K(this,this.I+this.P());this.A-=this.B.Pa;break;case 70:c=L(this,this.M+this.P());this.A-=this.B.Pa;break;case 71:c=K(this,this.G+this.P());this.A-=this.B.Pa;break;case 128:c=K(this,this.G+this.J+Q(this));this.A-=this.B.Mb; +break;case 129:c=K(this,this.G+this.I+Q(this));this.A-=this.B.Nb;break;case 130:c=L(this,this.M+this.J+Q(this));this.A-=this.B.Nb;break;case 131:c=L(this,this.M+this.I+Q(this));this.A-=this.B.Mb;break;case 132:c=K(this,this.J+Q(this));this.A-=this.B.Pa;break;case 133:c=K(this,this.I+Q(this));this.A-=this.B.Pa;break;case 134:c=L(this,this.M+Q(this));this.A-=this.B.Pa;break;case 135:c=K(this,this.G+Q(this));this.A-=this.B.Pa;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c= +this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&65535;break;case 1:b=this.H&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=C(this)&65535;break;case 5:b=this.M&65535;break;case 6:b=this.J&65535;break;case 7:b=this.I&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=this.F&-65536| +a;break;case 1:this.H=this.H&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:B(this,C(this)&-65536|a);break;case 5:this.M=this.M&-65536|a;break;case 6:this.J=this.J&-65536|a;break;case 7:this.I=this.I&-65536|a}} +function se(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=K(this,this.G+this.J);this.D=this.C;break;case 1:b=K(this,this.G+this.I);this.D=this.C;break;case 2:b=L(this,this.M+this.J);this.D=this.C;break;case 3:b=L(this,this.M+this.I);this.D=this.C;break;case 4:b=K(this,this.J);this.D=this.C;break;case 5:b=K(this,this.I);this.D=this.C;break;case 6:b=K(this,Q(this));this.D=this.C;break;case 7:b=K(this,this.G);this.D=this.C;break;case 64:b=K(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=K(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=L(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=L(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=K(this,this.J+this.P());this.D=this.C;break;case 69:b=K(this,this.I+this.P());this.D=this.C;break;case 70:b=L(this,this.M+this.P());this.D=this.C;break;case 71:b=K(this,this.G+this.P());this.D=this.C;break;case 128:b=K(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:b=K(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:b=L(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:b=L(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:b=K(this,this.J+Q(this));this.D=this.C;break;case 133:b=K(this,this.I+Q(this));this.D=this.C;break;case 134:b=L(this,this.M+Q(this));this.D=this.C;break;case 135:b=K(this,this.G+Q(this));this.D=this.C;break;case 192:b=this.F&65535;break;case 193:b=this.H&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=C(this)&65535; +break;case 197:b=this.M&65535;break;case 198:b=this.J&65535;break;case 199:b=this.I&65535;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&65535;break;case 1:c=this.H&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=C(this)&65535;break;case 5:c=this.M&65535;break;case 6:c=this.J&65535;break;case 7:c=this.I&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:qf(this,a);this.A-=this.B.Bc;break;case 1:case 2:qf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:qf(this, +a);this.A-=this.B.gc;break;case 6:qf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:qf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:qf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:qf(this,a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)&-65536|a);break; +case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a}} +function te(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=K(this,this.G+this.J);this.D=this.C;break;case 1:c=K(this,this.G+this.I);this.D=this.C;break;case 2:c=L(this,this.M+this.J);this.D=this.C;break;case 3:c=L(this,this.M+this.I);this.D=this.C;break;case 4:c=K(this,this.J);this.D=this.C;break;case 5:c=K(this,this.I);this.D=this.C;break;case 6:c=K(this,Q(this));this.D=this.C;break;case 7:c=K(this,this.G);this.D=this.C;break;case 64:c=K(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=K(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=L(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=L(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=K(this,this.J+this.P());this.D=this.C;break;case 69:c=K(this,this.I+this.P());this.D=this.C;break;case 70:c=L(this,this.M+this.P());this.D=this.C;break;case 71:c=K(this,this.G+this.P());this.D=this.C;break;case 128:c=K(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:c=K(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:c=L(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:c=L(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:c=K(this,this.J+Q(this));this.D=this.C;break;case 133:c=K(this,this.I+Q(this));this.D=this.C;break;case 134:c=L(this,this.M+Q(this));this.D=this.C;break;case 135:c=K(this,this.G+Q(this));this.D=this.C;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535; +break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:qf(this,a);this.A-=this.B.Bc;break;case 1:case 2:qf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:qf(this,a);this.A-=this.B.gc;break;case 6:qf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:qf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:qf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:qf(this, +a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)&-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a}} +function ue(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=M(this,this.G+this.J);this.A-=this.B.Bc;break;case 1:c=M(this,this.G+this.I);this.A-=this.B.Cc;break;case 2:c=O(this,this.M+this.J);this.A-=this.B.Cc;break;case 3:c=O(this,this.M+this.I);this.A-=this.B.Bc;break;case 4:c=M(this,this.J);this.A-=this.B.gc;break;case 5:c=M(this,this.I);this.A-=this.B.gc;break;case 6:c=M(this,Q(this));this.A-=this.B.$c;break;case 7:c=M(this,this.G);this.A-=this.B.gc;break;case 64:c=M(this,this.G+this.J+this.P()); +this.A-=this.B.Mb;break;case 65:c=M(this,this.G+this.I+this.P());this.A-=this.B.Nb;break;case 66:c=O(this,this.M+this.J+this.P());this.A-=this.B.Nb;break;case 67:c=O(this,this.M+this.I+this.P());this.A-=this.B.Mb;break;case 68:c=M(this,this.J+this.P());this.A-=this.B.Pa;break;case 69:c=M(this,this.I+this.P());this.A-=this.B.Pa;break;case 70:c=O(this,this.M+this.P());this.A-=this.B.Pa;break;case 71:c=M(this,this.G+this.P());this.A-=this.B.Pa;break;case 128:c=M(this,this.G+this.J+Q(this));this.A-=this.B.Mb; +break;case 129:c=M(this,this.G+this.I+Q(this));this.A-=this.B.Nb;break;case 130:c=O(this,this.M+this.J+Q(this));this.A-=this.B.Nb;break;case 131:c=O(this,this.M+this.I+Q(this));this.A-=this.B.Mb;break;case 132:c=M(this,this.J+Q(this));this.A-=this.B.Pa;break;case 133:c=M(this,this.I+Q(this));this.A-=this.B.Pa;break;case 134:c=O(this,this.M+Q(this));this.A-=this.B.Pa;break;case 135:c=M(this,this.G+Q(this));this.A-=this.B.Pa;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.L;break; +case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F;break;case 1:b=this.H;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=C(this);break;case 5:b=this.M;break;case 6:b=this.J;break;case 7:b=this.I;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=a;break;case 1:this.H=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:B(this,a);break;case 5:this.M= +a;break;case 6:this.J=a;break;case 7:this.I=a}} +function ve(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=M(this,this.G+this.J);this.D=this.C;break;case 1:b=M(this,this.G+this.I);this.D=this.C;break;case 2:b=O(this,this.M+this.J);this.D=this.C;break;case 3:b=O(this,this.M+this.I);this.D=this.C;break;case 4:b=M(this,this.J);this.D=this.C;break;case 5:b=M(this,this.I);this.D=this.C;break;case 6:b=M(this,Q(this));this.D=this.C;break;case 7:b=M(this,this.G);this.D=this.C;break;case 64:b=M(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=M(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=O(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=O(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=M(this,this.J+this.P());this.D=this.C;break;case 69:b=M(this,this.I+this.P());this.D=this.C;break;case 70:b=O(this,this.M+this.P());this.D=this.C;break;case 71:b=M(this,this.G+this.P());this.D=this.C;break;case 128:b=M(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:b=M(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:b=O(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:b=O(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:b=M(this,this.J+Q(this));this.D=this.C;break;case 133:b=M(this,this.I+Q(this));this.D=this.C;break;case 134:b=O(this,this.M+Q(this));this.D=this.C;break;case 135:b=M(this,this.G+Q(this));this.D=this.C;break;case 192:b=this.F;break;case 193:b=this.H;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=C(this);break;case 197:b=this.M;break; +case 198:b=this.J;break;case 199:b=this.I;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F;break;case 1:c=this.H;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=C(this);break;case 5:c=this.M;break;case 6:c=this.J;break;case 7:c=this.I;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:rf(this,a);this.A-=this.B.Bc;break;case 1:case 2:rf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:rf(this,a);this.A-=this.B.gc;break;case 6:rf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:rf(this, +a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:rf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:rf(this,a);this.A-=this.B.Pa;break;case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a}} +function we(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=M(this,this.G+this.J);this.D=this.C;break;case 1:c=M(this,this.G+this.I);this.D=this.C;break;case 2:c=O(this,this.M+this.J);this.D=this.C;break;case 3:c=O(this,this.M+this.I);this.D=this.C;break;case 4:c=M(this,this.J);this.D=this.C;break;case 5:c=M(this,this.I);this.D=this.C;break;case 6:c=M(this,Q(this));this.D=this.C;break;case 7:c=M(this,this.G);this.D=this.C;break;case 64:c=M(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=M(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=O(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=O(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=M(this,this.J+this.P());this.D=this.C;break;case 69:c=M(this,this.I+this.P());this.D=this.C;break;case 70:c=O(this,this.M+this.P());this.D=this.C;break;case 71:c=M(this,this.G+this.P());this.D=this.C;break;case 128:c=M(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:c=M(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:c=O(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:c=O(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:c=M(this,this.J+Q(this));this.D=this.C;break;case 133:c=M(this,this.I+Q(this));this.D=this.C;break;case 134:c=O(this,this.M+Q(this));this.D=this.C;break;case 135:c=M(this,this.G+Q(this));this.D=this.C;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break; +case 198:c=this.J;break;case 199:c=this.I}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:rf(this,a);this.A-=this.B.Bc;break;case 1:case 2:rf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:rf(this,a);this.A-=this.B.gc;break;case 6:rf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:rf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:rf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:rf(this, +a);this.A-=this.B.Pa;break;case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a}} +function xe(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=I(this,this.F);break;case 1:c=I(this,this.H);break;case 2:c=I(this,this.L);break;case 3:c=I(this,this.G);break;case 4:c=I(this,Ci.call(this,0));break;case 5:c=I(this,Q(this));break;case 6:c=I(this,this.J);break;case 7:c=I(this,this.I);break;case 64:c=I(this,this.F+this.P());break;case 65:c=I(this,this.H+this.P());break;case 66:c=I(this,this.L+this.P());break;case 67:c=I(this,this.G+this.P());break;case 68:c=I(this,Ci.call(this,1)+this.P()); +break;case 69:c=J(this,this.M+this.P());break;case 70:c=I(this,this.J+this.P());break;case 71:c=I(this,this.I+this.P());break;case 128:c=I(this,this.F+Q(this));break;case 129:c=I(this,this.H+Q(this));break;case 130:c=I(this,this.L+Q(this));break;case 131:c=I(this,this.G+Q(this));break;case 132:c=I(this,Ci.call(this,2)+Q(this));break;case 133:c=J(this,this.M+Q(this));break;case 134:c=I(this,this.J+Q(this));break;case 135:c=I(this,this.I+Q(this));break;case 192:c=this.F&255;break;case 193:c=this.H& +255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&255;break;case 1:b=this.H&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.F>>8&255;break;case 5:b=this.H>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F= +this.F&-256|a;break;case 1:this.H=this.H&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function ye(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=I(this,this.F);this.D=this.C;break;case 1:b=I(this,this.H);this.D=this.C;break;case 2:b=I(this,this.L);this.D=this.C;break;case 3:b=I(this,this.G);this.D=this.C;break;case 4:b=I(this,Ci.call(this,0));this.D=this.C;break;case 5:b=I(this,Q(this));this.D=this.C;break;case 6:b=I(this,this.J);this.D=this.C;break;case 7:b=I(this,this.I);this.D=this.C;break;case 64:b=I(this,this.F+this.P());this.D=this.C;break;case 65:b=I(this,this.H+this.P()); +this.D=this.C;break;case 66:b=I(this,this.L+this.P());this.D=this.C;break;case 67:b=I(this,this.G+this.P());this.D=this.C;break;case 68:b=I(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=J(this,this.M+this.P());this.D=this.C;break;case 70:b=I(this,this.J+this.P());this.D=this.C;break;case 71:b=I(this,this.I+this.P());this.D=this.C;break;case 128:b=I(this,this.F+Q(this));this.D=this.C;break;case 129:b=I(this,this.H+Q(this));this.D=this.C;break;case 130:b=I(this,this.L+Q(this));this.D= +this.C;break;case 131:b=I(this,this.G+Q(this));this.D=this.C;break;case 132:b=I(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:b=J(this,this.M+Q(this));this.D=this.C;break;case 134:b=I(this,this.J+Q(this));this.D=this.C;break;case 135:b=I(this,this.I+Q(this));this.D=this.C;break;case 192:b=this.F&255;break;case 193:b=this.H&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.F>>8&255;break;case 197:b=this.H>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b= +this.G>>8&255;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&255;break;case 1:c=this.H&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.F>>8&255;break;case 5:c=this.H>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H= +this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:pf(this,a)}} +function ze(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=I(this,this.F);this.D=this.C;break;case 1:c=I(this,this.H);this.D=this.C;break;case 2:c=I(this,this.L);this.D=this.C;break;case 3:c=I(this,this.G);this.D=this.C;break;case 4:c=I(this,Ci.call(this,0));this.D=this.C;break;case 5:c=I(this,Q(this));this.D=this.C;break;case 6:c=I(this,this.J);this.D=this.C;break;case 7:c=I(this,this.I);this.D=this.C;break;case 64:c=I(this,this.F+this.P());this.D=this.C;break;case 65:c=I(this,this.H+this.P()); +this.D=this.C;break;case 66:c=I(this,this.L+this.P());this.D=this.C;break;case 67:c=I(this,this.G+this.P());this.D=this.C;break;case 68:c=I(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=J(this,this.M+this.P());this.D=this.C;break;case 70:c=I(this,this.J+this.P());this.D=this.C;break;case 71:c=I(this,this.I+this.P());this.D=this.C;break;case 128:c=I(this,this.F+Q(this));this.D=this.C;break;case 129:c=I(this,this.H+Q(this));this.D=this.C;break;case 130:c=I(this,this.L+Q(this));this.D= +this.C;break;case 131:c=I(this,this.G+Q(this));this.D=this.C;break;case 132:c=I(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:c=J(this,this.M+Q(this));this.D=this.C;break;case 134:c=I(this,this.J+Q(this));this.D=this.C;break;case 135:c=I(this,this.I+Q(this));this.D=this.C;break;case 192:c=this.F&255;break;case 193:c=this.H&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c= +this.G>>8&255;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:pf(this,a)}} +function Ae(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=K(this,this.F);break;case 1:c=K(this,this.H);break;case 2:c=K(this,this.L);break;case 3:c=K(this,this.G);break;case 4:c=K(this,Ci.call(this,0));break;case 5:c=K(this,Q(this));break;case 6:c=K(this,this.J);break;case 7:c=K(this,this.I);break;case 64:c=K(this,this.F+this.P());break;case 65:c=K(this,this.H+this.P());break;case 66:c=K(this,this.L+this.P());break;case 67:c=K(this,this.G+this.P());break;case 68:c=K(this,Ci.call(this,1)+this.P()); +break;case 69:c=L(this,this.M+this.P());break;case 70:c=K(this,this.J+this.P());break;case 71:c=K(this,this.I+this.P());break;case 128:c=K(this,this.F+Q(this));break;case 129:c=K(this,this.H+Q(this));break;case 130:c=K(this,this.L+Q(this));break;case 131:c=K(this,this.G+Q(this));break;case 132:c=K(this,Ci.call(this,2)+Q(this));break;case 133:c=L(this,this.M+Q(this));break;case 134:c=K(this,this.J+Q(this));break;case 135:c=K(this,this.I+Q(this));break;case 192:c=this.F&65535;break;case 193:c=this.H& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&65535;break;case 1:b=this.H&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=C(this)&65535;break;case 5:b=this.M&65535;break;case 6:b=this.J&65535;break;case 7:b=this.I&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F= +this.F&-65536|a;break;case 1:this.H=this.H&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:B(this,C(this)&-65536|a);break;case 5:this.M=this.M&-65536|a;break;case 6:this.J=this.J&-65536|a;break;case 7:this.I=this.I&-65536|a}} +function Be(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=K(this,this.F);this.D=this.C;break;case 1:b=K(this,this.H);this.D=this.C;break;case 2:b=K(this,this.L);this.D=this.C;break;case 3:b=K(this,this.G);this.D=this.C;break;case 4:b=K(this,Ci.call(this,0));this.D=this.C;break;case 5:b=K(this,Q(this));this.D=this.C;break;case 6:b=K(this,this.J);this.D=this.C;break;case 7:b=K(this,this.I);this.D=this.C;break;case 64:b=K(this,this.F+this.P());this.D=this.C;break;case 65:b=K(this,this.H+this.P()); +this.D=this.C;break;case 66:b=K(this,this.L+this.P());this.D=this.C;break;case 67:b=K(this,this.G+this.P());this.D=this.C;break;case 68:b=K(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=L(this,this.M+this.P());this.D=this.C;break;case 70:b=K(this,this.J+this.P());this.D=this.C;break;case 71:b=K(this,this.I+this.P());this.D=this.C;break;case 128:b=K(this,this.F+Q(this));this.D=this.C;break;case 129:b=K(this,this.H+Q(this));this.D=this.C;break;case 130:b=K(this,this.L+Q(this));this.D= +this.C;break;case 131:b=K(this,this.G+Q(this));this.D=this.C;break;case 132:b=K(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:b=L(this,this.M+Q(this));this.D=this.C;break;case 134:b=K(this,this.J+Q(this));this.D=this.C;break;case 135:b=K(this,this.I+Q(this));this.D=this.C;break;case 192:b=this.F&65535;break;case 193:b=this.H&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=C(this)&65535;break;case 197:b=this.M&65535;break;case 198:b=this.J&65535;break; +case 199:b=this.I&65535;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&65535;break;case 1:c=this.H&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=C(this)&65535;break;case 5:c=this.M&65535;break;case 6:c=this.J&65535;break;case 7:c=this.I&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)& +-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a;break;default:qf(this,a)}} +function Ce(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=K(this,this.F);this.D=this.C;break;case 1:c=K(this,this.H);this.D=this.C;break;case 2:c=K(this,this.L);this.D=this.C;break;case 3:c=K(this,this.G);this.D=this.C;break;case 4:c=K(this,Ci.call(this,0));this.D=this.C;break;case 5:c=K(this,Q(this));this.D=this.C;break;case 6:c=K(this,this.J);this.D=this.C;break;case 7:c=K(this,this.I);this.D=this.C;break;case 64:c=K(this,this.F+this.P());this.D=this.C;break;case 65:c=K(this,this.H+this.P()); +this.D=this.C;break;case 66:c=K(this,this.L+this.P());this.D=this.C;break;case 67:c=K(this,this.G+this.P());this.D=this.C;break;case 68:c=K(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=L(this,this.M+this.P());this.D=this.C;break;case 70:c=K(this,this.J+this.P());this.D=this.C;break;case 71:c=K(this,this.I+this.P());this.D=this.C;break;case 128:c=K(this,this.F+Q(this));this.D=this.C;break;case 129:c=K(this,this.H+Q(this));this.D=this.C;break;case 130:c=K(this,this.L+Q(this));this.D= +this.C;break;case 131:c=K(this,this.G+Q(this));this.D=this.C;break;case 132:c=K(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:c=L(this,this.M+Q(this));this.D=this.C;break;case 134:c=K(this,this.J+Q(this));this.D=this.C;break;case 135:c=K(this,this.I+Q(this));this.D=this.C;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break; +case 199:c=this.I&65535;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)&-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a;break;default:qf(this,a)}} +function De(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=M(this,this.F);break;case 1:c=M(this,this.H);break;case 2:c=M(this,this.L);break;case 3:c=M(this,this.G);break;case 4:c=M(this,Ci.call(this,0));break;case 5:c=M(this,Q(this));break;case 6:c=M(this,this.J);break;case 7:c=M(this,this.I);break;case 64:c=M(this,this.F+this.P());break;case 65:c=M(this,this.H+this.P());break;case 66:c=M(this,this.L+this.P());break;case 67:c=M(this,this.G+this.P());break;case 68:c=M(this,Ci.call(this,1)+this.P()); +break;case 69:c=O(this,this.M+this.P());break;case 70:c=M(this,this.J+this.P());break;case 71:c=M(this,this.I+this.P());break;case 128:c=M(this,this.F+Q(this));break;case 129:c=M(this,this.H+Q(this));break;case 130:c=M(this,this.L+Q(this));break;case 131:c=M(this,this.G+Q(this));break;case 132:c=M(this,Ci.call(this,2)+Q(this));break;case 133:c=O(this,this.M+Q(this));break;case 134:c=M(this,this.J+Q(this));break;case 135:c=M(this,this.I+Q(this));break;case 192:c=this.F;break;case 193:c=this.H;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F;break;case 1:b=this.H;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=C(this);break;case 5:b=this.M;break;case 6:b=this.J;break;case 7:b=this.I;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=a;break;case 1:this.H=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:B(this, +a);break;case 5:this.M=a;break;case 6:this.J=a;break;case 7:this.I=a}} +function Ee(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=M(this,this.F);this.D=this.C;break;case 1:b=M(this,this.H);this.D=this.C;break;case 2:b=M(this,this.L);this.D=this.C;break;case 3:b=M(this,this.G);this.D=this.C;break;case 4:b=M(this,Ci.call(this,0));this.D=this.C;break;case 5:b=M(this,Q(this));this.D=this.C;break;case 6:b=M(this,this.J);this.D=this.C;break;case 7:b=M(this,this.I);this.D=this.C;break;case 64:b=M(this,this.F+this.P());this.D=this.C;break;case 65:b=M(this,this.H+this.P()); +this.D=this.C;break;case 66:b=M(this,this.L+this.P());this.D=this.C;break;case 67:b=M(this,this.G+this.P());this.D=this.C;break;case 68:b=M(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=O(this,this.M+this.P());this.D=this.C;break;case 70:b=M(this,this.J+this.P());this.D=this.C;break;case 71:b=M(this,this.I+this.P());this.D=this.C;break;case 128:b=M(this,this.F+Q(this));this.D=this.C;break;case 129:b=M(this,this.H+Q(this));this.D=this.C;break;case 130:b=M(this,this.L+Q(this));this.D= +this.C;break;case 131:b=M(this,this.G+Q(this));this.D=this.C;break;case 132:b=M(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:b=O(this,this.M+Q(this));this.D=this.C;break;case 134:b=M(this,this.J+Q(this));this.D=this.C;break;case 135:b=M(this,this.I+Q(this));this.D=this.C;break;case 192:b=this.F;break;case 193:b=this.H;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=C(this);break;case 197:b=this.M;break;case 198:b=this.J;break;case 199:b=this.I;break;default:b=0}switch(this.aa>> +3&7){case 0:c=this.F;break;case 1:c=this.H;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=C(this);break;case 5:c=this.M;break;case 6:c=this.J;break;case 7:c=this.I;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a;break;default:rf(this,a)}} +function Fe(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=M(this,this.F);this.D=this.C;break;case 1:c=M(this,this.H);this.D=this.C;break;case 2:c=M(this,this.L);this.D=this.C;break;case 3:c=M(this,this.G);this.D=this.C;break;case 4:c=M(this,Ci.call(this,0));this.D=this.C;break;case 5:c=M(this,Q(this));this.D=this.C;break;case 6:c=M(this,this.J);this.D=this.C;break;case 7:c=M(this,this.I);this.D=this.C;break;case 64:c=M(this,this.F+this.P());this.D=this.C;break;case 65:c=M(this,this.H+this.P()); +this.D=this.C;break;case 66:c=M(this,this.L+this.P());this.D=this.C;break;case 67:c=M(this,this.G+this.P());this.D=this.C;break;case 68:c=M(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=O(this,this.M+this.P());this.D=this.C;break;case 70:c=M(this,this.J+this.P());this.D=this.C;break;case 71:c=M(this,this.I+this.P());this.D=this.C;break;case 128:c=M(this,this.F+Q(this));this.D=this.C;break;case 129:c=M(this,this.H+Q(this));this.D=this.C;break;case 130:c=M(this,this.L+Q(this));this.D= +this.C;break;case 131:c=M(this,this.G+Q(this));this.D=this.C;break;case 132:c=M(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:c=O(this,this.M+Q(this));this.D=this.C;break;case 134:c=M(this,this.J+Q(this));this.D=this.C;break;case 135:c=M(this,this.I+Q(this));this.D=this.C;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}a=a[this.aa>> +3&7].call(this,c,b.call(this));switch(d){case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a;break;default:rf(this,a)}} +function Ci(a){var b=this.ka(),c=b>>6,d,e;switch(b>>3&7){case 0:d=this.F;break;case 1:d=this.H;break;case 2:d=this.L;break;case 3:d=this.G;break;case 4:d=0;break;case 5:d=this.M;break;case 6:d=this.J;break;case 7:d=this.I}switch(b&7){case 0:e=this.F;break;case 1:e=this.H;break;case 2:e=this.L;break;case 3:e=this.G;break;case 4:e=C(this);this.Ca=this.Gb;break;case 5:a?(e=this.M,this.Ca=this.Gb):e=Q(this);break;case 6:e=this.J;break;case 7:e=this.I}return(d<>8&255;9<(c&15)||Ve(this)?(c+=6,80286<=this.ca&&255>8&255;9<(c&15)||Ve(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.F=this.F&-65536|d<<8|c;a?$e(this):af(this);b?hf(this):ff(this);this.A-=this.B.Pd},function(){this.F=qi.call(this,this.F)},function(){this.H=qi.call(this,this.H)},function(){this.L=qi.call(this,this.L)},function(){this.G=qi.call(this,this.G)},function(){B(this, +qi.call(this,C(this)))},function(){this.M=qi.call(this,this.M)},function(){this.J=qi.call(this,this.J)},function(){this.I=qi.call(this,this.I)},function(){this.F=oi.call(this,this.F)},function(){this.H=oi.call(this,this.H)},function(){this.L=oi.call(this,this.L)},function(){this.G=oi.call(this,this.G)},function(){B(this,oi.call(this,C(this)))},function(){this.M=oi.call(this,this.M)},function(){this.J=oi.call(this,this.J)},function(){this.I=oi.call(this,this.I)},function(){E(this,this.F&this.O);this.A-= +this.B.tc},function(){E(this,this.H&this.O);this.A-=this.B.tc},function(){E(this,this.L&this.O);this.A-=this.B.tc},function(){E(this,this.G&this.O);this.A-=this.B.tc},function(){E(this,C(this)-2&65535);this.A-=this.B.tc},function(){E(this,this.M&this.O);this.A-=this.B.tc},function(){E(this,this.J&this.O);this.A-=this.B.tc},function(){E(this,this.I&this.O);this.A-=this.B.tc},function(){this.F=this.F&~this.O|A(this);this.A-=this.B.ac},function(){this.H=this.H&~this.O|A(this);this.A-=this.B.ac},function(){this.L= +this.L&~this.O|A(this);this.A-=this.B.ac},function(){this.G=this.G&~this.O|A(this);this.A-=this.B.ac},function(){B(this,C(this)&~this.O|A(this));this.A-=this.B.ac},function(){this.M=this.M&~this.O|A(this);this.A-=this.B.ac},function(){this.J=this.J&~this.O|A(this);this.A-=this.B.ac},function(){this.I=this.I&~this.O|A(this);this.A-=this.B.ac},Di,Ei,Fi,Gi,Hi,Ii,Ji,Ki,Li,Mi,Ni,Oi,Pi,Qi,Ri,Si,Di,Ei,Fi,Gi,Hi,Ii,Ji,Ki,Li,Mi,Ni,Oi,Pi,Qi,Ri,Si,Ti,function(){this.eb.call(this,hj,this.ya);this.A-=-1===this.D? +1:this.B.Nf},Ti,function(){this.eb.call(this,hj,this.P);this.A-=-1===this.D?1:this.B.Nf},function(){this.ec.call(this,fi)},function(){this.za.call(this,gi)},function(){this.Yb.call(this,ji)},function(){this.ja.call(this,ki)},Vi,Wi,Xi,Yi,function(){this.K|=1;this.za.call(this,vh)},function(){this.K|=1;this.Ca=this.Gb=this.cg;this.ja.call(this,lh)},function(){var a;this.ja.call(this,uh);switch(this.aa>>3&7){case 0:a=this.F;this.F=this.ua;ud(this,a);break;case 1:a=this.H;this.H=this.ua;Oe(this,a);break; +case 2:a=this.L;this.L=this.ua;md(this,a);break;case 3:a=this.G;this.G=this.ua;td(this,a);break;case 4:a=C(this);B(this,this.ua);80386<=this.ca?this.rb.load(a):ud(this,a);break;case 5:a=this.M;this.M=this.ua;80386<=this.ca?this.vb.load(a):Oe(this,a);break;case 6:a=this.J;this.J=this.ua;md(this,a);break;case 7:a=this.I,this.I=this.ua,td(this,a)}},function(){this.K|=1;this.ma=this.Aa;this.ua=A(this);this.eb.call(this,ij,wi);this.ma=-1},function(){this.A-=3},function(){var a=this.F;this.F=this.F&~this.O| +this.H&this.O;this.H=this.H&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.L&this.O;this.L=this.L&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.G&this.O;this.G=this.G&~this.O|a&this.O;this.A-=3},function(){var a=this.F,b=C(this);this.F=this.F&~this.O|b&this.O;B(this,b&~this.O|a&this.O);this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.M&this.O;this.M=this.M&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F& +~this.O|this.J&this.O;this.J=this.J&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.I&this.O;this.I=this.I&~this.O|a&this.O;this.A-=3},function(){this.F=2==this.T?this.F&-65536|this.F<<24>>24&65535:this.F<<16>>16;this.A-=2},function(){this.L=2==this.T?this.L&-65536|(this.F&32768?65535:0):this.F&-2147483648?-1:0;this.A-=this.B.Ei},function(){xi.call(this,this.ya(),tf(this));this.A-=this.B.Hi},function(){this.A-=3},function(){var a=wd(this);a&131072&&3>this.Zb?x.call(this, +13,0):(E(this,a&-196609),this.A-=this.B.tc)},function(){if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{var a=A(this),a=a&65535|this.N&-65536;xd(this,a);this.A-=this.B.ac}},function(){var a=this.F>>8&255;a&1?$e(this):af(this);a&4?(this.resultType&=-3,this.N|=4):(this.resultType&=-3,this.N&=-5);a&16?hf(this):ff(this);a&64?jf(this):gf(this);a&128?(this.resultType&=-17,this.N|=128):(this.resultType&=-17,this.N&=-129);this.A-=this.B.Ob},function(){this.F=this.F&-65281|(wd(this)&213)<<8;this.A-=this.B.Ob}, +function(){var a=this.F&-256,b;b=Q(this);b=this.Ia(this.Ca.sb(b,1));this.F=a|b;this.A-=this.B.Jg},function(){this.F=this.F&~this.O|rd(this,this.Ca,Q(this));this.A-=this.B.Jg},function(){var a=Q(this),b=this.F;this.Bb(this.Ca.Kb(a,1),b);this.A-=this.B.Kg},function(){sf(this,this.Ca,Q(this),this.F);this.A-=this.B.Kg},function(){var a=1,b=0,c=this.ta,d=this.B.Lg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Ng,this.ba&256||(this.A-=this.B.Mg));if(a--){var e=this.Ia(this.Ca.sb(this.J&c,1));this.Bb(this.xa.Kb(this.I& +c,1),e);e=this.N&1024?-1:1;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.A-=d;this.H=this.H&~c|this.H-b&c;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Lg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Ng,this.ba&256||(this.A-=this.B.Mg));if(a--){sf(this,this.xa,this.I&c,rd(this,this.Ca,this.J&c));var e=this.N&1024?-this.T:this.T;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.A-=d;this.H=this.H&~c|this.H-b&c;a&&(Re(this),this.K|=256)}},function(){var a= +1,b=0,c=this.ta,d=this.B.wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.yg,this.ba&256||(this.A-=this.B.xg));if(a--){var e=nf(this,this.Ca,this.J),f=nf(this,this.xa,this.I);this.D=this.C;$g.call(this,e,f);e=this.N&1024?-1:1;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.yg,this.ba&256||(this.A-=this.B.xg));if(a--){var e= +of(this,this.Ca,this.J&c),f=of(this,this.xa,this.I&c);this.D=this.C;ah.call(this,e,f);e=this.N&1024?-this.T:this.T;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){Ze(this,this.F&this.ka(),128);this.A-=this.B.Pd},function(){Ze(this,this.F&this.ya(),this.wb);this.A-=this.B.Pd},function(){var a=1,b=0,c=this.ta,d=this.B.Wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Yg,this.ba&256||(this.A-= +this.B.Xg));if(a--){var e=this.F;this.Bb(this.xa.Kb(this.I&c,1),e);this.H=this.H&~c|this.H-b&c;80546<=this.pd&&80564>=this.pd&&!(this.ba&2048)!=(103!=this.Ia(this.da))&&(c^=-65536);this.I=this.I&~c|this.I+(this.N&1024?-1:1)&c;this.A-=d;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Yg,this.ba&256||(this.A-=this.B.Xg));a--&&(sf(this,this.xa,this.I&c,this.F),this.I=this.I&~c|this.I+(this.N&1024?-this.T:this.T)&c,this.H=this.H&~c|this.H- +b&c,this.A-=d,a&&(Re(this),this.K|=256))},function(){var a=1,b=0,c=this.ta,d=this.B.Dg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Fg,this.ba&256||(this.A-=this.B.Eg));if(a--){var e=this.Ia(this.Ca.sb(this.J&c,1));this.F=this.F&-256|e;this.J=this.J&~c|this.J+(this.N&1024?-1:1)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Dg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Fg,this.ba&256||(this.A-=this.B.Eg));if(a--){var e=rd(this,this.Ca,this.J&c);this.F= +this.F&~this.O|e;this.J=this.J&~c|this.J+(this.N&1024?-this.T:this.T)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Qg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Sg,this.ba&256||(this.A-=this.B.Rg));if(a--){var e=this.F&255,f=nf(this,this.xa,this.I);this.D=this.C;$g.call(this,e,f);this.I=this.I&~c|this.I+(this.N&1024?-1:1)&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){var a= +1,b=0,c=this.ta,d=this.B.Qg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Sg,this.ba&256||(this.A-=this.B.Rg));if(a--){var e=this.F&this.O,f=of(this,this.xa,this.I&c);this.D=this.C;ah.call(this,e,f);this.I=this.I&~c|this.I+(this.N&1024?-this.T:this.T)&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){this.F=this.F&-256|this.ka();this.A-=this.B.Ob},function(){this.H=this.H&-256|this.ka();this.A-=this.B.Ob},function(){this.L=this.L&-256|this.ka(); +this.A-=this.B.Ob},function(){this.G=this.G&-256|this.ka();this.A-=this.B.Ob},function(){this.F=this.F&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.H=this.H&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.L=this.L&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.G=this.G&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.F=this.F&~this.O|this.ya();this.A-=this.B.Ob},function(){this.H=this.H&~this.O|this.ya();this.A-=this.B.Ob},function(){this.L=this.L&~this.O|this.ya(); +this.A-=this.B.Ob},function(){this.G=this.G&~this.O|this.ya();this.A-=this.B.Ob},function(){B(this,C(this)&~this.O|this.ya());this.A-=this.B.Ob},function(){this.M=this.M&~this.O|this.ya();this.A-=this.B.Ob},function(){this.J=this.J&~this.O|this.ya();this.A-=this.B.Ob},function(){this.I=this.I&~this.O|this.ya();this.A-=this.B.Ob},bj,cj,bj,cj,function(){this.ja.call(this,mh)},function(){this.ja.call(this,kh)},function(){this.K|=1;this.Rc.call(this,jj,this.ka)},function(){this.K|=1;this.eb.call(this, +jj,this.ya)},dj,ej,dj,ej,function(){if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{var a=this.B.Yi;this.sc=-1;yi.call(this,3,null,a)}},function(){var a=this.ka();if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{var b;a:{b=this.lf[a];if(void 0!==b)for(var c=0;cthis.Zb)x.call(this,13,0);else{var a=this.B.Zi;this.sc=-1;yi.call(this,4,null,a)}else this.A-= +this.B.$i},function(){if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{this.uc=this.W.ha;this.ma=this.Aa;this.A-=this.B.Wi;if(this.pa&1&&this.N&16384){var a=this.ga(this.la.va+0);nd(this.fa,a,!1)}else{var a=this.La,b=A(this),c=A(this),d=A(this);if(this.N&131072)d=d&131071|this.N&-131072;else if(d&131072){var e=A(this),f=A(this),g=A(this),h=A(this),k=A(this),m=A(this);pd(this,!0,!0);md(this,f);B(this,e);ud(this,g);td(this,h);this.rb.load(k);this.vb.load(m)}null!=yd(this,b,c,!1)&&(xd(this,d,a),this.ag&& +Je(this,this.da))}this.uc=this.ma=-1}},function(){this.Rc.call(this,Zi,si)},function(){this.eb.call(this,2==this.T?$i:aj,si)},function(){this.Rc.call(this,Zi,ti)},function(){this.eb.call(this,2==this.T?$i:aj,ti)},function(){var a=this.ka();if(a){var b=this.F&255;this.F=this.F&-65536|b/a<<8|b%a;Ze(this,this.F,128);this.A-=this.B.Bi}else Bi.call(this)},function(){var a=this.F&255,b=(this.F>>8&255)*this.ka()|0,c=a+b|0;this.F=this.F&-65536|c&255;Se(this,a,b,c,191);this.A-=this.B.Ai},function(){this.F= +this.F&-256|(Te(this)?255:0);this.A-=2},function(){this.F=this.F&-256|nf(this,this.Ca,this.G+(this.F&255));this.A-=this.B.zj},function(){fj.call(this,216)},function(){fj.call(this,217)},function(){fj.call(this,218)},function(){fj.call(this,219)},function(){fj.call(this,220)},function(){fj.call(this,221)},function(){fj.call(this,222)},function(){fj.call(this,223)},function(){var a=this.P(),b=this.H-1&this.ta;this.H=this.H&~this.ta|b;b&&!We(this)?(H(this,F(this)+a),this.A-=this.B.gj):this.A-=this.B.Gg}, +function(){var a=this.P(),b=this.H-1&this.ta;this.H=this.H&~this.ta|b;b&&We(this)?(H(this,F(this)+a),this.A-=this.B.Hg):this.A-=this.B.Ig},function(){var a=this.P(),b=this.H-1&this.ta;this.H=this.H&~this.ta|b;b?(H(this,F(this)+a),this.A-=this.B.fj):this.A-=this.B.Gg},function(){var a=this.P();this.H&this.ta?this.A-=this.B.Ig:(H(this,F(this)+a),this.A-=this.B.Hg)},function(){var a=this.ka();lf(this,a,1)&&(this.F=this.F&-256|fc(this.oa,a,1,this.da-2)&255,this.A-=this.B.Bg)},function(){var a=this.ka(); +lf(this,a,this.T)&&(this.F=this.F&~this.O|fc(this.oa,a,this.T,this.da-2)&this.O,this.A-=this.B.Bg)},function(){var a=this.ka();lf(this,a,1)&&(hc(this.oa,a,1,this.F&255,this.da-2),this.A-=this.B.Pg)},function(){var a=this.ka();lf(this,a,this.T)&&(hc(this.oa,a,this.T,this.F&this.O,this.da-2),this.A-=this.B.Pg)},function(){var a=this.ya(),b=F(this),a=b+a;E(this,b);H(this,a);this.A-=this.B.Fi},function(){var a=this.ya();H(this,F(this)+a);this.A-=this.B.Cg},function(){yd(this,this.ya(),tf(this));this.A-= +this.B.bj},function(){var a=this.P();H(this,F(this)+a);this.A-=this.B.Cg},function(){var a=this.L&65535;lf(this,a,1)&&(this.F=this.F&-256|fc(this.oa,a,1,this.da-1)&255,this.A-=this.B.Ag)},function(){var a=this.L&65535;lf(this,a,this.T)&&(this.F=this.F&~this.O|fc(this.oa,a,this.T,this.da-1)&this.O,this.A-=this.B.Ag)},function(){var a=this.L&65535;lf(this,a,1)&&(hc(this.oa,a,1,this.F&255,this.da-1),this.A-=this.B.Og)},function(){var a=this.L&65535;lf(this,a,2)&&(hc(this.oa,a,this.T,this.F&this.O,this.da- +1),this.A-=this.B.Og)},gj,gj,function(){this.K|=132;this.A-=this.B.Hc},function(){this.K|=68;this.A-=this.B.Hc},function(){this.N&131072?x.call(this,13,0):(this.Qa|=4,this.A-=2,this.N&512||Mc(this))},function(){Te(this)?af(this):$e(this);this.A-=2},function(){this.fc=!1;this.Rc.call(this,kj,vi);this.fc&&(this.F=this.F&~this.O|this.Ba&this.O)},function(){this.fc=!1;this.eb.call(this,lj,vi);this.fc&&(this.F=this.F&~this.O|this.Ba&this.O,this.L=this.L&~this.O|this.Sa&this.O)},function(){af(this);this.A-= +2},function(){$e(this);this.A-=2},function(){this.La>this.Zb?x.call(this,13,0):(this.N&=-513,this.A-=this.B.Di)},function(){this.La>this.Zb?x.call(this,13,0):(this.N|=512,this.K|=4,this.A-=2)},function(){this.N&=-1025;this.A-=2},function(){this.N|=1024;this.A-=2},function(){this.Rc.call(this,Cd,vi)},function(){this.eb.call(this,Dd,vi)}],Ui=[Kg,wh,Ig,yh,Mg,di,li,$g],hj=[Lg,xh,Jg,zh,Ng,ei,mi,ah],ij=[function(a,b){this.A-=-1===this.D?this.B.ac:this.B.rj;return b},ch,ch,ch,ch,ch,ch,ch],jj=[function(a, +b){this.A-=-1===this.D?this.B.jj:this.B.hj;return b},T,T,T,T,T,T,T],Zi=[function(a,b){var c=a;if(b&=this.Ma){var d;(b&=7)?(d=a<>8-b)&255):d=a<<7;df(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ma){var d;(b&=7)?(d=a<<8-b,c=(a>>>b|d)&255):d=a;df(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=ef(this);(b%=9)?(c=(a<>9-b)&255,d=a<>b|d<<8-b|a<< +9-b)&255,d=a<<8-b):d<<=7;df(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=0;8>>b-1,a=b>>>1&255,Ze(this,a,128,b&1,a&128);return a},T,function(a,b){if(b&=this.Ma)9>24>>b-1,a=b>>1&255,Ze(this,a,128,b&1);return a}],$i=[function(a,b){var c=a;if(b&=this.Ma){var d;(b&=15)?(d=a<>16-b)&65535):d=a<<15;df(this,c,d,32768)}return c},function(a,b){var c= +a;if(b&=this.Ma){var d;(b&=15)?(d=a<<16-b,c=(a>>>b|d)&65535):d=a;df(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=ef(this);(b%=17)?(c=(a<>17-b)&65535,d=a<>b|d<<16-b|a<<17-b)&65535,d=a<<16-b):d<<=15;df(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=0;16>>b-1,a=b>>>1&65535,Ze(this,a,32768,b&1,a&32768);return a},T,function(a,b){if(b&=this.Ma)17>16>>b-1,a=b>>1&65535,Ze(this,a,32768,b&1);return a}],aj=[function(a,b){var c=a;if(b&=this.Ma)c=a<>>32-b,df(this,c,a<>>b|d;df(this,c,d,-2147483648)}return c},function(a,b){var c=a;if(b&=this.Ma)c=ef(this),c=a<>>32-b>>>1,df(this,c,a<>>b|c<<32-b|a<<32-b<<1,df(this,c,a<<32-b,-2147483648);return c},function(a,b){var c=a;if(b&=this.Ma)a<<=b-1,c=a<<1,Ze(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Ma)b=a>>>b-1,a=b>>>1,Ze(this,a,-2147483648,b&1,a&-2147483648);return a},T,function(a,b){if(b&=this.Ma)b=a>>b-1,a=b>>1,Ze(this,a,-2147483648,b&1);return a}],kj=[function(a,b){b=this.ka();Ze(this,a&b,128);this.A-=-1===this.C?this.B.$g:this.B.Zg;this.K|=2;return a}, +T,function(a){this.A-=-1===this.C?this.B.Te:this.B.Se;return a^255},function(a){var b=-a|0;Se(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.Te:this.B.Se;return b&255},function(a){this.Ba=(this.F&255)*a&65535;this.Ba&65280?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.nj:this.B.mj;this.K|=2;return a},function(a){var b=(this.F<<24>>24)*(a<<24>>24)|0;this.Ba=b&65535;127b?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.Ti:this.B.Si; +this.K|=2;return a},function(a,b){if(!a)return Bi.call(this),a;var c=(b=this.F&65535)/a;if(255>24,d=(b=this.F<<16>>16)/c|0;if(d!=d<<24>>24||8086==this.ca&&-128==d)return Bi.call(this),a;this.Ba=d&255|(b%c&255)<<8;this.fc=!0;this.A-=-1===this.C?this.B.Pi:this.B.Oi;this.K|=2;return a}],lj=[function(a,b){b=this.ya();Ze(this, +a&b,this.wb);this.A-=-1===this.C?this.B.$g:this.B.Zg;this.K|=2;return a},T,function(a){this.A-=-1===this.C?this.B.Te:this.B.Se;return a^this.O},function(a){var b=-a|0;Se(this,0,a,b,this.wb|63,!0);this.A-=-1===this.C?this.B.Te:this.B.Se;return b&this.O},function(a,b){2==this.T?(b=this.F&65535,b=b*a|0,this.Ba=b&65535,this.Sa=b>>16&65535):(ih.call(this,a,this.F),80563==this.pd&&68657152==this.F&&129==a&&(this.Sa=0));this.Sa?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.pj: +this.B.oj;this.K|=2;return a},function(a,b){2==this.T?(b=this.F&65535,b=(b<<16>>16)*(a<<16>>16)|0,this.Ba=b&65535,this.Sa=b>>16&65535,b=32767b):(hh.call(this,a,this.F),b=this.Sa!=this.Ba>>31);b?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.Vi:this.B.Ui;this.K|=2;return a},function(a,b){if(2==this.T){if(!a)return Bi.call(this),a;b=65536*(this.L&65535)+(this.F&65535);var c=b/a;if(65536<=c)return Bi.call(this),a;this.Ba=c&65535;this.Sa=b%a&65535}else{if(!pi.call(this, +this.F,this.L,a))return Bi.call(this),a;this.Ba|=0;this.Sa|=0}this.fc=!0;this.A-=-1===this.C?this.B.Ni:this.B.Mi;this.K|=2;return a},function(a,b){if(2==this.T){if(!a)return Bi.call(this),a;var c=a<<16>>16,d=(b=this.L<<16|this.F&65535)/c|0;if(d!=d<<16>>16||8086==this.ca&&-32768==d)return Bi.call(this),a;this.Ba=d&65535;this.Sa=b%c&65535}else{b=this.F;var c=this.L,d=a,e=0,f=0;0>d&&(d=-d|0,e=1-e);0>c&&(b=-b|0,c=~c+(b?0:1)|0,f=1,e=1-e);!pi.call(this,b,c,d)||this.Ba>2147483647+e||this.Sa>2147483647+f? +b=!1:(e&&(this.Ba=-this.Ba),f&&(this.Sa=-this.Sa),b=!0);if(!b)return Bi.call(this),a;this.Ba|=0;this.Sa|=0}this.fc=!0;this.A-=-1===this.C?this.B.Ri:this.B.Qi;this.K|=2;return a}],Cd=[function(a){var b=a+1|0;Se(this,a,1,b,190);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&255},function(a){var b=a-1|0;Se(this,a,1,b,190,!0);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&255},T,T,T,T,T,T],Dd=[function(a){var b=a+1|0;Se(this,a,1,b,this.wb|62);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&this.O}, +function(a){var b=a-1|0;Se(this,a,1,b,this.wb|62,!0);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&this.O},function(a){E(this,F(this));H(this,a);this.A-=-1===this.C?this.B.Ji:this.B.Ii;this.K|=2;return a},function(a){if(-1===this.C)return T.call(this,a);this.ma=this.Aa;xi.call(this,a,this.ga(this.C+this.T));this.A-=this.B.Gi;this.K|=2;this.ma=-1;return a},function(a){H(this,a);this.A-=-1===this.C?this.B.dj:this.B.cj;this.K|=2;return a},function(a){if(-1===this.C)return T.call(this,a);yd(this,a, +this.ga(this.C+this.T));this.A-=this.B.aj;this.K|=2;return a},function(a){var b=a;this.K&512&&(a=a-2&65535,80286>this.ca&&(b=a));E(this,b);this.A-=-1===this.C?this.B.tc:this.B.tj;this.K|=2;return a},T];function fe(){this.ja.call(this,ii);this.A-=-1===this.C?6:13}function ge(){this.za.call(this,hi);this.A-=-1===this.C?12:19}var Yd=Array(256);Yd[0]=function(){16>(this.Ia(this.da)&56)&&(this.K|=1);this.eb.call(this,this.di,vi)};Yd[1]=function(){this.Ia(this.da)&16||(this.K|=1);this.eb.call(this,mj,vi)}; +Yd[2]=function(){!(this.pa&1)||this.N&131072?x.call(this,6):this.ja.call(this,jh)};Yd[3]=function(){!(this.pa&1)||this.N&131072?x.call(this,6):this.ja.call(this,ph)}; +Yd[5]=function(){this.La?x.call(this,13,0,0,!0):(kf(this,this.ga(2054)),this.I=this.ga(2086),this.J=this.ga(2088),this.M=this.ga(2090),this.G=this.ga(2094),this.L=this.ga(2096),this.H=this.ga(2098),this.F=this.ga(2100),jd(this.xa,2102,this.ga(2084)),jd(this.fa,2108,this.ga(2082)),jd(this.W,2114,this.ga(2080)),jd(this.Ga,2120,this.ga(2078)),xd(this,this.ga(2072)),H(this,this.ga(2074)),B(this,this.ga(2092)),this.Jb=this.ga(2126)|this.Ia(2128)<<16,this.Oc=this.Jb+this.ga(2130),this.Xb=this.ga(2138)| +this.Ia(2140)<<16,this.Qc=this.Xb+this.ga(2142),jd(this.mc,2132,this.ga(2076)),jd(this.la,2144,this.ga(2070)),this.A-=195)};Yd[6]=function(){this.La?x.call(this,13,0):(this.pa&=-9,this.A-=2)};Yd[11]=Fd;Yd[166]=Fd;Yd[255]=Fd;var G=[];G[5]=Fd; +G[7]=function(){if(this.La)x.call(this,13,0,0,!0);else{var a=this.xa.sb(this.I&this.ta,204);if(-1!==a){this.pa=this.ea(a);pd(this);this.pa&-2147483648?Mb(this):ke(this);var b=this.ea(a+168),c=(b&24576)>>13;xd(this,this.ea(a+4),c);this.Jb=this.ea(a+112);this.Oc=this.Jb+this.ea(a+116);this.Xb=this.ea(a+100);this.Qc=this.Xb+this.ea(a+104);hd(this.mc,this.ea(a+56),this.ea(a+120),this.ea(a+124),this.ea(a+128));hd(this.la,this.ea(a+52),this.ea(a+84),this.ea(a+88),this.ea(a+92));this.I=this.ea(a+12);this.J= +this.ea(a+16);this.M=this.ea(a+20);this.G=this.ea(a+28);this.L=this.ea(a+32);this.H=this.ea(a+36);this.F=this.ea(a+40);hd(this.vb,this.ea(a+60),this.ea(a+132),this.ea(a+136),this.ea(a+140));hd(this.rb,this.ea(a+64),this.ea(a+144),this.ea(a+148),this.ea(a+152));hd(this.Ga,this.ea(a+68),this.ea(a+156),this.ea(a+160),this.ea(a+164));hd(this.W,this.ea(a+72),b,this.ea(a+172),this.ea(a+176));hd(this.fa,this.ea(a+76),this.ea(a+180),this.ea(a+184),this.ea(a+188));hd(this.xa,this.ea(a+80),this.ea(a+192),this.ea(a+ +196),this.ea(a+200));H(this,this.ea(a+8));B(this,this.ea(a+24))}this.A-=122<<(a&3?1:0)}};G[16]=Vi;G[17]=Wi;G[18]=Xi;G[19]=Yi;G[32]=function(){if(this.La)x.call(this,13,0);else{var a,b=this.ka();switch((b&56)>>3){case 0:a=this.pa;break;case 2:a=this.rd;break;case 3:a=this.Vc;break;default:Zd.call(this);return}me(this,b&7,a);this.A-=6}};G[33]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;4==b||5==b?Zd.call(this):(me(this,a&7,this.Cb[b]),this.A-=22)}}; +G[34]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=le(this,a&7);switch((a&56)>>3){case 0:this.pa=b;pd(this);this.pa&-2147483648?Mb(this):ke(this);this.A-=10;break;case 2:this.rd=b;this.A-=4;break;case 3:zd.call(this,b);this.A-=5;break;default:Zd.call(this)}}};G[35]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;4==b||5==b?Zd.call(this):(a=le(this,a&7),a!=this.Cb[b]&&(Ke(this,!1),this.Cb[b]=a,Ke(this,!0)),this.A-=4>b?22:14)}}; +G[36]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;6>b?Zd.call(this):(me(this,a&7,this.pf[b]),this.A-=12)}};G[38]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;6>b?Zd.call(this):(this.pf[b]=le(this,a&7),this.A-=12)}};G[128]=function(){var a=this.ya();Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[129]=function(){var a=this.ya();Ye(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)}; +G[130]=function(){var a=this.ya();Te(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[131]=function(){var a=this.ya();Te(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[132]=function(){var a=this.ya();We(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[133]=function(){var a=this.ya();We(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[134]=function(){var a=this.ya();Te(this)||We(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka}; +G[135]=function(){var a=this.ya();Te(this)||We(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[136]=function(){var a=this.ya();Xe(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[137]=function(){var a=this.ya();Xe(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[138]=function(){var a=this.ya();Ue(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[139]=function(){var a=this.ya();Ue(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)}; +G[140]=function(){var a=this.ya();!Xe(this)!=!Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[141]=function(){var a=this.ya();!Xe(this)==!Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[142]=function(){var a=this.ya();We(this)||!Xe(this)!=!Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[143]=function(){var a=this.ya();We(this)||!Xe(this)!=!Ye(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[144]=function(){ri.call(this,Ah)}; +G[145]=function(){ri.call(this,Ah)};G[146]=function(){ri.call(this,Bh)};G[147]=function(){ri.call(this,Ch)};G[148]=function(){ri.call(this,Dh)};G[149]=function(){ri.call(this,Eh)};G[150]=function(){ri.call(this,Fh)};G[151]=function(){ri.call(this,Gh)};G[152]=function(){ri.call(this,Hh)};G[153]=function(){ri.call(this,Ih)};G[154]=function(){ri.call(this,Jh)};G[155]=function(){ri.call(this,Kh)};G[156]=function(){ri.call(this,Lh)};G[157]=function(){ri.call(this,Mh)};G[158]=function(){ri.call(this,Nh)}; +G[159]=function(){ri.call(this,Oh)};G[160]=function(){sd(this,this.rb.ha,this.T,2);this.A-=this.B.Qd};G[161]=function(){this.ma=this.Aa;var a=A(this);this.rb.load(a);this.A-=this.B.ac;this.ma=-1};G[163]=function(){this.za.call(this,Wg);-1!==this.C&&(this.A-=6)};G[164]=function(){this.za.call(this,2==this.T?Ph:Rh);this.A-=-1===this.C?3:7};G[165]=function(){this.za.call(this,2==this.T?Th:Uh);this.A-=-1===this.C?3:7};G[168]=function(){sd(this,this.vb.ha,this.T,2);this.A-=this.B.Qd}; +G[169]=function(){this.ma=this.Aa;var a=A(this);this.vb.load(a);this.A-=this.B.ac;this.ma=-1};G[171]=function(){this.za.call(this,Zg);-1!==this.C&&(this.A-=5)};G[172]=function(){this.za.call(this,2==this.T?Vh:Xh);this.A-=-1===this.C?3:7};G[173]=function(){this.za.call(this,2==this.T?bi:ci);this.A-=-1===this.C?3:7};G[175]=function(){this.ja.call(this,2==this.T?eh:gh)};G[178]=function(){this.ja.call(this,qh)};G[179]=function(){this.za.call(this,Yg);-1!==this.C&&(this.A-=5)}; +G[180]=function(){this.ja.call(this,nh)};G[181]=function(){this.ja.call(this,oh)}; +G[182]=function(){this.Yb.call(this,sh);switch(this.aa>>3&7){case 0:this.F=this.F&~this.O|this.F&255;break;case 1:this.H=this.H&~this.O|this.H&255;break;case 2:this.L=this.L&~this.O|this.L&255;break;case 3:this.G=this.G&~this.O|this.G&255;break;case 4:this.lc=this.lc&~this.O|this.F>>8&255;this.F=this.ua;break;case 5:this.M=this.M&~this.O|this.H>>8&255;this.H=this.ua;break;case 6:this.J=this.J&~this.O|this.L>>8&255;this.L=this.ua;break;case 7:this.I=this.I&~this.O|this.G>>8&255,this.G=this.ua}this.A-= +-1===this.C?3:6};G[183]=function(){qd(this,2);this.ja.call(this,th);switch(this.aa>>3&7){case 0:this.F=this.F&65535;break;case 1:this.H=this.H&65535;break;case 2:this.L=this.L&65535;break;case 3:this.G=this.G&65535;break;case 4:this.lc=this.lc&65535;break;case 5:this.M=this.M&65535;break;case 6:this.J=this.J&65535;break;case 7:this.I=this.I&65535}this.A-=-1===this.C?3:6};G[186]=function(){this.eb.call(this,nj,this.ka)};G[187]=function(){this.za.call(this,Xg);-1!==this.C&&(this.A-=5)}; +G[188]=function(){this.ja.call(this,Qg)};G[189]=function(){this.ja.call(this,Rg)}; +G[190]=function(){this.Yb.call(this,sh);switch(this.aa>>3&7){case 0:this.F=this.F&~this.O|(this.F&255)<<24>>24&this.O;break;case 1:this.H=this.H&~this.O|(this.H&255)<<24>>24&this.O;break;case 2:this.L=this.L&~this.O|(this.L&255)<<24>>24&this.O;break;case 3:this.G=this.G&~this.O|(this.G&255)<<24>>24&this.O;break;case 4:this.lc=this.lc&~this.O|this.F<<16>>24&this.O;this.F=this.ua;break;case 5:this.M=this.M&~this.O|this.H<<16>>24&this.O;this.H=this.ua;break;case 6:this.J=this.J&~this.O|this.L<<16>>24& +this.O;this.L=this.ua;break;case 7:this.I=this.I&~this.O|this.G<<16>>24&this.O,this.G=this.ua}this.A-=-1===this.C?3:6};G[191]=function(){qd(this,2);this.ja.call(this,th);switch(this.aa>>3&7){case 0:this.F=this.F<<16>>16;break;case 1:this.H=this.H<<16>>16;break;case 2:this.L=this.L<<16>>16;break;case 3:this.G=this.G<<16>>16;break;case 4:this.lc=this.lc<<16>>16;break;case 5:this.M=this.M<<16>>16;break;case 6:this.J=this.J<<16>>16;break;case 7:this.I=this.I<<16>>16}this.A-=-1===this.C?3:6}; +var Le=[function(){this.A-=2+(-1===this.C?0:1);return this.mc.ha},function(){this.A-=2+(-1===this.C?0:1);return this.la.ha},function(a){this.K|=2;this.mc.load(a);this.A-=17+(-1===this.C?0:2);return a},function(a){this.K|=2;-1!==this.la.load(a)&&(this.Za(this.la.cc+4,this.la.nb|=512),this.la.type|=512);this.A-=17+(-1===this.C?0:2);return a},function(a){this.K|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.gb.load(a)&&2048!=(this.gb.nb&2560)&&(this.gb.jc>=this.La&&this.gb.jc>=(a&3)||7168==(this.gb.nb& +7168)))return jf(this),a;gf(this);return a},function(a){this.K|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.gb.load(a)&&512==(this.gb.nb&2560)&&this.gb.jc>=this.La&&this.gb.jc>=(a&3))return jf(this),a;gf(this);return a},T,T],Ed=[Wd,Wd,Wd,Wd,Wd,Wd,T,T],mj=[function(a){if(-1===this.C)x.call(this,6);else{a=this.Oc-this.Jb;var b=this.Jb;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.T&&(a|=b<<16);this.Ta(this.C+2,b);this.A-=11}return a},function(a){if(-1===this.C)x.call(this,6);else{a=this.Qc-this.Xb; +var b=this.Xb;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.T&&(a|=b<<16);this.Ta(this.C+2,b);this.A-=12}return a},function(a){-1===this.C||this.N&131072?x.call(this,6):(this.Jb=this.ea(this.C+2)&(this.O|this.O<<8),a&=65535,this.Oc=this.Jb+a,this.K|=2,this.A-=11);return a},function(a){-1===this.C||this.N&131072?x.call(this,6):(this.Xb=this.ea(this.C+2)&(this.O|this.O<<8),a&=65535,this.Qc=this.Xb+a,this.K|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.C?0:1);return this.pa},T,function(a){this.N& +131072?x.call(this,6):(kf(this,a),this.A-=-1===this.C?3:6,this.K|=2);return a},T],nj=[T,T,T,T,Sg,Vg,Ug,Tg]; +function U(a){u.call(this,"ChipSet",a);var b=a.model;b&&!oj[b]&&q("Unrecognized ChipSet model: "+b);this.ca=oj[b]||pj;this.B=[];b=qj(a[rj]);this.B[0]=[b,b];null==b&&(this.L=[360,360],(b=a.floppies)&&b.length&&(this.L=b),sj(this,tj,this.L.length),sj(this,uj,a.monitor||(this.ca=Cf&&(this.za=this.la=2);this.M=a.scaleTimers||!1;this.Sa=a.dateRTC;this.La=this.Ma=!1;this.Ga=0;if(a=a.sound)this.Ga="number"!=typeof a||0>a||1d||1=Cf){this.F=Vj;this.J=0;this.I=Wj;this.pa=0;this.K=Xj|Yj;512<=Zj(this)&&(this.K|=ak);+bk(this,uj,void 0)==ck&&(this.K|=dk);(this.ca|0)==Hj&&(this.K=this.K|ek|fk);this.ra= +gk|hk;this.G=Array(8);this.W=0;a&&(this.A=Array(ik));jk(this,this.Sa);for(a=kk;a<=lk;a++)this.A[a]=0;for(a=mk;a>8} +l.save=function(){var a=new Me(this);a.set(0,[this.B]);for(var b=[],c=0;c=Cf&&(a.set(5,[this.F,this.J,this.I,this.pa,this.K,this.ra]),a.set(6,[this.G[7],this.G,this.W,this.A,this.ma,this.Y]));return a.data()}; +l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.B=b[0]:(this.B[0][0]=b[0],this.B[1][0]=b[1]&15,this.B[0][1]=b[2],this.B[1][1]=b[3]&15);Nj(this);b=a[1];for(c=0;c=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='
    '+f+"
    \n"}e.innerHTML=d;Uk(a,b,c,!0)}function Vk(a,b,c){if(b=(a=V[a.ca|0])&&a[b])for(var d in b)if(a=b[d],a.ic&1<d.ib[0]&&(d.ib[0]=255,d.ib[1]--,0>d.ib[1]&&(d.ib[1]=255)));return e}function il(a,b,c,d){a=a.D[b];c=a.Tb[c];c.ib[a.Ib]=c.dc[a.Ib]=d;a.Ib^=1} +function jl(a,b){a=a.D[b];b=a.Fb|kl;a.Fb&=~ll;return b}function ml(a,b,c){a=a.D[b];b=c&3;a.Fb=a.Fb&~(16<>2].Tb[b&3],c,d,e)}function ql(a,b,c){b=a.D[b>>2].Tb[b&3];b.Af&&b.kg&&b.Pf?(c&&(b.done=c),b.Nd||vl(a,b,!0)):c&&c(!0)} +function vl(a,b,c){c&&(b.count=b.ib[1]<<8|b.ib[0],b.type=b.mode&wl,b.ii=b.Bf=!1);for(var d=!1;0<=b.count&&(c=b.tf<<16|b.hb[1]<<8|b.hb[0],b.type==xl?(d=!0,function(c){b.kg.call(b.Af,b.Pf,-1,function(e,g){0>e&&(b.ii||(b.ii=!0),e=255);b.Nd||a.oa.Bb(c,e);(d=g)&&setTimeout(function(){yl(b)||vl(a,b)},0)})}(c)):b.type==zl?(c=a.oa.Ia(c),0>b.kg.call(b.Af,b.Pf,c)&&(b.Bf=!0)):b.type!=Al&&(b.Bf=!0)),!d&&!yl(b););} +function yl(a){if(!a.Bf&&0<=--a.count&&(a.mode&Bl?(a.hb[0]--,0>a.hb[0]&&(a.hb[0]=255,a.hb[1]--,0>a.hb[1]&&(a.hb[1]=255))):(a.hb[0]++,255>3];b=1<<(b&7);d.Ub&b||(d.Ub|=b,d.Ne=c||0,Ol(a))}function Df(a,b){var c=a.bc[b>>3];b=1<<(b&7);c.Ub&b&&(c.Ub&=~b,Ol(a))}function Ol(a,b){var c,d=-1;1>=1),Qc(a.R,d))),b==$l&&c==dm&&Nk(a))} +function em(a,b,c){var d=0,e=c&fm;b?(d=3,a.fa=c):a.ua=c;if(e==gm){if(!(c&hm))for(e=0;2>=e;e++)if(c&im<=e;e++)c&im<>nm,f=c&om,g=c±c&=qm;if(c==rm)mm(a,d+e);else{var d=d+e,h=a.qa[d];h.df=c;h.mode=g;h.hg=f;h.dc=[0,0];h.ib=[0,0];h.Id=[0,0];h.Lc=!1;h.je=!1;h.Ld=!1;h.oe=!1;Vl(a,d);b==$l&&e==am&&Df(a,bm);b==$l&&e==dm&&255==a.bc[0].Wc&&a.H==(sm|tm|um|vm)&&(e= +a.qa[0],e.zc[0]=e.dc[0],e.zc[1]=e.dc[1],e.jd=Sc(a.R,a.M))}}}function cm(a,b){a=a.qa[b];(b=a.dc[1]<<8|a.dc[0])||(b=1==a.gd?256:65536);return b}function Yc(a,b){a=a.qa[b];(b=a.zc[1]<<8|a.zc[0])||(b=1==a.gd?256:65536);return b}function mm(a,b){Wl(a,b);var c=a.qa[b];c.Id[0]=c.ib[0];c.Id[1]=c.ib[1];c.je=!0;Vl(a,b)}function Vl(a,b){a=a.qa[b];a.Yc=a.df==wm?1:0;a.gd=a.df==xm?2:1} +function Wl(a,b,c){var d=a.qa[b];if(d.Ld&&(b!=dm||a.H&sm)){var e=Sc(a.R,a.M),f=(e-d.jd)/a.Ba|0;0>f&&(d.jd=e,f=0);var g=cm(a,b),h=Yc(a,b)-f;d.mode==Yl?(0>=h&&(h=0),h||(d.Lc=!0,d.Ld=!1,b||Ff(a,bm))):d.mode==ym?(d.Lc=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.zc[0]=h&255,d.zc[1]=h>>8&255,d.jd=e,!b&&d.Lc&&Ff(a,bm))):d.mode==Zc&&(h-=f,0>=h&&(d.Lc=!d.Lc,h=g+h,0>=h&&(h=g),d.zc[0]=h&255,d.zc[1]=h>>8&255,d.jd=e,!b&&d.Lc&&Ff(a,bm)));d.ib[0]=h&255;d.ib[1]=h>>8&255;c&&(a.jd=0)}return d} +function Xc(a,b){for(var c=0;c=Cf){b=a.R.V.yd;c=Sc(a.R,a.M);null==a.Aa&&(a.ma=Sc(a.R,a.M),a.Qa=1024,a.Aa=Math.floor(a.R.V.yd/a.Qa),Lk(a));c>=a.Y&&(a.A[Ik]|=zm,a.A[$c]&ad&&(a.A[Ik]|=Am,Ff(a,Bm)),a.Y=c+a.Aa);a.A[vk]==a.A[wk]&&a.A[xk]==a.A[yk]&&a.A[zk]==a.A[Ak]&&(a.A[Ik]|=Cm,a.A[$c]&Dm&&(a.A[Ik]|=Am,Ff(a,Bm)));var d=c-a.ma,e=Math.floor(d/b);if(e&&!(a.A[$c]&Em)){for(;e--;)if(60<=++a.A[vk]&&(a.A[vk]=0,60<=++a.A[xk]&&(a.A[xk]=0,24<=++a.A[zk]))){a.A[zk]=0;a.A[Bk]=a.A[Bk]% +7+1;var f;f=a.A[Ek];var g=ua[a.A[Dk]-1];28==g&&(f%4||!(f%100)&&f%400||g++);f=g;++a.A[Ck]>f&&(a.A[Ck]=1,12<++a.A[Dk]&&(a.A[Dk]=1,a.A[Ek]=(a.A[Ek]+1)%100))}a.A[Ik]|=Fm;a.A[$c]&Gm&&(a.A[Ik]|=Am,Ff(a,Bm))}a.ma=c-d%b}}l.jl=function(){var a=this.xa;this.ja&Hm&&(this.H&Im?a=this.B[0][1]:this.C&&(a=Jm(this.C)));return a};l.Gm=function(a,b){this.xa=b};l.kl=function(){return this.H};l.Hm=function(a,b){Om(this,b)}; +function Om(a,b){var c=!!(b&Pm),d=!!(a.H&Pm);a.H=b;a.C&&Qm(a.C,!(b&Im),!!(b&vm));c!=d&&Nk(a,c)}l.ll=function(){var a=0,a=(this.ca|0)==Lj?this.H&tm?a|this.B[1][1]&Rm:a|this.B[1][1]>>4&1:this.H&Sm?a|this.B[0][1]>>4:a|this.B[0][1]&15;this.H&sm&&Wl(this,dm).Lc&&(a=this.H&Pm?a|Tm:a|Um);return a};l.Im=function(a,b){this.Ca=b};l.ml=function(){return this.ja};l.Jm=function(a,b){this.ja=b};l.vk=function(){var a=this.C?Jm(this.C):0;this.ba&=~Vm;return a};l.Sl=function(){};l.uk=function(){return this.H}; +l.Rl=function(a,b){Om(this,b)};l.wk=function(){return this.ba};l.xk=function(){var a=this.pa;this.F&=~(Vm|Wm);this.C&&Xm(this.C);return a};l.Ul=function(a,b){if(this.F&Ym)switch(this.J){case Zm:$m(this,b);break;case an:bn(this,b);break;default:if($m(this,this.I&~Wj),this.C){a=this.C;var c=b,d=-1;switch(a.F||c){case cn:d=dn;a.Pb=[];en(a,fn);break;case gn:a.F&&(c=0);en(a,dn);a.F=c;break;case hn:a.F&&(c=0),en(a,dn),a.F=c}jn(this,d)}}this.J=b;this.F&=~Ym}; +l.yk=function(){return this.H&~(kn|ln)|(Sc(this.R)&64?ln:0)};l.Vl=function(a,b){Om(this,b)};l.zk=function(){var a=this.F&255;this.F&Wm&&(this.F|=Vm,this.F&=~Wm);return a}; +l.Tl=function(a,b){this.J=b;this.F|=Ym;a=0;this.J>=mn&&(a=this.J^15,this.J=mn);switch(this.J){case nn:jn(this,this.I);break;case on:$m(this,this.I|Wj);break;case pn:$m(this,this.I&~Wj);this.C&&Xm(this.C);break;case qn:this.C&&(this.C.Pb=[]);$m(this,this.I|Wj);jn(this,rn);bn(this,gk|hk);break;case sn:jn(this,tn);break;case un:jn(this,this.K);break;case vn:jn(this,this.ra);break;case wn:jn(this,this.I&Wj?0:xn);break;case mn:a&1&&he(this.R)}}; +function $m(a,b){a.I=b;a.F=a.F&~yn|b&zn;a.C&&Qm(a.C,!!(b&An),!(b&Wj))}function jn(a,b,c){0<=b&&(a.pa=b,c?a.F|=Vm:(a.F&=~Vm,a.F|=Wm))}function bn(a,b){a.ra=b;Ib(a.oa,!!(b&hk));b&gk||he(a.R)}function Bn(a,b){a.cac?c=c?c:12:c=(c-=12)?c+128:140,d=!0);this.A[$c]&Hn||(d&&128>4)+(d&15),e=!0);if(a==zk||a==Ak)e&&23=d?d=12==d?0:d:(d-=116,d=24==d?12:d))}}else d=b;this.A[a]=d;a==$c&&c&ad&&b&ad&&Lk(this)};l.Cj=function(a,b){this.da=b};l.tm=function(){};l.um=function(){this.qd&&yf(this.qd)}; +function Nk(a,b){if(a.N){void 0!==b?a.La=b:b=!!(a.La&&a.R&&a.R.X.cb);var c=Math.round(xj/cm(a,dm));if(20>c||2E4>>4,0,this.G,this.C,this.H),delete this.H);return!0};Ln.prototype.Qb=function(){return!0}; +function Mn(a,b,c,d){if(d)a.wa("Unable to load system ROM (error "+d+": "+b+")",0>d);else{Va(a.Cd,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.H=e.symbols;if(!a.A.length){q("Empty ROM: "+b);return}if(1==a.A.length){q(a.A[0]);return}}catch(h){a.wa("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e>>d.B].ef(e&d.C,a.A[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(c=0;cthis.B?kk:23,c=a.A[b]|a.A[b+1]<<8,c=c+(this.A>>10);a.A[b]=c&255;a.A[b+1]=c>>8;uk(a)}}else q("No RAM allocated")}; +l.save=function(){var a=new Me(this);this.controller&&a.set(0,this.controller.save());return a.data()};l.restore=function(a){return this.controller?this.controller.restore(a[0]):!0};function Sn(a){this.F=a;this.C=Un;this.D=Vn;this.B=Wn;this.A=null}l=Sn.prototype;l.save=function(){return[this.C,this.B]};l.restore=function(a){this.Bb(0,a[0]&255);this.Bb(2,a[1]&255);return!0};l.Ia=function(a){var b=255;2>a?b=a&1?this.D>>8:this.D&255:4>a&&(b=a&1?this.B>>8:this.B&255);return b}; +l.Bb=function(a,b){if(a)2==a&&(this.B=this.B&-256|b);else if(b!=(this.C&255)){a=this.F.oa;if(b&Xn)this.A&&(Qb(a,Yn,Zn,this.A),this.A=null);else{this.A||(this.A=Rb(a,Yn,Zn));var c=Rb(a,$n,Zn);Qb(a,Yn,Zn,c,b&ao?1:Xb)}this.C=this.C&-256|b}};l.mi=function(){return bo};l.lg=function(){return co};var Tn=-2134900736,$n=16646144,Yn=917504,Zn=131072,Xn=1,ao=2,Un=65535,Vn=2575,Wn=2,bo=[null,0],co=[function(a){return this.controller.Ia(a)},null,null,function(a,b){this.controller.Bb(a,b)},null,null]; +Ma(function(){for(var a=cb(document,"pcx86","ram"),b=0;b=n.Fd&&d<=n.z&&(d-=n.Fd-n.Ed),d=po[e]==d),d){(a=a.ia["key-"+e])&&void 0!==c&&(a.style.color=c?"#ffffff":"#000000",a.style.backgroundColor=c?"#000000":"#ffffff");break}}}l.kc=function(a,b,c,d){this.na=a;this.oa=b;this.R=c;this.Ea=d;this.U=tb(a,"ChipSet");this.G=Fc(a,"autoType")||this.G;Ie(c,33,this.Bl.bind(this))}; +l.Bl=function(){if(10==(this.R.F>>8&255))if(this.M=!0,this.J)this.J(),this.J=null,this.M=!1;else{var a=this.G;!this.D&&a&&(this.D=a,this.mg(this.D))}return!0};function fo(a,b){var c=0;a.ca=null;"string"==typeof b&&(a.ca=b.toUpperCase(),c=so.indexOf(a.ca),0>c&&(c=0));if(b=so[c])a.da=parseInt(b.substr(2),10)}function Qm(a,b,c){a.L!==c&&(a.L=a.N=c)&&(a.H=!0);a.I!==b&&(a.I=b)&&!a.N&&Dn(a,!0);a.I&&a.N&&(a.Pb=[],en(a,fn),a.N=!1)}function en(a,b){a.U&&(a.Pb.unshift(b),a.H=!0,Bn(a.U,b))} +function Xm(a){var b;a.Pb.length&&a.H&&(b=a.Pb[0],a.U&&Bn(a.U,b))}function Jm(a){var b=0;a.Pb.length&&(b=a.Pb[0]);return b}function Dn(a,b){0>=1);if(b&xo){if(!1===d)return!0;d=null}null==d?d=!((c?a.C:a.Vb)&b):d||b&yo&&(b=yo);if(c){a.C&=~b;d&&(a.C|=b);c=b;var f,g;for(g in zo)d="led-"+g,e=zo[g],c&&c!=e||!(f=a.ia[d])||(f.style.backgroundColor=a.C&e?"#00ff00":"#000000")}else a.Vb&=~b,d&&(a.Vb|=b);return!0}}return!1} +function jo(a,b,c){if((W[b]||W[b+=1E3])&&a.R&&a.R.X.cb){vo[b]&&a.A.length&&0e||(e==a.A.length&&(d={},d.Xd=b,d.Vb=a.Vb,ro(a,b,!0),e++),0b.ad){if(!b.Ie){qo(a,b.Xd);return}b.Ie=!1;c=a.fa}else c=1==b.ad++?500:100;b.mh=setTimeout(function(a){return function(){Ao(a,b)}}(a),c)}} +function Co(a,b,c){var d=b;if(b>=n.Ed&&b<=n.qf)!(a.Vb&(Do|Eo|Fo))==c&&(d=b+(n.Fd-n.Ed));else if(b>=n.Fd&&b<=n.z)!!(a.Vb&(Do|Eo|Fo))==c&&(d=b-(n.Fd-n.Ed));else if(!!(a.Vb&(Do|Eo))==c){if(a=p[b])d=a}else if(a=ha[b])d=a;return d}l.Qf=function(a){a||(this.Vb&=~yo)}; +function go(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;if(!ho(a.na))return!1;a.B="";gb(a.Cd);var h=Co(a,g,!0);a.jg&&h==n["`"]&&(g=h=27);if(W[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),oo(a,h,!1,c)){if(20==g||144==g||145==g)a.aa||(c=e=!0);if(!(c||91!=g&&93!=g))for(var k=0;k=n.Ed&&b<=n.qf||b>=n.Fd&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==Po||f==Qo?d.push(f|(c?0:Oo)):(h==X?a.C&(Do|Eo)||a.C&Fo&&b||(g=h):h==Ro?a.C&(Go|So)||(g=h):h==To?a.C&(Ho|Uo)||(g=h):d.push(f|(c?0:Oo)),g&&(c?d.unshift(g):d.push(g|Oo)))}for(c=0;c"]]=52|X<<8;W[n["/"]]=53; +W[n["?"]]=53|X<<8;W[3016]=54;W[1044]=55;W[1018]=To;W[1032]=57;W[ko]=58;W[1112]=59;W[1113]=60;W[1114]=61;W[1115]=62;W[1116]=63;W[1117]=64;W[1118]=65;W[1119]=66;W[1120]=67;W[1121]=68;W[lo]=69;W[mo]=70;W[1036]=71;W[1038]=72;W[1033]=73;W[1109]=74;W[1037]=75;W[1101]=76;W[1039]=77;W[1107]=78;W[1035]=79;W[1040]=80;W[1034]=81;W[1045]=82;W[1046]=No;W[4027]=84;W[1122]=87;W[1123]=88;W[1091]=91;W[1093]=93;W[1224]=91;W[Xo]=46|Ro<<8;W[Io]=70|Ro<<8;W[4046]=No|Ro<<8|To<<16;W[4045]=82|Ro<<8|To<<16; +W[4013]=28|Ro<<8|To<<16;var cn=255,gn=243,hn=237,fn=170,dn=250,Wo=255,Vo=20;Ma(function(){for(var a=cb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.Wb=c[0];this.Ec=c[1];this.bf=c[2];this.Z=c[3];this.hc=c[4]&255;this.Tf=c[4]>>8&255;this.Ua=c[5];this.pg=$o;this.Ad=this.Ua[bp]|this.Ua[cp]<<8;this.sf=63;if(b>=On){this.sf=255;this.pg=ap;(b=c[6])||(b=[!1,0,Array(dp),0,f==ck?0:ep, +0,0,Array(fp),0,0,0,Array(gp),0,[this.ab,this.Hb,this.Xc],Array(this.Xc>>2),hp|ip|jp|kp|lp,0,-1,0,-1,0,-1,0,0,0,0,mp,np,0,0,op,Array(pp)]);this.He=b[0];this.Sd=b[1];this.vc=b[2];this.ih=b[3];this.cf=b[4];this.Wf=b[5];this.Vd=b[6];this.Ud=b[7];this.Kj=b[8];this.Lj=b[9];this.Td=b[10];this.nd=b[11];this.pb=b[12];d=b[13];"number"==typeof d&&(d=[this.ab,this.Hb,d]);this.ab=d[0];this.Hb=d[1];d=this.Xc>>2;if((this.td=b[14])&&this.td.length=On){var c=[];c[0]=a.He;c[1]=a.Sd;c[2]=a.vc;c[3]=a.ih;c[4]=a.cf;c[5]=a.Wf;c[6]=a.Vd;c[7]=a.Ud;c[8]=a.Kj;c[9]=a.Lj;c[10]=a.Td;c[11]=a.nd;c[12]=a.pb;c[13]=[a.ab,a.Hb,a.Xc];var d;if(d=a.td){var e=0,f=[];if(void 0!==d[0])for(var g=0;2>g;g++)for(var h=g;h>1;f[e++]=k;h=m}f.length=On){var d=0,e=0,f=0;switch(b){case xp:d=yp;a.Oa==Qn&&(e=zp);break;case Ap:a.Oa==On&&(d=Bp);break;case Cp:d=Dp;a.Oa==Qn&&(e=Ep);break;case Fp:d=Gp;a.Oa==Qn&&(e=Hp);break;case Ip:d=Jp;a.Oa==Qn&&(f=Kp);break;case Lp:d=Mp,a.Oa==Qn&&(f=Np)}d&&(c|=a.Ua[Op]&d?256:0,c|=a.Ua[Op]&e?512:0,c|=a.Ua[Pp]&f?512:0)}return c} +var cp=12,bp=13,$o=18,xp=6,Op=7,yp=1,Gp=2,Dp=4,Jp=8,Mp=16,Bp=32,zp=32,Hp=64,Ep=128,Pp=9,Kp=32,Np=64,Ap=10,Cp=16,Fp=18,Ip=21,Lp=24,ap=25,Qp={},Rp=(Qp[0]=255,Qp[1]=255,Qp[2]=255,Qp[3]=15,Qp[4]=127,Qp[5]=31,Qp[6]=127,Qp[7]=127,Qp[8]=3,Qp[9]=31,Qp[10]=127,Qp[11]=31,Qp[cp]=63,Qp[bp]=255,Qp[14]=63,Qp[15]=255,Qp[16]=63,Qp[17]=255,Qp),dp=20,ep=1,mp=1,fp=5,np=255,op=0,pp=256,gp=9,hp=1024,ip=4096,tp=65280,jp=0,kp=16,vp=255,lp=-2147483648,qp=[];qp[2]=hp;qp[3]=hp|ip;qp[16]=1280;qp[512]=jp;qp[1024]=jp|32; +qp[1536]=jp|96;qp[2560]=jp|160;qp[3584]=jp|224;qp[768]=jp|kp;qp[4096]=1;qp[8192]=2;qp[24576]=98;qp[40960]=162;qp[57344]=226;var up=[];up[hp]=function(a){a+=this.G;return(this.controller.pb=this.S[a])>>this.controller.eh&255};up[hp|16384]=function(a){return(this.controller.pb=this.S[(a&-4)+this.G])>>((a&3)<<3)&255};up[hp|ip]=function(a){a+=this.G;var b=this.controller.pb=this.S[a&-2];return(a&1?b>>8:b)&255}; +up[1280]=function(a){a+=this.G;a=this.controller.pb=this.S[a];for(var b=this.controller.rg,c=this.controller.qg&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};up[jp]=function(a,b){a+=this.G;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|32]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|96]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b&=this.controller.pb;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|160]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b|=this.controller.pb;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|224]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b^=this.controller.pb;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)};up[jp|4]=function(a,b){var c=(a&-4)+this.G;a=(a&3)<<3;b=b<>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ub;b=this.controller.Ve&b|this.controller.pb&~b;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +function Y(a,b,c,d,e){u.call(this,"Video",a);var f=this,g;this.Oc=Ea("Gecko/");this.ca=a.model;var h=Tp[this.ca]||Tp.mda;this.Oa=h[0];this.Xc=a.memory||0;this.Uc=a.switches;this.Lb=a.randomize;null==this.Lb&&(this.Lb=1);this.ba=a.mode;if(null==this.ba||null==Up[this.ba])this.ba=h[1];this.Jb=a.charCols;this.sc=a.charRows;if(void 0===this.Jb||void 0===this.sc)this.Jb=Up[this.ba][0],this.sc=Up[this.ba][1];this.Y=a.screenWidth;this.ja=a.screenHeight;this.Qc=a.scale;this.qd=12<=Math.round(this.Y/this.Jb); +this.M=b;this.J=c;this.F=(this.Ef=d)||b||null;this.Zb=a.screenColor||"black";this.Tc=(1-(Ia("flicker")||a.flicker||0)).toString();this.Eb=!1;b&&(b.style.backgroundColor=this.Zb);e&&(e.style.backgroundColor=this.Zb);b=a.smoothing;(c=Ia("smoothing"))&&(b="true"==c);null!=b&&(g=Fa(this.J,"imageSmoothingEnabled"))&&(this.J[g]=b);this.cd=a.touchScreen;this.gb=Vp;this.K=null;this.pd=a.autoLock;this.ab=this.Hb=0;this.pa=[];this.fa=Array(this.Oa==Qn?256:16);this.Ga=!1;if(this.N=e)if(g=Fa(e,"requestFullscreen")|| +Fa(e,"requestFullScreen")){this.N.A=e[g];if(e=Fa(document,"on","fullscreenchange")){var k=Fa(document,"fullscreenElement")||Fa(document,"fullScreenElement");document.addEventListener(e,function(){Wp(f,!!k)},!1)}(e=Fa(document,"on","fullscreenerror"))&&document.addEventListener(e,function(){Wp(f,null)},!1)}if(this.F&&(this.F.onfocus=function(){return f.Qf(!0)},this.F.onblur=function(){return f.Qf(!1)},this.F.Md=(g=Fa(this.F,"requestPointerLock"))&&this.F[g],this.F.B=(g=Fa(this.F,"exitPointerLock"))&& +this.F[g],this.F.Md&&(e=Fa(document,"on","pointerlockchange")))){var m=Fa(document,"pointerLockElement");document.addEventListener(e,function(){f.Xe(!(!m||document[m]!==f.F))},!1)}(this.xa=a.fontROM)&&"json"!=la(this.xa)&&(this.xa=xa()+"/api/v1/dump?file="+this.xa+"&format=bytes")}ca(Y,u);l=Y.prototype; +l.kc=function(a,b,c,d){var e=this;this.oa=b;this.R=c;this.Ea=d;c=+Fc(a,"randomize");0<=c&&1>=c&&(this.Lb=c);c=(c=Tp[this.ca])&&c[0];c!==Xp&&(ec(b,this,Yp),gc(b,this,Zp));c!==$p&&(ec(b,this,aq),gc(b,this,bq));this.Oa>=On&&(ec(b,this,cq),gc(b,this,dq));this.Oa==Qn&&(ec(b,this,eq),gc(b,this,fq));if((this.C=tb(a,"Keyboard"))&&this.M){for(var f in this.ia)0c&&(a=Math.round(c/b*100)+"%")}d.Oc?(d.M.style.width=a,d.M.style.width=a,d.M.style.display="block",d.M.style.margin="auto"):(d.N.style.width=a,d.N.style.height="auto");d.N.style.backgroundColor=d.Zb;d.N.A()}d.F&&d.F.focus()}}:c.parentNode.removeChild(c), +!0;case "lockPointer":return this.sd=c.textContent,this.F&&this.F.Md?c.onclick=function(){d.Md(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){lq(d,!0)},!0}return!1};function Wp(a,b){!b&&a.N&&(a.Oc?a.M.style.width=a.M.style.height="":a.N.style.width=a.N.style.height="");a.C&&(a.C.jg=b)}l.Md=function(a){var b=!1;this.F&&(a?this.F.Md&&(this.F.Md(),this.K&&this.K.Xe(!0),b=!0):this.F.B&&(this.F.B(),this.K&&this.K.Xe(!1),b=!0),this.F&&this.F.focus());return b}; +l.Xe=function(a){this.K&&(this.K.Xe(a),this.C&&(this.C.jg=a));var b=this.ia.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.sd)};function gq(a,b){var c=a.F;c&&!a.gb&&(a.gb=b,c.addEventListener("touchstart",function(b){Kn(a.U,b);a.gb!=jq&&nq(a,b,!0)},!1),b!=jq&&(c.addEventListener("touchmove",function(b){nq(a,b)},!0),c.addEventListener("touchend",function(b){nq(a,b,!1)},!1),a.mb=a.rb=a.dd=-1,a.mc=!1,a.Cb=null,a.lc=!1,a.rd=function(){a.lc=!0;a.K.ie(oq,!0)}))} +l.Qf=function(a){this.C&&this.C.Qf(a)}; +function nq(a,b,c){var d,e,f=0,g=0;d=a.M;do isNaN(d.offsetLeft)||(f+=d.offsetLeft,g+=d.offsetTop);while(d=d.offsetParent);var h=a.Y/a.M.offsetWidth,k=a.ja/a.M.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*k;if(a.gb==iq)c&&jo(a.C,pq[e/(a.ja/3)|0][d/(a.Y/3)|0],!0);else if(a.K){g=a.mc;f=b.timeStamp-a.dd;!0===c?(a.mc=500f){a.K.ie(oq,!0);a.K.ie(oq,!1);return}}if(c||0>a.mb||0>a.rb)a.mb=d,a.rb=e;c=Math.round(d-a.mb);b=Math.round(e-a.rb);a.mb=d;a.rb=e;a.K.ng(c,b,a.mb,a.rb)}}l.Rb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Qb=function(a){return a?this.save():!0}; +l.reset=function(){var a=0;this.U&&(a=+bk(this.U,uj,void 0));this.ca||(this.Oa=a==ck?$p:Xp);this.ba=qq;switch(this.Oa){case Qn:a=7;break;case On:var b=rq[this.wb];b&&(a=b[0]);a||(a=4);break;case $p:a=ck;this.ba=sq;break;default:a=2}this.da!==a&&(this.da=a);this.B=null;this.W=this.Xb=new Yo(this,$p);this.I=this.Db=new Yo(this,Xp);this.Oa>1&255,c=c>>8&~wq,c>>4==(c&15)&&(c^=15)):(d=c&255,c=(c&256?xq|yq:zq|Aq)|Bq&c>>8);cc(this.oa,b,d|c<<8)}lq(this,!0)}};function tq(a){a.A.cf&ep?(a.W=a.Xb,a.I=a.A):(a.W=a.A,a.I=a.Db)}l.save=function(){var a=new Me(this);a.set(0,sp(this.Xb));a.set(1,sp(this.Db));a.set(2,[this.da,this.ba,this.ma]);a.set(3,sp(this.A));return a.data()}; +l.restore=function(a){var b=a[2];this.da=b[0];this.ba=b[1];this.ma=b[2];this.B=null;this.W=this.Xb=new Yo(this,$p,a[0]);this.I=this.Db=new Yo(this,Xp,a[1]);this.A=new Yo(this,this.Oa,a[3],this.Xc);this.A.Wb&&tq(this);uq(this);if(!Cq(this))return!1;Dq(this);return!0}; +function kq(a,b,c,d){if(d)a.wa("Unable to load font ROM (error "+d+": "+b+")",0>d);else{Va(a.Cd,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(8192==f.length)Pn(a,f,[6144,0]);else if(2048==f.length)Pn(a,f,[0]);else{a.wa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.wa("Font ROM data error: "+g.message);return}(a.J||a.Ea)&&v(a)}} +function Eq(a,b){if(1==b)return a.fa[0]=Fq[zq],a.fa[1]=Fq[xq],a.fa;if(2==b){var c=a.B.bf;if(a.B===a.A){var d=a.A.vc[0],c=d&7;d&16&&(c|=8);18!=a.A.vc[1]&&(c|=32)}a.fa[0]=Fq[c&15];c=c&32?Gq:Hq;for(d=0;de;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.fa[e]=[g,h,f,255];else{var k=d&&d[255];b=null!=c.vc[15]?c.vc:Iq;for(e=0;16>e;e++)f=b[e]&63,k?(f|= +(c.vc[20]&12)<<4,c.vc[16]&128&&(f&=-49,f|=(c.vc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.fa[e]=[g,h,f,255]}a.Ga=!0}return a.fa}function Pn(a,b,c,d){a.vb=b;a.Qa=c;a.Ca=d} +function uq(a,b){var c=!1;if(window&&a.vb&&(!b||a.G)){var d=0,e=a.Ca?a.Ca:8,f=Eq(a);null!=a.Qa[0]&&Jq(a,Kq,a.Qa[0],d,e,8,a.vb,f)&&(c=!0);d=a.Ca?0:2048;e=a.Ca?a.Ca:9;null!=a.Qa[1]&&(Jq(a,Lq,a.Qa[1],d,e,14,a.vb,Mq,Nq)&&(c=!0),a.Ca&&Jq(a,a.Oa,a.Qa[1],0,a.Ca,14,a.vb,f)&&(c=!0))}b||(a.aa=-1,a.za=-1,a.ra=0);return c}function Jq(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(Oq(a,b,c,d,e,f,g,h,k)&&(m=!0),a.qd&&Oq(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function Oq(a,b,c,d,e,f,g,h,k){var m=!1,r=b&1?0:1,y=a.pa[b],t=16>h.length?h.length:16;y||(y={qc:e<Ha||!aa?Ha:8,Zh=Km.createImageData(m.qc,m.rc);for(Ob=0;256>Ob;Ob++){for(rc=0;rc=Ha-2,St=Kc[rc>(8<=od&&192<=Ob&&223>=Ob?7:od)?z:Yh;Pq(Zh,Lm,Mm,Nm);N&&Pq(Zh,Lm+1,Mm,Nm)}Km.putImageData(Zh,(Ob&15)*m.qc,(Ob>>4)*m.rc)}m.be[D]="#"+ja(z[0],2)+ja(z[1],2)+ja(z[2],2);m.Sh[D]=z;m.dg[D]=Tf;m=!0}}a.pa[b]=y;return m}function Qq(a){0a.za&&(a.za=0):a.za=-1} +function Dq(a){if(a.G){for(var b=10;15>=b;b++)if(null==a.B.Ua[b])return;var c=a.B.Ua[10],b=c&31,d=a.B.Ua[11]&Rp[11],e=a.B.Ua[9]&Rp[9],f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)Rq(a);else{c=a.B.Ua[15];c|=(a.B.Ua[14]&a.B.sf)<<8;a.aa!=c&&(Rq(a),a.aa=c);d=d-b+1;if(a.Vc!=b||a.Ic!=d)a.Vc=b,a.Ic=d;a.ua=e+1;Qq(a)}}} +function Rq(a){if(0<=a.aa){if(void 0!==a.L){var b=Sq<<8,c=a.L[a.aa];if(c&b){var c=c&~b,b=a.aa%a.D,d=a.aa/a.D|0;a.G&&a.pa[a.G]&&(a.Ba&&Tq(a,b,d,c,a.Ba),Tq(a,b,d,c));a.L[a.aa]=c}}a.aa=-1}} +function Uq(a){var b,c=a.B;a.Nc=!1;var d=c.nd[5];if(null!=d){b=hp;var e=jp,f=c.nd[3]&31;switch(d&3){case 0:if(f){e=jp|32;switch(f&24){case 8:e=jp|96;break;case 16:e=jp|160;break;case 24:e=jp|224}c.Ac=f&7}break;case 1:e=1;break;case 2:switch(f&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.Oa==Qn&&(e=3,c.Ac=f&7)}d&8&&(b=1280);c=c.Ud[4];null!=c&&(c&4||(b|=ip,e|=kp),d&64&&(c&8&&(b|=16384,e|=4),a.Nc=!0));b|=e}return b} +function Vq(a,b){var c=a.B;return c&&null!=b&&b!=c.og?(c.Yf(b),a.oa.Yf(c.ab,c.Hb,c.lg(),!0),!0):!1} +function Cq(a,b){var c,d=a.ma,e=a.B;if(e)if(e.Oa==$p)d=sq;else if(e.Oa>=On){var d=null,f=e.Xc>>2,g=32768=e.Ua[Fp]?$q:ar:br:g&128|| +350>f?d=m?cr:dr:480<=f&&(d=a.da==ck?er:fr):d=m?7-d:gr:d-=m?2:0);c=Uq(a)}}else e.Ec&8?(e.Ec&2?(d=e.Ec&16?gr:hr,e.Ec&4||--d):(d=e.Ec&1?qq:ir,e.Ec&4&&--d),a.Eb&&(a.M.style.opacity="1",a.Eb=!1)):!a.Eb&&1>+a.Tc&&(a.Eb=!0,a.M.style.opacity=a.Tc,e=a.R,e.X.Zf=!0,Lc(e));else a.ma=null,null==d&&(d=a.ba);if(!vq(a,d,b))return!1;Vq(a,c);return!0} +function vq(a,b,c){if(null!=b&&(b!=a.ma||c)){a.od=0;a.ma=b;a.Ga=!1;b=a.B||(b==sq?a.W:a.I);if(b!=a.B||b.ab!=a.ab||b.Hb!=a.Hb){Rq(a);if(a.ab){if(!Vb(a.oa,a.ab,a.Hb))return!1;a.B&&(a.B.Wb=!1)}a.B=b;b.Wb=!0;a.ab=b.ab;a.Hb=b.Hb;if(!Jb(a.oa,b.ab,b.Hb,3,b===a.A?b:null))return!1}a:{a.G=0;a.D=a.Jb;a.H=a.sc;a.Ma=a.D;a.Gb=Up[sq][2];b=0;if(c=Up[a.ma])a.D=c[0],a.H=c[1],a.Gb=c[2],b=c[3],a.G=c[4],4!=a.da&&7!=a.da||a.B!==a.A||a.G!=Kq||(7==(a.A.Ua[Pp]&31)?a.H=350>wp(a.A,Fp)?43:50:a.G=a.Oa);a.Sc=a.D*a.H|0;a.Rc=a.Sc/ +a.Gb|0;a.Sa=a.Rc;a.Yb=0;void 0!==b&&(a.Sa=(a.Sa<<1)+b|0,a.Yb=a.Sa+b>>1);if(a.pa.length){a.la=a.Y/a.D|0;a.qa=a.ja/a.H|0;if(a.G){b=a.pa[a.G];if(!b)break a;c=a.pa[a.G<<1];a.Qc&&80==a.D?c&&a.la>=3*c.qc>>2&&(a.G<<=1,b=c):(c&&a.la>=c.qc&&(a.G<<=1,b=c),a.Qc||(a.la=b.qc,a.qa=b.rc));a.eb=a.fb=0;b&&(a.eb=a.D*b.qc,a.fb=a.H*b.rc)}else a.la=a.qa=1,a.eb=a.D,a.fb=a.H;a.La=a.J.createImageData(a.eb,a.fb);a.Aa=document.createElement("canvas");a.Aa.width=a.eb;a.Aa.height=a.fb;a.Ba=a.Aa.getContext("2d");a.uc=a.Dc=0; +a.ec=a.Y;a.fc=a.ja;b=a.Y-a.D*a.la;c=a.ja-a.H*a.qa;0>1,a.ec-=b);0>1,a.fc-=c);if(b||c)a.J.fillStyle=a.M.style.backgroundColor,a.J.fillRect(0,0,a.Y,a.ja)}}jr(a,!0);lq(a)}return!0}function Pq(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function kr(a){a.ra=-1;a.Da=!1;var b=a.Rc;if(void 0===a.L||a.L.length!=b)a.L=Array(b)}function jr(a,b){b||(a.Ga=!1);kr(a)} +function Tq(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.pa[a.G];h.Ee&&(d=h.Ee[d]);var k=g>>4&15;h.Ee&&(k=h.Ee[k]);e?(b*=h.qc,c*=h.rc,e.fillStyle=h.be[k],e.fillRect(b,c,h.qc,h.rc)):(b=b*a.la+a.uc,c=c*a.qa+a.Dc,a.J.fillStyle=h.be[k],a.J.fillRect(b,c,a.la,a.qa));g&lr&&(k=(f&15)*h.qc,f=(f>>4)*h.rc,e?e.drawImage(h.dg[d],k,f,h.qc,h.rc,b,c,h.qc,h.rc):a.J.drawImage(h.dg[d],k,f,h.qc,h.rc,b,c,a.la,a.qa));g&Sq&&(f=a.Vc,g=a.Ic,e?(a.ua&&a.ua!==h.rc&&(f=f*h.rc/a.ua|0,g=g*h.rc/a.ua|0),e.fillStyle=h.be[d],e.fillRect(b, +c+f,h.qc,g)):(a.ua&&a.ua!==a.qa&&(f=f*a.qa/a.ua|0,g=g*a.qa/a.ua|0),a.J.fillStyle=h.be[d],a.J.fillRect(b,c+f,a.la,g)))} +function lq(a,b){b=void 0===b?!1:b;if(a.X.Sb){var c=!1,d=a.B;d&&(d!==a.A?d.Ec&8&&(c=!0):d.Sd&32&&(c=!0));if(c||b){if(b)kr(a);else if(void 0===a.L)return;c=!1;!(b||++a.od&15)&&0<=a.za&&(a.za++,c=!0);var e=a.Sc,f=a.ab,g=f,h=g+a.Hb;a.ma>=$q&&(f=g=655360,h=g+65536);if(mr(a,d)&8||d.We&&d.We=On&&d.Ua[19]&&d.Ua[19]<<1!=d.Ua[1]+1&&(a.Ma=d.Ua[19]<<(a.G?1:d.Ua[20]&64?3:4),k=(a.Ma*(a.H-1)+a.D)/ +a.Gb|0,a.ma<=sq&&(k<<=1));var r=d=0;g+k>h&&(r=k,g>=h?(d=f+(g-h),k=0):(d=f,k=h-g,r-=k));h=a.aa-(m>>1);g=nr(a,f,g,k,0,h,e,b,c);r&&(g+=nr(a,f,d,r,0+g,h,e,b,c));g&&(a.Da=!0)}}} +function nr(a,b,c,d,e,f,g,h,k){var m=d>>1;m>g&&(m=g);var r=c+d;if(h=!h&&a.Da){h=a.oa;for(var y=!0,t=c>>>h.B,z=h.A-(c&h.C);0f)return m;c+=f<<1;e+=f;g=e+1}}if(a.G){if(a.pa[a.G]){b=c;c=e;k=f=e=0;h=lr<<8;d=1048575;t=a.B.Ec&32;a.Oa>=On&&(t=a.B.vc[16]&8);y=a.aa-a.B.Ad;t&&(k=wq<<8,d&=~k,a.za&2||(d&=~h));for(a.ra=0;b>1;g=0;c=a.Gb;e=b;f=16==c?65536:196608;k=16==c?1:2;h=Eq(a,k);var y=d=0,t=a.D,z=0,D=a.H,N=0;for(a.ra=0;e>8|(P&255)<<8,aa=f,ya=16;d>=k))>>(ya-=k);Pq(a.La,d++,y,h[Kc])}d>z&&(z=d);y=N&&(N=y+1)}e+=2;g++;if(d>=a.D){d= +0;y+=2;if(y>a.H)break;y==a.H&&(y=1,e=b+a.Yb)}}ta.D?a.Ma-a.D-N>>3:0;for(a.ra=0;c>=8;k>y&&(y=k);h=z&&(z=h+1)}c+=D;if(k>=a.D){k=0;if(++h>a.H)break;c+= +P}}N&&(g=0)}else{m=0;g=r-c;e=Eq(a);f=a.B.td;h=k=0;d=a.D;y=0;t=a.H;z=0;D=a.B.vc[19]&15;N=a.Ma>a.D?a.Ma-a.D-D>>3:0;for(a.ra=0;caa&&(ya=aa)):(P<<=D,ya-=D,a.Da=!1):(a.Da&&P===a.L[m]?(k+=ya,ya=0):a.L[m]=P,m++);if(ya){ky&&(y=k);h=z&&(z=h+1)}if(k>=a.D){k=0;if(++h>a.H)break;c+=N}}D&&(g=0)}da&&(b.vg=a,a=-a|0);a%b.tg>b.Ll&&(c|=1);a%b.ug>b.Nl&&(c|=9);b.fh=a/b.ug|0;return c}l.fl=function(){var a=this.W,b;a.Wb&&(b=a.hc);return b};l.Dm=function(a,b){a=this.W;a.Tf=a.hc;a.hc=b&31};l.el=function(){return pr(this.W)};l.Cm=function(a,b){qr(this,this.W,b)};l.gl=function(){return this.W.Ec};l.Em=function(a,b){this.W.Ec=b;Cq(this,!1)};l.hl=function(){return rr(this,this.W)};l.Bj=function(a,b){this.A.Wf=this.A.Wf&-4|b&3};l.Ek=function(){return this.A.Sd}; +l.bk=function(){return this.A.vc[this.A.Sd&31]};l.Aj=function(a,b){a=this.A;var c=a.Sd&32;if(a.He){a.He=!1;var d=a.Sd&31;if(16<=d||!c)if(sr||a.vc[d]!==b)a.vc[d]=b,jr(this,!1)}else a.Sd=b,a.He=!0,b&32&&!c&&uq(this,!0)&&lq(this,!0),b=a.Ua[bp],b|=(a.Ua[cp]&a.sf)<<8,a.Ad!=b&&(a.Ad=b,jr(this)),a.We=0};l.rl=function(){var a=0;if(this.Oa==On)a=3-((this.A.cf&12)>>2),a=(this.wb&1<>this.A.wc&63;this.A.wc+=6;12Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.height="auto";0<=za().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth, +d.screenHeight),c.onresize(null));var f=+(Ia("aspect")||d.aspect);f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ea("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Y(d,e,g,f,c);bb(d,c)}}); +function tr(a){u.call(this,"ParallelPort",a);this.G=a.adapter;switch(this.G){case 1:this.D=956;this.C=7;break;case 2:this.D=888;this.C=7;break;case 3:this.D=632;this.C=5;break;default:q("Unrecognized parallel adapter #"+this.G);return}this.A=this.B=null;a=a.binding;"console"==a?this.B="":$a(this,a,ur)}ca(tr,u);l=tr.prototype;l.Ab=function(a,b,c){switch(b){case ur:return this.ia[b]=this.A=c,!0}return!1}; +l.kc=function(a,b,c,d){this.oa=b;this.R=c;this.Ea=d;this.U=tb(a,"ChipSet");ec(b,this,vr,this.D);gc(b,this,wr,this.D);v(this)};l.Rb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Qb=function(a){return a?this.save():!0};l.reset=function(){xr(this)};l.save=function(){var a=new Me(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Fb;c[b]=this.Fe;a.set(0,c);return a.data()};l.restore=function(a){return xr(this,a[0])}; +function xr(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Fb=b[c++];a.Fe=b[c];return!0}l.Tk=function(){return this.F};l.ql=function(){return this.Fb};l.Pk=function(){return this.Fe};l.pm=function(a,b){this.F=b;this.Fb|=yr;a=!1;this.A&&(8==b?this.A.value=this.A.value.slice(0,-1):(this.A.value+=String.fromCharCode(b),this.A.scrollTop=this.A.scrollHeight),a=!0);if(null!=this.B){if(10==b||1024<=this.B.length)this.qb(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b));a=!0}a&&(this.Fb&=~yr);zr(this)}; +l.km=function(a,b){this.Fe=b;zr(this)};function zr(a){a.U&&a.C&&(a.Fe&Ar&&!(a.Fb&yr)?Ff(a.U,a.C):Df(a.U,a.C))}var ur="buffer",yr=64,Ar=16,vr={0:tr.prototype.Tk,1:tr.prototype.ql,2:tr.prototype.Pk},wr={0:tr.prototype.pm,2:tr.prototype.km};Ma(function(){for(var a=cb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=pa(c[0]);if(d!=this.Be)return;c=pa(c[1]);if(this.F=fb(c)){var e=this.F.exports;if(e){var f=e.connect;f&&f.call(this.F,this.N);if(this.aa=e.receiveData){this.N=a;this.W=e.receiveStatus;this.status("Connected "+this.Cd+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.Rb=function(a,b){if(!b)if(this.ri(this.N),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Qb=function(a){return a?this.save():!0};l.reset=function(){Hr(this)};l.save=function(){var a=new Me(this),b=0,c=[];c[b++]=this.da;c[b++]=this.ja;c[b++]=this.K;c[b++]=this.L;c[b++]=this.D;c[b++]=this.I;c[b++]=this.Y;c[b++]=this.A;c[b++]=this.B;c[b]=this.H;a.set(0,c);return a.data()};l.restore=function(a){return Hr(this,a[0])}; +function Hr(a,b){var c=0;b||(b=[0,0,Ir,0,Jr,0,0,Kr|Lr,a.pa,[]]);a.da=b[c++];a.ja=b[c++];a.K=b[c++];a.L=b[c++];a.D=b[c++];a.I=b[c++];a.Y=b[c++];a.A=b[c++];a.B=b[c++];a.H=b[c];return!0}l.af=function(a){if("number"==typeof a)this.H.push(a);else if("string"==typeof a)for(var b=0;b>8:this.L};l.al=function(){var a=this.D;this.D|=Jr;return a};l.bl=function(){return this.I};l.dl=function(){return this.Y};l.cl=function(){return this.A};l.il=function(){var a=this.B;this.B&=~(Nr|Or);return a}; +l.Mm=function(a,b){if(this.I&Rr)this.K=this.K&-256|b;else{this.ja=b;this.A&=~(Kr|Lr);a=!1;this.aa&&this.aa.call(this.F,b)&&(a=!0);if(this.C){if(13==b)this.J=0;else if(8==b)this.C.value=this.C.value.slice(0,-1),0":String.fromCharCode(b);a=c.length;32>b&&1==a&&(a=0);9==b&&(a=this.ma||8,a-=this.J%a,this.ma&&(c=" ".slice(0,a)));!this.J&&a&&(10!=this.qa&&(c="\n"+c),this.la&&(c=String.fromCharCode(this.la)+ +c));this.C.value+=c;this.C.scrollTop=this.C.scrollHeight;this.J+=a}this.qa=b;a=!0}else if(null!=this.G){if(10==b||1024<=this.G.length)this.qb(this.G),this.G="";10!=b&&(this.G+=String.fromCharCode(b));a=!0}a&&(this.A=this.A|Kr|Lr,Pr(this))}};l.zm=function(a,b){this.I&Rr?this.K=this.K&255|b<<8:this.L=b};l.Am=function(a,b){this.I=b};l.Bm=function(a,b){a=b^this.Y;this.Y=b;a&(Sr|Tr)&&this.W&&(a=0,this.N?(a|=b&Tr?32:0,a|=b&Sr?320:0):(a|=b&Tr?16:0,a|=b&Sr?1048576:0),this.W.call(this.F,a))}; +function Pr(a){var b=-1;a.A&Qr&&a.L&Ur?b=Vr:a.A&Kr&&a.L&Wr?b=Xr:a.B&(Nr|Or)&&a.L&Yr&&(b=Zr);0<=b?(a.D&=~(Jr|$r),a.D|=b,a.U&&a.M&&Ff(a.U,a.M,100)):(a.D|=Jr,a.U&&a.M&&Df(a.U,a.M))}var Er="buffer",Ir=384,Ur=1,Wr=2,Yr=8,Jr=1,Vr=4,Xr=2,Zr=0,$r=6,Rr=128,Sr=1,Tr=2,Qr=1,Kr=32,Lr=64,Nr=1,Or=2,Cr=16,Dr=32,Fr={0:Br.prototype.nl,1:Br.prototype.$k,2:Br.prototype.al,3:Br.prototype.bl,4:Br.prototype.dl,5:Br.prototype.cl,6:Br.prototype.il},Gr={0:Br.prototype.Mm,1:Br.prototype.zm,3:Br.prototype.Am,4:Br.prototype.Bm}; +Ma(function(){for(var a=cb(document,"pcx86","serial"),b=0;ba.A||0>a.B)a.A=b.screenX,a.B=b.screenY;a.M?(c=b.movementX||b.mozMovementX||b.webkitMovementX||0,d=b.movementY||b.mozMovementY||b.webkitMovementY||0):(c=b.screenX-a.A,d=b.screenY-a.B);a.A=b.screenX;a.B=b.screenY;a.ng(c,d,a.A,a.B)}} +l.ie=function(a,b){if(this.Wb&&this.R&&this.R.X.cb)switch(a){case oq:this.K!=b&&(this.K=b,gs(this));break;case hs:this.L!=b&&(this.L=b,gs(this))}};l.ng=function(a,b){this.Wb&&this.R&&this.R.X.cb&&(a=Math.round(Math.abs(a)*this.J)*Math.sign(a)||Math.sign(a),b=Math.round(Math.abs(b)*this.J)*Math.sign(b)||Math.sign(b),a||b)&&(this.H=a,this.I=b,gs(this))};function gs(a){a.G.af([64|(a.K?32:0)|(a.L?16:0)|(a.I&192)>>4|(a.H&192)>>6,a.H&63,a.I&63]);a.H=a.I=0} +l.$j=function(a){var b=1048592==(a&1048592);if(b){if(!this.Wb){var c=!1;this.C&16||(this.reset(),c=!0);this.C&1048576||(c=!0);c&&this.G.af([is,is]);bs(this);this.Wb=b}}else this.Wb&&(cs(this),this.Wb=b);this.C=a};var is=77,oq=0,hs=2;Ma(function(){for(var a=cb(document,"pcx86","mouse"),b=0;b>2;var e=d=0,a=new DataView(a,0,c);g.A=Array(g.kb);for(c=0;cb.indexOf("/api/v1/dump")&&(a=la(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=qs(this,b),this.Cf=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"): +ma(b,"/")&&(c="dir"),f=xa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json"));var k="Loading "+f+"...";return!!wa(f,null,!0,function(a,b,c){rs(g,a,b,c)},function(){g.qb(k,mb.ae)})}; +function rs(a,b,c,d){var e=null;a.pe=!1;var f=!(!(0>d&&a.na)||a.na.X.Sb);if(a.Cf)d?a.wa('Unable to connect to disk "'+a.F+'" (error '+d+": "+c+")",f):(a.C=!0,e=a);else if(d)a.wa('Unable to load disk "'+a.Pc+'" (error '+d+": "+b+")",f);else{Va(a.controller.Cd,b,c);try{if(0g&&0c.indexOf("0x")&& +'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+c+")");if(h.length)if(1==h.length)q(h[0]);else{a.kb=h.length;a.$a=h[0].length;a.Xa=h[0][0].length;var k=h[0][0][0];a.ob=k&&k.length||512;for(d=c=0;d>2,r=k.pattern;void 0===r&&(r=k.pattern=0);var y=k.data;if(void 0===y){var t=k.bytes;if(void 0!==t&&t.length){for(var z=m<<2,D=t.length;D< +z;D++)t[D]=r;ss(k,t,0)}else k.data=y=[],t&&(k.pattern=r|r<<8|r<<16|r<<24);delete k.bytes}ps(k,d,f);for(z=0;zg)break;e|=g<b&&(b=0);2E3>2,e=Array(d),f=0;f>2,e=a.data;a=a.pattern;for(var f=0;f>8&255;c[d++]=g>>16&255;c[d++]=g>>24&255}return c}l.read=function(a,b){var c=-1;if(a&&b>2,c=(d>((b&3)<<3)&255;return c}; +l.write=function(a,b,c){if(this.pe)return!1;if(b>2;b=(b&3)<<3;for(var g=d.length;g<=f;g++)d[g]=e;a.yc?f=a.Mc+a.yc&&(a.yc+=f-(a.Mc+a.yc)+1):(a.Mc=f,a.yc=1);d[f]=d[f]&~(255<=this.A.length||k>=this.A[h].length||m>=this.A[h][k].length){c="sector (CHS="+h+":"+k+":"+m+") out of range ("+ +b+" changes applied)";b=-1;break}if(this.pe){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;kb&&-2!=b&&this.wa("Unable to restore disk '"+this.Pc+": "+c);return b}; +l.toJSON=function(){var a;a=0;for(var b;b=ts(this,a++);)Bs(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")}; +function Bs(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}var ks=0;function Cs(a){u.call(this,"FDC",a);this.dmaRead=Cs.prototype.Uj;this.dmaWrite=Cs.prototype.Vj;this.dmaFormat=Cs.prototype.ik;this.M=Ds(a.autoMount);this.K=a.sortBy||"name";"none"==this.K&&(this.K=null);this.B=[];this.L=!Ea("Mobi")&&window&&"FileReader"in window;this.exports={loadDisk:this.xi,wait:this.rn}}ca(Cs,u);l=Cs.prototype; +l.Ab=function(a,b,c){var d=this;switch(b){case "listDisks":this.ia[b]=c;if(this.K){b=[];for(a=0;ag.sa.restore(z)&&(h=!1);h&&g.sa&&void 0!==g.Ra&&(g.Va=g.sa.seek(g.yb,g.Wa,g.bb));h||(e=!1)}a.H=b[c++]||0;a.F=b[c]||Ts;return e} +function Ns(a){var b=0,c=[];c[b++]=a.Na;c[b++]=0;c[b++]=a.Z;c[b++]=a.G;c[b++]=a.D;c[b++]=a.C;c[b++]=a.I;for(var d=b++,e=0,f=[],g=0;gRs(a,e,b,c,!1,d);){if(!window.confirm("Click OK to reload the original disk and discard any changes."))return!1;var f=a,g=c,h;for(h=0;ha.kb||f[1]>a.$a)&&(this.wa('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Na)),b=null);b?(a.sa=b,a.Mj=c,a.Wd=d,Vs(this,d)||Ks(this,c,d),Ss(this,c,d,b),f=b.info(),this.H|=Ws,a.qe||this.wa('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Na),a.Jd||e),a.Kf=f[0],a.Oe=f[1],a.Pe=f[2],this.na&&Tc(this.na)):a.le=!1;a.Jd&&(a.Jd=!1,--this.J||v(this));Fs(this,a.Na);a.qe&&(a.qe(),a.qe=null)}; +function Ks(a,b,c,d){if((a=a.ia.listDisks)&&a.options){for(var e=0;e'+a+"");c.innerHTML=a}}l.rn=function(a){for(var b=0;b=this.C&&(this.Z&=~(Zs|$s),this.D=this.C=0);return a}; +l.rm=function(a,b){this.C=bt[a].fd){b=!1;this.D=0;a=ct(this);var c,d,e,f,g,h=a&at;switch(h){case dt:ct(this);ct(this);et(this);break;case ft:d=ct(this);this.Na=d&3;c=this.A[this.Na];et(this);gt(this,(c.lb&ht)>>>24);break;case it:case jt:d=ct(this);b=d>>2&1;this.Na=d&3;c=this.A[this.Na];c.Wa=b;d=c.yb=ct(this);e=ct(this);f=c.bb=ct(this);g=ct(this);c.xb=128<>2&1;this.Na=d&3;c=this.A[this.Na];d=c.yb;e=c.Wa=b;f=c.bb= +1;g=0;c.lb=mt;c.sa&&(c.Va=c.sa.seek(c.yb,c.Wa,c.bb))?g=c.Va.length>>8:c.lb=kt|lt;ot(this,c,a,b,d,e,f,g);b=!0;break;case vt:d=ct(this);b=d>>2&1;this.Na=d&3;c=this.A[this.Na];d=c.yb;e=c.Wa=b;f=1;g=ct(this);c.xb=128<>2&1,d=ct(this),c.yb+= +d-c.vd,0>c.yb&&(c.yb=0),c.yb>=c.kb&&(c.yb=c.kb-1),c.vd=d,c.lb=qt,c.yb||(c.lb|=rt),et(this),b=!0}0>>8);gt(a,(b.lb&yt)>>>16);var k=0;if(e!=b.yb||f!=b.Wa)k=g=1;c&zt&&(f^=k,d||(k=0));gt(a,e+k);gt(a,f);gt(a,g);gt(a,h)}function ct(a){var b=a.G[a.D];a.D++;return b} +function et(a){a.D=a.C=0}function gt(a,b){a.G[a.C++]=b}l.Uj=function(a,b,c){void 0===b||0>b?this.ve(a,c):c(-1,!1)};l.Vj=function(a,b){return void 0!==b&&0<=b?At(a,b):-1};l.ik=function(a,b){if(void 0!==b&&0<=b)a:if(a.lb)a=-1;else{a.Gc[a.he++]=b;if(a.he==a.Gc.length){a.yb=a.Gc[0];a.Wa=a.Gc[1];a.bb=a.Gc[2];a.xb=128<At(a,a.Xh)){a=-1;break a}a.vf++}a.vf>=a.wd&&(b=-1);a=b}else a=-1;return a}; +l.ve=function(a,b){var c=-1,d=null,e=0;if(!a.lb&&a.sa){do{if(a.Va&&(e=a.Ra,0<=(c=a.sa.read(a.Va,a.Ra++)))){d=a.Va;break}a.Va=a.sa.seek(a.yb,a.Wa,a.bb);if(!a.Va){a.lb=Bt|lt;break}a.Ra=0;Ct(a)}while(1)}b(c,!1,d,e)};function At(a,b){if(a.lb||!a.sa)return-1;do{if(a.Va&&a.sa.write(a.Va,a.Ra++,b))break;a.Va=a.sa.seek(a.yb,a.Wa,a.bb);if(!a.Va){a.lb=Dt|lt;b=-1;break}a.Ra=0;Ct(a)}while(1);return b}function Ct(a){a.bb++;a.bb>=a.Pe+1&&(a.bb=1,a.Wa++,a.Wa>=a.Oe&&(a.Wa=0,a.yb++))} +var Qs="Floppy Drive",Xs=4,Ys=8,$s=16,Zs=64,Os=128,dt=3,ft=4,it=5,jt=6,pt=7,st=8,ut=10,vt=13,wt=15,at=31,zt=128,mt=0,kt=8,qt=32,lt=64,Ps=192,tt=255,nt=512,Bt=1024,Dt=8192,xt=65280,yt=16711680,rt=268435456,ht=-16777216,Ws=128,Ts=0;ba={}; +var bt={3:{fd:3,xd:0,name:ba.yo},4:{fd:2,xd:1,name:ba.wo},5:{fd:9,xd:7,name:ba.Do},6:{fd:9,xd:7,name:ba.so},7:{fd:2,xd:0,name:ba.uo},8:{fd:1,xd:2,name:ba.xo},10:{fd:2,xd:7,name:ba.to},13:{fd:6,xd:7,name:ba.oo},15:{fd:3,xd:0,name:ba.vo}},Is={1009:Cs.prototype.Vk,1012:Cs.prototype.Xk,1013:Cs.prototype.Uk,1015:Cs.prototype.Wk},Js={1010:Cs.prototype.sm,1013:Cs.prototype.rm,1015:Cs.prototype.qm}; +Ma(function(){for(var a=cb(document,"pcx86","fdc"),b=0;bk.sa.restore(g)&&(z=!1),z&&void 0!==k.Ra&&(k.Va=k.sa.seek(k.Dd,k.Wa,k.bb+k.uf)));z||(e=!1);null!=a.W&&1>=d&&(a.W|=(f.type&3)<<(1-d<<1))}0<=a.Na&&(a.B=a.A[a.Na]); +return e} +function Lt(a){var b=0,c=[];a.L?(c[b++]=a.H,c[b++]=a.ra,c[b++]=a.I,c[b++]=a.da,c[b++]=a.ba,c[b++]=a.aa,c[b++]=a.N,c[b++]=a.Z,c[b++]=a.fa,c[b++]=[a.K,a.Na]):(c[b++]=a.W,c[b++]=a.Z,c[b++]=a.G,c[b++]=a.D,c[b++]=a.C,c[b++]=a.pa,c[b++]=a.ma,c[b++]=a.qa,c[b++]=a.M);for(var d=0,e=[],f=0;f=this.C&&(this.D=this.C=0,this.Z&=~(Wt|Xt|Yt));return a}; +l.Om=function(a,b){this.C=a&&(this.Z|=Wt,this.Z&=~$t,au(this))};l.xl=function(){var a=this.Z;this.D=a.B.ob?(a.Z=cu,a.ve(a.B,function(b){0<=b?(du(a),a.U&&a.U.ca==Hj&&(a.Z=0),a.Z=a.Z|Mt|eu|fu):(a.Z=gu,a.H=hu)},!1)):a.Z=Mt|eu));return b}l.Yj=function(){return bu(this)|bu(this)<<8};function iu(a,b){a.B&&a.B.xb>=a.B.ob&&(0>ju(a.B,b)?(a.Z=gu,a.H=hu):(1==a.B.Ra||a.B.Ra==a.B.ob)&&1=a.B.ob&&(a.Z|=fu)))} +l.Zl=function(a,b){iu(this,b&255);iu(this,b>>8&255)};l.Dk=function(){return this.H};l.dm=function(a,b){this.ra=b};l.Fk=function(){return this.I};l.bm=function(a,b){this.I=b};l.Gk=function(){return this.da};l.cm=function(a,b){this.da=b};l.Bk=function(){return this.ba};l.Yl=function(a,b){this.ba=b};l.Ak=function(){return this.aa};l.Xl=function(a,b){this.aa=b};l.Ck=function(){return this.N};l.$l=function(a,b){this.N=b;this.Z=this.A[this.N&ku?1:0]?this.Z|Mt|eu:this.Z&~Mt}; +l.Hk=function(){var a=this.Z;this.Z&Mt&&(this.Z&=~cu);return a};l.Wl=function(a,b){this.fa=b;this.U&&Df(this.U,14);lu(this)};l.am=function(a,b){this.K&mu&&!(b&mu)&&(this.H=nu);this.K=b}; +function lu(a){var b=!1,c=a.fa,d=a.N&ku?1:0,e=a.N&ou,f=a.ba|(a.aa&pu)<<8,g=a.da,h=a.I||256;a.Na=-1;a.B=null;a.H=qu;a.Z=Mt|eu;var k=a.A[d];k?(k.Dd=f,k.Wa=e,k.bb=g,k.xb=h*k.ob,c=c>=ru?c:c&su,k.Va=null,k.Ra=0,k.errorCode=0,a.Na=d,a.B=k):c=-1;switch(c&su){case tu:b=!0;break;case uu:a.Z=cu;a.ve(k,function(b){0<=b&&a.U?(du(a),a.Z=Mt|eu|fu):(a.Z=gu,a.H=hu)},!1);break;case vu:a.Z=fu;break;case wu:b=!0;break;case xu:b=!0;break;case ru:a.H=nu;b=!0;break;case yu:k.$a=e+1,k.Xa=h,b=!0}b&&du(a)} +function du(a){!a.U||a.K&zu||Ff(a.U,14,120)} +function au(a){a.D=0;var b=Au(a),c=Au(a),d=c&32,e=d>>5,f=c&31,g=Au(a),h=Au(a),k=g<<2&768|h,m=g&63,r=Au(a),y=Au(a),t=a.A[e];t&&(t.Dd=k,t.Wa=f,t.bb=m,t.xb=r*t.ob);switch(b){case Bu:Cu(a,t?t.errorCode:Du);Eu(a,c);Eu(a,g);Eu(a,h);Eu(a,Fu|d);b=-1;break;case Zt:for(c=0;0<=(b=Au(a));)t&&cb?this.ve(a,c):c(-1,!1)};l.Xj=function(a,b){return void 0!==b&&0<=b?ju(a,b):-1}; +l.jk=function(a,b){void 0!==b&&0<=b?(a.Raju(a,a.Xh)){a=-1;break a}a.vf++}a.vf>=a.wd&&(b=-1);a=b}else a=-1;return a}; +function Nu(a,b,c){b.errorCode=Du;if(b.sa&&(b.Va=null,a.U)){b.errorCode=Ot;ul(a.U,3,a,"dmaRead",b);ql(a.U,3,function(a){a||b.errorCode!=Ot||(b.errorCode=Du);c(b.errorCode?Gu:Fu)});return}c(b.errorCode?Gu:Fu)}function Pu(a,b,c){b.errorCode=Du;if(b.sa&&(b.Va=null,a.U)){b.errorCode=Ot;ul(a.U,3,a,"dmaWrite",b);ql(a.U,3,function(a){a||(b.errorCode==Ot&&(b.errorCode=Du),b.errorCode==Su&&(b.errorCode=Ot));c(b.errorCode?Gu:Fu)});return}c(b.errorCode?Gu:Fu)} +function Ru(a,b,c){b.errorCode=Du;b.de&&b.de.length==b.xb||(b.de=Array(b.xb));b.Ra=0;a.U?(b.errorCode=Ot,ul(a.U,3,a,"dmaWriteBuffer",b),ql(a.U,3,function(a){a||b.errorCode!=Ot||(b.errorCode=Du);c(b.errorCode?Gu:Fu)})):c(b.errorCode?Gu:Fu)} +l.ve=function(a,b,c){var d=-1,e=null,f=0;if(a.errorCode)return b&&b(d,!1,e,f),d;var g=!1!==c?1:0;if(a.Va&&(f=a.Ra,d=a.sa.read(a.Va,a.Ra),a.Ra+=g,0<=d))return e=a.Va,b&&b(d,!1,e,f),d;if(b){if(a.sa)return a.sa.seek(a.Dd,a.Wa,a.bb+a.uf,!1,function(c,k){(a.Va=c)?(e=c,f=a.Ra=0,Tu(a),d=a.sa.read(a.Va,a.Ra),a.Ra+=g):a.errorCode=Su;b(d,k,e,f)}),d;a.errorCode=Su;b(d,!1,e,f)}return d}; +function ju(a,b){if(a.errorCode)return-1;do{if(a.Va&&a.sa.write(a.Va,a.Ra++,b))break;a.sa&&a.sa.seek(a.Dd,a.Wa,a.bb+a.uf,!0,function(b){a.Va=b});if(!a.Va){a.errorCode=Su;b=-1;break}a.Ra=0;Tu(a)}while(1);return b}function Tu(a){a.bb++;var b=1-a.uf;a.bb>=a.Xa+b&&(a.bb=b,a.Wa++,a.Wa>=a.$a&&(a.Wa=0,a.Dd++))}l.zl=function(){var a=this.R.L&255;!(this.R.F>>8)&&128>8||!this.U)||(a=!(this.U.bc[0].Wc&64));return a?!0:!1}; +var Pt="Hard Drive",Ut=["XTC","ATC","COMPAQ"],Qt=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966, +6],19:[1023,8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}],It=496,nu=1,qu=0,hu=16,pu=3,ou=15,ku=16,gu=1,fu=8,eu=16,Mt=64,cu=128,tu=16,uu=32,vu=48,wu=64,xu= +112,ru=144,yu=145,su=240,zu=2,mu=4,Fu=0,Gu=2,Ju=0,Ku=1,Bu=3,Lu=5,Mu=8,Ou=10,Zt=12,Qu=15,Hu=224,Iu=228,Ot=0,Du=4,Su=20,Nt=0,$t=1,Wt=2,Xt=4,Yt=8,Vt=32,Ft={800:Z.prototype.wl,801:Z.prototype.xl,802:Z.prototype.vl},Et={496:Z.prototype.Yj,497:Z.prototype.Dk,498:Z.prototype.Fk,499:Z.prototype.Gk,500:Z.prototype.Bk,501:Z.prototype.Ak,502:Z.prototype.Ck,503:Z.prototype.Hk},Ht={800:Z.prototype.Om,801:Z.prototype.Rm,802:Z.prototype.Qm,803:Z.prototype.Pm,807:Z.prototype.gh,811:Z.prototype.gh,815:Z.prototype.gh}, +Gt={496:Z.prototype.Zl,497:Z.prototype.dm,498:Z.prototype.bm,499:Z.prototype.cm,500:Z.prototype.Yl,501:Z.prototype.Xl,502:Z.prototype.$l,503:Z.prototype.Wl,1014:Z.prototype.am};Ma(function(){for(var a=cb(document,"pcx86","hdc"),b=0;b=this.D||(this.D=1);this.F=0;this.ma=a.busWidth||a.buswidth;this.A=Wu;this.M=null;this.J=this.fa=!1;this.pa=Fc(this,"url")||"";this.ra=(Math.random()+.1).toString(36).substr(2,12);this.B=Xu(this);if(this.R=ab("CPU",this.id)){this.Ea=ab("Debugger",this.id);this.C=[];for(b=null;b=tb(this,"Video",b);)this.C.push(b);this.oa=new Gb({id:this.Cd+".bus",busWidth:this.ma}, +this.R,this.Ea);var e,f=eb(this.id);this.ba=(this.I=ab("Panel",this.id))&&this.I.ia.print;this.ja=this.wa;this.la=this.print;this.qa=this.qb;this.ba&&(this.ja=this.I.wa,this.la=this.I.print,this.qa=this.I.qb);for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bWu){if(d.load(this.M)){this.G=new Me(this,"1.36.2",gv);this.G.load()&&(a!=fv&&hv(this,d)&&(a=iv),jv(this.G));this.G.set(ev,ra("Y-m-d H:i:s"));kv(this.G);var e=this.A&&!this.J;if(a==fv||Xa("Click OK to restore the previous PCx86 machine state.")){if(c=dv(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.wa("Error: "+g),"unable to verify user"==g&&(Da(lv,""),this.B=null)):this.qb(f+": "+g),jv(d),d.load()?(c=dv(d),e=!0):c=!1))}e&&bv(this,c?d:null)}else a==iv&&d.clear()}else bv(this);delete this.M;delete this.N}e=eb(this.id);for(f=0;fa[1];a=a[2];if(d=this.ia.power)d.textContent="Shutdown";this.X.Sb=!0;this.R&&(mv(this, +this.R,b,c,a),this.R.Gd());this.da&&(hv(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.F=0;gb(this.Cd,Fc(this,"autoScript"))};function hv(a,b){if(!a.X.Yd){if(Xa("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.36.2"};d.url=a.pa;d.user=c;d.type="bug";d.data=b;wa("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1} +function nv(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new Me(a,"1.36.2"),g=new Me(a,"1.36.2",cv),h=ra("Y-m-d H:i:s");g.set(ev,h);f.set(ev,h);f.set(ov,"1.36.2");f.set(pv,window?window.location.href:null);f.set(qv,za());a.R&&a.R.Qb&&(d=a.R.Qb(b,c),"object"===typeof d&&f.set(a.R.id,d),c&&(a.R.X.Sb=!1,!1===d&&(e=null)));for(var h=eb(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/, +"$1PCx86$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");wa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,r=/( [a-z]+=)(['"])(.*?)\2/gi;m=r.exec(f);)k=0>k.toLowerCase().indexOf(m[1].toLowerCase())?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);yv(a,b,c)}})}else c(a,null)} +function zv(a,b,c,d){function e(a){if(void 0===h){var b=g&&cb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--vv||Qa(!0));k=!1}var g,h,k=!0;vv++;Wa[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));r.appendChild(y)}c|| +(c="/versions/pcx86/1.36.2/components.xsl");m=function(d,h){h?wv(c,null,null,!1,e,function(d,k){k?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--vv||Qa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--vv||Qa(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?wv(b,a,d,!0,e,m):xv(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return k}function Av(a,b,c,d){Qa(!1);return zv(a,b,c,d)}window.embedPC=Av;window.embedPCx86=Av; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return gb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=ab(d,c+".machine");if(g){var h=g.exports;if(h&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1}}console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=Qa;window.sendEvent=Sa; +function Bv(a,b,c,d){if(!c&&b){d.push(b);a=Wa[d[0]];b=null;for(var e in a)if(ma(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?wa(b,null,!0,function(a,b){Cv(b,d)}):Cv(null,d)}else q("Error ("+c+") requesting "+a)} +function Cv(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];if(c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);)/)){var h=Wa[f],k={},m;for(m in h){var r=h[m],y=la(m);if("xml"==y){for(y=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var t=d[2];t&&(h[t]||(r=r.replace(d[0],"")))}d=m=ka(m)}else"xsl"==y&&(e=m=ka(m));k[m]=r}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),a=Ka(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
    \n')+"...\n",a=a+(' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + + + + + + js + + + +
    + + + + + + + + + + js + + + "" + + + + + +
    +
    + + + + + + + + + + + + + + + , + + + + + + + + + + + + + .machine + . + . + + + + + + + + + + + + + + + + + + + + ,comment:'' + + + + + + border:1px solid black;border-radius:15px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:;max-width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto;clear:both; + position:; + position:relative; + + + + + overflow:auto;width:100%; + + background-color:; + background-color:; + + + + + - -component + +
    + + + + + + +
    + + + + + + + + --object -screen + + +
    +
    + +
    + +
    +
    + + + + +
    + + +
    [XML]
    + +
    + + +
    +
    +
    +
    + + + + + text-align:center; + + + +

    +
    + + +
    +
    + + + + + + +
    +
    + + + + type:'' + + + binding:'' + + + value:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + clear:both; + position:; + position:relative; + text-align:; + float:left; + + + + + + + + + + + + + + + + + + +
    + + + font-size:; + + + + + -label + + + + width:; + width:; + + + + + + + + text-align:right; + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',dateRTC:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + mouse + ,serial:'',scaleMouse: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + + 0.5 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate:,flicker: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + + diff --git a/versions/pdpjs/1.36.2/document.css b/versions/pdpjs/1.36.2/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pdpjs/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pdpjs/1.36.2/document.xsl b/versions/pdpjs/1.36.2/document.xsl new file mode 100644 index 0000000000..439c4937d2 --- /dev/null +++ b/versions/pdpjs/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pdpjs/1.36.2/machine.xsl b/versions/pdpjs/1.36.2/machine.xsl new file mode 100644 index 0000000000..fb3a59d65b --- /dev/null +++ b/versions/pdpjs/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.36.2/manifest.xsl b/versions/pdpjs/1.36.2/manifest.xsl new file mode 100644 index 0000000000..90b9964fa2 --- /dev/null +++ b/versions/pdpjs/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pdpjs/1.36.2/outline.xsl b/versions/pdpjs/1.36.2/outline.xsl new file mode 100644 index 0000000000..3e0a1cab72 --- /dev/null +++ b/versions/pdpjs/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.36.2/pdp10-dbg.js b/versions/pdpjs/1.36.2/pdp10-dbg.js new file mode 100644 index 0000000000..1daea2f672 --- /dev/null +++ b/versions/pdpjs/1.36.2/pdp10-dbg.js @@ -0,0 +1,306 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/device.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpuops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/macro10.js (C) Jeff Parsons 2012-2017 +*/ +var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=da)}var ea=0;function da(a){return"jscomp_symbol_"+(a||"")+ea++} +function fa(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});fa=function(){}}function ha(a){var b=0;return ia(function(){return ba?-b:b}});ma("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); +var na={vc:0,Nb:1,xc:2,yc:3,zc:4,Ac:5,Bc:6,Cc:7,xb:8,Dc:9,Ob:10,Ec:11,Fc:12,Pb:13,Gc:14,Hc:15,Ic:16,Jc:17,Kc:18,Lc:19,Mc:20,Nc:21,Oc:22,Pc:23,Qc:24,Rc:25,Sc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,uc:66,wc:67,Tc:68,E:69,Uc:70,Vc:71,Wc:72,Xc:73,Yc:74,Zc:75,$c:76,ad:77,bd:78,dd:79,ed:80,Q:81,fd:82,gd:83,hd:84,jd:85,kd:86,ld:87, +nd:88,od:89,Sb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,pd:97,qd:98,rd:99,d:100,e:101,sd:102,td:103,ud:104,vd:105,xd:106,k:107,yd:108,zd:109,n:110,Ad:111,p:112,q:113,r:114,Bd:115,t:116,Dd:117,Ed:118,Fd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Qb:127}; +function oa(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function qa(a,b,c){b?12=b?6:16777215>=b?8:12);return pa(a,8,b,c?"0o":"")} +function xa(a,b){b?11=Math.abs(a)?5:11;return pa(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return pa(a,16,b,c?"0x":"")}function ya(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Ca[a]})}function Da(a,b){return(a+" ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ca={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0f;f++){var g;switch(g="Y-m-d H:i:s".charAt(f)){case "a":b+=12>c?"am":"pm";break;case "d":b+=("0"+d).slice(-2);break;case "D":b+=Ja[a.getDay()].substr(0,3);break;case "F":b+=Ka[e-1];break;case "g":b+=c?12b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.la=g.load;d.ya=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Oa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.aa=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.Db=this.id:(this.$a=this.id.substr(0,a),this.Db=this.id.substr(a+1));this.A={ready:!1,Ua:!1,ob:!1,wd:!1,ba:!1,ub:!1,error:!1};this.cb=null;this.A.error=!1;this.da=c||0;this.D=this.v=this.H=this.G=null;jb.push(this)} +function pb(a,b,c){qb[a]&&b&&(qb[a][b]=c)}function rb(){return Date.now()||+new Date}function q(a){window&&window.alert(a)}function sb(a){var b=!1;window&&(b=window.confirm(a));return b}function tb(a,b){a.value+=b;b=a.value;8192d?c+=a+"\n":c=c.substr(0,d)+(a+ +".")+c.substr(d+a.length);8192a;a++)this.b["S"+a]=[0,0,!1,!1,this.ec,a];this.D=this.v=this.H=this.G=null;this.exports={hold:this.Wb,toggle:this.pc,reset:this.lc, +set:this.oc};Rb(this)}la(hc,r);m=hc.prototype;m.reset=function(a){this.stop();a&&jc(this,this.w=0)}; +m.sa=function(a,b,c,d){if(this.G&&this.G.sa(a,b,c,d)||this.v&&this.v.sa(a,b,c,d)||this.D&&this.D.sa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){kc(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){lc(a,b)}}(this,b),a.ontouchstart= +function(a,b){return function(c){kc(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){lc(a,b)}}(this,b),!0):r.prototype.sa.call(this,a,b,c,d)}};m.La=function(a,b,c,d){this.G=a;this.H=b;this.v=c;this.D=d;mc(this);nc(this)};m.Aa=function(a,b){if(!b)if(this.V&&oc(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.ra=function(a){return a?this.save():!0};m.save=function(){var a=new G(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; +m.restore=function(a){if(a=a[0])pc(this,this.i=a[0]),jc(this,this.w=a[1]),qc(this,a[2]);return!0};m.lc=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}nc(this);return!0};function rc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function mc(a,b){for(var c in a.C)rc(a,c,null!=b?b:a.C[c])}function sc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function nc(a){for(var b in a.b)sc(a,b,a.b[b][1])} +m.Wb=function(a,b,c){if(kc(this,b)){if(c){var d=this;setTimeout(function(){lc(d,b);a&&a()},+c);return!1}lc(this,b)}return!0};m.oc=function(a,b){if("SR"==a)return qc(this,oa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,sc(this,a,c[1]),!0):!1};m.pc=function(a){return kc(this,a)?(lc(this,a),!0):!1};function kc(a,b){var c=a.b[b];return c?(sc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=tc&&(a.O=b==uc,a.R=b==vc),!0):!1} +function lc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(sc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.fc=function(a){a||this.v.A.P||(H(this.v,this.i),this.b[wc]&&this.b[wc][1]&&xc(this.v))};m.gc=function(){};m.ac=function(a){a||this.v.Y()}; +m.Zb=function(a){if(!a&&!this.v.A.P)if(this.b[wc]&&this.b[wc][1])xc(this.v);else{if((a=this.D)&&!Sb(a,!0))Tb(a,!0),yc(a,0,null),Tb(a,!1);else try{var b=this.v.Ya(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Wa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Wa){l=h.size-(e-k);l>f&&(l=f);h.Wa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Kc(Lc,e,f)}e=new Gc(a,e,l,16384,d);Hc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Qc[d]+" at "+qa(b)),!0):Kc(Rc,b,c)} +function Ec(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function Dc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Ic(a){for(var b=0,c=[],d=0;d=a.ta&&(a.ta+=a.pa,c=!0);0<=a.ua&&a.ua<=ld(a)&&(a.pa=a.ua=-1,hd(a),a.Y(),c=!0);c&&a.u(ld(a)+" cycles: checksum="+n(a.Ga))}} +m.sa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.G)if(a=d.G,a.A.ba)a=!0;else{var b=null,c,h=vb(a.id);for(c=0;ca.Z/a.ca?b=1:d=!0;a.ha=b;b=a.ib*a.ha;if(a.ca!=b){a.ca=b;b=a.ca.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.G&&pd(a.G)}Ac(a,a.M);a.M=0;a.L=rb();a.S=0;nd(a);return d}function qd(a,b){for(var c=a.R.length-1;0<=c;c--){var d=a.R[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function rd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function sd(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c} +m.mc=function(){if(this.A.P){this.ab>=this.lb&&nd(this,!0);this.va=0;this.Fa=rb();if(this.S){var a=this.Fa-this.S;a>this.kb&&(this.L+=a,this.L>this.Fa&&(this.L=this.Fa))}try{do{var b=qd(this,this.A.Ta?1:this.Ia);try{this.Ya(b)}catch(e){if("number"!=typeof e)throw e;}b=sd(this,!0);this.va+=b;this.M+=b;Bc(this,b);zc(this,b);this.ma-=b;if(0>=this.ma){this.ma+=this.Ia;++this.mb>=td&&(this.G&&K(this.G,void 0),this.mb=0);break}}while(this.A.P)}catch(e){this.Y();this.G&&this.G.stop(rb(),ld(this));Eb(this, +e.stack||e.message);return}if(this.A.P){a=setTimeout;b=this.Fb;this.S=rb();var c=this.kb;this.va&&(c=Math.round(c*this.va/this.Ia));var c=c-(this.S-this.Fa),d=this.S-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.W=0,md(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.ab+=this.va;this.S+=c;a(b,c)}}}; +function xc(a,b){if(!Fb(a))if(a.A.P)a.u(a.toString()+" busy");else{md(a);a.A.P=!0;a.A.gb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.G&&(b&&pd(a.G,!0),a.G.start(a.L,ld(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Ya=function(){return 0};m.Y=function(a){var b=!1;if(this.A.P){sd(this);Ac(this,this.M);this.M=0;this.A.P=!1;if(b=this.J.run)b.textContent="Run";this.G&&this.G.stop(rb(),ld(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var od=30,td=15,ed=["power","reset"]; +function ud(a){var b=+a.model||1001;dd.call(this,a,1E6);this.jb=b;this.Za=+a.addrReset||0;this.Tb=vd.bind(this);this.w=M.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}la(ud,dd);m=ud.prototype; +m.reset=function(){this.status("Model "+this.jb);this.A.P&&this.Y();this.Ja=this.Ka=this.b=this.I=0;this.i=this.oa=this.Za;this.K=this.O=-1;this.F=this.j=0;this.nb=[0,0];this.wa=[0,0];this.na=[0,0];this.xa=[0,0];this.Ba=this.i;this.C=0;this.f=this.ic;this.g=this.tc;this.Ca=null;gd(this);this.A.error=!1;dd.prototype.reset.call(this)};m.Kb=function(){return 0}; +m.save=function(){var a=new G(this);a.set(0,[this.b,this.I,this.Ja,this.Ka,this.i,this.O,this.K,this.j,this.C,this.oa,this.Ba,this.Za]);a.set(1,[]);a.set(2,[this.W,this.ha,this.A.ga]);a.set(3,wd(this));a.set(4,rd(this));return a.data()}; +m.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ja=b.next().value;this.Ka=b.next().value;this.i=b.next().value;this.O=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.oa=b.next().value;this.Ba=b.next().value;this.Za=b.next().value;b=a[2];this.W=b[0];md(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.tc=function(a,b){var c=this.H;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +m.Ya=function(a){this.A.complete=!0;var b=this.D?Ad(this.D)?1:this.A.gb?-1:0:0,c=a?this.A.gb?0:1:-1;this.A.gb=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(Bd(this.D,zd(this),c)){this.Y();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&Bd(this.D,zd(this),c)){this.Y();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ja=this.f(this.b):0<=this.O?(this.I=this.Ka=this.f(this.O),this.O=-1):(this.I= +this.Ka=this.f(this.oa=this.i),this.i=(this.i+1)%Yb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Xb;a=this.I&4194304?-1:this.Ka/ec|0;0<=a&&this.Tb(a);this.N--}while(0>4].call(this,a,a&15)}function O(a){this.w(a)} +function Dd(){var a=0,b=this.f(this.b),c=b/fc&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=100-d));b=c*fc+(d<<24)+(b&16777215);a&&(b=(b+a)%E);this.g(this.b,b)}function Ed(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/fc&63,d=this.K>>24&63;a=32>c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}} +function Fd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/fc&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%E;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function Gd(a,b){this.g(b,this.f(this.b))}function Hd(a,b){this.g(b,this.b)}function Id(a,b){this.g(this.b,this.f(b))}function Jd(a,b){this.g(b,0)}function Kd(a,b){this.g(b,D-this.f(b))}function Ld(a,b){this.g(b,D)} +function Md(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Nd(a,d,c)+(c-(c&x)))}function Od(a,b){var c=this.f(b);this.g(b,Nd(a,c,0))}function Pd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Nd(a,c,b)+(b-(b&x)))}function Qd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>A?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ie(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Nd(a,d,c)+c)} +function je(a,b){var c=this.b*y,d=this.f(b);this.g(b,Nd(a,d,c)+c)}function ke(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Nd(a,c,b)+b)}function le(a,b){var c=this.f(this.b),d=(c&x)*y,c=Nd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function me(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,ne(a,d,c)+c)}function oe(a,b){var c=this.f(b);this.g(b,ne(a,c,this.b)+this.b)}function pe(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,ne(a,c,b)+b)} +function qe(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Zb?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function re(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,ne(a,d,c)+c)}function se(a,b){var c=this.f(b);this.g(b,ne(a,c,0))}function te(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,ne(a,c,b)+b)}function ue(a,b){var c=this.f(this.b),d=c/y|0,c=ne(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function P(a){ve[a&7].call(this,a,a>>3&127)} +function we(){}function xe(){}function M(a){this.u("undefined opcode: "+qa(a));yd(this,-1);this.Y()}function ye(a){a>A&&(a!=C?a=bc-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%E;ze.call(this,a,b,c);return c} +function Ae(a,b,c){var d=!1,e=!1;if(void 0===c){if(!a)return this.j|=131104,-1;c=b>A?D:0}else if((c=(aA&&(a=E-a,d=!d);c>A&&(b?(c=D-c,b=E-b):c&&(c=E-c),e=!0,d=!d);f=this.nb;f[0]=0;f[1]=0;f=this.wa;f[0]=1;f[1]=0;f=this.na;f[0]=a;f[1]=0;a=this.xa;a[0]=b;for(a[1]=c;0c[0]&&(c[0]+=E,c[1]--),Ce(this.nb,this.wa),De(this.xa)))break;Ee(this.na);Ee(this.wa)}while(!De(this.wa));b=this.nb[0];this.F=this.xa[0];d&&b&&(b=E-b);e&&this.F&&(this.F=E-this.F);return b} +function Fe(a,b,c,d){var e=a,f=b;b=!1;var g;e>A&&(d||1001!=this.jb||e!=C)&&(e=E-e,b=!b);f>A&&(f=E-f,b=!b);if(eA)&&(g!=D||a<=A)&&(this.j|=131072),g=a);return g} +function Ge(a){a?a==C?this.j|=163840:a=bc-a:this.j|=98304;return a}function He(a,b){var c=a-b;0>c&&(c+=E);ze.call(this,c,b,a);return c}function ze(a,b,c){a=Math.trunc(a/ac);b=Math.trunc(b/ac);c=Math.trunc(c/ac);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/F|0)&(b/F|0))*F+((a&b)>>>0)}function S(a,b){return R(a,(~(b/F|0)&15)*F+(~b>>>0))}function Ie(a,b){return(a>>0)}function T(a,b){return(a/F|0|b/F|0)*F+((a|b)>>>0)}function U(a){return a>>0)}function W(a){return(a/y|0)+(a&x)*y}function ne(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Zb?x*y:0}return b}function Nd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>A?x:0}return b} +function Ce(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=E&&(a[0]%=E,a[1]++)}function Be(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Ee(a){a[1]%2&&(a[0]+=E);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function De(a){return!a[0]&&!a[1]} +var Cd=[O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},Dd,function(a,b){this.j&8192||(Dd.call(this),this.j|=8192);Ed.call(this,0,b)},Ed,function(a,b){this.j&8192||(Dd.call(this),this.j|=8192);Fd.call(this,0,b)},Fd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},Gd,Hd,Id,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,Ge.call(this,this.f(this.b)))},function(a,b){this.g(b, +Ge.call(this,this.b))},function(a,b){this.g(this.b,Ge.call(this,this.f(b)))},function(a,b){a=Ge.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ye.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,ye.call(this,this.f(b)))},function(a,b){a=ye.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,Fe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,Fe.call(this,this.f(b),this.b,!0))},function(a, +b){this.g(this.b,Fe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(this.b,this.g(b,Fe.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,Fe.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,Fe.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,Fe.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Fe.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=Ae.call(this, +this.f(this.b),this.f(b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=Ae.call(this,this.b,this.f(b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=Ae.call(this,this.f(this.b),this.f(b));0>a||this.g(this.b,a)},function(a,b){a=Ae.call(this,this.f(this.b),this.f(b));0>a||(this.g(this.b,this.g(b,a)),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=Ae.call(this,this.f(this.b),c,a);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c= +this.f(b+1&15),c=Ae.call(this,this.b,c,a);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);b=this.f(b+1&15);b=Ae.call(this,this.f(this.b),b,a);0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=Ae.call(this,this.f(this.b),c,a);0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){if(a=(this.b&$b)<<14>>23|this.b&255){var c,d,e=this.f(b);0a&&(c+=e*Math.pow(2,a)%C,d=C-Math.pow(2,35-a)),eA&&(this.j|=131072):e-d=a?c=eA&&(d=E-Math.pow(2,36+a),c+=d));this.g(b,c)}},function(a,b){if(a=((this.b&$b)<<14>>23|this.b&255)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%E+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b&$b)<<14>>23|this.b&255){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>23|this.b&255){var c,d=this.f(b),e=this.f(b+1&15);if(0A&&dA&&eA&&(this.j|=131072):e-c<=A&&(this.j|=131072);e=0;f>A&&(d+=C,e+=C)}else d=d*Math.pow(2,a)%C+Math.trunc(e%C/Math.pow(2,35-a)),e=e*Math.pow(2,a)%C,c=C-Math.pow(2,35-a),f<=A?f+c>A&&(this.j|=131072):(f-c<=A&&(this.j|=131072),d+=C,e+=C)}else-36>=a?(e=-72>=a?d> +A?D:0:Math.trunc(d%C/Math.pow(2,-a-35)),d<=A?d=0:(d=D,e+=C)):(c=d>A?E-Math.pow(2,36+a):0,e=Math.trunc(e%C/Math.pow(2,-a))+d%C*Math.pow(2,35+a)%C,d=Math.trunc(d/Math.pow(2,-a))+c,d>A&&(e+=C));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=((this.b&$b)<<14>>23|this.b&255)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%E+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%E+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%E+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2, +a-36)%E+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b&$b)<<14>>23|this.b&255){var c=this.f(b),d=this.f(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%E,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},M,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b, +a)},function(a,b){for(var c=a=!1,d=this.f(b),e=d/y|0,d=d&x;!a;)if(this.g(d,this.f(e)),(a=d>=this.b)||(e=e+1&x,d=d+1&x,c=!0),a||!this.A.P){c&&this.g(b,e*y+d);a||yd(this,-1);break}},function(a,b){a=(this.f(b)+262145)%E;this.g(b,a);a=C&&H(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&xd(this,this.Ja/y|0);b&4&&this.Y();b&8&&this.w(a);H(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,H(this,this.b))},function(){this.O= +this.b},M,function(a,b){a=(this.f(b)+262145)%E;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Xb,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b)},function(a,b){a=this.f(b);a+=262145;this.g(a&Xb,this.f(this.b));a>=E&&(a-=E);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Xb);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=E);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Xb);a-=262145;0>a&&(a+=E);(a/y|0)==x&&(this.j|=262144);this.g(b, +a);H(this,c&Xb)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);H(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))}, +function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,He.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,He.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,He.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,He.call(this,this.f(b),this.f(this.b))))},we,function(a,b){0>Ie(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){Ie(this.f(b),this.b)||H(this,this.i+1)},function(a,b){0>=Ie(this.f(b),this.b)&&H(this, +this.i+1)},function(){H(this,this.i+1)},function(a,b){0<=Ie(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){Ie(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){0Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a,b){Ie(this.f(b),this.f(this.b))||H(this,this.i+1)},function(a,b){0>=Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(){H(this,this.i+1)},function(a,b){0<=Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a, +b){Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a,b){0U(this.f(b))&&H(this,this.b)},function(a,b){U(this.f(b))||H(this,this.b)},function(a,b){0>=U(this.f(b))&&H(this,this.b)},function(){H(this,this.b)},function(a,b){0<=U(this.f(b))&&H(this,this.b)},function(a,b){U(this.f(b))&&H(this,this.b)},function(a,b){0U(a)&& +H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){H(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));U(a)||H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=U(a)&&H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));H(this,this.i+1);b&&this.g(b,a)},function(a,b){a= +this.g(this.b,Q.call(this,this.f(this.b),1));0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));U(a)||H(this,this.b)},function(a,b){a= +this.g(b,Q.call(this,this.f(b),D));0>=U(a)&&H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),D));H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));0<=U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));0U(a)&&H(this, +this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));U(a)&&H(this,this.i+ +1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));0>>f.i;0>>= +f.i;0>>a.i;0g&&g>=-C&&(g+=E);for(var g=Math.trunc(Math.abs(g))%E,h=d;f--&&h=na.wb&&c<=na.Sb&&(b=c-(na.wb-na.Nb));b&&(a.preventDefault&&a.preventDefault(),d.eb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==na.Pb&&(b=na.Ob);d.eb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.eb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.La=function(a,b,c,d){this.G=a;this.H=b;this.v=c;this.D=d;Rb(this)}; +m.Lb=function(a){if(!this.b){var b=fd(this.G,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Db)return;c=Ea(c[1]);if(this.b=wb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.$a+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Aa=function(a,b){if(!b)if(this.Lb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +m.ra=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new G(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.eb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.C&&a.w.length&&(a.C=0);if(0>a.C||b!=a.w[a.C])a.w.splice(0,0,b),a.C=0;a.C--}else a.V?b="end":b=a.w[a.C+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Ue(a,b,c){if(32>=a.L)return b&c;b=X(a,b,0,!0);c=X(a,c,0,!0);return((b/Ve|0)&(c/Ve|0))*Ve+((b&c)>>>0)} +function We(a,b,c){if(32>=a.L)return b|c;b=X(a,b,0,!0);c=X(a,c,0,!0);return((b/Ve|0)^(c/Ve|0))*Ve+((b^c)>>>0)}Se.prototype.Ib=function(a,b){return a*b};function X(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b<<32-c>>32-c:(a=Math.pow(2,c-1),b>=a?(e=b%a,(b/a|0)&1&&(e-=a)):b<-a&&(e=b%a,((-b-1)/a|0)&1?e&&(e+=a):e||(e-=a)));b!=e&&(b=e);return b} +function Xe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f=a.Ib(f,g);break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "^/":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1: +0;break;case "&":f=Ue(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=X(e,f,0,!0),g=X(e,g,0,!0),f=(f/Ve|0|g/Ve|0)*Ve+((f|g)>>>0));break;case "^!":f=We(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case ",,":f=X(a,f,18,!0)*Math.pow(2,18)+X(a,g,18,!0);break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=X(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=Ye(a,b,0,b.length,a.T,c);void 0!==d&&e&&ef(a,null,d)}return d} +function $e(a,b,c){for(;c;){switch(c&3){case 1:b=-X(a,b);break;case 2:b=We(a,b,-1);break;case 3:for(var d=35;0<=d&&!Ue(a,b,Math.pow(2,d));)d--;b=35-d}c>>>=2}return b} +function Ze(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.rb(b);if(0<=f)f=a.sb(f);else if(f=b,a.b[f]?f=a.b[f].value:(f=f.substr(0,6),f=a.b[f]&&a.b[f].value),null!=f){var h=a.b[b]&&a.b[b].Mb;h&&(g?g.push(h):(g=df(a,h,d),void 0!==g?f+=g:(d||a.u("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=oa(b,1=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function ff(a){var b=a.b;a.b={};return b}function gf(a,b){var c=0;if(a.b){if(b)return ef(a,b,a.b[b]&&a.b[b].value);b=Object.keys(a.b);b.sort();for(var d=0;d=a?8:262143>=a?18:36);b=pa(b,2,a,"",e);break;case 8:b=qa(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var bf={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},af={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20},Ve=Math.pow(2,32); +function hf(a){Se.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.S=["<",">"];this.ta=[];this.Ha=Y();this.M=Y(0);this.oa=Y(0);this.ha=Y(0);this.I=[];this.i=this.N=this.K=[];jf(this);this.W=this.pa=0;this.j=[];this.Ba=void 0;kf(this);this.D=this;this.va={};this.da=this.Eb=0;this.Z=null;this.R=[];lf(this,a.messages);this.ua=a.commands;this.Ga=[];this.O=0;this.Na=this.Ca=null;this.F=this.Ka=this.Ja=this.na=this.xa=0;this.wa=this.ma=this.ca=null;var b=this;window?void 0===window[t]&&(window[t]=function(a){return kd(b, +a)}):void 0===global[t]&&(global[t]=function(a){return kd(b,a)})}la(hf,Se);function mf(a){a=a&&a.B;null==a&&(a=-1);return a}function Y(a,b,c){return{B:void 0===a?null:a,bb:void 0===b?!1:b,qa:!1,T:c}}function nf(a,b,c,d){a.B=b;a.bb=c||!1;a.qa=!1;a.T=d}function of(a){return[a.B,a.bb,a.qa,a.T,a.fb]}function pf(a,b){var c=Y(b[0],b[1],b[2]);c.qa=b[3];b[4]&&(c.zb=Te(a,c.fb=b[4]));return c}m=hf.prototype; +m.La=function(a,b,c,d){this.H=b;this.G=a;this.v=c;this.ma=a.j;this.Fa=b.F;(b=fd(a,"messages"))&&lf(this,b);if(a=fd(a,"commands"))this.ua=a;qf(this,function(a){a:{var b=d.H.b,c=a[0],e=a=0,k=b.length;if(c){a=mf(rf(d,c,d.oa));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.H.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Qc[c],p&&d.u(n(p.id,8)+" %"+ +n(e<a&&(a+=E);0>b&&(b+=E);a=Fe.call(this.v,a,b,!1,!0);a>=C&&(a-=E);return a}; +function rf(a,b,c){var d,e;c||(c=Y());var f=c.B;if(void 0!==b){a:{var g,f=a.S[0],h=a.S[1];g="("==f||"{"==f||"["==f?"\\":"";for(var k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);){var l=df(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(f+g[1]+h,null!=l?L(a,l):"undefined")}if(a.ta.length)for(f=a.ta[0],h=a.ta[1],g="("==f||"{"==f||"["==f?"\\":"",k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;f=b.match(/\$([a-z]+)/i);){h= +null;switch(f[1].toLowerCase()){case "ops":h=0}if(null==h)break;b=b.replace(f[0],h.toString())}}"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var p,f=b,u;if(f.match(/^[a-z_][a-z0-9_]*$/i))for(f=f.toUpperCase(),h=0;ha&&a>=-C&&(a+=E);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function uf(a,b){return L(a,b/Yb,18)+" "+L(a,b%Yb,18)} +function lf(a,b){a.D=a;a.da=a.Eb=536870916;a.Z=null;a.R=[];b=Te(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in gc){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.oa==b&&(b=yd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(nf(a.j[a.W],b),++a.W==a.j.length&&(a.W=0)));return!1} +function Nf(a,b,c,d){var e=Y(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/cc|0,u;for(u in Of)if(g=Of[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Pf;l=p&3;break;case 32256:k=Qf;l=p&7;break;case 29248:k=Rf,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Sf&&(k="B");k=Tf[g||0]+k;if(g){if(28700==h)h=f/dc&127,l=L(a,h,-1);else for(h=f>>23&15,l=L(a,h,-1),p=0;l&&p>18&15)&&(k+="("+L(a,f, +-1)+")")}else k=Da(k,8)+uf(a,f);f=k;g="";h=L(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+uf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ta?h+("cycles="+ld(a.v).toString()+" cs="+n(a.v.Ga)):h+(null!=d?"="+d.toString():""));return h} +function Vf(a,b,c,d,e){var f=-1,g,h;if(b){for(var k=b.toUpperCase(),l=0;lSf&&(J="B");if(k==Tf[h]+J){f=29248!=g?z:(z&3)<<1|(z&12)<<2;f=(B|f<<6)*cc;break}}if(0<=f)break}if(0<=f)break}!(0>f)||c&&c.match(/^[0-9A-Z$%.?]/i)|| +(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),2h||127h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function jf(a){var b,c;a.i=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.xa=0;a.pa=0} +m.Ra=function(a,b,c){var d=!0;c||Wf(this,a,b,!1,!0);if(a!=this.i){var e=mf(b);if(-1===e)this.u("invalid address: "+L(this,b.B,18)),d=!1;else{var f=this.H;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.qa=!0:(Xf(this,a,a.length-1,"set"),kf(this)));return d};function Wf(a,b,c,d,e){var f=!1;c=mf(c);for(var g=1;g>>d.i],b==a.K));h.qa||kf(a);break}}return f} +function Yf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=qa(d,2);nf(e.Ha,d);f+="="+L(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d=Af?1:d==xf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({Cd:b,B:c,Xb:d,aa:e,Bb:f})}function ag(a,b,c){var d=[],e=mf(b)>>>0;for(b=0;b>>0,h=f.Xb;if(e>=g&&e>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(b="start address ",null!=c?(H(a.v,c),b+=L(a,c)):b+="unspecified",a.u(e+" words loaded at "+L(a,f)+"-"+L(a,g)+", "+b),id(a)):a.u("no data")}function bg(a,b,c,d){var e={},f=a.I[b].Bb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=rf(a,d,a.ha);if(!e)return a.u("begin assemble at "+L(a,f.B,18)),a.V=!0,K(a.G),!0;var g=e.match(/^(['"]?)(.*?)(\.klm|\.mac|\.html|\.txt|)\1$/i);if(g&&(g[1]||g[3])){f=rf(a,d);if(a.wa)a.u("assembly already in progress");else{var h=g[2]+g[3];g[3]||(c+="s");var k=f.B,l=a.wa=new Hg(a);Jg(l,h,k,c,function(b,c){if(!b)try{var d=l.J;null==d&&(d=k);cg(a,l.U,d)}catch(z){"number"==typeof z?b=z||-1:(a.u(z.message), +b=-1)}b&&a.u("error ("+b+") processing "+(c||h));a.wa=null;b||kd(a)})}return!1}b.shift();b.shift();b.shift();b=Vf(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Nf(a,f)));return!0}function Kg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return gf(a)||a.u("no variables"),!0;if(!c[2])return gf(a,c[1]);if(!c[3])return delete a.b[c[1]],!0;b=df(a,c[3]);return void 0!==b?(a.b[c[1]]={value:b,Mb:void 0},!0):!1}a.u("invalid assignment:"+b);return!1} +function Lg(a,b,c){var d=null;b=rf(a,b);var e=ag(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+L(a,e[1],18)+")"+g,c&&a.u(f),d=f);4b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case wf:H(h, +g);nf(a.M,h.i);break;case zf:xd(h,g);break;case Af:f=131072;break;case Bf:f=65536;break;case Cf:f=32768;break;case Df:f=8192;break;case Ef:f=32;break;case Ff:f=262144}f&&(h.j=g?h.j|f:h.j&~f);K(a.G);a.u("updated registers:")}}a.u($f(a,e));c&&(nf(a.M,zd(d)),Lf(a,L(a,a.M.B,18)))}}function Mg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ha;l=b;h.B=l.B;h.bb=l.bb;h.qa=l.qa;h.T=l.T;a.u(Nf(a,b,g,f));e-=b.B-k;c++}} +function Zf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(Jf+b):(a.V&&(a.u("ended assemble at "+L(a,a.ha.B,18)),a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Qb(a)&&0B||"z"ta.length&&(a.u("note: only "+ta.length+" available"),ga=ta.length);ka-=ga;0>ka&&(null==ta[ta.length-1].B?(ga=ka+ga,ka=0):ka+=ta.length);var Vd=[];"call"==lg&&(Gb=1E5,Vd=["CALL"]);for(void 0!==kg&&a.u(ga+" instructions earlier:");0=ta.length&&(ka=0);a.Ba=ga;ng++;Gb--}}ng|| +(a.u("no "+mg+"history available"),a.Ba=void 0)}else{var Qa=0,qg="ds"==lb,Ib=rf(a,sa,a.oa);Ga&&("l"==Ga.charAt(0)?(Ga=Ga.substr(1)||ei,Qa=Ze(a,Ga)):Qa=rf(a,Ga).B-Ib.B,0>Qa&&(Qa=0),65536Jb?".":String.fromCharCode(Jb)),Nc=Nc-7}Ra&&(Ra+="\n");Ra=qg?Ra+(ua+","):Ra+(sa+": "+ua+(0>sg?" "+Yd:""))}Ra&&a.u(Ra);a.T=gi}}}break;case "e":if("else"==k[0])break;var tg,ug,vg=k[0],$d=k[1];"e"==vg||"ew"==vg?(tg=a.Ma,ug=a.yb):$d=null;if(null==$d)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else for(var ae=rf(a,$d,a.oa),be=2;bede;){for(var Sa=null,li=256;65536>Mb.B>>>0;){ee.B=a.Ma(Mb,2);if(null==Mb.B||!li--)break;if(!(ee.B&1)){for(var mi=a,Oc=ee,yg=null,Nb=Oc.B,zg=Nb,fe=1;6>=fe&&Nb;fe++){if(2Fg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var Gg=Y(a.v.i);a.Ma(Gg);a.O?(a.Ra(a.i,Gg,!0),Hf(a)||(a.G&&pd(a.G),a.O=0)):Ng(a,Fg?"tr":"t")}break;case "r":if("reset"==b){a.G&&a.G.reset();break}Kf(a,k);break;case "s":a:switch(k[1]){case "base":if(k[2]){var ob=+k[2];if(2==ob||8==ob||10==ob||16==ob)a.T=ob;else{a.u("invalid base: "+ +ob);break}}a.u("default base: "+a.T);break;case "cs":var Pb;void 0!==k[3]&&(Pb=+k[3]);switch(k[2]){case "int":a.v.pa=Pb;break;case "start":a.v.Ha=Pb;break;case "stop":a.v.ua=Pb;break;default:a.u("unknown cs option");break a}void 0!==Pb&&hd(a.v);a.u("checksums "+(a.v.A.Ta?"enabled":"disabled"));break;case "sp":void 0!==k[2]&&(md(a.v,+k[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ca.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(k[1]){a.u("unknown option: "+ +k[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":Ng(a,k[0],k[1]);break;case "u":Lf(a,k[1],k[2],8);break;case "v":if("var"==k[0]){Kg(a,b.substr(3))||(d=!1);break}if("ver"==k[0]){a.u((Wb||"PDP10")+" version 1.36.2 ("+a.v.jb+",RELEASE)");a.u(window? +window.navigator.userAgent:"");break}f=!0;break;case "?":if(k[1]){Mg(a,b.substr(1));break}var ge="commands:",he;for(he in Pg)ge+="\n"+Da(he,9)+Pg[he];Ad(a)||(ge+="\nnote: history disabled if no exec breakpoints");a.u(ge);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(Ig){a.u("Debugger "+(Ig.stack||Ig.message)),d=!1}return d}function kd(a,b,c){null!=b&&(a.Ga=Te(a,b,c));for(;b=a.Ga.shift();)if(!Zf(a,b))return!1;return!0} +var Pg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Sf=20,Tf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), +wf=0,xf=1,yf=2,zf=3,Af=4,Bf=5,Cf=6,Df=7,Ef=8,Ff=9,vf="PC RA EA PS OV C0 C1 BI ND PD".split(" "),Qg={},Of=(Qg[28672]={0:101},Qg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Qg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Sf, +9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Qg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Qg[29248]={24576:79,24640:80,25088:81,25152:82},Qg[28700]={28672:93,28676:94,28680:95,28684:96, +28688:97,28692:98,28696:99,28700:100},Qg),Pf=["","I","M","S"],Qf=" L E LE A GE N G".split(" "),Rf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Uf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],Gf=1E3,Jf=">> ";bb(function(){for(var a=v(document,t,"debugger"),b=0;bb.indexOf(":")&&0<=".MAC.KLM".indexOf(b.slice(-4).toUpperCase())&&(b+=".txt");La(b,null,!0,function(b,d,e){if(e)a.done&&a.done(e,b);else{e=d;if(Aa(b,".html")){e="";var c;for(b=/
    ([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Ug(a,"unrecognized HTML entity '"+c[0]+"'")}d=e.split(/(\r?\n)/);
    +if(d.length&1){if(c=d.pop())Ug(a,"unexpected line '"+c+"'"),d.push(c),d.push("")}else Ug(a,"unexpected number of lines ("+d.length+")");a.D=a.D.concat(d);a.N[a.R]=d.length>>1;a.R++;setTimeout(function(){Tg(a)},0)}})}}
    +function Sg(a){if(0<=a.W.indexOf("p"))a.u(a.D.join(""));else{var b=ff(a.b);Vg(a,"APR",0);Vg(a,"PI",4);try{for(var c=0;ca.W.indexOf("d")&&(a.b.b=b)}}
    +function Xg(a,b,c,d,e){var f,g;null!=a.w&&(b=bh(a,b));for(var h=!0,k="";h;){g=b.match(a.ha);if(!g||g[5]&&";"!=g[5].slice(0,1))return a.error("failed to parse line '"+b+"'"),!1;h=!1;k=g[2].toUpperCase();if(k==ch||k==dh)c=null;if(c){for(f=0;fz)break;var u=z+1,J=z+l.length,Mc="",ra="";z&&(Mc=b[z-1]).match(/[0-9A-Z$%.]/i)||!(J>=b.length)&&(ra=b[J]).match(/[0-9A-Z$%.]/i)||
    +("'"==Mc&&z--,"'"==ra&&J++,b=b.substr(0,z)+p+b.substr(J),u=z+p.length,h=!0)}}c=null}if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.S+" definition in '"+b+"'")),1=I?a.X+=I:a.error("unrecognized BLOCK expression '"+k+"'");break;case rh:k=c;b=g=0;for(c=36;I=sh(a,k);){k=k.substr(I.length).trim();d=I;if(e=I.match(/^\((.*)\)\s*(.*)$/))e[1]&&(g=$g(a,"^D"+e[1])),d=e[2];if(g){d=d?$g(a,d):0;if(void 0===d||0>g||36c&&th(a,b);break;case uh:(k=c)?(a.J=$g(a,k),void 0===a.J&&a.error("unrecognized END expression '"+k+"'")):a.J=a.la;break;case vh:wh(a,c);break;case xh:Yg(a);break;case yh:a.X=$g(a,c)||0;break;case zh:Zg(a);break;case Ah:wh(a,c.replace(",",",,"));break;case Bh:case Ch:case Dh:case Eh:case Fh:case Gh:case Hh:case Ih:case Jh:case Kh:case Lh:case Mh:case ch:case dh:case Nh:case Oh:jh(a,k,g);break;case Ph:k=Qh(a,c);for(I=0;Id.Ea&&Z(a,d.ka);break;case Kh:0>=d.Ea&&Z(a,d.ka);break;case Ch:case Lh:case Dh:case Ih:d.Ea&&Z(a,d.ka);break;case ch:case dh:for(b=0;ba.Da&&(a.Da=a.X);a.X=0}function ai(a){if(a.G.length){var b=a.G[a.G.length-1].name;b&&a.M.push({name:b,U:a.U,fa:a.fa});b=a.G.pop();a.U=b.U;a.fa=b.fa;a.X=b.X;a.Da=b.Da;a.G.length||-1==a.Da||a.error("scope restore error")}else a.error("scope nesting error")}
    +function sh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d"==h&&0>--g){a.error("missing bracket(s) in '"+b+"'");break}}}g?0f&&(g=g.replace(/\.([^0-9]|$)/g,L(a.b,d,-1)+"$1"),f=df(a.b,g,c),void 0===f&&a.error("unable to parse expression '"+b+"'",e));return f}
    +function ih(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e=--c){g=e;break}}0>c&&a.error("missing bracket(s) in '"+b+"'");0<=f&&(d=b.substr(f,g-f));return d}function Wg(a,b){b=void 0===b?a.ia:b;for(var c=0;b>a.N[c];)if(b-=a.N[c],cd?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.F+=b}if(null==a.w){var d=b=0,e,f,g=a.F.length;a.S==oh&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(th(a,d),b=0)}b&&th(a,d)}return c}
    +function jh(a,b,c){var d,e,f,g,h,k;a.C="<";a.O=">";g=h=k=[];if(b==Bh){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" in '"+c+"'"),c;f=e[1];if(e[2]&&","!=e[2]){h=g=Qh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}d=ci;b=3}else if(b==Nh){a.C="[";a.O="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
    +b+" in '"+c+"'"),c;f=e[1];d=Zh;b=2}else if(b==kh)a.C="[",a.O="]",f="?"+xa(++a.ca,5),a.v[f]&&a.error("literal symbol '"+f+"' redefined"),e=[c[0],c.substr(1)],d=di,b=0;else if(b==ch||b==dh){a.j||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" operands '"+c+"'"),c;for(d=0;d=E)&&Ug(a,"truncated value "+qa(b)+" at location "+qa(c)+" to "+qa(d));return d}Hg.prototype.error=function(a,b){throw Error("error in "+Wg(this,b)+": "+a);};
    +function Ug(a,b){a.u("warning in "+Wg(a,void 0)+": "+b)}Hg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};
    +var fh=1,gh=2,hh=4,nh="ASCII",oh="ASCIZ",qh="BLOCK",rh="BYTE",Bh="DEFINE",uh="END",vh="EXP",Ch="IF1",Dh="IFDEF",Eh="IFDIF",Fh="IFE",Gh="IFG",Hh="IFGE",Ih="IFIDN",Jh="IFL",Kh="IFLE",Lh="IFN",Mh="IFNDEF",ch="IRP",dh="IRPC",Rh="LALL",xh="LIT",kh="LITERAL",Sh="LIST",yh="LOC",Th="NOSYM",Nh="OPDEF",Uh="PAGE",Ph="PURGE",Oh="REPEAT",ph="SIXBIT",Vh="SUBTTL",Wh="TITLE",zh="VAR",Xh="XALL",Ah="XWD",Yh="XLIST",ci=-1,Zh=-2,di=-3,bi=-4;
    +function pi(a,b,c){r.call(this,"Computer",a,33554432);this.A.ba=!1;this.S=null;qi(this,b);this.O=fd(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.M=this.I=this.N=null;this.L=this.W=!1;this.K=this.C=null;this.V=this.R=!1;this.ca=fd(this,"url")||"";(Math.random()+.1).toString(36);this.i=ri(this);if(this.v=xb("CPU",this.id)){this.D=xb("Debugger",this.id);this.H=new Fc({id:this.$a+".bus",busWidth:this.Z},this.v,this.D);var d,e=vb(this.id);if(this.F=(this.j=xb("Panel",this.id))&&
    +this.j.J.print)for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bsi){if(ti(d,this.M)){this.C=new G(this,"1.36.2",Ci);ti(this.C)&&(Di(this,d),a=Ei,Fi(this.C));this.C.set(zi,Ia());Gi(this.C);var e=this.b&&!this.L;if(a==Ai||sb("Click OK to restore the previous "+Wb+" machine state, or CANCEL to reset the machine.")){if(c=yi(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ti(d,g):("error"==f&&"no machine state"!=
    +g?(this.ja("Error: "+g),"unable to verify user"==g&&(Va(Hi,""),this.i=null)):this.u(f+": "+g),Fi(d),ti(d)?(c=yi(d),e=!0):c=!1))}e&&wi(this,c?d:null)}else a==Ei&&d.clear()}else wi(this);delete this.M;delete this.K}e=vb(this.id);for(f=0;fa[1];a=a[2];this.V=!0;this.A.ba=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Ii(this,this.v,b,c,a),K(this,-2),this.v.ga());this.R&&(Di(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
    +function Di(a,b){if(sb("There may be a problem with your "+Wb+" machine.\n\nTo help us diagnose it, click OK to send this "+Wb+" machine state to http://www.pcjs.org.")){var c=a.ca;a=a.i||"";b=b.toString();var d={};d.app=Wb;d.ver="1.36.2";d.url=c;d.user=a;d.type="bug";d.data=b;La("http://www.pcjs.org/api/v1/report",d,!0)}}
    +function Og(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.36.2"),g=new G(a,"1.36.2",xi),h=Ia();g.set(zi,h);f.set(zi,h);f.set(Ji,"1.36.2");f.set(Ki,window?window.location.href:null);f.set(Li,window?window.navigator.userAgent:"");a.v&&a.v.ra&&(c&&(b&&(a.v.A.ga=a.v.A.P),a.v.Y()),d=a.v.ra(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.ba=!1,!1===d&&(e=null)));for(var h=vb(a.id),k=0;k=d||30<=(c.hb+=d))&&(e.textContent=c.A.P?c.Z.toFixed(2)+"Mhz":"Stopped",c.hb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.P;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?qa(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,
    +"$1PDPjs$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");La(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/gi;l=p.exec(f);)k=0>k.toLowerCase().indexOf(l[1].toLowerCase())?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+
    +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);Ti(a,b,c)}})}else c(a,null)}
    +function Ui(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&v(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Ba(a))}function g(a){f("Error: "+a);l&&(--Qi||fb(!0));l=!1}var h,k,l=!0;Qi++;qb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],B=document.createElement("style");B.type="text/css";B.styleSheet?B.styleSheet.cssText=p:B.appendChild(document.createTextNode(p));u.appendChild(B)}d||
    +(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.36.2/components.xsl");p=function(e,k){k?Ri(d,null,a,null,!1,f,function(a,e){e?(pb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Qi||fb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Qi||
    +fb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ri(c,b,a,e,!0,f,p):Si(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(z){g(z.message)}return l}window.embedPDP10=function(a,b,c,d){fb(!1);return Ui("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){fb(!1);return Ui("pdp11",a,b,c,d)};
    +window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if(!f)delete zb[c],d=!0;else if("string"==typeof f&&!zb[c]){d=!0;e=zb;for(var g=c,h=f.length,k=[],l=[],p="",u=null,B=0;B  1        G       (Ground)
    + *     TD      2  <->  3        RD      (Received Data)
    + *     RD      3  <->  2        TD      (Transmitted Data)
    + *     RTS     4  <->  5        CTS     (Clear To Send)
    + *     CTS     5  <->  4        RTS     (Request To Send)
    + *     DSR   6+8  <->  20       DTR     (Data Terminal Ready)
    + *     SG      7  <->  7        SG      (Signal Ground)
    + *     DTR    20  <->  6+8      DSR     (Data Set Ready + Carrier Detect)
    + *     RI     22  <->  22       RI      (Ring Indicator)
    + *
    + * TODO: Move these definitions to a more appropriate shared file at some point.
    + */
    +var RS232 = {
    +    RTS: {
    +        PIN:  4,
    +        MASK: 0x00000010
    +    },
    +    CTS: {
    +        PIN:  5,
    +        MASK: 0x00000020
    +    },
    +    DSR: {
    +        PIN:  6,
    +        MASK: 0x00000040
    +    },
    +    CD: {
    +        PIN:  8,
    +        MASK: 0x00000100
    +    },
    +    DTR: {
    +        PIN:  20,
    +        MASK: 0x00100000
    +    },
    +    RI: {
    +        PIN:  22,
    +        MASK: 0x00400000
    +    }
    +};
    +
    +/*
    + * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser)
    + */
    +var NODE = false;
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * Our "DiskDump API", such as it was, used to look like:
    + *
    + *      http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
    + *
    + * To make it (a bit) more "REST-like", the above request now looks like:
    + *
    + *      http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
    + *
    + * Similarly, our "FileDump API" used to look like:
    + *
    + *      http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json
    + *
    + * and that request now looks like:
    + *
    + *      http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json
    + *
    + * I don't think it makes sense to avoid "query" parameters, because blending the path of a disk image with the
    + * the rest of the URL would be (a) confusing, and (b) more work to parse.
    + */
    +var DumpAPI = {
    +    ENDPOINT:       "/api/v1/dump",
    +    QUERY: {
    +        DIR:        "dir",      // value is path of a directory (DiskDump only)
    +        DISK:       "disk",     // value is path of a disk image (DiskDump only)
    +        FILE:       "file",     // value is path of a ROM image file (FileDump only)
    +        IMG:        "img",      // alias for DISK
    +        PATH:       "path",     // value is path of a one or more files (DiskDump only)
    +        FORMAT:     "format",   // value is one of FORMAT values below
    +        COMMENTS:   "comments", // value is either "true" or "false"
    +        DECIMAL:    "decimal",  // value is either "true" to force all numbers to decimal, "false" or undefined otherwise
    +        MBHD:       "mbhd",     // value is hard drive size in Mb (formerly "mbsize") (DiskDump only) (DEPRECATED)
    +        SIZE:       "size"      // value is target disk size in Kb (supersedes "mbhd") (DiskDump only)
    +    },
    +    FORMAT: {
    +        JSON:       "json",     // default
    +        JSON_GZ:    "gz",       // gzip is currently used ONLY for compressed JSON
    +        DATA:       "data",     // same as "json", but built without JSON.stringify() (DiskDump only)
    +        HEX:        "hex",      // deprecated
    +        OCTAL:      "octal",    // displays data as octal words
    +        BYTES:      "bytes",    // displays data as hex bytes; normally used only when comments are enabled
    +        WORDS:      "words",    // displays data as hex words; normally used only when comments are enabled
    +        LONGS:      "longs",    // displays data as dwords
    +        IMG:        "img",      // returns the raw disk data (ie, using a Buffer object) (DiskDump only)
    +        ROM:        "rom"       // returns the raw file data (ie, using a Buffer object) (FileDump only)
    +    }
    +};
    +
    +/*
    + * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must
    + * also provide a list of commands which, when combined with the endpoint, define a unique request.
    + */
    +DumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH];
    +DumpAPI.asFileCommands = [DumpAPI.QUERY.FILE];
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +var ReportAPI = {
    +    ENDPOINT:       "/api/v1/report",
    +    QUERY: {
    +        APP:        "app",
    +        VER:        "ver",
    +        URL:        "url",
    +        USER:       "user",
    +        TYPE:       "type",
    +        DATA:       "data"
    +    },
    +    TYPE: {
    +        BUG:        "bug"
    +    },
    +    RES: {
    +        OK:         "Thank you"
    +    }
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * Examples of User API requests:
    + *
    + *      web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUser;
    + */
    +var UserAPI = {
    +    ENDPOINT:       "/api/v1/user",
    +    QUERY: {
    +        REQ:        "req",      // specifies a request
    +        USER:       "user",     // specifies a user ID
    +        STATE:      "state",    // specifies a state ID
    +        DATA:       "data"      // specifies state data
    +    },
    +    REQ: {
    +        CREATE:     "create",   // creates a user ID
    +        VERIFY:     "verify",   // requests verification of a user ID
    +        STORE:      "store",    // stores a machine state on the server
    +        LOAD:       "load"      // loads a machine state from the server
    +    },
    +    RES: {
    +        CODE:       "code",
    +        DATA:       "data"
    +    },
    +    CODE: {
    +        OK:         "ok",
    +        FAIL:       "error"
    +    },
    +    FAIL: {
    +        DUPLICATE:  "user already exists",
    +        VERIFY:     "unable to verify user",
    +        BADSTATE:   "invalid state parameter",
    +        NOSTATE:    "no machine state",
    +        BADLOAD:    "unable to load machine state",
    +        BADSTORE:   "unable to save machine state"
    +    }
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017
    + */
    +
    +var Keys = {
    +    /*
    +     * Keys and/or key combinations that generate common ASCII codes.
    +     *
    +     * NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js;
    +     * if something's missing, that's probably the more appropriate table to add it to.
    +     *
    +     * TODO: The Closure Compiler doesn't inline all references to these values, at least those with
    +     * quoted property names, which is why I've 'unquoted' as many of them as possible.  One solution
    +     * would be to add mnemonics for all of them, not just the non-printable ones (eg, SPACE instead
    +     * of ' ', AMP instead of '&', etc.)
    +     */
    +    ASCII: {
    +          BREAK:  0, CTRL_A:  1, CTRL_B:  2, CTRL_C:  3, CTRL_D:  4, CTRL_E:  5, CTRL_F:  6, CTRL_G:  7,
    +         CTRL_H:  8, CTRL_I:  9, CTRL_J: 10, CTRL_K: 11, CTRL_L: 12, CTRL_M: 13, CTRL_N: 14, CTRL_O: 15,
    +         CTRL_P: 16, CTRL_Q: 17, CTRL_R: 18, CTRL_S: 19, CTRL_T: 20, CTRL_U: 21, CTRL_V: 22, CTRL_W: 23,
    +         CTRL_X: 24, CTRL_Y: 25, CTRL_Z: 26,
    +            ' ': 32,    '!': 33,    '"': 34,    '#': 35,    '$': 36,    '%': 37,    '&': 38,    "'": 39,
    +            '(': 40,    ')': 41,    '*': 42,    '+': 43,    ',': 44,    '-': 45,    '.': 46,    '/': 47,
    +            '0': 48,    '1': 49,    '2': 50,    '3': 51,    '4': 52,    '5': 53,    '6': 54,    '7': 55,
    +            '8': 56,    '9': 57,    ':': 58,    ';': 59,    '<': 60,    '=': 61,    '>': 62,    '?': 63,
    +            '@': 64,     A:  65,     B:  66,     C:  67,     D:  68,     E:  69,     F:  70,     G:  71,
    +             H:  72,     I:  73,     J:  74,     K:  75,     L:  76,     M:  77,     N:  78,     O:  79,
    +             P:  80,     Q:  81,     R:  82,     S:  83,     T:  84,     U:  85,     V:  86,     W:  87,
    +             X:  88,     Y:  89,     Z:  90,    '[': 91,    '\\':92,    ']': 93,    '^': 94,    '_': 95,
    +            '`': 96,     a:  97,     b:  98,     c:  99,     d: 100,     e: 101,     f: 102,     g: 103,
    +             h:  104,    i: 105,     j: 106,     k: 107,     l: 108,     m: 109,     n: 110,     o: 111,
    +             p:  112,    q: 113,     r: 114,     s: 115,     t: 116,     u: 117,     v: 118,     w: 119,
    +             x:  120,    y: 121,     z: 122,    '{':123,    '|':124,    '}':125,    '~':126,   DEL: 127
    +    },
    +    /*
    +     * Browser keyCodes we must pay particular attention to.  For the most part, these are non-alphanumeric
    +     * or function keys, some which may require special treatment (eg, preventDefault() if returning false on
    +     * the initial keyDown event is insufficient).
    +     *
    +     * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above.
    +     *
    +     * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined
    +     * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37).
    +     */
    +    KEYCODE: {
    +        /* 0x08 */ BS:          8,          // BACKSPACE        (ASCII.CTRL_H)
    +        /* 0x09 */ TAB:         9,          // TAB              (ASCII.CTRL_I)
    +        /* 0x0A */ LF:          10,         // LINE FEED        (ASCII.CTRL_J) (TODO: Determine if any key actually generates this)
    +        /* 0x0D */ CR:          13,         // CARRIAGE RETURN  (ASCII.CTRL_M)
    +        /* 0x10 */ SHIFT:       16,
    +        /* 0x11 */ CTRL:        17,
    +        /* 0x12 */ ALT:         18,
    +        /* 0x13 */ PAUSE:       19,         // PAUSE/BREAK
    +        /* 0x14 */ CAPS_LOCK:   20,
    +        /* 0x1B */ ESC:         27,
    +        /* 0x20 */ SPACE:       32,
    +        /* 0x21 */ PGUP:        33,
    +        /* 0x22 */ PGDN:        34,
    +        /* 0x23 */ END:         35,
    +        /* 0x24 */ HOME:        36,
    +        /* 0x25 */ LEFT:        37,
    +        /* 0x26 */ UP:          38,
    +        /* 0x27 */ RIGHT:       39,
    +        /* 0x27 */ FF_QUOTE:    39,
    +        /* 0x28 */ DOWN:        40,
    +        /* 0x2C */ FF_COMMA:    44,
    +        /* 0x2C */ PRTSC:       44,
    +        /* 0x2D */ INS:         45,
    +        /* 0x2E */ DEL:         46,
    +        /* 0x2E */ FF_PERIOD:   46,
    +        /* 0x2F */ FF_SLASH:    47,
    +        /* 0x30 */ ZERO:        48,
    +        /* 0x31 */ ONE:         49,
    +        /* 0x32 */ TWO:         50,
    +        /* 0x33 */ THREE:       51,
    +        /* 0x34 */ FOUR:        52,
    +        /* 0x35 */ FIVE:        53,
    +        /* 0x36 */ SIX:         54,
    +        /* 0x37 */ SEVEN:       55,
    +        /* 0x38 */ EIGHT:       56,
    +        /* 0x39 */ NINE:        57,
    +        /* 0x3B */ FF_SEMI:     59,
    +        /* 0x3D */ FF_EQUALS:   61,
    +        /* 0x5B */ CMD:         91,         // aka WIN
    +        /* 0x5B */ FF_LBRACK:   91,
    +        /* 0x5C */ FF_BSLASH:   92,
    +        /* 0x5D */ RCMD:        93,         // aka MENU
    +        /* 0x5D */ FF_RBRACK:   93,
    +        /* 0x60 */ NUM_0:       96,
    +        /* 0x60 */ NUM_INS:     96,
    +        /* 0x60 */ FF_BQUOTE:   96,
    +        /* 0x61 */ NUM_1:       97,
    +        /* 0x61 */ NUM_END:     97,
    +        /* 0x62 */ NUM_2:       98,
    +        /* 0x62 */ NUM_DOWN:    98,
    +        /* 0x63 */ NUM_3:       99,
    +        /* 0x63 */ NUM_PGDN:    99,
    +        /* 0x64 */ NUM_4:       100,
    +        /* 0x64 */ NUM_LEFT:    100,
    +        /* 0x65 */ NUM_5:       101,
    +        /* 0x65 */ NUM_CENTER:  101,
    +        /* 0x66 */ NUM_6:       102,
    +        /* 0x66 */ NUM_RIGHT:   102,
    +        /* 0x67 */ NUM_7:       103,
    +        /* 0x67 */ NUM_HOME:    103,
    +        /* 0x68 */ NUM_8:       104,
    +        /* 0x68 */ NUM_UP:      104,
    +        /* 0x69 */ NUM_9:       105,
    +        /* 0x69 */ NUM_PGUP:    105,
    +        /* 0x6A */ NUM_MUL:     106,
    +        /* 0x6B */ NUM_ADD:     107,
    +        /* 0x6D */ NUM_SUB:     109,
    +        /* 0x6E */ NUM_DEL:     110,        // aka PERIOD
    +        /* 0x6F */ NUM_DIV:     111,
    +        /* 0x70 */ F1:          112,
    +        /* 0x71 */ F2:          113,
    +        /* 0x72 */ F3:          114,
    +        /* 0x73 */ F4:          115,
    +        /* 0x74 */ F5:          116,
    +        /* 0x75 */ F6:          117,
    +        /* 0x76 */ F7:          118,
    +        /* 0x77 */ F8:          119,
    +        /* 0x78 */ F9:          120,
    +        /* 0x79 */ F10:         121,
    +        /* 0x7A */ F11:         122,
    +        /* 0x7B */ F12:         123,
    +        /* 0x90 */ NUM_LOCK:    144,
    +        /* 0x91 */ SCROLL_LOCK: 145,
    +        /* 0xAD */ FF_DASH:     173,
    +        /* 0xBA */ SEMI:        186,        // Firefox:  59 (FF_SEMI)
    +        /* 0xBB */ EQUALS:      187,        // Firefox:  61 (FF_EQUALS)
    +        /* 0xBC */ COMMA:       188,
    +        /* 0xBD */ DASH:        189,        // Firefox: 173 (FF_DASH)
    +        /* 0xBE */ PERIOD:      190,
    +        /* 0xBF */ SLASH:       191,
    +        /* 0xC0 */ BQUOTE:      192,
    +        /* 0xDB */ LBRACK:      219,
    +        /* 0xDC */ BSLASH:      220,
    +        /* 0xDD */ RBRACK:      221,
    +        /* 0xDE */ QUOTE:       222,
    +        /* 0xE0 */ FF_CMD:      224,        // Firefox only (used for both CMD and RCMD)
    +        //
    +        // The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD),
    +        // where the thousands digit is used to store the sum of "binary" digits 1 and/or 2 and/or 4.
    +        //
    +        // Technically, that makes it DCO (Decimal Coded Octal), but then again, BCD should have really
    +        // been called HCD (Hexadecimal Coded Decimal), so if "they" can take liberties, so can I.
    +        //
    +        // ONDOWN is a bias we add to browser keyCodes that we want to handle on "down" rather than on "press".
    +        //
    +        ONDOWN:                 1000,
    +        //
    +        // ONRIGHT is a bias we add to browser keyCodes that need to check for a "right" location (default is "left")
    +        //
    +        ONRIGHT:                2000,
    +        //
    +        // FAKE is a bias we add to signal these are fake keyCodes corresponding to internal keystroke combinations.
    +        // The actual values are for internal use only and merely need to be unique and used consistently.
    +        //
    +        FAKE:                   4000
    +    },
    +    /*
    +     * The set of values that a browser may store in the 'location' property of a keyboard event object
    +     * which we also support.
    +     */
    +    LOCATION: {
    +        LEFT:                   1,
    +        RIGHT:                  2,
    +        NUMPAD:                 3
    +    }
    +};
    +
    +/*
    + * Check the event object's 'location' property for a non-zero value for the following ONRIGHT keys.
    + */
    +Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT;
    +
    +
    +/*
    + * Maps Firefox keyCodes to their more common keyCode counterparts; a number of entries in this table
    + * are no longer valid (if indeed they ever were), so they've been commented out.  It's likely that I
    + * simply extended this table to resolve additional differences in other browsers (ie, Opera), but without
    + * browser-specific checks, it's not safe to perform all the mappings shown below.
    + */
    +Keys.FF_KEYCODES = {};
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_SEMI]   = Keys.KEYCODE.SEMI;           //  59 -> 186
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.KEYCODE.EQUALS;         //  61 -> 187
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH]   = Keys.KEYCODE.DASH;           // 173 -> 189
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_CMD]    = Keys.KEYCODE.CMD;            // 224 -> 91
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_COMMA]  = Keys.KEYCODE.COMMA;       //  44 -> 188
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_PERIOD] = Keys.KEYCODE.PERIOD;      //  46 -> 190
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_SLASH]  = Keys.KEYCODE.SLASH;       //  47 -> 191
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BQUOTE] = Keys.KEYCODE.BQUOTE;      //  96 -> 192
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_LBRACK  = Keys.KEYCODE.LBRACK;      //  91 -> 219
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BSLASH] = Keys.KEYCODE.BSLASH;      //  92 -> 220
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_RBRACK] = Keys.KEYCODE.RBRACK;      //  93 -> 221
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_QUOTE]  = Keys.KEYCODE.QUOTE;       //  39 -> 222
    +
    +/*
    + * Maps non-ASCII keyCodes to their ASCII counterparts
    + */
    +Keys.NONASCII_KEYCODES = {};
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['-'];         // 173 -> 45
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SEMI]    = Keys.ASCII[';'];         // 186 -> 59
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.EQUALS]  = Keys.ASCII['='];         // 187 -> 61
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.DASH]    = Keys.ASCII['-'];         // 189 -> 45
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.COMMA]   = Keys.ASCII[','];         // 188 -> 44
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.PERIOD]  = Keys.ASCII['.'];         // 190 -> 46
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SLASH]   = Keys.ASCII['/'];         // 191 -> 47
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BQUOTE]  = Keys.ASCII['`'];         // 192 -> 96
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.LBRACK]  = Keys.ASCII['['];         // 219 -> 91
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BSLASH]  = Keys.ASCII['\\'];        // 220 -> 92
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.RBRACK]  = Keys.ASCII[']'];         // 221 -> 93
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.QUOTE]   = Keys.ASCII["'"];         // 222 -> 39
    +
    +/*
    + * Maps unshifted keyCodes to their shifted counterparts; to be used when a shift-key is down.
    + * Alphabetic characters are handled in code, since they must also take CAPS_LOCK into consideration.
    + */
    +Keys.SHIFTED_KEYCODES = {};
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['1']]     = Keys.ASCII['!'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['2']]     = Keys.ASCII['@'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['3']]     = Keys.ASCII['#'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['4']]     = Keys.ASCII['$'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['5']]     = Keys.ASCII['%'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['6']]     = Keys.ASCII['^'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['7']]     = Keys.ASCII['&'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['8']]     = Keys.ASCII['*'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['9']]     = Keys.ASCII['('];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['0']]     = Keys.ASCII[')'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SEMI]   = Keys.ASCII[':'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['+'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.COMMA]  = Keys.ASCII['<'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.DASH]   = Keys.ASCII['_'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['>'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SLASH]  = Keys.ASCII['?'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['~'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['{'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['|'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII['}'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.QUOTE]  = Keys.ASCII['"'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_DASH]   = Keys.ASCII['_'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.ASCII['+'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_SEMI]   = Keys.ASCII[':'];
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +class Str {
    +    /**
    +     * isValidInt(s, base)
    +     *
    +     * The built-in parseInt() function has the annoying feature of returning a partial value (ie,
    +     * up to the point where it encounters an invalid character); eg, parseInt("foo", 16) returns 0xf.
    +     *
    +     * So it's best to use our own Str.parseInt() function, which will in turn use this function to
    +     * validate the entire string.
    +     *
    +     * @param {string} s is the string representation of some number
    +     * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported
    +     * @return {boolean} true if valid, false if invalid (or the specified base isn't supported)
    +     */
    +    static isValidInt(s, base)
    +    {
    +        if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null;
    +        if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null;
    +        if (base == 8) return s.match(/^-?[0-7]+$/) !== null;
    +        if (base == 2) return s.match(/^-?[01]+$/) !== null;
    +        return false;
    +    }
    +
    +    /**
    +     * parseInt(s, base)
    +     *
    +     * This is a wrapper around the built-in parseInt() function.  Our wrapper recognizes certain prefixes
    +     * ('$' or "0x" for hex, '#' or "0o" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for
    +     * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values;
    +     * see isValidInt() for details.
    +     *
    +     * The use of multiple prefix/suffix combinations is undefined (although for the record, we process
    +     * prefixes first).  We do NOT support the "0b" prefix to indicate binary UNLESS one or more commas are
    +     * also present (because "0b" is also a valid hex sequence), and we do NOT support a single leading zero
    +     * to indicate octal (because such a number could also be decimal or hex).  Any number of commas are
    +     * allowed; we remove them all before calling the built-in parseInt().
    +     *
    +     * More recently, we've added support for "^D", "^O", and "^B" prefixes to accommodate the base overrides
    +     * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively).
    +     * If this support turns out to adversely affect other debuggers, then it will have to be "conditionalized".
    +     * Similarly, we've added support for "K", "M", and "G" MACRO-10-style suffixes that add 3, 6, or 9 zeros
    +     * to the value to be parsed, respectively.
    +     *
    +     * @param {string} s is the string representation of some number
    +     * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes
    +     * @return {number|undefined} corresponding value, or undefined if invalid
    +     */
    +    static parseInt(s, base)
    +    {
    +        var value;
    +
    +        if (s) {
    +            if (!base) base = 10;
    +
    +            var ch, chPrefix, chSuffix;
    +            var fCommas = (s.indexOf(',') > 0);
    +            if (fCommas) s = s.replace(/,/g, '');
    +
    +            ch = chPrefix = s.charAt(0);
    +            if (chPrefix == '#') {
    +                base = 8;
    +                chPrefix = '';
    +            }
    +            else if (chPrefix == '$') {
    +                base = 16;
    +                chPrefix = '';
    +            }
    +            if (ch != chPrefix) {
    +                s = s.substr(1);
    +            }
    +            else {
    +                ch = chPrefix = s.substr(0, 2);
    +                if (chPrefix == '0b' && fCommas || chPrefix == '^B') {
    +                    base = 2;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '0o' || chPrefix == '^O') {
    +                    base = 8;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '^D') {
    +                    base = 10;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '0x') {
    +                    base = 16;
    +                    chPrefix = '';
    +                }
    +                if (ch != chPrefix) s = s.substr(2);
    +            }
    +            ch = chSuffix = s.slice(-1);
    +            if (chSuffix == 'Y' || chSuffix == 'y') {
    +                base = 2;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == '.') {
    +                base = 10;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == 'H' || chSuffix == 'h') {
    +                base = 16;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == 'K') {
    +                chSuffix = '000';
    +            }
    +            else if (chSuffix == 'M') {
    +                chSuffix = '000000';
    +            }
    +            else if (chSuffix == 'G') {
    +                chSuffix = '000000000';
    +            }
    +            if (ch != chSuffix) s = s.slice(0, -1) + chSuffix;
    +            /*
    +             * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the
    +             * number before parsing, and then applied to the value after parsing.  If n is omitted, 35 is assumed,
    +             * which is a net shift of zero.  If n < 35, then a left shift of (35 - n) is required; if n > 35, then
    +             * a right shift of -(35 - n) is required.
    +             */
    +            var v, shift = 0;
    +            if (base <= 10) {
    +                var match = s.match(/(-?[0-9]+)B([0-9]*)/);
    +                if (match) {
    +                    s = match[1];
    +                    shift = 35 - ((match[2] || 35) & 0xff);
    +                }
    +            }
    +            if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) {
    +                /*
    +                 * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful.
    +                 *
    +                 *      value = v|0;
    +                 */
    +                if (shift) {
    +                    /*
    +                     * Since binary shifting is a logical operation, and since shifting by division only works properly
    +                     * with positive numbers, we must convert a negative value to a positive value, by computing the two's
    +                     * complement.
    +                     */
    +                    if (v < 0) v += Math.pow(2, 36);
    +                    if (shift > 0) {
    +                        v *= Math.pow(2, shift);
    +                    } else {
    +                        v = Math.trunc(v / Math.pow(2, -shift));
    +                    }
    +                }
    +                value = v;
    +            }
    +        }
    +        return value;
    +    }
    +
    +    /**
    +     * toBase(n, radix, cch, sPrefix, nGrouping)
    +     *
    +     * Displays the given number as an unsigned integer using the specified radix and number of digits.
    +     *
    +     * @param {number|null|undefined} n
    +     * @param {number} radix (ie, the base)
    +     * @param {number} cch (the desired number of digits)
    +     * @param {string} [sPrefix] (default is none)
    +     * @param {number} [nGrouping]
    +     * @return {string}
    +     */
    +    static toBase(n, radix, cch, sPrefix = "", nGrouping = 0)
    +    {
    +        /*
    +         * An initial "falsey" check for null takes care of both null and undefined;
    +         * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough.
    +         *
    +         * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN,
    +         * since JavaScript coerces such operands to zero, but I think there's "value" in seeing those
    +         * values displayed differently.
    +         */
    +        var s = "";
    +        if (isNaN(n)) {
    +            n = null;
    +        } else if (n != null) {
    +            /*
    +             * Callers that produced an input by dividing by a power of two rather than shifting (in order
    +             * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply
    +             * ignore, but if the integer portion is zero and the sign is negative, we should probably treat
    +             * this value as a sign-extension.
    +             */
    +            if (n < 0 && n > -1) n = -1;
    +            /*
    +             * Negative values should be two's complemented according to the number of digits; for example,
    +             * 12 octal digits implies an upper limit 8^12.
    +             */
    +            if (n < 0) {
    +                n += Math.pow(radix, cch);
    +            }
    +            if (n >= Math.pow(radix, cch)) {
    +                cch = Math.ceil(Math.log(n) / Math.log(radix));
    +            }
    +        }
    +        var g = nGrouping || -1;
    +        while (cch-- > 0) {
    +            if (!g) {
    +                s = ',' + s;
    +                g = nGrouping;
    +            }
    +            if (n == null) {
    +                s = '?' + s;
    +            } else {
    +                var d = n % radix;
    +                d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10);
    +                s = String.fromCharCode(d) + s;
    +                n = Math.trunc(n / radix);
    +            }
    +            g--;
    +        }
    +        return sPrefix + s;
    +    }
    +
    +    /**
    +     * toBin(n, cch, nGrouping)
    +     *
    +     * Converts an integer to binary, with the specified number of digits (up to a maximum of 36).
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36)
    +     * @param {number} [nGrouping]
    +     * @return {string} the binary representation of n
    +     */
    +    static toBin(n, cch, nGrouping)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0b11111111) {
    +                cch = 8;
    +            } else if (v <= 0b111111111111111111) {
    +                cch = 18;
    +            } else {
    +                cch = 36;
    +            }
    +        } else if (cch > 36) cch = 36;
    +        return Str.toBase(n, 2, cch, "", nGrouping);
    +    }
    +
    +    /**
    +     * toBinBytes(n, cb, fPrefix)
    +     *
    +     * Converts an integer to binary, with the specified number of bytes (up to the default of 4).
    +     *
    +     * @param {number|null|undefined} n (interpreted as a 32-bit value)
    +     * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the binary representation of n
    +     */
    +    static toBinBytes(n, cb, fPrefix)
    +    {
    +        var s = "";
    +        if (!cb || cb > 4) cb = 4;
    +        for (var i = 0; i < cb; i++) {
    +            if (s) s = ',' + s;
    +            s = Str.toBin(n & 0xff, 8) + s;
    +            n >>= 8;
    +        }
    +        return (fPrefix? "0b" : "") + s;
    +    }
    +
    +    /**
    +     * toOct(n, cch, fPrefix)
    +     *
    +     * Converts an integer to octal, with the specified number of digits (default of 6; max of 12)
    +     *
    +     * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values.  Moreover, if n is undefined, n.toString() will throw
    +     * an exception, whereas this function will return '?' characters.
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the octal representation of n
    +     */
    +    static toOct(n, cch, fPrefix)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0o777777) {
    +                cch = 6;
    +            } else if (v <= 0o77777777) {
    +                cch = 8;
    +            } else {
    +                cch = 12;
    +            }
    +        } else if (cch > 12) cch = 12;
    +        return Str.toBase(n, 8, cch, fPrefix? "0o" : "");
    +    }
    +
    +    /**
    +     * toDec(n, cch)
    +     *
    +     * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11)
    +     *
    +     * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values.  Moreover, if n is undefined, n.toString() will throw
    +     * an exception, whereas this function will return '?' characters.
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11)
    +     * @return {string} the decimal representation of n
    +     */
    +    static toDec(n, cch)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 99999) {
    +                cch = 5;
    +            } else {
    +                cch = 11;
    +            }
    +        } else if (cch > 11) cch = 11;
    +        return Str.toBase(n, 10, cch);
    +    }
    +
    +    /**
    +     * toHex(n, cch, fPrefix)
    +     *
    +     * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9).
    +     *
    +     * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16)
    +     * will return "-7fffffff" instead of "80000001".  Moreover, if n is undefined, n.toString() will
    +     * throw an exception, whereas this function will return '?' characters.
    +     *
    +     * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution,
    +     * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values:
    +     *
    +     *      s = (n < 0? n + 0x100000000 : n).toString(16);
    +     *      s = "00000000".substr(0, 8 - s.length) + s;
    +     *      s = s.substr(0, cch).toUpperCase();
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the hex representation of n
    +     */
    +    static toHex(n, cch, fPrefix)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0xffff) {
    +                cch = 4;
    +            } else if (v <= 0xffffffff) {
    +                cch = 8;
    +            } else {
    +                cch = 9;
    +            }
    +        } else if (cch > 9) cch = 9;
    +        return Str.toBase(n, 16, cch, fPrefix? "0x" : "");
    +    }
    +
    +    /**
    +     * toHexByte(b)
    +     *
    +     * Alias for Str.toHex(b, 2, true)
    +     *
    +     * @param {number|null|undefined} b is a byte value
    +     * @return {string} the hex representation of b
    +     */
    +    static toHexByte(b)
    +    {
    +        return Str.toHex(b, 2, true);
    +    }
    +
    +    /**
    +     * toHexWord(w)
    +     *
    +     * Alias for Str.toHex(w, 4, true)
    +     *
    +     * @param {number|null|undefined} w is a word (16-bit) value
    +     * @return {string} the hex representation of w
    +     */
    +    static toHexWord(w)
    +    {
    +        return Str.toHex(w, 4, true);
    +    }
    +
    +    /**
    +     * toHexLong(l)
    +     *
    +     * Alias for Str.toHex(l, 8, true)
    +     *
    +     * @param {number|null|undefined} l is a dword (32-bit) value
    +     * @return {string} the hex representation of w
    +     */
    +    static toHexLong(l)
    +    {
    +        return Str.toHex(l, 8, true);
    +    }
    +
    +    /**
    +     * getBaseName(sFileName, fStripExt)
    +     *
    +     * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead.
    +     *
    +     * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only
    +     * if it matches the second parameter (eg, path.basename("/foo/bar/baz/asdf/quux.html", ".html") returns "quux").
    +     *
    +     * @param {string} sFileName
    +     * @param {boolean} [fStripExt]
    +     * @return {string}
    +     */
    +    static getBaseName(sFileName, fStripExt)
    +    {
    +        var sBaseName = sFileName;
    +
    +        var i = sFileName.lastIndexOf('/');
    +        if (i >= 0) sBaseName = sFileName.substr(i + 1);
    +
    +        /*
    +         * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters.
    +         */
    +        i = sBaseName.indexOf('&');
    +        if (i > 0) sBaseName = sBaseName.substr(0, i);
    +
    +        if (fStripExt) {
    +            i = sBaseName.lastIndexOf(".");
    +            if (i > 0) {
    +                sBaseName = sBaseName.substring(0, i);
    +            }
    +        }
    +        return sBaseName;
    +    }
    +
    +    /**
    +     * getExtension(sFileName)
    +     *
    +     * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead.
    +     *
    +     * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it.
    +     *
    +     * @param {string} sFileName
    +     * @return {string} the filename's extension (in lower-case and EXCLUDING the "."), or an empty string
    +     */
    +    static getExtension(sFileName)
    +    {
    +        var sExtension = "";
    +        var i = sFileName.lastIndexOf(".");
    +        if (i >= 0) {
    +            sExtension = sFileName.substr(i + 1).toLowerCase();
    +        }
    +        return sExtension;
    +    }
    +
    +    /**
    +     * endsWith(s, sSuffix)
    +     *
    +     * @param {string} s
    +     * @param {string} sSuffix
    +     * @return {boolean} true if s ends with sSuffix, false if not
    +     */
    +    static endsWith(s, sSuffix)
    +    {
    +        return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1;
    +    }
    +
    +    /**
    +     * escapeHTML(sHTML)
    +     *
    +     * @param {string} sHTML
    +     * @return {string} with HTML entities "escaped", similar to PHP's htmlspecialchars()
    +     */
    +    static escapeHTML(sHTML)
    +    {
    +        return sHTML.replace(/[&<>"']/g, function(m)
    +        {
    +            return Str.aHTMLEscapeMap[m];
    +        });
    +    }
    +
    +    /**
    +     * replace(sSearch, sReplace, s)
    +     *
    +     * The JavaScript replace() function ALWAYS interprets "$" specially in replacement strings, even when
    +     * the search string is NOT a RegExp; specifically:
    +     *
    +     *      $$  Inserts a "$"
    +     *      $&  Inserts the matched substring
    +     *      $`  Inserts the portion of the string that precedes the matched substring
    +     *      $'  Inserts the portion of the string that follows the matched substring
    +     *      $n  Where n is a positive integer less than 100, inserts the nth parenthesized sub-match string,
    +     *          provided the first argument was a RegExp object
    +     *
    +     * So, if a replacement string containing dollar signs passes through a series of replace() calls, untold
    +     * problems could result.  Hence, this function, which simply uses the replacement string as-is.
    +     *
    +     * Similar to the JavaScript replace() method (when sSearch is a string), this replaces only ONE occurrence
    +     * (ie, the FIRST occurrence); it might be nice to add options to replace the LAST occurrence and/or ALL
    +     * occurrences, but we'll revisit that later.
    +     *
    +     * @param {string} sSearch
    +     * @param {string} sReplace
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replace(sSearch, sReplace, s)
    +    {
    +        var i = s.indexOf(sSearch);
    +        if (i >= 0) {
    +            s = s.substr(0, i) + sReplace + s.substr(i + sSearch.length);
    +        }
    +        return s;
    +    }
    +
    +    /**
    +     * replaceAll(sSearch, sReplace, s)
    +     *
    +     * @param {string} sSearch
    +     * @param {string} sReplace
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replaceAll(sSearch, sReplace, s)
    +    {
    +        var a = {};
    +        a[sSearch] = sReplace;
    +        return Str.replaceArray(a, s);
    +    }
    +
    +    /**
    +     * replaceArray(a, s)
    +     *
    +     * @param {Object} a
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replaceArray(a, s)
    +    {
    +        var sMatch = "";
    +        for (var k in a) {
    +            /*
    +             * As noted in:
    +             *
    +             *      http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/
    +             *
    +             * inside character classes, only backslash, caret, hyphen and the closing bracket need to be
    +             * escaped.  And in fact, if you ensure that the closing bracket is first, the caret is not first,
    +             * and the hyphen is last, you can avoid escaping those as well.
    +             */
    +            k = k.replace(/([\\[\]*{}().+?])/g, "\\$1");
    +            sMatch += (sMatch? '|' : '') + k;
    +        }
    +        return s.replace(new RegExp('(' + sMatch + ')', "g"), function(m)
    +        {
    +            return a[m];
    +        });
    +    }
    +
    +    /**
    +     * pad(s, cch, fPadLeft)
    +     *
    +     * NOTE: the maximum amount of padding currently supported is 40 spaces.
    +     *
    +     * @param {string} s is a string
    +     * @param {number} cch is desired length
    +     * @param {boolean} [fPadLeft] (default is padding on the right)
    +     * @return {string} the original string (s) with spaces padding it to the specified length
    +     */
    +    static pad(s, cch, fPadLeft)
    +    {
    +        var sPadding = "                                        ";
    +        return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch);
    +    }
    +
    +    /**
    +     * stripLeadingZeros(s, fPad)
    +     *
    +     * @param {string} s
    +     * @param {boolean} [fPad]
    +     * @return {string}
    +     */
    +    static stripLeadingZeros(s, fPad)
    +    {
    +        var cch = s.length;
    +        s = s.replace(/^0+([0-9A-F]+)$/i, "$1");
    +        if (fPad) s = Str.pad(s, cch, true);
    +        return s;
    +    }
    +
    +    /**
    +     * trim(s)
    +     *
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static trim(s)
    +    {
    +        if (String.prototype.trim) {
    +            return s.trim();
    +        }
    +        return s.replace(/^\s+|\s+$/g, "");
    +    }
    +
    +    /**
    +     * toASCIICode(b)
    +     *
    +     * @param {number} b
    +     * @return {string}
    +     */
    +    static toASCIICode(b)
    +    {
    +        var s;
    +        if (b != Str.ASCII.CR && b != Str.ASCII.LF) {
    +            s = Str.aASCIICodes[b];
    +        }
    +        if (s) {
    +            s = '<' + s + '>';
    +        } else {
    +            s = String.fromCharCode(b);
    +        }
    +        return s;
    +    }
    +}
    +
    +Str.aHTMLEscapeMap = {
    +    '&': '&',
    +    '<': '<',
    +    '>': '>',
    +    '"': '"',
    +    "'": '''
    +};
    +
    +/*
    + * Future home of a general-purpose ASCII table.  TODO: Flesh it out.
    + */
    +Str.ASCII = {
    +    LF:     0x0A,
    +    CR:     0x0D
    +};
    +
    +/*
    + * Table for converting "unprintable" ASCII codes into mnemonics, to more clearly see what's being printed.
    + */
    +Str.aASCIICodes = {
    +    0x00:   "NUL",
    +    0x01:   "SOH",      // (CTRL_A) Start of Heading
    +    0x02:   "STX",      // (CTRL_B) Start of Text
    +    0x03:   "ETX",      // (CTRL_C) End of Text
    +    0x04:   "EOT",      // (CTRL_D) End of Transmission
    +    0x05:   "ENQ",      // (CTRL_E) Enquiry
    +    0x06:   "ACK",      // (CTRL_F) Acknowledge
    +    0x07:   "BEL",      // (CTRL_G) Bell
    +    0x08:   "BS",       // (CTRL_H) Backspace
    +    0x09:   "TAB",      // (CTRL_I) Horizontal Tab
    +    0x0A:   "LF",       // (CTRL_J) Line Feed (New Line)
    +    0x0B:   "VT",       // (CTRL_K) Vertical Tab
    +    0x0C:   "FF",       // (CTRL_L) Form Feed (New Page)
    +    0x0D:   "CR",       // (CTRL_M) Carriage Return
    +    0x0E:   "SO",       // (CTRL_N) Shift Out
    +    0x0F:   "SI",       // (CTRL_O) Shift In
    +    0x10:   "DLE",      // (CTRL_P) Data Link Escape
    +    0x11:   "XON",      // (CTRL_Q) Device Control 1 (aka DC1)
    +    0x12:   "DC2",      // (CTRL_R) Device Control 2
    +    0x13:   "XOFF",     // (CTRL_S) Device Control 3 (aka DC3)
    +    0x14:   "DC4",      // (CTRL_T) Device Control 4
    +    0x15:   "NAK",      // (CTRL_U) Negative Acknowledge
    +    0x16:   "SYN",      // (CTRL_V) Synchronous Idle
    +    0x17:   "ETB",      // (CTRL_W) End of Transmission Block
    +    0x18:   "CAN",      // (CTRL_X) Cancel
    +    0x19:   "EM",       // (CTRL_Y) End of Medium
    +    0x1A:   "SUB",      // (CTRL_Z) Substitute
    +    0x1B:   "ESC",      // Escape
    +    0x1C:   "FS",       // File Separator
    +    0x1D:   "GS",       // Group Separator
    +    0x1E:   "RS",       // Record Separator
    +    0x1F:   "US"        // Unit Separator
    +};
    +
    +Str.TYPES = {
    +    NULL:       0,
    +    BYTE:       1,
    +    WORD:       2,
    +    DWORD:      3,
    +    NUMBER:     4,
    +    STRING:     5,
    +    BOOLEAN:    6,
    +    OBJECT:     7,
    +    ARRAY:      8
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/**
    + * @typedef {{
    + *  mask:       number,
    + *  shift:      number
    + * }}
    + */
    +var BitField;
    +
    +/**
    + * @typedef {Object.}
    + */
    +var BitFields;
    +
    +class Usr {
    +    /**
    +     * binarySearch(a, v, fnCompare)
    +     *
    +     * @param {Array} a is an array
    +     * @param {number|string|Array|Object} v
    +     * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]
    +     * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point
    +     */
    +    static binarySearch(a, v, fnCompare)
    +    {
    +        var left = 0;
    +        var right = a.length;
    +        var found = 0;
    +        if (fnCompare === undefined) {
    +            fnCompare = function(a, b)
    +            {
    +                return a > b ? 1 : a < b ? -1 : 0;
    +            };
    +        }
    +        while (left < right) {
    +            var middle = (left + right) >> 1;
    +            var compareResult;
    +            compareResult = fnCompare(v, a[middle]);
    +            if (compareResult > 0) {
    +                left = middle + 1;
    +            } else {
    +                right = middle;
    +                found = !compareResult;
    +            }
    +        }
    +        return found ? left : ~left;
    +    }
    +
    +    /**
    +     * binaryInsert(a, v, fnCompare)
    +     *
    +     * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the
    +     * element is inserted into the array at the appropriate index.
    +     *
    +     * @param {Array} a is an array
    +     * @param {number|string|Array|Object} v is the value to insert
    +     * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]
    +     */
    +    static binaryInsert(a, v, fnCompare)
    +    {
    +        var index = Usr.binarySearch(a, v, fnCompare);
    +        if (index < 0) {
    +            a.splice(-(index + 1), 0, v);
    +        }
    +    }
    +
    +    /**
    +     * getTimestamp()
    +     *
    +     * @return {string} timestamp containing the current date and time ("yyyy-mm-dd hh:mm:ss")
    +     */
    +    static getTimestamp()
    +    {
    +        return Usr.formatDate("Y-m-d H:i:s");
    +    }
    +
    +    /**
    +     * getMonthDays(nMonth, nYear)
    +     *
    +     * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100),
    +     * so we have no idea what century the year 0 might refer to.  When using the normal leap-year formula, 0 fails
    +     * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap
    +     * year.  Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year.
    +     *
    +     * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD,
    +     * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and
    +     * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what
    +     * a real RTC actually does.
    +     *
    +     * @param {number} nMonth (1-12)
    +     * @param {number} nYear (normally a 4-digit year, but it may also be mod 100)
    +     * @return {number} the maximum (1-based) day allowed for the specified month and year
    +     */
    +    static getMonthDays(nMonth, nYear)
    +    {
    +        var nDays = Usr.aMonthDays[nMonth - 1];
    +        if (nDays == 28) {
    +            if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) {
    +                nDays++;
    +            }
    +        }
    +        return nDays;
    +    }
    +
    +    /**
    +     * formatDate(sFormat, date)
    +     *
    +     * @param {string} sFormat (eg, "F j, Y", "Y-m-d H:i:s")
    +     * @param {Date} [date] (default is the current time)
    +     * @return {string}
    +     *
    +     * Supported identifiers in sFormat include:
    +     *
    +     *      a:  lowercase ante meridiem and post meridiem (am or pm)
    +     *      d:  day of the month, 2 digits with leading zeros (01,02,...,31)
    +     *      D:  3-letter day of the week ("Sun","Mon",...,"Sat")
    +     *      F:  month ("January","February",...,"December")
    +     *      g:  hour in 12-hour format, without leading zeros (1,2,...,12)
    +     *      h:  hour in 24-hour format, without leading zeros (0,1,...,23)
    +     *      H:  hour in 24-hour format, with leading zeros (00,01,...,23)
    +     *      i:  minutes, with leading zeros (00,01,...,59)
    +     *      j:  day of the month, without leading zeros (1,2,...,31)
    +     *      l:  day of the week ("Sunday","Monday",...,"Saturday")
    +     *      m:  month, with leading zeros (01,02,...,12)
    +     *      M:  3-letter month ("Jan","Feb",...,"Dec")
    +     *      n:  month, without leading zeros (1,2,...,12)
    +     *      s:  seconds, with leading zeros (00,01,...,59)
    +     *      y:  2-digit year (eg, 14)
    +     *      Y:  4-digit year (eg, 2014)
    +     *
    +     * For more inspiration, see: http://php.net/manual/en/function.date.php (of which we support ONLY a subset).
    +     */
    +    static formatDate(sFormat, date)
    +    {
    +        var sDate = "";
    +        if (!date) date = new Date();
    +        var iHour = date.getHours();
    +        var iDay = date.getDate();
    +        var iMonth = date.getMonth() + 1;
    +        for (var i = 0; i < sFormat.length; i++) {
    +            var ch;
    +            switch ((ch = sFormat.charAt(i))) {
    +            case 'a':
    +                sDate += (iHour < 12 ? "am" : "pm");
    +                break;
    +            case 'd':
    +                sDate += ('0' + iDay).slice(-2);
    +                break;
    +            case 'D':
    +                sDate += Usr.asDays[date.getDay()].substr(0, 3);
    +                break;
    +            case 'F':
    +                sDate += Usr.asMonths[iMonth - 1];
    +                break;
    +            case 'g':
    +                sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour));
    +                break;
    +            case 'h':
    +                sDate += iHour;
    +                break;
    +            case 'H':
    +                sDate += ('0' + iHour).slice(-2);
    +                break;
    +            case 'i':
    +                sDate += ('0' + date.getMinutes()).slice(-2);
    +                break;
    +            case 'j':
    +                sDate += iDay;
    +                break;
    +            case 'l':
    +                sDate += Usr.asDays[date.getDay()];
    +                break;
    +            case 'm':
    +                sDate += ('0' + iMonth).slice(-2);
    +                break;
    +            case 'M':
    +                sDate += Usr.asMonths[iMonth - 1].substr(0, 3);
    +                break;
    +            case 'n':
    +                sDate += iMonth;
    +                break;
    +            case 's':
    +                sDate += ('0' + date.getSeconds()).slice(-2);
    +                break;
    +            case 'y':
    +                sDate += ("" + date.getFullYear()).slice(-2);
    +                break;
    +            case 'Y':
    +                sDate += date.getFullYear();
    +                break;
    +            default:
    +                sDate += ch;
    +                break;
    +            }
    +        }
    +        return sDate;
    +    }
    +
    +    /**
    +     * defineBitFields(bfs)
    +     *
    +     * Prepares a bit field definition for use with getBitField() and setBitField(); eg:
    +     *
    +     *      var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3});
    +     *
    +     * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31).
    +     *
    +     *      Usr.setBitField(bfs.num, n, 1);
    +     *
    +     * The above set bit field "bfs.num" in numeric variable "n" to the value 1.
    +     *
    +     * @param {Object} bfs
    +     * @return {BitFields}
    +     */
    +    static defineBitFields(bfs)
    +    {
    +        var bit = 0;
    +        for (var f in bfs) {
    +            var width = bfs[f];
    +            var mask = ((1 << width) - 1) << bit;
    +            bfs[f] = {mask: mask, shift: bit};
    +            bit += width;
    +        }
    +        return bfs;
    +    }
    +
    +    /**
    +     * initBitFields(bfs, ...)
    +     *
    +     * @param {BitFields} bfs
    +     * @param {...number} var_args
    +     * @return {number} a value containing all supplied bit fields
    +     */
    +    static initBitFields(bfs, var_args)
    +    {
    +        var v = 0, i = 1;
    +        for (var f in bfs) {
    +            if (i >= arguments.length) break;
    +            v = Usr.setBitField(bfs[f], v, arguments[i++]);
    +        }
    +        return v;
    +    }
    +
    +    /**
    +     * getBitField(bf, v)
    +     *
    +     * @param {BitField} bf
    +     * @param {number} v is a value containing bit fields
    +     * @return {number} the value of the bit field in v defined by bf
    +     */
    +    static getBitField(bf, v)
    +    {
    +        return (v & bf.mask) >> bf.shift;
    +    }
    +
    +    /**
    +     * setBitField(bf, v, n)
    +     *
    +     * @param {BitField} bf
    +     * @param {number} v is a value containing bit fields
    +     * @param {number} n is a value to store in v in the bit field defined by bf
    +     * @return {number} updated v
    +     */
    +    static setBitField(bf, v, n)
    +    {
    +        return (v & ~bf.mask) | ((n << bf.shift) & bf.mask);
    +    }
    +
    +    /**
    +     * indexOf(a, t, i)
    +     *
    +     * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it.
    +     *
    +     * @param {Array} a
    +     * @param {*} t
    +     * @param {number} [i]
    +     * @returns {number}
    +     */
    +    static indexOf(a, t, i)
    +    {
    +        if (Array.prototype.indexOf) {
    +            return a.indexOf(t, i);
    +        }
    +        i = i || 0;
    +        if (i < 0) i += a.length;
    +        if (i < 0) i = 0;
    +        for (var n = a.length; i < n; i++) {
    +            if (i in a && a[i] === t) return i;
    +        }
    +        return -1;
    +    }
    +}
    +
    +Usr.asDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    +Usr.asMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    +Usr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    +
    +/**
    + * getTime()
    + *
    + * @return {number} the current time, in milliseconds
    + */
    +Usr.getTime = Date.now || function() { return +new Date(); };
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +
    +/*
    + * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties
    + * and functions of JavaScript-in-the-Browser:
    + *
    + * Property             Description
    + * ---
    + * Infinity             A numeric value that represents positive/negative infinity
    + * NaN                  "Not-a-Number" value
    + * undefined            Indicates that a variable has not been assigned a value
    + *
    + * Function             Description
    + * ---
    + * decodeURI()          Decodes a URI
    + * decodeURIComponent() Decodes a URI component
    + * encodeURI()          Encodes a URI
    + * encodeURIComponent() Encodes a URI component
    + * escape()             Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead
    + * eval()               Evaluates a string and executes it as if it was script code
    + * isFinite()           Determines whether a value is a finite, legal number
    + * isNaN()              Determines whether a value is an illegal number
    + * Number()             Converts an object's value to a number
    + * parseFloat()         Parses a string and returns a floating point number
    + * parseInt()           Parses a string and returns an integer
    + * String()             Converts an object's value to a string
    + * unescape()           Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead
    + *
    + * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions
    + * of the *window* object.
    + *
    + * Property             Description
    + * ---
    + * closed               Returns a Boolean value indicating whether a window has been closed or not
    + * defaultStatus        Sets or returns the default text in the statusbar of a window
    + * document             Returns the Document object for the window (See Document object)
    + * frames               Returns an array of all the frames (including iframes) in the current window
    + * history              Returns the History object for the window (See History object)
    + * innerHeight          Returns the inner height of a window's content area
    + * innerWidth           Returns the inner width of a window's content area
    + * length               Returns the number of frames (including iframes) in a window
    + * location             Returns the Location object for the window (See Location object)
    + * name                 Sets or returns the name of a window
    + * navigator            Returns the Navigator object for the window (See Navigator object)
    + * opener               Returns a reference to the window that created the window
    + * outerHeight          Returns the outer height of a window, including toolbars/scrollbars
    + * outerWidth           Returns the outer width of a window, including toolbars/scrollbars
    + * pageXOffset          Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window
    + * pageYOffset          Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window
    + * parent               Returns the parent window of the current window
    + * screen               Returns the Screen object for the window (See Screen object)
    + * screenLeft           Returns the x coordinate of the window relative to the screen
    + * screenTop            Returns the y coordinate of the window relative to the screen
    + * screenX              Returns the x coordinate of the window relative to the screen
    + * screenY              Returns the y coordinate of the window relative to the screen
    + * self                 Returns the current window
    + * status               Sets or returns the text in the statusbar of a window
    + * top                  Returns the topmost browser window
    + *
    + * Method               Description
    + * ---
    + * alert()              Displays an alert box with a message and an OK button
    + * atob()               Decodes a base-64 encoded string
    + * blur()               Removes focus from the current window
    + * btoa()               Encodes a string in base-64
    + * clearInterval()      Clears a timer set with setInterval()
    + * clearTimeout()       Clears a timer set with setTimeout()
    + * close()              Closes the current window
    + * confirm()            Displays a dialog box with a message and an OK and a Cancel button
    + * createPopup()        Creates a pop-up window
    + * focus()              Sets focus to the current window
    + * moveBy()             Moves a window relative to its current position
    + * moveTo()             Moves a window to the specified position
    + * open()               Opens a new browser window
    + * print()              Prints the content of the current window
    + * prompt()             Displays a dialog box that prompts the visitor for input
    + * resizeBy()           Resizes the window by the specified pixels
    + * resizeTo()           Resizes the window to the specified width and height
    + * scroll()             This method has been replaced by the scrollTo() method.
    + * scrollBy()           Scrolls the content by the specified number of pixels
    + * scrollTo()           Scrolls the content to the specified coordinates
    + * setInterval()        Calls a function or evaluates an expression at specified intervals (in milliseconds)
    + * setTimeout()         Calls a function or evaluates an expression after a specified number of milliseconds
    + * stop()               Stops the window from loading
    + */
    +
    +class Web {
    +    /**
    +     * log(s, type)
    +     *
    +     * For diagnostic output only.  DEBUG must be true (or "--debug" specified via the command-line)
    +     * for Component.log() to display anything.
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     */
    +    static log(s, type)
    +    {
    +        Component.log(s, type);
    +    }
    +
    +    /**
    +     * notice(s, fPrintOnly, id)
    +     *
    +     * @param {string} s is the message text
    +     * @param {boolean} [fPrintOnly]
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static notice(s, fPrintOnly, id)
    +    {
    +        Component.notice(s, fPrintOnly, id);
    +    }
    +
    +    /**
    +     * getResource(sURL, dataPost, fAsync, done, progress)
    +     *
    +     * Request the specified resource (sURL), and once the request is complete, notify done().
    +     *
    +     * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no
    +     * idea when the request is complete or what the response was.  done() is passed three parameters:
    +     *
    +     *      done(sURL, sResource, nErrorCode)
    +     *
    +     * If nErrorCode is zero, sResource should contain the requested data; otherwise, an error occurred.
    +     *
    +     * If dataPost is set to a string, that string can be used to control the response format;
    +     * by default, the response format is plain text, but you can specify "bytes" to request arbitrary
    +     * binary data, which should come back as a string of bytes.
    +     *
    +     * TODO: The "bytes" option works by calling overrideMimeType(), which was never a best practice.
    +     * Instead, we should implement supported response types ("text" and "arraybuffer", at a minimum)
    +     * by setting xmlHTTP.responseType to one of those values before calling xmlHTTP.send().
    +     *
    +     * @param {string} sURL
    +     * @param {string|Object|null} [dataPost] for a POST request (default is a GET request)
    +     * @param {boolean} [fAsync] is true for an asynchronous request
    +     * @param {function(string,string,number)} [done]
    +     * @param {function(number)} [progress]
    +     * @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet
    +     */
    +    static getResource(sURL, dataPost, fAsync = false, done, progress)
    +    {
    +        var nErrorCode = 0, sResource = null, response = null;
    +
    +        if (typeof resources == 'object' && (sResource = resources[sURL])) {
    +            if (done) done(sURL, sResource, nErrorCode);
    +            return [sResource, nErrorCode];
    +        }
    +        else if (fAsync && typeof resources == 'function') {
    +            resources(sURL, function(sResource, nErrorCode)
    +            {
    +                if (done) done(sURL, sResource, nErrorCode);
    +            });
    +            return response;
    +        }
    +
    +        if (DEBUG) {
    +            /*
    +             * The larger resources we put on archive.pcjs.org should also be available locally...
    +             */
    +            sURL = sURL.replace(/^http:\/\/archive.pcjs.org(\/.*)\/([^\/]*)$/, "$1/archive/$2");
    +        }
    +
    +
    +        var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP"));
    +        if (fAsync) {
    +            xmlHTTP.onreadystatechange = function()
    +            {
    +                if (xmlHTTP.readyState !== 4) {
    +                    if (progress) progress(1);
    +                    return;
    +                }
    +                /*
    +                 * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple
    +                 * times when debugging.  Unfortunately, that's not the only XMLHttpRequest problem that occurs when
    +                 * debugging, so I think the WebKit problem is deeper than that.  When we have multiple XMLHttpRequests
    +                 * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be
    +                 * happening are mis-notifications rather than redundant notifications.
    +                 *
    +                 *      xmlHTTP.onreadystatechange = undefined;
    +                 */
    +                sResource = xmlHTTP.responseText;
    +                /*
    +                 * The normal "success" case is an HTTP status code of 200, but when testing with files loaded
    +                 * from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible".
    +                 */
    +                if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && Web.getHostProtocol() == "file:") {
    +                    if (MAXDEBUG) Web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes");
    +                }
    +                else {
    +                    nErrorCode = xmlHTTP.status || -1;
    +                    Web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode);
    +                }
    +                if (progress) progress(2);
    +                if (done) done(sURL, sResource, nErrorCode);
    +            };
    +        }
    +
    +        if (progress) progress(0);
    +
    +        if (dataPost && typeof dataPost == "object") {
    +            var sDataPost = "";
    +            for (var p in dataPost) {
    +                if (!dataPost.hasOwnProperty(p)) continue;
    +                if (sDataPost) sDataPost += "&";
    +                sDataPost += p + '=' + encodeURIComponent(dataPost[p]);
    +            }
    +            sDataPost = sDataPost.replace(/%20/g, '+');
    +            if (MAXDEBUG) Web.log("Web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes");
    +            xmlHTTP.open("POST", sURL, fAsync);     // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
    +            xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    +            xmlHTTP.send(sDataPost);
    +        } else {
    +            if (MAXDEBUG) Web.log("Web.getResource(GET " + sURL + ")");
    +            xmlHTTP.open("GET", sURL, fAsync);      // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
    +            if (dataPost == "bytes") {
    +                xmlHTTP.overrideMimeType("text/plain; charset=x-user-defined");
    +            }
    +            xmlHTTP.send();
    +        }
    +
    +        if (!fAsync) {
    +            sResource = xmlHTTP.responseText;
    +            if (xmlHTTP.status == 200) {
    +                if (MAXDEBUG) Web.log("Web.getResource(" + sURL + "): returned " + sResource.length + " bytes");
    +            } else {
    +                nErrorCode = xmlHTTP.status || -1;
    +                Web.log("Web.getResource(" + sURL + "): error code " + nErrorCode);
    +            }
    +            if (done) done(sURL, sResource, nErrorCode);
    +            response = [sResource, nErrorCode];
    +        }
    +        return response;
    +    }
    +
    +    /**
    +     * parseMemoryResource(sURL, sData)
    +     *
    +     * This converts a variety of JSON-style data streams into an Object with the following properties:
    +     *
    +     *      aBytes
    +     *      aSymbols
    +     *      addrLoad
    +     *      addrExec
    +     *
    +     * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if
    +     * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes',
    +     * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and
    +     * stored in 'aBytes'.
    +     *
    +     * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output
    +     * object as:
    +     *
    +     *      aData
    +     *
    +     * @param {string} sURL
    +     * @param {string} sData
    +     * @return {Object|null} (resource)
    +     */
    +    static parseMemoryResource(sURL, sData)
    +    {
    +        var i;
    +        var resource = {
    +            aBytes: null,
    +            aSymbols: null,
    +            addrLoad: null,
    +            addrExec: null
    +        };
    +
    +        if (sData.charAt(0) == "[" || sData.charAt(0) == "{") {
    +            try {
    +                var a, ib, data;
    +
    +                if (sData.substr(0, 1) == "<") {    // if the "data" begins with a "<"...
    +                    /*
    +                     * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid,
    +                     * but more recent server configs now display a somewhat friendlier HTML error page.  The downside,
    +                     * however, is that the original error has been buried, and we've received "data" that isn't actually
    +                     * tape data.  So if the data we've received appears to be "HTML-like", we treat it as an error message.
    +                     */
    +                    throw new Error(sData);
    +                }
    +
    +                /*
    +                 * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to
    +                 * eval().  In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in
    +                 * IE9 with an "Out of memory" exception.  One work-around would be to chop the data into chunks
    +                 * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it.
    +                 *
    +                 * However, it turns out that using JSON.parse(sDiskData) instead of eval("(" + sDiskData + ")")
    +                 * is a much easier fix. The only drawback is that we must first quote any unquoted property names
    +                 * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular;
    +                 * the following RegExp replacements take care of those requirements.
    +                 *
    +                 * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and
    +                 * while I've stopped using hex values in DumpAPI responses (at least when "format=json" is specified),
    +                 * I can't guarantee they won't show up in "legacy" images, and there's no simple RegExp replacement
    +                 * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect
    +                 * any hex prefixes ("0x") in the sequence.  Ditto for error messages, which appear like so:
    +                 *
    +                 *      ["unrecognized disk path: test.img"]
    +                 */
    +                if (sData.indexOf("0x") < 0 && sData.indexOf("0o") < 0 && sData.substr(0, 2) != '["') {
    +                    data = JSON.parse(sData.replace(/([a-z]+):/gm, '"$1":').replace(/\/\/[^\n]*/gm, ""));
    +                } else {
    +                    data = eval("(" + sData + ")");
    +                }
    +
    +                resource.addrLoad = data['load'];
    +                resource.addrExec = data['exec'];
    +
    +                if (a = data['bytes']) {
    +                    resource.aBytes = a;
    +                }
    +                else if (a = data['words']) {
    +                    /*
    +                     * Convert all words into bytes
    +                     */
    +                    resource.aBytes = new Array(a.length * 2);
    +                    for (i = 0, ib = 0; i < a.length; i++) {
    +                        resource.aBytes[ib++] = a[i] & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 8) & 0xff;
    +
    +                    }
    +                }
    +                else if (a = data['longs']) {
    +                    /*
    +                     * Convert all dwords (longs) into bytes
    +                     */
    +                    resource.aBytes = new Array(a.length * 4);
    +                    for (i = 0, ib = 0; i < a.length; i++) {
    +                        resource.aBytes[ib++] = a[i] & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 8) & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 16) & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 24) & 0xff;
    +                    }
    +                }
    +                else if (a = data['data']) {
    +                    resource.aData = a;
    +                }
    +                else {
    +                    resource.aBytes = data;
    +                }
    +
    +                if (resource.aBytes) {
    +                    if (!resource.aBytes.length) {
    +                        Component.error("Empty resource: " + sURL);
    +                        resource = null;
    +                    }
    +                    else if (resource.aBytes.length == 1) {
    +                        Component.error(resource.aBytes[0]);
    +                        resource = null;
    +                    }
    +                }
    +                resource.aSymbols = data['symbols'];
    +
    +            } catch (e) {
    +                Component.error("Resource data error (" + sURL + "): " + e.message);
    +                resource = null;
    +            }
    +        }
    +        else {
    +            /*
    +             * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace.
    +             */
    +            var ab = [];
    +            var sHexData = sData.replace(/\n/gm, " ").replace(/ +$/, "");
    +            var asHexData = sHexData.split(" ");
    +            for (i = 0; i < asHexData.length; i++) {
    +                var n = parseInt(asHexData[i], 16);
    +                if (isNaN(n)) {
    +                    Component.error("Resource data error (" + sURL + "): invalid hex byte (" + asHexData[i] + ")");
    +                    break;
    +                }
    +                ab.push(n & 0xff);
    +            }
    +            if (i == asHexData.length) resource.aBytes = ab;
    +        }
    +        return resource;
    +    }
    +
    +    /**
    +     * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
    +     *
    +     * Send a report (eg, bug report) to the server.
    +     *
    +     * @param {string} sApp (eg, "PCjs")
    +     * @param {string} sVer (eg, "1.02")
    +     * @param {string} sURL (eg, "/devices/pc/machine/5150/mda/64kb/machine.xml")
    +     * @param {string} sUser (ie, the user key, if any)
    +     * @param {string} sType (eg, "bug"); one of ReportAPI.TYPE.*
    +     * @param {string} sReport (eg, unparsed state data)
    +     * @param {string} [sHostName] (default is http://SITEHOST)
    +     */
    +    static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
    +    {
    +        var dataPost = {};
    +        dataPost[ReportAPI.QUERY.APP] = sApp;
    +        dataPost[ReportAPI.QUERY.VER] = sVer;
    +        dataPost[ReportAPI.QUERY.URL] = sURL;
    +        dataPost[ReportAPI.QUERY.USER] = sUser;
    +        dataPost[ReportAPI.QUERY.TYPE] = sType;
    +        dataPost[ReportAPI.QUERY.DATA] = sReport;
    +        var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT;
    +        Web.getResource(sReportURL, dataPost, true);
    +    }
    +
    +    /**
    +     * getHost()
    +     *
    +     * @return {string}
    +     */
    +    static getHost()
    +    {
    +        return ("http://" + (window? window.location.host : SITEHOST));
    +    }
    +
    +    /**
    +     * getHostURL()
    +     *
    +     * @return {string|null}
    +     */
    +    static getHostURL()
    +    {
    +        return (window? window.location.href : null);
    +    }
    +
    +    /**
    +     * getHostProtocol()
    +     *
    +     * @return {string}
    +     */
    +    static getHostProtocol()
    +    {
    +        return (window? window.location.protocol : "file:");
    +    }
    +
    +    /**
    +     * getUserAgent()
    +     *
    +     * @return {string}
    +     */
    +    static getUserAgent()
    +    {
    +        return (window? window.navigator.userAgent : "");
    +    }
    +
    +    /**
    +     * hasLocalStorage
    +     *
    +     * true if localStorage support exists, is enabled, and works; false otherwise
    +     *
    +     * @return {boolean}
    +     */
    +    static hasLocalStorage()
    +    {
    +        if (Web.fLocalStorage == null) {
    +            var f = false;
    +            if (window) {
    +                try {
    +                    window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest);
    +                    f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest);
    +                    window.localStorage.removeItem(Web.sLocalStorageTest);
    +                } catch (e) {
    +                    Web.logLocalStorageError(e);
    +                    f = false;
    +                }
    +            }
    +            Web.fLocalStorage = f;
    +        }
    +        return Web.fLocalStorage;
    +    }
    +
    +    /**
    +     * logLocalStorageError(e)
    +     *
    +     * @param {Error} e is an exception
    +     */
    +    static logLocalStorageError(e)
    +    {
    +        Web.log(e.message, "localStorage error");
    +    }
    +
    +    /**
    +     * getLocalStorageItem(sKey)
    +     *
    +     * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available
    +     *
    +     * @param {string} sKey
    +     * @return {string|null|undefined} sValue
    +     */
    +    static getLocalStorageItem(sKey)
    +    {
    +        var sValue;
    +        if (window) {
    +            try {
    +                sValue = window.localStorage.getItem(sKey);
    +            } catch (e) {
    +                Web.logLocalStorageError(e);
    +            }
    +        }
    +        return sValue;
    +    }
    +
    +    /**
    +     * setLocalStorageItem(sKey, sValue)
    +     *
    +     * @param {string} sKey
    +     * @param {string} sValue
    +     * @return {boolean} true if localStorage is available, false if not
    +     */
    +    static setLocalStorageItem(sKey, sValue)
    +    {
    +        try {
    +            window.localStorage.setItem(sKey, sValue);
    +            return true;
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +        return false;
    +    }
    +
    +    /**
    +     * removeLocalStorageItem(sKey)
    +     *
    +     * @param {string} sKey
    +     */
    +    static removeLocalStorageItem(sKey)
    +    {
    +        try {
    +            window.localStorage.removeItem(sKey);
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +    }
    +
    +    /**
    +     * getLocalStorageKeys()
    +     *
    +     * @return {Array}
    +     */
    +    static getLocalStorageKeys()
    +    {
    +        var a = [];
    +        try {
    +            for (var i = 0, c = window.localStorage.length; i < c; i++) {
    +                a.push(window.localStorage.key(i));
    +            }
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +        return a;
    +    }
    +
    +    /**
    +     * reloadPage()
    +     */
    +    static reloadPage()
    +    {
    +        if (window) window.location.reload();
    +    }
    +
    +    /**
    +     * isUserAgent(s)
    +     *
    +     * Check the browser's user-agent string for the given substring; "iOS" and "MSIE" are special values you can
    +     * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of "MSIE").
    +     *
    +     * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating
    +     * the "MSIE" string (which MSDN calls a "version token"; see http://msdn.microsoft.com/library/ms537503.aspx);
    +     * they say "public websites should rely on feature detection, rather than browser detection, in order to design
    +     * their sites for browsers that don't support the features used by the website." So, in IE11, we get a user-agent
    +     * that tries to fool apps into thinking the browser is more like WebKit or Gecko:
    +     *
    +     *      Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
    +     *
    +     * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained
    +     * some very critical browser-specific code; turning on IE's "Compatibility Mode" didn't help either, because
    +     * that's a sledgehammer solution which restores the old user-agent string but also disables other features like
    +     * HTML5 canvas support. As an interim solution, I'm treating any "MSIE" check as a check for either "MSIE" or
    +     * "Trident".
    +     *
    +     * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't
    +     * any code that cares about "MSIE", but I've left the change in place, because I wouldn't be surprised if I'll
    +     * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture.
    +     *
    +     * @param {string} s is a substring to search for in the user-agent; as noted above, "iOS" and "MSIE" are special values
    +     * @return {boolean} is true if the string was found, false if not
    +     */
    +    static isUserAgent(s)
    +    {
    +        if (window) {
    +            var userAgent = Web.getUserAgent();
    +            /*
    +             * Here's one case where we have to be careful with Component, because when isUserAgent() is called by
    +             * the init code below, component.js hasn't been loaded yet.  The simple solution for now is to remove the call.
    +             *
    +             *      Web.log("agent: " + userAgent);
    +             *
    +             * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure
    +             * Compiler (v20130823) failing to detect the entire expression as a boolean.
    +             */
    +            return s == "iOS" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == "MSIE" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0);
    +        }
    +        return false;
    +    }
    +
    +    /**
    +     * isMobile()
    +     *
    +     * Check the browser's user-agent string for the substring "Mobi", as per Mozilla recommendation:
    +     *
    +     *      https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent
    +     *
    +     * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not
    +     */
    +    static isMobile()
    +    {
    +        return Web.isUserAgent("Mobi");
    +    }
    +
    +    /**
    +     * findProperty(obj, sProp, sSuffix)
    +     *
    +     * If both sProp and sSuffix are set, then any browser-specific prefixes are inserted between sProp and sSuffix,
    +     * and if a match is found, it is returned without sProp.
    +     *
    +     * For example, if findProperty(document, 'on', 'fullscreenchange') discovers that 'onwebkitfullscreenchange' exists,
    +     * it will return 'webkitfullscreenchange', in preparation for an addEventListener() call.
    +     *
    +     * More commonly, sSuffix is not used, so whatever property is found is returned as-is.
    +     *
    +     * @param {Object|null|undefined} obj
    +     * @param {string} sProp
    +     * @param {string} [sSuffix]
    +     * @return {string|null}
    +     */
    +    static findProperty(obj, sProp, sSuffix)
    +    {
    +        if (obj) {
    +            for (var i = 0; i < Web.asBrowserPrefixes.length; i++) {
    +                var sName = Web.asBrowserPrefixes[i];
    +                if (sSuffix) {
    +                    sName += sSuffix;
    +                    var sEvent = sProp + sName;
    +                    if (sEvent in obj) return sName;
    +                } else {
    +                    if (!sName) {
    +                        sName = sProp[0];
    +                    } else {
    +                        sName += sProp[0].toUpperCase();
    +                    }
    +                    sName += sProp.substr(1);
    +                    if (sName in obj) return sName;
    +                }
    +            }
    +        }
    +        return null;
    +    }
    +
    +    /**
    +     * getURLParm(sParm)
    +     *
    +     * First looks for sParm exactly as specified, then looks for the lower-case version.
    +     *
    +     * @param {string} sParm
    +     * @return {string|undefined}
    +     */
    +    static getURLParm(sParm)
    +    {
    +        if (!Web.parmsURL) {
    +            Web.parmsURL = Web.parseURLParms();
    +        }
    +        return Web.parmsURL[sParm] || Web.parmsURL[sParm.toLowerCase()];
    +    }
    +
    +    /**
    +     * parseURLParms(sParms)
    +     *
    +     * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?')
    +     * @return {Object} containing properties for each parameter found
    +     */
    +    static parseURLParms(sParms)
    +    {
    +        var aParms = {};
    +        if (window) {       // an alternative to "if (typeof module === 'undefined')" if require("defines") was used
    +            if (!sParms) {
    +                /*
    +                 * Note that window.location.href returns the entire URL, whereas window.location.search
    +                 * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call).
    +                 */
    +                sParms = window.location.search.substr(1);
    +            }
    +            var match;
    +            var pl = /\+/g; // RegExp for replacing addition symbol with a space
    +            var search = /([^&=]+)=?([^&]*)/g;
    +            var decode = function(s)
    +            {
    +                return decodeURIComponent(s.replace(pl, " "));
    +            };
    +
    +            while ((match = search.exec(sParms))) {
    +                aParms[decode(match[1])] = decode(match[2]);
    +            }
    +        }
    +        return aParms;
    +    }
    +
    +    /**
    +     * downloadFile(sData, sType, fBase64, sFileName)
    +     *
    +     * @param {string} sData
    +     * @param {string} sType
    +     * @param {boolean} [fBase64]
    +     * @param {string} [sFileName]
    +     */
    +    static downloadFile(sData, sType, fBase64, sFileName)
    +    {
    +        var link = null, sAlert;
    +        var sURI = "data:application/" + sType + (fBase64? ";base64" : "") + ",";
    +
    +        if (!Web.isUserAgent("Firefox")) {
    +            sURI += (fBase64? sData : encodeURI(sData));
    +        } else {
    +            sURI += (fBase64? sData : encodeURIComponent(sData));
    +        }
    +        if (sFileName) {
    +            link = document.createElement('a');
    +            if (typeof link.download != 'string') link = null;
    +        }
    +        if (link) {
    +            link.href = sURI;
    +            link.download = sFileName;
    +            document.body.appendChild(link);    // Firefox allegedly requires the link to be in the body
    +            link.click();
    +            document.body.removeChild(link);
    +            sAlert = 'Check your Downloads folder for ' + sFileName + '.';
    +        } else {
    +            window.open(sURI);
    +            sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.';
    +        }
    +        return sAlert;
    +    }
    +
    +    /**
    +     * onCountRepeat(n, fnRepeat, fnComplete, msDelay)
    +     *
    +     * Call fnRepeat() n times with an msDelay millisecond delay between calls,
    +     * then call fnComplete() when n has been exhausted OR fnRepeat() returns false.
    +     *
    +     * @param {number} n
    +     * @param {function()} fnRepeat
    +     * @param {function()} fnComplete
    +     * @param {number} [msDelay]
    +     */
    +    static onCountRepeat(n, fnRepeat, fnComplete, msDelay)
    +    {
    +        var fnTimeout = function doCountRepeat()
    +        {
    +            n -= 1;
    +            if (n >= 0) {
    +                if (!fnRepeat()) n = 0;
    +            }
    +            if (n > 0) {
    +                setTimeout(fnTimeout, msDelay || 0);
    +                return;
    +            }
    +            fnComplete();
    +        };
    +        fnTimeout();
    +    }
    +
    +    /**
    +     * onClickRepeat(e, msDelay, msRepeat, fn)
    +     *
    +     * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter,
    +     * as long as HTML control Object e has an active "down" event and fn() returns true.
    +     *
    +     * @param {Object} e
    +     * @param {number} msDelay
    +     * @param {number} msRepeat
    +     * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls
    +     */
    +    static onClickRepeat(e, msDelay, msRepeat, fn)
    +    {
    +        var ms = 0, timer = null, fIgnoreMouseEvents = false;
    +
    +        var fnRepeat = function doClickRepeat()
    +        {
    +            if (fn(ms === msRepeat)) {
    +                timer = setTimeout(fnRepeat, ms);
    +                ms = msRepeat;
    +            }
    +        };
    +        e.onmousedown = function()
    +        {
    +            // Web.log("onMouseDown()");
    +            if (!fIgnoreMouseEvents) {
    +                if (!timer) {
    +                    ms = msDelay;
    +                    fnRepeat();
    +                }
    +            }
    +        };
    +        e.ontouchstart = function()
    +        {
    +            // Web.log("onTouchStart()");
    +            if (!timer) {
    +                ms = msDelay;
    +                fnRepeat();
    +            }
    +        };
    +        e.onmouseup = e.onmouseout = function()
    +        {
    +            // Web.log("onMouseUp()/onMouseOut()");
    +            if (timer) {
    +                clearTimeout(timer);
    +                timer = null;
    +            }
    +        };
    +        e.ontouchend = e.ontouchcancel = function()
    +        {
    +            // Web.log("onTouchEnd()/onTouchCancel()");
    +            if (timer) {
    +                clearTimeout(timer);
    +                timer = null;
    +            }
    +            /*
    +             * Devices that generate ontouch* events ALSO generate onmouse* events,
    +             * and generally do so immediately after all the touch events are complete,
    +             * so unless we want double the action, we need to ignore mouse events.
    +             */
    +            fIgnoreMouseEvents = true;
    +        };
    +    }
    +
    +    /**
    +     * onPageEvent(sName, fn)
    +     *
    +     * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but
    +     * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively.
    +     *
    +     * The only components that should still use onPageEvent() are THIS component (see the bottom of this file)
    +     * and components that need to capture other events (eg, the 'onresize' event in the Video component).
    +     *
    +     * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers
    +     * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'],
    +     * etc, themselves.  However, that's less of a concern now, because assuming everyone else is now using
    +     * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one.
    +     *
    +     * NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may
    +     * erroneously replace them (eg, window.onpageshow is a good example).
    +     *
    +     * @param {string} sFunc
    +     * @param {function()} fn
    +     */
    +    static onPageEvent(sFunc, fn)
    +    {
    +        if (window) {
    +            var fnPrev = window[sFunc];
    +            if (typeof fnPrev !== 'function') {
    +                window[sFunc] = fn;
    +            } else {
    +                /*
    +                 * TODO: Determine whether there's any value in receiving/sending the Event object that the
    +                 * browser provides when it generates the original event.
    +                 */
    +                window[sFunc] = function onWindowEvent()
    +                {
    +                    if (fnPrev) fnPrev();
    +                    fn();
    +                };
    +            }
    +        }
    +    };
    +
    +    /**
    +     * onInit(fn)
    +     *
    +     * Use this instead of setting window.onload.  Allows multiple JavaScript modules to define their own 'onload' event handler.
    +     *
    +     * @param {function()} fn
    +     */
    +    static onInit(fn)
    +    {
    +        Web.aPageEventHandlers['init'].push(fn);
    +    };
    +
    +    /**
    +     * onShow(fn)
    +     *
    +     * @param {function()} fn
    +     *
    +     * Use this instead of setting window.onpageshow.  Allows multiple JavaScript modules to define their own 'onpageshow' event handler.
    +     */
    +    static onShow(fn)
    +    {
    +        Web.aPageEventHandlers['show'].push(fn);
    +    };
    +
    +    /**
    +     * onExit(fn)
    +     *
    +     * @param {function()} fn
    +     *
    +     * Use this instead of setting window.onunload.  Allows multiple JavaScript modules to define their own 'onunload' event handler.
    +     */
    +    static onExit(fn)
    +    {
    +        Web.aPageEventHandlers['exit'].push(fn);
    +    };
    +
    +    /**
    +     * doPageEvent(afn)
    +     *
    +     * @param {Array.} afn
    +     */
    +    static doPageEvent(afn)
    +    {
    +        if (Web.fPageEventsEnabled) {
    +            try {
    +                for (var i = 0; i < afn.length; i++) {
    +                    afn[i]();
    +                }
    +            } catch (e) {
    +                Web.notice("An unexpected exception occurred:\n\n" + e.message + "\n\nPlease send this information to support@pcjs.org. Thanks.");
    +            }
    +        }
    +    };
    +
    +    /**
    +     * enablePageEvents(fEnable)
    +     *
    +     * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default)
    +     */
    +    static enablePageEvents(fEnable)
    +    {
    +        if (!Web.fPageEventsEnabled && fEnable) {
    +            Web.fPageEventsEnabled = true;
    +            if (Web.fPageLoaded) Web.sendPageEvent('init');
    +            if (Web.fPageShowed) Web.sendPageEvent('show');
    +            return;
    +        }
    +        Web.fPageEventsEnabled = fEnable;
    +    }
    +
    +    /**
    +     * sendPageEvent(sEvent)
    +     *
    +     * This allows us to manually trigger page events.
    +     *
    +     * @param {string} sEvent (one of 'init', 'show' or 'exit')
    +     */
    +    static sendPageEvent(sEvent)
    +    {
    +        if (Web.aPageEventHandlers[sEvent]) {
    +            Web.doPageEvent(Web.aPageEventHandlers[sEvent]);
    +        }
    +    }
    +}
    +
    +Web.parmsURL = null;            // initialized on first call to parseURLParms()
    +
    +Web.aPageEventHandlers = {
    +    'init': [],                 // list of window 'onload' handlers
    +    'show': [],                 // list of window 'onpageshow' handlers
    +    'exit': []                  // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible)
    +};
    +
    +Web.asBrowserPrefixes = ['', 'moz', 'ms', 'webkit'];
    +
    +Web.fPageLoaded = false;        // set once the page's first 'onload' event has occurred
    +Web.fPageShowed = false;        // set once the page's first 'onpageshow' event has occurred
    +Web.fPageEventsEnabled = true;  // default is true, set to false (or true) by enablePageEvents()
    +
    +/**
    + * fLocalStorage
    + *
    + * true if localStorage support exists, is enabled, and works; "falsey" otherwise
    + *
    + * @type {boolean|null}
    + */
    +Web.fLocalStorage = null;
    +
    +/**
    + * TODO: Is there any way to get the Closure Compiler to stop inlining this string?  This isn't cutting it.
    + *
    + * @const {string}
    + */
    +Web.sLocalStorageTest = "PCjs.localStorage";
    +
    +Web.onPageEvent('onload', function onPageLoad() {
    +    Web.fPageLoaded = true;
    +    Web.doPageEvent(Web.aPageEventHandlers['init']);
    +});
    +
    +Web.onPageEvent('onpageshow', function onPageShow() {
    +    Web.fPageShowed = true;
    +    Web.doPageEvent(Web.aPageEventHandlers['show']);
    +});
    +
    +Web.onPageEvent(Web.isUserAgent("iOS")? 'onpagehide' : (Web.isUserAgent("Opera")? 'onunload' : 'onbeforeunload'), function onPageUnload() {
    +    Web.doPageEvent(Web.aPageEventHandlers['exit']);
    +});
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile
    + * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled.  For more information about
    + * the JSDoc types supported by the Closure Compiler:
    + *
    + *      https://developers.google.com/closure/compiler/docs/js-for-compiler#types
    + *
    + * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like
    + * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace
    + * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc.
    + *
    + * I prefer sticking with traditional C-style idioms, in part because they are more portable.  That
    + * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code
    + * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need.
    + *
    + * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults.
    + * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need
    + * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like
    + * default parameters.
    + */
    +
    +
    +/**
    + * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default,
    + * it deters us from defining named properties on our components; eg:
    + *
    + *      this['exports'] = {...}
    + *
    + * results in an error:
    + *
    + *      Cannot do '[]' access on a struct
    + *
    + * So, in order to define 'exports', we must override the @struct assumption by annotating
    + * the class as @unrestricted (or @dict).  Note that this must be done both here and in the
    + * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference*
    + * the named property either.
    + *
    + * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to
    + * define every single property the class uses in its constructor, which results in a fair
    + * bit of redundant initialization, since many properties aren't (and don't need to be) fully
    + * initialized until the appropriate init(), reset(), restore(), etc. function is called.
    + *
    + * The upside, however, may be that since the structure of the class is completely defined by
    + * the constructor, JavaScript engines may be able to optimize and run more efficiently.
    + *
    + * @unrestricted
    + */
    +class Component {
    +    /**
    +     * Component(type, parms, bitsMessage)
    +     *
    +     * A Component object requires:
    +     *
    +     *      type: a user-defined type name (eg, "CPU")
    +     *
    +     * and accepts any or all of the following (parms) properties:
    +     *
    +     *      id: component ID (default is "")
    +     *      name: component name (default is ""; if blank, toString() will use the type name only)
    +     *      comment: component comment string (default is undefined)
    +     *
    +     * Component subclasses will usually have additional (parms) properties.
    +     *
    +     * @param {string} type
    +     * @param {Object} [parms]
    +     * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0)
    +     */
    +    constructor(type, parms, bitsMessage)
    +    {
    +        this.type = type;
    +
    +        if (!parms) parms = {'id': "", 'name': ""};
    +
    +        this.id = parms['id'] || "";
    +        this.name = parms['name'];
    +        this.comment = parms['comment'];
    +        this.parms = parms;
    +
    +        /*
    +         * The following Component properties need to be accessible by other machines and/or command scripts;
    +         * well, OK, or we could have exported some new functions to walk the contents of these properties, as we
    +         * did with findMachineComponent(), but this works just as well.
    +         *
    +         * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it
    +         * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the
    +         * Compiler wants us to change all the other references to bracket notation as well.
    +         */
    +        this.exports = this['exports'] = {};
    +        this.bindings = this['bindings'] = {};
    +
    +        var i = this.id.indexOf('.');
    +        if (i < 0) {
    +            this.idComponent = this.id;
    +        } else {
    +            this.idMachine = this.id.substr(0, i);
    +            this.idComponent = this.id.substr(i + 1);
    +        }
    +
    +        /*
    +         * Gather all the various component flags (booleans) into a single "flags" object, and encourage
    +         * subclasses to do the same, to reduce the property clutter we have to wade through while debugging.
    +         */
    +        this.flags = {
    +            ready:      false,
    +            busy:       false,
    +            busyCancel: false,
    +            initDone:   false,
    +            powered:    false,
    +            unloading:  false,
    +            error:      false
    +        };
    +
    +        this.fnReady = null;
    +        this.clearError();
    +        this.bitsMessage = bitsMessage || 0;
    +
    +        this.cmp = null;
    +        this.bus = null;
    +        this.cpu = null;
    +        this.dbg = null;
    +
    +        /*
    +         * TODO: Consider adding another parameter to the Component() constructor that allows components to tell
    +         * us if they support single or multiple instances per machine.  For example, there can be multiple SerialPort
    +         * components per machine, but only one CPU component (some machines also support an FPU, but that component
    +         * is considered separate from the CPU).
    +         *
    +         * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly
    +         * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive
    +         * CPU controls.
    +         */
    +        Component.add(this);
    +    }
    +
    +    /**
    +     * Component.add(component)
    +     *
    +     * @param {Component} component
    +     */
    +    static add(component)
    +    {
    +        /*
    +         * This just generates a lot of useless noise, handy in the early days, not so much these days....
    +         *
    +         *      if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")");
    +         */
    +        Component.components.push(component);
    +    }
    +
    +    /**
    +     * Component.addMachine(idMachine)
    +     *
    +     * @param {string} idMachine
    +     */
    +    static addMachine(idMachine)
    +    {
    +        Component.machines[idMachine] = {};
    +    }
    +
    +    /**
    +     * Component.addMachineResource(idMachine, sName, data)
    +     *
    +     * @param {string} idMachine
    +     * @param {string|null} sName (name of the resource)
    +     * @param {*} data
    +     */
    +    static addMachineResource(idMachine, sName, data)
    +    {
    +        /*
    +         * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used,
    +         * so addMachine() is never called, so resources do not need to be recorded.
    +         */
    +        if (Component.machines[idMachine] && sName) {
    +            Component.machines[idMachine][sName] = data;
    +        }
    +    }
    +
    +    /**
    +     * Component.getMachineResources(idMachine)
    +     *
    +     * @param {string} idMachine
    +     * @return {Object|undefined}
    +     */
    +    static getMachineResources(idMachine)
    +    {
    +        return Component.machines[idMachine];
    +    }
    +
    +    /**
    +     * Component.getTime()
    +     *
    +     * @return {number} the current time, in milliseconds
    +     */
    +    static getTime()
    +    {
    +        return Date.now() || +new Date();
    +    }
    +
    +    /**
    +     * Component.log(s, type)
    +     *
    +     * For diagnostic output only.
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     */
    +    static log(s, type)
    +    {
    +        if (!COMPILED) {
    +            if (s) {
    +                var sElapsed = "", sMsg = (type? (type + ": ") : "") + s;
    +                if (typeof Usr != "undefined") {
    +                    if (Component.msStart === undefined) {
    +                        Component.msStart = Component.getTime();
    +                    }
    +                    sElapsed = (Component.getTime() - Component.msStart) + "ms: ";
    +                }
    +                sMsg = sMsg.replace(/\r/g, '\\r').replace(/\n/g, ' ');
    +                if (window && window.console) console.log(sElapsed + sMsg);
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.assert(f, s)
    +     *
    +     * Verifies conditions that must be true (for DEBUG builds only).
    +     *
    +     * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds.
    +     * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds.
    +     *
    +     * @param {boolean} f is the expression we are asserting to be true
    +     * @param {string} [s] is description of the assertion on failure
    +     */
    +    static assert(f, s)
    +    {
    +        if (DEBUG) {
    +            if (!f) {
    +                if (!s) s = "assertion failure";
    +                Component.log(s);
    +                throw new Error(s);
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.print(s)
    +     *
    +     * Components that inherit from this class should use this.print(), rather than Component.print(), because
    +     * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the
    +     * class method would improperly affect any other machines loaded on the same page).
    +     *
    +     * @this {Component}
    +     * @param {string} s
    +     */
    +    static print(s)
    +    {
    +        if (!COMPILED) {
    +            var i = s.lastIndexOf('\n');
    +            if (i >= 0) {
    +                Component.println(s.substr(0, i));
    +                s = s.substr(i + 1);
    +            }
    +            Component.printBuffer += s;
    +        }
    +    }
    +
    +    /**
    +     * Component.println(s, type, id)
    +     *
    +     * Components that inherit from this class should use this.println(), rather than Component.println(), because
    +     * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the
    +     * class method would improperly affect any other machines loaded on the same page).
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static println(s, type, id)
    +    {
    +        if (!COMPILED) {
    +            s = Component.printBuffer + (s || "");
    +            Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type);
    +            Component.printBuffer = "";
    +        }
    +    }
    +
    +    /**
    +     * Component.notice(s, fPrintOnly, id)
    +     *
    +     * notice() is like println() but implies a need for user notification, so we alert() as well.
    +     *
    +     * @param {string} s is the message text
    +     * @param {boolean} [fPrintOnly]
    +     * @param {string} [id] is the caller's ID, if any
    +     * @return {boolean}
    +     */
    +    static notice(s, fPrintOnly, id)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, Component.TYPE.NOTICE, id);
    +        }
    +        if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s);
    +        return true;
    +    }
    +
    +    /**
    +     * Component.warning(s)
    +     *
    +     * @param {string} s describes the warning
    +     */
    +    static warning(s)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, Component.TYPE.WARNING);
    +        }
    +        Component.alertUser(s);
    +    }
    +
    +    /**
    +     * Component.error(s)
    +     *
    +     * @param {string} s describes the error; an alert() is displayed as well
    +     */
    +    static error(s)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, Component.TYPE.ERROR);
    +        }
    +        Component.alertUser(s);
    +    }
    +
    +    /**
    +     * Component.alertUser(sMessage)
    +     *
    +     * @param {string} sMessage
    +     */
    +    static alertUser(sMessage)
    +    {
    +        if (window) {
    +            window.alert(sMessage);
    +        } else {
    +            Component.log(sMessage);
    +        }
    +    };
    +
    +    /**
    +     * Component.confirmUser(sPrompt)
    +     *
    +     * @param {string} sPrompt
    +     * @returns {boolean} true if the user clicked OK, false if Cancel/Close
    +     */
    +    static confirmUser(sPrompt)
    +    {
    +        var fResponse = false;
    +        if (window) {
    +            fResponse = window.confirm(sPrompt);
    +        }
    +        return fResponse;
    +    }
    +
    +    /**
    +     * Component.promptUser()
    +     *
    +     * @param {string} sPrompt
    +     * @param {string} [sDefault]
    +     * @returns {string|null}
    +     */
    +    static promptUser(sPrompt, sDefault)
    +    {
    +        var sResponse = null;
    +        if (window) {
    +            sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault);
    +        }
    +        return sResponse;
    +    }
    +
    +    /**
    +     * Component.appendControl(control, sText)
    +     *
    +     * @param {Object} control
    +     * @param {string} sText
    +     */
    +    static appendControl(control, sText)
    +    {
    +        control.value += sText;
    +        /*
    +         * Prevent the