From 505acd7b8183f60a1c89bb940e5e9c9ae4759782 Mon Sep 17 00:00:00 2001 From: sehugg Date: Tue, 4 Oct 2022 15:45:04 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sehugg/8?= =?UTF-8?q?bitworkshop@03eb4f5e6f4c392673fef651801123b673627bd5=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- ...7800-FJSKJHUU.js => atari7800-LRWPIHAM.js} | 6 +- ...KJHUU.js.map => atari7800-LRWPIHAM.js.map} | 4 +- gen/{basic-2FDN7GZS.js => basic-TD5ASNGV.js} | 4 +- ...-2FDN7GZS.js.map => basic-TD5ASNGV.js.map} | 0 gen/{chunk-3FNZJ4LP.js => chunk-FNKLYD54.js} | 4 +- ...-3FNZJ4LP.js.map => chunk-FNKLYD54.js.map} | 0 gen/{chunk-2C4DBXAR.js => chunk-UF5OFU7K.js} | 6 +- ...-2C4DBXAR.js.map => chunk-UF5OFU7K.js.map} | 0 gen/{devel-Y2BQVV6T.js => devel-OHII2XIJ.js} | 4 +- ...-Y2BQVV6T.js.map => devel-OHII2XIJ.js.map} | 0 gen/embedui.js | 2 +- gen/jszip.min-DI47XKVW.js | 14 + gen/jszip.min-DI47XKVW.js.map | 7 + gen/jszip.min-SSIOTNUA.js | 14 - gen/jszip.min-SSIOTNUA.js.map | 7 - gen/machine/atari7800.js | 2 +- gen/machine/atari7800.js.map | 2 +- gen/machine/sms.js | 2 +- gen/machine/sms.js.map | 2 +- ...{script-RMWZFBYM.js => script-5EHZ274V.js} | 4 +- ...RMWZFBYM.js.map => script-5EHZ274V.js.map} | 0 gen/sms-FK5WRH2Z.js.map | 7 - gen/{sms-FK5WRH2Z.js => sms-WTRCW3UB.js} | 4 +- gen/sms-WTRCW3UB.js.map | 7 + gen/ui.js | 2 +- package-lock.json | 809 +++++++++++++----- package.json | 4 +- presets/c64/hello.dasm | 42 + src/machine/atari7800.ts | 2 +- src/machine/sms.ts | 2 +- src/worker/lib/sms-gg-libcv | 1 + 32 files changed, 702 insertions(+), 264 deletions(-) rename gen/{atari7800-FJSKJHUU.js => atari7800-LRWPIHAM.js} (75%) rename gen/{atari7800-FJSKJHUU.js.map => atari7800-LRWPIHAM.js.map} (82%) rename gen/{basic-2FDN7GZS.js => basic-TD5ASNGV.js} (99%) rename gen/{basic-2FDN7GZS.js.map => basic-TD5ASNGV.js.map} (100%) rename gen/{chunk-3FNZJ4LP.js => chunk-FNKLYD54.js} (94%) rename gen/{chunk-3FNZJ4LP.js.map => chunk-FNKLYD54.js.map} (100%) rename gen/{chunk-2C4DBXAR.js => chunk-UF5OFU7K.js} (99%) rename gen/{chunk-2C4DBXAR.js.map => chunk-UF5OFU7K.js.map} (100%) rename gen/{devel-Y2BQVV6T.js => devel-OHII2XIJ.js} (95%) rename gen/{devel-Y2BQVV6T.js.map => devel-OHII2XIJ.js.map} (100%) create mode 100644 gen/jszip.min-DI47XKVW.js create mode 100644 gen/jszip.min-DI47XKVW.js.map delete mode 100644 gen/jszip.min-SSIOTNUA.js delete mode 100644 gen/jszip.min-SSIOTNUA.js.map rename gen/{script-RMWZFBYM.js => script-5EHZ274V.js} (99%) rename gen/{script-RMWZFBYM.js.map => script-5EHZ274V.js.map} (100%) delete mode 100644 gen/sms-FK5WRH2Z.js.map rename gen/{sms-FK5WRH2Z.js => sms-WTRCW3UB.js} (67%) create mode 100644 gen/sms-WTRCW3UB.js.map create mode 100644 presets/c64/hello.dasm create mode 120000 src/worker/lib/sms-gg-libcv diff --git a/Makefile b/Makefile index 47972f0a..9c53964f 100644 --- a/Makefile +++ b/Makefile @@ -54,4 +54,4 @@ syncprod: distro cp config.js $(TMP) #aws --profile pzp s3 sync --follow-symlinks $(TMP)/ s3://8bitworkshop.com/v$(VERSION)/ s3cmd -c ~/.s3pzp sync -MFP --no-mime-magic $(TMP)/ config.js s3://8bitworkshop.com/v$(VERSION)/ - rsync --stats -riltz --chmod=a+rx -e "ssh" $(TMP)/ config.js $(RSYNC_PATH)/v$(VERSION)/ + rsync --stats --del -riltz --chmod=a+rx -e "ssh" $(TMP)/ config.js $(RSYNC_PATH)/v$(VERSION)/ diff --git a/gen/atari7800-FJSKJHUU.js b/gen/atari7800-LRWPIHAM.js similarity index 75% rename from gen/atari7800-FJSKJHUU.js rename to gen/atari7800-LRWPIHAM.js index 4c22f691..8990540b 100644 --- a/gen/atari7800-FJSKJHUU.js +++ b/gen/atari7800-LRWPIHAM.js @@ -1,7 +1,7 @@ -import{I as W,h as E,k as F,p as N,t as _}from"./chunk-YLYWUMYM.js";import{$ as w,J as k,U as M,V as r,W as I,Y as T,_ as U,da as O,g as b}from"./chunk-ATS7PSQG.js";import"./chunk-5XVCUSSZ.js";var h=0,P=2,A=8,j=T([[r.A,A+0,128],[r.B,A+1,128],[r.SELECT,P,-2],[r.START,P,-1],[r.UP,h,-16],[r.DOWN,h,-32],[r.LEFT,h,-64],[r.RIGHT,h,-128],[r.P2_A,A+2,128],[r.P2_B,A+3,128],[r.P2_UP,h,-1],[r.P2_DOWN,h,-2],[r.P2_LEFT,h,-4],[r.P2_RIGHT,h,-8]]);var S=262,z=258-16,d=454,q=28,K=2,Y=S*60*K,L=class{constructor(){this.regs=new Uint8Array(32)}reset(){this.regs.fill(0)}read(t){return this.regs[t]|0}write(t,e){this.regs[t]=e}saveState(){return{regs:this.regs.slice(0)}}loadState(t){for(let e=0;e<32;e++)this.write(e,t.regs[e])}static stateToLongString(t){let e="";return e+=M(t.regs,0,32),e}},R=class{constructor(){this.cycles=0;this.regs=new Uint8Array(32);this.offset=-1;this.dll=0;this.dlstart=0;this.dli=!1;this.h16=!1;this.h8=!1;this.pixels=new Uint8Array(320);this.WSYNC=0}reset(){this.regs.fill(0)}read(t){return this.regs[t]|0}write(t,e){this.regs[t]=e,t==4&&this.WSYNC++}saveState(){return{regs:this.regs.slice(0),offset:this.offset,dll:this.dll,dlstart:this.dlstart,dli:this.dli,h16:this.h16,h8:this.h8}}loadState(t){for(let e=0;e<32;e++)this.write(e,t.regs[e]|0);this.offset=t.offset|0,this.dll=t.dll|0,this.dlstart=t.dlstart|0,this.dli=!!t.dli,this.h16=!!t.h16,this.h8=!!t.h8}isDMAEnabled(){return(this.regs[28]&96)==64}getDLLStart(){return(this.regs[12]<<8)+this.regs[16]}getCharBaseAddress(){return(this.regs[20]<<8)+this.offset}setVBLANK(t){t?(this.regs[8]|=128,this.offset=-1,this.dll=this.getDLLStart(),this.dli=this.bus&&(this.bus.read(this.dll)&128)!=0):this.regs[8]&=~128}readDLLEntry(t){if(this.dll>=16384)return;let e=t.read(this.dll);this.offset=e&15,this.h16=(e&64)!=0,this.h8=(e&32)!=0,this.dlstart=(t.read(this.dll+1)<<8)+t.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(t.read(this.dll)&128)!=0}isHoley(t){return!!(t&32768&&(this.h16&&t&4096||this.h8&&t&2048))}readDMA(t){return this.isHoley(t)?0:(this.cycles+=3,this.bus.read(t))}doDMA(t){if(this.bus=t,this.cycles=0,this.pixels.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=16,this.offset<0&&this.readDLLEntry(t);let s=this.dlstart&65280,a=this.dlstart&255;do{let m=t.read(s+(a+0&511)),f=t.read(s+(a+1&511));if(f==0||s>=16384)break;let G=t.read(s+(a+2&511)),v=t.read(s+(a+3&511)),p=!1;if((f&31)==0){var e=v>>5,c=32-(v&31),n=t.read(s+(a+4&511)),i=f&128;p=(f&32)!=0,a+=5,this.cycles+=10}else{var n=v,e=f>>5,c=32-(f&31),i=0;a+=4,this.cycles+=8}let D=m+((G+(p?0:this.offset)&255)<<8);n*=2;let $=(this.regs[28]&3)+(i?4:0),C=p&&(this.regs[28]&16)!=0;C&&(c*=2);for(var o=0;o>1):D+o);if(p){let x=(this.regs[20]+this.offset<<8)+u;C&&o&1&&(x++,this.cycles-=3),u=this.readDMA(x)}switch($){case 0:for(let x=0;x<4;x++){var l=u>>6&3;l>0&&(this.pixels[n]=this.pixels[n+1]=this.regs[(e<<2)+l]),u<<=2,n=n+2&511}break;case 2:case 3:for(let x=0;x<8;x++){var l=u&128?1:0;l>0&&(this.pixels[n]=this.regs[(e<<2)+l]),u<<=1,n=n+1&511}break}}}while(this.cycles=16384)return;let e=t.read(this.dll);this.offset=e&15,this.h16=(e&64)!=0,this.h8=(e&32)!=0,this.dlstart=(t.read(this.dll+1)<<8)+t.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(t.read(this.dll)&128)!=0}isHoley(t){return!!(t&32768&&(this.h16&&t&4096||this.h8&&t&2048))}readDMA(t){return this.isHoley(t)?0:(this.cycles+=3,this.bus.read(t))}doDMA(t){if(this.bus=t,this.cycles=0,this.pixels.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=16,this.offset<0&&this.readDLLEntry(t);let s=this.dlstart&65280,a=this.dlstart&255;do{let m=t.read(s+(a+0&511)),f=t.read(s+(a+1&511));if(f==0||s>=16384)break;let G=t.read(s+(a+2&511)),v=t.read(s+(a+3&511)),p=!1;if((f&31)==0){var e=v>>5,c=32-(v&31),n=t.read(s+(a+4&511)),i=f&128;p=(f&32)!=0,a+=5,this.cycles+=10}else{var n=v,e=f>>5,c=32-(f&31),i=0;a+=4,this.cycles+=8}let D=m+((G+(p?0:this.offset)&255)<<8);n*=2;let $=(this.regs[28]&3)+(i?4:0),C=p&&(this.regs[28]&16)!=0;C&&(c*=2);for(var o=0;o>1):D+o);if(p){let x=(this.regs[20]+this.offset<<8)+d;C&&o&1&&(x++,this.cycles-=3),d=this.readDMA(x)}switch($){case 0:for(let x=0;x<4;x++){var l=d>>6&3;l>0&&(this.pixels[n]=this.pixels[n+1]=this.regs[(e<<2)+l]),d<<=2,n=n+2&511}break;case 2:case 3:for(let x=0;x<8;x++){var l=d&128?1:0;l>0&&(this.pixels[n]=this.regs[(e<<2)+l]),d<<=1,n=n+1&511}break}}}while(this.cycles(this.xtracyc++,this.readInput(t))],[0,31,31,t=>(this.xtracyc++,this.tia.read(t))],[32,63,31,t=>this.maria.read(t)],[64,255,255,t=>this.ram[t+2048]],[256,319,255,t=>this.read(t)],[320,511,511,t=>this.ram[t+2048]],[640,767,3,t=>(this.xtracyc++,this.inputs[t])],[6144,10239,65535,t=>this.ram[t-6144]],[10240,16383,2047,t=>this.read(t|8192)],[16384,65535,65535,t=>this.rom?this.rom[t-16384]:0],[0,65535,65535,t=>this.probe&&this.probe.logIllegal(t)]]),this.write=w([[21,26,31,(t,e)=>{this.xtracyc++,this.pokey1.setTIARegister(t,e)}],[0,31,31,(t,e)=>{this.xtracyc++,this.tia.write(t,e)}],[32,63,31,(t,e)=>{this.maria.write(t,e)}],[64,255,255,(t,e)=>{this.ram[t+2048]=e}],[256,319,255,(t,e)=>{this.write(t,e)}],[320,511,511,(t,e)=>{this.ram[t+2048]=e}],[640,767,3,(t,e)=>{this.xtracyc++,this.regs6532[t]=e}],[6144,10239,65535,(t,e)=>{this.ram[t-6144]=e}],[10240,16383,2047,(t,e)=>{this.write(t|8192,e)}],[49151,49151,65535,(t,e)=>{}],[0,65535,65535,(t,e)=>{this.probe&&this.probe.logIllegal(t)}]]),this.connectCPUMemoryBus(this),this.dmaBus=this.probeDMABus(this),this.handler=I(this.inputs,j),this.pokey1=new E,this.audioadapter=new F(this.pokey1,K,Y)}readConst(t){let e=this.probe;this.probe=null;let c=this.read(t);return this.probe=e,c}readInput(t){switch(t){case 12:return~this.inputs[8]&128;case 13:return~this.inputs[9]&128;default:return this.inputs[t]|0}}advanceCPU(){var t=super.advanceCPU();return this.xtracyc&&(t+=this.xtracyc,this.probe.logClocks(this.xtracyc),this.xtracyc=0),t}advanceFrame(t){var e=this.pixels,c=0,n,i=0,o=0,l=0;this.probe.logNewFrame();for(var s=0;s>2),i+=f,e)for(var m=0;m<320;m++)e[c++]=H[this.maria.pixels[m]]}for((a||s==S-1)&&this.maria.doInterrupt()&&(this.probe.logInterrupt(0),this.cpu.NMI());i>2),i=d;break}if(t&&t()){t=null,s=999;break}i+=this.advanceCPU()<<2,l++}this.audio&&this.audioadapter.generate(this.audio),i-=d,o+=i,this.probe.logNewScanline()}return this.lastFrameCycles=o,l}getRasterX(){return this.lastFrameCycles%d}getRasterY(){return Math.floor(this.lastFrameCycles/d)}loadROM(t){t.length==49280&&(t=t.slice(128)),this.rom=U(t,this.defaultROMSize,!0)}reset(){super.reset(),this.tia.reset(),this.maria.reset(),this.inputs.fill(0),this.inputs[h]=255,this.inputs[P]=1+2+8}readAddress(t){return this.read(t)|0}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.tia.loadState(t.tia),this.maria.loadState(t.maria),this.regs6532.set(t.regs6532),this.loadControlsState(t)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),tia:this.tia.saveState(),maria:this.maria.saveState(),regs6532:this.regs6532.slice(0),inputs:this.inputs.slice(0)}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}getDebugCategories(){return["CPU","Stack","TIA","MARIA"]}getDebugInfo(t,e){switch(t){case"TIA":return L.stateToLongString(e.tia);case"MARIA":return R.stateToLongString(e.maria)+` + DLI? `+t.dli,e}},B=class extends F{constructor(){super();this.cpuFrequency=1789772;this.canvasWidth=320;this.numTotalScanlines=S;this.numVisibleScanlines=z;this.defaultROMSize=49152;this.cpuCyclesPerLine=113.5;this.sampleRate=Y;this.ram=new Uint8Array(4096);this.regs6532=new Uint8Array(4);this.tia=new L;this.maria=new R;this.lastFrameCycles=0;this.xtracyc=0;this.cpu=new _,this.read=w([[8,13,15,t=>(this.xtracyc++,this.readInput(t))],[0,31,31,t=>(this.xtracyc++,this.tia.read(t))],[32,63,31,t=>this.maria.read(t)],[64,255,255,t=>this.ram[t+2048]],[256,319,255,t=>this.read(t)],[320,511,511,t=>this.ram[t+2048]],[640,767,3,t=>(this.xtracyc++,this.inputs[t])],[6144,10239,65535,t=>this.ram[t-6144]],[10240,16383,2047,t=>this.read(t|8192)],[16384,65535,65535,t=>this.rom?this.rom[t-16384]:0],[0,65535,65535,t=>this.probe&&this.probe.logIllegal(t)]]),this.write=w([[21,26,31,(t,e)=>{this.xtracyc++,this.pokey1.setTIARegister(t,e)}],[0,31,31,(t,e)=>{this.xtracyc++,this.tia.write(t,e)}],[32,63,31,(t,e)=>{this.maria.write(t,e)}],[64,255,255,(t,e)=>{this.ram[t+2048]=e}],[256,319,255,(t,e)=>{this.write(t,e)}],[320,511,511,(t,e)=>{this.ram[t+2048]=e}],[640,767,3,(t,e)=>{this.xtracyc++,this.regs6532[t]=e}],[6144,10239,65535,(t,e)=>{this.ram[t-6144]=e}],[10240,16383,2047,(t,e)=>{this.write(t|8192,e)}],[49151,49151,65535,(t,e)=>{}],[0,65535,65535,(t,e)=>{this.probe&&this.probe.logIllegal(t)}]]),this.connectCPUMemoryBus(this),this.dmaBus=this.probeDMABus(this),this.handler=I(this.inputs,j),this.pokey1=new E,this.audioadapter=new N(this.pokey1,K,Y)}readConst(t){let e=this.probe;this.probe=null;let c=this.read(t);return this.probe=e,c}readInput(t){switch(t){case 12:return~this.inputs[8]&128;case 13:return~this.inputs[9]&128;default:return this.inputs[t]|0}}advanceCPU(){var t=super.advanceCPU();return this.xtracyc&&(t+=this.xtracyc,this.probe.logClocks(this.xtracyc),this.xtracyc=0),t}advanceFrame(t){var e=this.pixels,c=0,n,i=0,o=0,l=0;this.probe.logNewFrame();for(var s=0;s>2),i+=f,e)for(var m=0;m<320;m++)e[c++]=H[this.maria.pixels[m]]}for((a||s==S-1)&&this.maria.doInterrupt()&&(this.probe.logInterrupt(0),this.cpu.NMI());i>2),i=u;break}if(t&&t()){t=null,s=999;break}i+=this.advanceCPU()<<2,l++}this.audio&&this.audioadapter.generate(this.audio),i-=u,o+=i,this.probe.logNewScanline()}return this.lastFrameCycles=o,l}getRasterX(){return this.lastFrameCycles%u}getRasterY(){return this.scanline}loadROM(t){t.length==49280&&(t=t.slice(128)),this.rom=U(t,this.defaultROMSize,!0)}reset(){super.reset(),this.tia.reset(),this.maria.reset(),this.inputs.fill(0),this.inputs[h]=255,this.inputs[P]=1+2+8}readAddress(t){return this.read(t)|0}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.tia.loadState(t.tia),this.maria.loadState(t.maria),this.regs6532.set(t.regs6532),this.loadControlsState(t)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),tia:this.tia.saveState(),maria:this.maria.saveState(),regs6532:this.regs6532.slice(0),inputs:this.inputs.slice(0)}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}getDebugCategories(){return["CPU","Stack","TIA","MARIA"]}getDebugInfo(t,e){switch(t){case"TIA":return L.stateToLongString(e.tia);case"MARIA":return R.stateToLongString(e.maria)+` Scanline: `+this.scanline}}},H=new Uint32Array(256);for(g=0;g<256;g++)H[g]=O(g);var g;var X=[{id:"sprites.dasm",name:"Sprites (ASM)"},{id:"wsync.c",name:"WSYNC"},{id:"sprites.c",name:"Double Buffering"},{id:"scroll.c",name:"Scrolling"}],V=class extends W{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"TIA",start:0,size:32,type:"io"},{name:"MARIA",start:32,size:32,type:"io"},{name:"RAM (6166 Block 0)",start:64,size:192,type:"ram"},{name:"RAM (6166 Block 1)",start:320,size:192,type:"ram"},{name:"PIA",start:640,size:24,type:"io"},{name:"RAM",start:6144,size:4096,type:"ram"},{name:"Cartridge ROM",start:16384,size:49152,type:"rom"}]}}}newMachine(){return new B}getPresets(){return X}getDefaultExtension(){return".c"}readAddress(t){return this.machine.readConst(t)}getROMExtension(){return".a78"}};k.atari7800=V; -//# sourceMappingURL=atari7800-FJSKJHUU.js.map +//# sourceMappingURL=atari7800-LRWPIHAM.js.map diff --git a/gen/atari7800-FJSKJHUU.js.map b/gen/atari7800-LRWPIHAM.js.map similarity index 82% rename from gen/atari7800-FJSKJHUU.js.map rename to gen/atari7800-LRWPIHAM.js.map index 6d43602a..7f07c884 100644 --- a/gen/atari7800-FJSKJHUU.js.map +++ b/gen/atari7800-LRWPIHAM.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/machine/atari7800.ts", "../src/platform/atari7800.ts"], - "sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { BasicMachine, RasterFrameBased, Bus, ProbeAll } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt, dumpRAM, gtia_ntsc_to_rgb } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, POKEYDeviceChannel } from \"../common/audio\";\nimport { hex, rgb2bgr } from \"../common/util\";\n\n// https://atarihq.com/danb/a7800.shtml\n// https://atarihq.com/danb/files/maria_r1.txt\n// https://sites.google.com/site/atari7800wiki/\n\ninterface Atari7800StateBase {\n ram : Uint8Array;\n regs6532 : Uint8Array;\n}\n\ninterface Atari7800ControlsState {\n inputs : Uint8Array;\n}\n\ninterface Atari7800State extends Atari7800StateBase, Atari7800ControlsState {\n c : MOS6502State;\n tia : {\n regs : Uint8Array,\n };\n maria : {\n regs : Uint8Array,\n offset,dll,dlstart : number;\n dli,h16,h8 : boolean;\n };\n}\n\nconst SWCHA = 0;\nconst SWCHB = 2;\nconst INPT0 = 8;\n\nconst Atari7800_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, INPT0+0, 0x80],\n [Keys.B, INPT0+1, 0x80],\n [Keys.SELECT, SWCHB, -0x02],\n [Keys.START, SWCHB, -0x01],\n [Keys.UP, SWCHA, -0x10],\n [Keys.DOWN, SWCHA, -0x20],\n [Keys.LEFT, SWCHA, -0x40],\n [Keys.RIGHT, SWCHA, -0x80],\n \n [Keys.P2_A, INPT0+2, 0x80],\n [Keys.P2_B, INPT0+3, 0x80],\n //[Keys.P2_SELECT, 1, 2],\n //[Keys.P2_START, 1, 3],\n [Keys.P2_UP, SWCHA, -0x01],\n [Keys.P2_DOWN, SWCHA, -0x02],\n [Keys.P2_LEFT, SWCHA, -0x04],\n [Keys.P2_RIGHT, SWCHA, -0x08],\n]);\n\n// http://www.ataripreservation.org/websites/freddy.offenga/megazine/ISSUE5-PALNTSC.html\n// http://7800.8bitdev.org/index.php/7800_Software_Guide#APPENDIX_4:_FRAME_TIMING\nconst CLK = 3579545;\nconst linesPerFrame = 262;\nconst numVisibleLines = 258-16;\nconst colorClocksPerLine = 454; // 456?\nconst colorClocksPreDMA = 28;\nconst audioOversample = 2;\nconst audioSampleRate = linesPerFrame*60*audioOversample;\n\n// TIA chip\n\nclass TIA {\n regs = new Uint8Array(0x20);\n \n reset() {\n this.regs.fill(0);\n }\n read(a : number) : number {\n return this.regs[a] | 0;\n }\n write(a : number, v : number) {\n this.regs[a] = v;\n }\n saveState() {\n return {\n regs: this.regs.slice(0)\n };\n }\n loadState(s) {\n for (let i=0; i<32; i++)\n this.write(i, s.regs[i]);\n }\n static stateToLongString(state) : string {\n let s = \"\";\n s += dumpRAM(state.regs, 0, 32);\n return s;\n }\n}\n\n// MARIA chip\n\nclass MARIA {\n bus : Bus;\n cycles : number = 0;\n regs = new Uint8Array(0x20);\n offset : number = -1;\n dll : number = 0;\n dlstart : number = 0;\n dli : boolean = false;\n h16 : boolean = false;\n h8 : boolean = false;\n pixels = new Uint8Array(320);\n WSYNC : number = 0;\n\n reset() {\n this.regs.fill(0);\n // TODO?\n }\n read(a : number) : number {\n return this.regs[a] | 0;\n }\n write(a : number, v : number) {\n this.regs[a] = v;\n if (a == 0x04) this.WSYNC++;\n //console.log(hex(a), '=', hex(v));\n }\n saveState() {\n return {\n regs: this.regs.slice(0),\n offset: this.offset,\n dll: this.dll,\n dlstart: this.dlstart,\n dli: this.dli,\n h16: this.h16,\n h8: this.h8,\n };\n }\n loadState(s) {\n for (let i=0; i<32; i++)\n this.write(i, s.regs[i]|0);\n this.offset = s.offset|0;\n this.dll = s.dll|0;\n this.dlstart = s.dlstart|0;\n this.dli = !!s.dli;\n this.h16 = !!s.h16;\n this.h8 = !!s.h8;\n }\n isDMAEnabled() {\n return (this.regs[0x1c] & 0x60) == 0x40;\n }\n getDLLStart() {\n return (this.regs[0x0c] << 8) + this.regs[0x10];\n }\n getCharBaseAddress() {\n return (this.regs[0x14] << 8) + this.offset;\n }\n setVBLANK(b : boolean) {\n if (b) {\n this.regs[0x08] |= 0x80;\n this.offset = -1;\n this.dll = this.getDLLStart();\n this.dli = this.bus && (this.bus.read(this.dll) & 0x80) != 0; // if DLI on first zone\n } else {\n this.regs[0x08] &= ~0x80;\n }\n }\n readDLLEntry(bus) {\n // display lists must be in RAM (TODO: probe?)\n if (this.dll >= 0x4000) { return; }\n let x = bus.read(this.dll);\n this.offset = (x & 0xf);\n this.h16 = (x & 0x40) != 0;\n this.h8 = (x & 0x20) != 0;\n this.dlstart = (bus.read(this.dll+1)<<8) + bus.read(this.dll+2);\n //console.log(hex(this.dll,4), this.offset, hex(this.dlstart,4));\n this.dll = (this.dll + 3) & 0xffff; // TODO: can also only cross 1 page?\n this.dli = (bus.read(this.dll) & 0x80) != 0; // DLI flag is from next DLL entry\n }\n isHoley(a : number) : boolean {\n if (a & 0x8000) {\n if (this.h16 && (a & 0x1000)) return true;\n if (this.h8 && (a & 0x800)) return true;\n }\n return false;\n }\n readDMA(a : number) : number {\n if (this.isHoley(a))\n return 0;\n else {\n this.cycles += 3;\n return this.bus.read(a);\n }\n }\n doDMA(bus : Bus) {\n this.bus = bus;\n this.cycles = 0;\n this.pixels.fill(this.regs[0x0]);\n if (this.isDMAEnabled()) {\n this.cycles += 16; // TODO: last line in zone gets additional 8 cycles\n // time for a new DLL entry?\n if (this.offset < 0) {\n this.readDLLEntry(bus);\n }\n // read the DL (only can span two pages)\n let dlhi = this.dlstart & 0xff00;\n let dlofs = this.dlstart & 0xff;\n do {\n // read DL entry\n let b0 = bus.read(dlhi + ((dlofs+0) & 0x1ff));\n let b1 = bus.read(dlhi + ((dlofs+1) & 0x1ff));\n if (b1 == 0) break; // end of DL\n // display lists must be in RAM (TODO: probe?)\n if (dlhi >= 0x4000) { break; }\n let b2 = bus.read(dlhi + ((dlofs+2) & 0x1ff));\n let b3 = bus.read(dlhi + ((dlofs+3) & 0x1ff));\n let indirect = false;\n // extended header?\n if ((b1 & 31) == 0) {\n var pal = b3 >> 5;\n var width = 32 - (b3 & 31);\n var xpos = bus.read(dlhi + ((dlofs+4) & 0x1ff));\n var writemode = b1 & 0x80;\n indirect = (b1 & 0x20) != 0;\n dlofs += 5;\n this.cycles += 10;\n } else {\n // direct mode\n var xpos = b3;\n var pal = b1 >> 5;\n var width = 32 - (b1 & 31);\n var writemode = 0;\n dlofs += 4;\n this.cycles += 8;\n }\n let gfxadr = b0 + (((b2 + (indirect?0:this.offset)) & 0xff) << 8);\n xpos *= 2;\n // copy graphics data (direct)\n let readmode = (this.regs[0x1c] & 0x3) + (writemode?4:0);\n // double bytes?\n let dbl = indirect && (this.regs[0x1c] & 0x10) != 0;\n if (dbl) { width *= 2; }\n //if (this.offset == 0) console.log(hex(dla,4), hex(gfxadr,4), xpos, width, pal, readmode);\n for (var i=0; i>1)) : (gfxadr+i) );\n if (indirect) {\n let indadr = ((this.regs[0x14] + this.offset) << 8) + data;\n if (dbl && (i&1)) {\n indadr++;\n this.cycles -= 3; // indirect read has 6/9 cycles\n }\n data = this.readDMA(indadr);\n }\n // TODO: more modes (https://github.com/gstanton/ProSystem1_3/blob/master/Core/Maria.cpp)\n switch (readmode) {\n case 0:\t// 160 A/B\n for (let j=0; j<4; j++) {\n var col = (data >> 6) & 3;\n if (col > 0) {\n this.pixels[xpos] = this.pixels[xpos+1] = this.regs[(pal<<2) + col];\n }\n data <<= 2;\n xpos = (xpos + 2) & 0x1ff;\n }\n break;\n case 2:\t// 320 B/D (TODO?)\n case 3:\t// 320 A/C\n for (let j=0; j<8; j++) {\n var col = (data & 128) ? 1 : 0;\n if (col > 0) {\n this.pixels[xpos] = this.regs[(pal<<2) + col];\n }\n data <<= 1;\n xpos = (xpos + 1) & 0x1ff;\n }\n break;\n }\n }\n } while (this.cycles < colorClocksPerLine); // TODO?\n // decrement offset\n this.offset -= 1;\n }\n return this.cycles;\n }\n doInterrupt() : boolean {\n if (this.dli && this.offset < 0) {\n this.dli = false;\n return true;\n } else\n return false;\n //return this.dli;// && this.offset == 1;\n }\n static stateToLongString(state) : string {\n let s = \"\";\n s += dumpRAM(state.regs, 0, 32);\n s += \"\\n DLL: $\" + hex((state.regs[0x0c] << 8) + state.regs[0x10],4) + \" @ $\" + hex(state.dll,4);\n s += \"\\n DL: $\" + hex(state.dlstart,4);\n s += \"\\nOffset: \" + state.offset;\n s += \"\\n DLI? \" + state.dli;\n return s;\n }\n}\n\n// Atari 7800\n\nexport class Atari7800 extends BasicMachine implements RasterFrameBased {\n\n cpuFrequency = 1789772;\n canvasWidth = 320;\n numTotalScanlines = linesPerFrame;\n numVisibleScanlines = numVisibleLines;\n defaultROMSize = 0xc000;\n cpuCyclesPerLine = 113.5;\n sampleRate = audioSampleRate;\n\n cpu : MOS6502;\n ram : Uint8Array = new Uint8Array(0x1000);\n regs6532 = new Uint8Array(4);\n tia : TIA = new TIA();\n maria : MARIA = new MARIA();\n pokey1; //TODO: type\n audioadapter;\n \n lastFrameCycles = 0;\n xtracyc = 0;\n \n read : (a:number) => number;\n write : (a:number, v:number) => void;\n \n dmaBus : Bus; // to pass to MARIA\n\n constructor() {\n super();\n this.cpu = new MOS6502();\n this.read = newAddressDecoder([\n [0x0008, 0x000d, 0x0f, (a) => { this.xtracyc++; return this.readInput(a); }],\n [0x0000, 0x001f, 0x1f, (a) => { this.xtracyc++; return this.tia.read(a); }],\n [0x0020, 0x003f, 0x1f, (a) => { return this.maria.read(a); }],\n [0x0040, 0x00ff, 0xff, (a) => { return this.ram[a + 0x800]; }],\n [0x0100, 0x013f, 0xff, (a) => { return this.read(a); }], // shadow\n [0x0140, 0x01ff, 0x1ff, (a) => { return this.ram[a + 0x800]; }],\n [0x0280, 0x02ff, 0x3, (a) => { this.xtracyc++; return this.inputs[a]; }],\n [0x1800, 0x27ff, 0xffff, (a) => { return this.ram[a - 0x1800]; }],\n [0x2800, 0x3fff, 0x7ff, (a) => { return this.read(a | 0x2000); }], // shadow\n [0x4000, 0xffff, 0xffff, (a) => { return this.rom ? this.rom[a - 0x4000] : 0; }],\n [0x0000, 0xffff, 0xffff, (a) => { return this.probe && this.probe.logIllegal(a); }],\n ]);\n this.write = newAddressDecoder([\n [0x0015, 0x001A, 0x1f, (a,v) => { this.xtracyc++; this.pokey1.setTIARegister(a, v); }],\n [0x0000, 0x001f, 0x1f, (a,v) => { this.xtracyc++; this.tia.write(a,v); }],\n [0x0020, 0x003f, 0x1f, (a,v) => { this.maria.write(a,v); }],\n [0x0040, 0x00ff, 0xff, (a,v) => { this.ram[a + 0x800] = v; }],\n [0x0100, 0x013f, 0xff, (a,v) => { this.write(a,v); }], // shadow\n [0x0140, 0x01ff, 0x1ff, (a,v) => { this.ram[a + 0x800] = v; }],\n [0x0280, 0x02ff, 0x3, (a,v) => { this.xtracyc++; this.regs6532[a] = v; /*TODO*/ }],\n [0x1800, 0x27ff, 0xffff, (a,v) => { this.ram[a - 0x1800] = v; }],\n [0x2800, 0x3fff, 0x7ff, (a,v) => { this.write(a | 0x2000, v); }], // shadow\n [0xbfff, 0xbfff, 0xffff, (a,v) => { }], // TODO: bank switching?\n [0x0000, 0xffff, 0xffff, (a,v) => { this.probe && this.probe.logIllegal(a); }],\n ]);\n this.connectCPUMemoryBus(this);\n this.dmaBus = this.probeDMABus(this);\n this.handler = newKeyboardHandler(this.inputs, Atari7800_KEYCODE_MAP);\n this.pokey1 = new POKEYDeviceChannel();\n this.audioadapter = new TssChannelAdapter(this.pokey1, audioOversample, audioSampleRate);\n }\n \n readConst(a) {\n // make sure we don't log during this\n let oldprobe = this.probe;\n this.probe = null;\n let v = this.read(a);\n this.probe = oldprobe;\n return v;\n }\n\n readInput(a:number) : number {\n switch (a) {\n case 0xc: return ~this.inputs[0x8] & 0x80; //INPT4\n case 0xd: return ~this.inputs[0x9] & 0x80; //INPT5\n default: return this.inputs[a]|0;\n }\n }\n\n advanceCPU() : number {\n var clk = super.advanceCPU();\n if (this.xtracyc) {\n clk += this.xtracyc;\n this.probe.logClocks(this.xtracyc);\n this.xtracyc = 0;\n }\n return clk;\n }\n\n advanceFrame(trap) : number {\n var idata = this.pixels;\n var iofs = 0;\n var rgb;\n var mc = 0;\n var fc = 0;\n var steps = 0;\n this.probe.logNewFrame();\n //console.log(hex(this.cpu.getPC()), hex(this.maria.dll));\n // visible lines\n for (var sl=0; sl> 2); // TODO: logDMA\n mc += dmaClocks;\n // copy line to frame buffer\n if (idata) {\n for (var i=0; i<320; i++) {\n idata[iofs++] = COLORS_RGBA[this.maria.pixels[i]];\n }\n }\n }\n // do interrupt? (if visible or before 1st scanline)\n if ((visible || sl == linesPerFrame-1) && this.maria.doInterrupt()) {\n this.probe.logInterrupt(0);\n this.cpu.NMI();\n }\n // post-DMA clocks\n while (mc < colorClocksPerLine) {\n if (this.maria.WSYNC) {\n this.probe.logWait(0);\n this.probe.logClocks((colorClocksPerLine - mc) >> 2);\n mc = colorClocksPerLine;\n break;\n }\n if (trap && trap()) {\n trap = null;\n sl = 999;\n break;\n }\n mc += this.advanceCPU() << 2;\n steps++;\n }\n // audio\n this.audio && this.audioadapter.generate(this.audio);\n // update clocks, scanline\n mc -= colorClocksPerLine;\n fc += mc;\n this.probe.logNewScanline();\n }\n /*\n // TODO let bkcol = this.maria.regs[0x0];\n // TODO $(this.video.canvas).css('background-color', COLORS_WEB[bkcol]);\n */\n this.lastFrameCycles = fc;\n return steps;\n }\n\n getRasterX() { return this.lastFrameCycles % colorClocksPerLine; }\n getRasterY() { return Math.floor(this.lastFrameCycles / colorClocksPerLine); } \n\n loadROM(data) {\n if (data.length == 0xc080) data = data.slice(0x80); // strip header\n this.rom = padBytes(data, this.defaultROMSize, true);\n }\n\n reset() {\n super.reset();\n this.tia.reset();\n this.maria.reset();\n this.inputs.fill(0x0);\n this.inputs[SWCHA] = 0xff;\n this.inputs[SWCHB] = 1+2+8;\n //this.cpu.advanceClock(); // needed for test to pass?\n }\n\n readAddress(addr : number) {\n return this.read(addr) | 0;\n }\n\n loadState(state : Atari7800State) {\n this.cpu.loadState(state.c);\n this.ram.set(state.ram);\n this.tia.loadState(state.tia);\n this.maria.loadState(state.maria);\n this.regs6532.set(state.regs6532);\n this.loadControlsState(state);\n }\n saveState() : Atari7800State {\n return {\n c:this.cpu.saveState(),\n ram:this.ram.slice(0),\n tia:this.tia.saveState(),\n maria:this.maria.saveState(),\n regs6532:this.regs6532.slice(0),\n inputs:this.inputs.slice(0)\n };\n }\n loadControlsState(state:Atari7800ControlsState) : void {\n this.inputs.set(state.inputs);\n }\n saveControlsState() : Atari7800ControlsState {\n return {\n inputs:this.inputs.slice(0)\n };\n }\n\n getDebugCategories() {\n return ['CPU','Stack','TIA','MARIA'];\n }\n getDebugInfo(category, state) {\n switch (category) {\n case 'TIA': return TIA.stateToLongString(state.tia);\n case 'MARIA': return MARIA.stateToLongString(state.maria) + \"\\nScanline: \" + this.scanline;\n //default: return super.getDebugInfo(category, state);\n }\n }\n}\n\n///\n\nvar COLORS_RGBA = new Uint32Array(256);\nfor (var i=0; i<256; i++) {\n COLORS_RGBA[i] = gtia_ntsc_to_rgb(i);\n}\n\n", "\nimport { Atari7800 } from \"../machine/atari7800\";\nimport { Platform, Base6502MachinePlatform } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\n\nvar Atari7800_PRESETS = [\n {id:'sprites.dasm', name:'Sprites (ASM)'},\n {id:'wsync.c', name:'WSYNC'},\n {id:'sprites.c', name:'Double Buffering'},\n {id:'scroll.c', name:'Scrolling'},\n];\n\nclass Atari7800Platform extends Base6502MachinePlatform implements Platform {\n\n newMachine() { return new Atari7800(); }\n getPresets() { return Atari7800_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n readAddress(a) { return this.machine.readConst(a); }\n // TODO loadBIOS(bios)\t{ this.machine.loadBIOS(a); }\n getMemoryMap = function() { return { main:[\n {name:'TIA',start:0x00,size:0x20,type:'io'},\n {name:'MARIA',start:0x20,size:0x20,type:'io'},\n {name:'RAM (6166 Block 0)',start:0x40,size:0xc0,type:'ram'},\n {name:'RAM (6166 Block 1)',start:0x140,size:0xc0,type:'ram'},\n {name:'PIA',start:0x280,size:0x18,type:'io'},\n {name:'RAM',start:0x1800,size:0x1000,type:'ram'}, // TODO: shadow ram\n {name:'Cartridge ROM',start:0x4000,size:0xc000,type:'rom'},\n ] } };\n getROMExtension() { return \".a78\"; }\n}\n\n///\n\nPLATFORMS['atari7800'] = Atari7800Platform;\n"], - "mappings": "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", + "sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { BasicMachine, RasterFrameBased, Bus, ProbeAll } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt, dumpRAM, gtia_ntsc_to_rgb } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, POKEYDeviceChannel } from \"../common/audio\";\nimport { hex, rgb2bgr } from \"../common/util\";\n\n// https://atarihq.com/danb/a7800.shtml\n// https://atarihq.com/danb/files/maria_r1.txt\n// https://sites.google.com/site/atari7800wiki/\n\ninterface Atari7800StateBase {\n ram : Uint8Array;\n regs6532 : Uint8Array;\n}\n\ninterface Atari7800ControlsState {\n inputs : Uint8Array;\n}\n\ninterface Atari7800State extends Atari7800StateBase, Atari7800ControlsState {\n c : MOS6502State;\n tia : {\n regs : Uint8Array,\n };\n maria : {\n regs : Uint8Array,\n offset,dll,dlstart : number;\n dli,h16,h8 : boolean;\n };\n}\n\nconst SWCHA = 0;\nconst SWCHB = 2;\nconst INPT0 = 8;\n\nconst Atari7800_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, INPT0+0, 0x80],\n [Keys.B, INPT0+1, 0x80],\n [Keys.SELECT, SWCHB, -0x02],\n [Keys.START, SWCHB, -0x01],\n [Keys.UP, SWCHA, -0x10],\n [Keys.DOWN, SWCHA, -0x20],\n [Keys.LEFT, SWCHA, -0x40],\n [Keys.RIGHT, SWCHA, -0x80],\n \n [Keys.P2_A, INPT0+2, 0x80],\n [Keys.P2_B, INPT0+3, 0x80],\n //[Keys.P2_SELECT, 1, 2],\n //[Keys.P2_START, 1, 3],\n [Keys.P2_UP, SWCHA, -0x01],\n [Keys.P2_DOWN, SWCHA, -0x02],\n [Keys.P2_LEFT, SWCHA, -0x04],\n [Keys.P2_RIGHT, SWCHA, -0x08],\n]);\n\n// http://www.ataripreservation.org/websites/freddy.offenga/megazine/ISSUE5-PALNTSC.html\n// http://7800.8bitdev.org/index.php/7800_Software_Guide#APPENDIX_4:_FRAME_TIMING\nconst CLK = 3579545;\nconst linesPerFrame = 262;\nconst numVisibleLines = 258-16;\nconst colorClocksPerLine = 454; // 456?\nconst colorClocksPreDMA = 28;\nconst audioOversample = 2;\nconst audioSampleRate = linesPerFrame*60*audioOversample;\n\n// TIA chip\n\nclass TIA {\n regs = new Uint8Array(0x20);\n \n reset() {\n this.regs.fill(0);\n }\n read(a : number) : number {\n return this.regs[a] | 0;\n }\n write(a : number, v : number) {\n this.regs[a] = v;\n }\n saveState() {\n return {\n regs: this.regs.slice(0)\n };\n }\n loadState(s) {\n for (let i=0; i<32; i++)\n this.write(i, s.regs[i]);\n }\n static stateToLongString(state) : string {\n let s = \"\";\n s += dumpRAM(state.regs, 0, 32);\n return s;\n }\n}\n\n// MARIA chip\n\nclass MARIA {\n bus : Bus;\n cycles : number = 0;\n regs = new Uint8Array(0x20);\n offset : number = -1;\n dll : number = 0;\n dlstart : number = 0;\n dli : boolean = false;\n h16 : boolean = false;\n h8 : boolean = false;\n pixels = new Uint8Array(320);\n WSYNC : number = 0;\n\n reset() {\n this.regs.fill(0);\n // TODO?\n }\n read(a : number) : number {\n return this.regs[a] | 0;\n }\n write(a : number, v : number) {\n this.regs[a] = v;\n if (a == 0x04) this.WSYNC++;\n //console.log(hex(a), '=', hex(v));\n }\n saveState() {\n return {\n regs: this.regs.slice(0),\n offset: this.offset,\n dll: this.dll,\n dlstart: this.dlstart,\n dli: this.dli,\n h16: this.h16,\n h8: this.h8,\n };\n }\n loadState(s) {\n for (let i=0; i<32; i++)\n this.write(i, s.regs[i]|0);\n this.offset = s.offset|0;\n this.dll = s.dll|0;\n this.dlstart = s.dlstart|0;\n this.dli = !!s.dli;\n this.h16 = !!s.h16;\n this.h8 = !!s.h8;\n }\n isDMAEnabled() {\n return (this.regs[0x1c] & 0x60) == 0x40;\n }\n getDLLStart() {\n return (this.regs[0x0c] << 8) + this.regs[0x10];\n }\n getCharBaseAddress() {\n return (this.regs[0x14] << 8) + this.offset;\n }\n setVBLANK(b : boolean) {\n if (b) {\n this.regs[0x08] |= 0x80;\n this.offset = -1;\n this.dll = this.getDLLStart();\n this.dli = this.bus && (this.bus.read(this.dll) & 0x80) != 0; // if DLI on first zone\n } else {\n this.regs[0x08] &= ~0x80;\n }\n }\n readDLLEntry(bus) {\n // display lists must be in RAM (TODO: probe?)\n if (this.dll >= 0x4000) { return; }\n let x = bus.read(this.dll);\n this.offset = (x & 0xf);\n this.h16 = (x & 0x40) != 0;\n this.h8 = (x & 0x20) != 0;\n this.dlstart = (bus.read(this.dll+1)<<8) + bus.read(this.dll+2);\n //console.log(hex(this.dll,4), this.offset, hex(this.dlstart,4));\n this.dll = (this.dll + 3) & 0xffff; // TODO: can also only cross 1 page?\n this.dli = (bus.read(this.dll) & 0x80) != 0; // DLI flag is from next DLL entry\n }\n isHoley(a : number) : boolean {\n if (a & 0x8000) {\n if (this.h16 && (a & 0x1000)) return true;\n if (this.h8 && (a & 0x800)) return true;\n }\n return false;\n }\n readDMA(a : number) : number {\n if (this.isHoley(a))\n return 0;\n else {\n this.cycles += 3;\n return this.bus.read(a);\n }\n }\n doDMA(bus : Bus) {\n this.bus = bus;\n this.cycles = 0;\n this.pixels.fill(this.regs[0x0]);\n if (this.isDMAEnabled()) {\n this.cycles += 16; // TODO: last line in zone gets additional 8 cycles\n // time for a new DLL entry?\n if (this.offset < 0) {\n this.readDLLEntry(bus);\n }\n // read the DL (only can span two pages)\n let dlhi = this.dlstart & 0xff00;\n let dlofs = this.dlstart & 0xff;\n do {\n // read DL entry\n let b0 = bus.read(dlhi + ((dlofs+0) & 0x1ff));\n let b1 = bus.read(dlhi + ((dlofs+1) & 0x1ff));\n if (b1 == 0) break; // end of DL\n // display lists must be in RAM (TODO: probe?)\n if (dlhi >= 0x4000) { break; }\n let b2 = bus.read(dlhi + ((dlofs+2) & 0x1ff));\n let b3 = bus.read(dlhi + ((dlofs+3) & 0x1ff));\n let indirect = false;\n // extended header?\n if ((b1 & 31) == 0) {\n var pal = b3 >> 5;\n var width = 32 - (b3 & 31);\n var xpos = bus.read(dlhi + ((dlofs+4) & 0x1ff));\n var writemode = b1 & 0x80;\n indirect = (b1 & 0x20) != 0;\n dlofs += 5;\n this.cycles += 10;\n } else {\n // direct mode\n var xpos = b3;\n var pal = b1 >> 5;\n var width = 32 - (b1 & 31);\n var writemode = 0;\n dlofs += 4;\n this.cycles += 8;\n }\n let gfxadr = b0 + (((b2 + (indirect?0:this.offset)) & 0xff) << 8);\n xpos *= 2;\n // copy graphics data (direct)\n let readmode = (this.regs[0x1c] & 0x3) + (writemode?4:0);\n // double bytes?\n let dbl = indirect && (this.regs[0x1c] & 0x10) != 0;\n if (dbl) { width *= 2; }\n //if (this.offset == 0) console.log(hex(dla,4), hex(gfxadr,4), xpos, width, pal, readmode);\n for (var i=0; i>1)) : (gfxadr+i) );\n if (indirect) {\n let indadr = ((this.regs[0x14] + this.offset) << 8) + data;\n if (dbl && (i&1)) {\n indadr++;\n this.cycles -= 3; // indirect read has 6/9 cycles\n }\n data = this.readDMA(indadr);\n }\n // TODO: more modes (https://github.com/gstanton/ProSystem1_3/blob/master/Core/Maria.cpp)\n switch (readmode) {\n case 0:\t// 160 A/B\n for (let j=0; j<4; j++) {\n var col = (data >> 6) & 3;\n if (col > 0) {\n this.pixels[xpos] = this.pixels[xpos+1] = this.regs[(pal<<2) + col];\n }\n data <<= 2;\n xpos = (xpos + 2) & 0x1ff;\n }\n break;\n case 2:\t// 320 B/D (TODO?)\n case 3:\t// 320 A/C\n for (let j=0; j<8; j++) {\n var col = (data & 128) ? 1 : 0;\n if (col > 0) {\n this.pixels[xpos] = this.regs[(pal<<2) + col];\n }\n data <<= 1;\n xpos = (xpos + 1) & 0x1ff;\n }\n break;\n }\n }\n } while (this.cycles < colorClocksPerLine); // TODO?\n // decrement offset\n this.offset -= 1;\n }\n return this.cycles;\n }\n doInterrupt() : boolean {\n if (this.dli && this.offset < 0) {\n this.dli = false;\n return true;\n } else\n return false;\n //return this.dli;// && this.offset == 1;\n }\n static stateToLongString(state) : string {\n let s = \"\";\n s += dumpRAM(state.regs, 0, 32);\n s += \"\\n DLL: $\" + hex((state.regs[0x0c] << 8) + state.regs[0x10],4) + \" @ $\" + hex(state.dll,4);\n s += \"\\n DL: $\" + hex(state.dlstart,4);\n s += \"\\nOffset: \" + state.offset;\n s += \"\\n DLI? \" + state.dli;\n return s;\n }\n}\n\n// Atari 7800\n\nexport class Atari7800 extends BasicMachine implements RasterFrameBased {\n\n cpuFrequency = 1789772;\n canvasWidth = 320;\n numTotalScanlines = linesPerFrame;\n numVisibleScanlines = numVisibleLines;\n defaultROMSize = 0xc000;\n cpuCyclesPerLine = 113.5;\n sampleRate = audioSampleRate;\n\n cpu : MOS6502;\n ram : Uint8Array = new Uint8Array(0x1000);\n regs6532 = new Uint8Array(4);\n tia : TIA = new TIA();\n maria : MARIA = new MARIA();\n pokey1; //TODO: type\n audioadapter;\n \n lastFrameCycles = 0;\n xtracyc = 0;\n \n read : (a:number) => number;\n write : (a:number, v:number) => void;\n \n dmaBus : Bus; // to pass to MARIA\n\n constructor() {\n super();\n this.cpu = new MOS6502();\n this.read = newAddressDecoder([\n [0x0008, 0x000d, 0x0f, (a) => { this.xtracyc++; return this.readInput(a); }],\n [0x0000, 0x001f, 0x1f, (a) => { this.xtracyc++; return this.tia.read(a); }],\n [0x0020, 0x003f, 0x1f, (a) => { return this.maria.read(a); }],\n [0x0040, 0x00ff, 0xff, (a) => { return this.ram[a + 0x800]; }],\n [0x0100, 0x013f, 0xff, (a) => { return this.read(a); }], // shadow\n [0x0140, 0x01ff, 0x1ff, (a) => { return this.ram[a + 0x800]; }],\n [0x0280, 0x02ff, 0x3, (a) => { this.xtracyc++; return this.inputs[a]; }],\n [0x1800, 0x27ff, 0xffff, (a) => { return this.ram[a - 0x1800]; }],\n [0x2800, 0x3fff, 0x7ff, (a) => { return this.read(a | 0x2000); }], // shadow\n [0x4000, 0xffff, 0xffff, (a) => { return this.rom ? this.rom[a - 0x4000] : 0; }],\n [0x0000, 0xffff, 0xffff, (a) => { return this.probe && this.probe.logIllegal(a); }],\n ]);\n this.write = newAddressDecoder([\n [0x0015, 0x001A, 0x1f, (a,v) => { this.xtracyc++; this.pokey1.setTIARegister(a, v); }],\n [0x0000, 0x001f, 0x1f, (a,v) => { this.xtracyc++; this.tia.write(a,v); }],\n [0x0020, 0x003f, 0x1f, (a,v) => { this.maria.write(a,v); }],\n [0x0040, 0x00ff, 0xff, (a,v) => { this.ram[a + 0x800] = v; }],\n [0x0100, 0x013f, 0xff, (a,v) => { this.write(a,v); }], // shadow\n [0x0140, 0x01ff, 0x1ff, (a,v) => { this.ram[a + 0x800] = v; }],\n [0x0280, 0x02ff, 0x3, (a,v) => { this.xtracyc++; this.regs6532[a] = v; /*TODO*/ }],\n [0x1800, 0x27ff, 0xffff, (a,v) => { this.ram[a - 0x1800] = v; }],\n [0x2800, 0x3fff, 0x7ff, (a,v) => { this.write(a | 0x2000, v); }], // shadow\n [0xbfff, 0xbfff, 0xffff, (a,v) => { }], // TODO: bank switching?\n [0x0000, 0xffff, 0xffff, (a,v) => { this.probe && this.probe.logIllegal(a); }],\n ]);\n this.connectCPUMemoryBus(this);\n this.dmaBus = this.probeDMABus(this);\n this.handler = newKeyboardHandler(this.inputs, Atari7800_KEYCODE_MAP);\n this.pokey1 = new POKEYDeviceChannel();\n this.audioadapter = new TssChannelAdapter(this.pokey1, audioOversample, audioSampleRate);\n }\n \n readConst(a) {\n // make sure we don't log during this\n let oldprobe = this.probe;\n this.probe = null;\n let v = this.read(a);\n this.probe = oldprobe;\n return v;\n }\n\n readInput(a:number) : number {\n switch (a) {\n case 0xc: return ~this.inputs[0x8] & 0x80; //INPT4\n case 0xd: return ~this.inputs[0x9] & 0x80; //INPT5\n default: return this.inputs[a]|0;\n }\n }\n\n advanceCPU() : number {\n var clk = super.advanceCPU();\n if (this.xtracyc) {\n clk += this.xtracyc;\n this.probe.logClocks(this.xtracyc);\n this.xtracyc = 0;\n }\n return clk;\n }\n\n advanceFrame(trap) : number {\n var idata = this.pixels;\n var iofs = 0;\n var rgb;\n var mc = 0;\n var fc = 0;\n var steps = 0;\n this.probe.logNewFrame();\n //console.log(hex(this.cpu.getPC()), hex(this.maria.dll));\n // visible lines\n for (var sl=0; sl> 2); // TODO: logDMA\n mc += dmaClocks;\n // copy line to frame buffer\n if (idata) {\n for (var i=0; i<320; i++) {\n idata[iofs++] = COLORS_RGBA[this.maria.pixels[i]];\n }\n }\n }\n // do interrupt? (if visible or before 1st scanline)\n if ((visible || sl == linesPerFrame-1) && this.maria.doInterrupt()) {\n this.probe.logInterrupt(0);\n this.cpu.NMI();\n }\n // post-DMA clocks\n while (mc < colorClocksPerLine) {\n if (this.maria.WSYNC) {\n this.probe.logWait(0);\n this.probe.logClocks((colorClocksPerLine - mc) >> 2);\n mc = colorClocksPerLine;\n break;\n }\n if (trap && trap()) {\n trap = null;\n sl = 999;\n break;\n }\n mc += this.advanceCPU() << 2;\n steps++;\n }\n // audio\n this.audio && this.audioadapter.generate(this.audio);\n // update clocks, scanline\n mc -= colorClocksPerLine;\n fc += mc;\n this.probe.logNewScanline();\n }\n /*\n // TODO let bkcol = this.maria.regs[0x0];\n // TODO $(this.video.canvas).css('background-color', COLORS_WEB[bkcol]);\n */\n this.lastFrameCycles = fc;\n return steps;\n }\n\n getRasterX() { return this.lastFrameCycles % colorClocksPerLine; }\n getRasterY() { return this.scanline; }\n\n loadROM(data) {\n if (data.length == 0xc080) data = data.slice(0x80); // strip header\n this.rom = padBytes(data, this.defaultROMSize, true);\n }\n\n reset() {\n super.reset();\n this.tia.reset();\n this.maria.reset();\n this.inputs.fill(0x0);\n this.inputs[SWCHA] = 0xff;\n this.inputs[SWCHB] = 1+2+8;\n //this.cpu.advanceClock(); // needed for test to pass?\n }\n\n readAddress(addr : number) {\n return this.read(addr) | 0;\n }\n\n loadState(state : Atari7800State) {\n this.cpu.loadState(state.c);\n this.ram.set(state.ram);\n this.tia.loadState(state.tia);\n this.maria.loadState(state.maria);\n this.regs6532.set(state.regs6532);\n this.loadControlsState(state);\n }\n saveState() : Atari7800State {\n return {\n c:this.cpu.saveState(),\n ram:this.ram.slice(0),\n tia:this.tia.saveState(),\n maria:this.maria.saveState(),\n regs6532:this.regs6532.slice(0),\n inputs:this.inputs.slice(0)\n };\n }\n loadControlsState(state:Atari7800ControlsState) : void {\n this.inputs.set(state.inputs);\n }\n saveControlsState() : Atari7800ControlsState {\n return {\n inputs:this.inputs.slice(0)\n };\n }\n\n getDebugCategories() {\n return ['CPU','Stack','TIA','MARIA'];\n }\n getDebugInfo(category, state) {\n switch (category) {\n case 'TIA': return TIA.stateToLongString(state.tia);\n case 'MARIA': return MARIA.stateToLongString(state.maria) + \"\\nScanline: \" + this.scanline;\n //default: return super.getDebugInfo(category, state);\n }\n }\n}\n\n///\n\nvar COLORS_RGBA = new Uint32Array(256);\nfor (var i=0; i<256; i++) {\n COLORS_RGBA[i] = gtia_ntsc_to_rgb(i);\n}\n\n", "\nimport { Atari7800 } from \"../machine/atari7800\";\nimport { Platform, Base6502MachinePlatform } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\n\nvar Atari7800_PRESETS = [\n {id:'sprites.dasm', name:'Sprites (ASM)'},\n {id:'wsync.c', name:'WSYNC'},\n {id:'sprites.c', name:'Double Buffering'},\n {id:'scroll.c', name:'Scrolling'},\n];\n\nclass Atari7800Platform extends Base6502MachinePlatform implements Platform {\n\n newMachine() { return new Atari7800(); }\n getPresets() { return Atari7800_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n readAddress(a) { return this.machine.readConst(a); }\n // TODO loadBIOS(bios)\t{ this.machine.loadBIOS(a); }\n getMemoryMap = function() { return { main:[\n {name:'TIA',start:0x00,size:0x20,type:'io'},\n {name:'MARIA',start:0x20,size:0x20,type:'io'},\n {name:'RAM (6166 Block 0)',start:0x40,size:0xc0,type:'ram'},\n {name:'RAM (6166 Block 1)',start:0x140,size:0xc0,type:'ram'},\n {name:'PIA',start:0x280,size:0x18,type:'io'},\n {name:'RAM',start:0x1800,size:0x1000,type:'ram'}, // TODO: shadow ram\n {name:'Cartridge ROM',start:0x4000,size:0xc000,type:'rom'},\n ] } };\n getROMExtension() { return \".a78\"; }\n}\n\n///\n\nPLATFORMS['atari7800'] = Atari7800Platform;\n"], + "mappings": "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", "names": [] } diff --git a/gen/basic-2FDN7GZS.js b/gen/basic-TD5ASNGV.js similarity index 99% rename from gen/basic-2FDN7GZS.js rename to gen/basic-TD5ASNGV.js index 67d9cc50..bc45e2f1 100644 --- a/gen/basic-2FDN7GZS.js +++ b/gen/basic-TD5ASNGV.js @@ -1,4 +1,4 @@ -import{b as v}from"./chunk-3XE5YOCV.js";import{a as d,o as S}from"./chunk-2C4DBXAR.js";import"./chunk-PP6TWFIY.js";import"./chunk-5SHCNQ2O.js";import"./chunk-3FNZJ4LP.js";import"./chunk-YLYWUMYM.js";import{A as c,J as b,S as g,T as f,a as p}from"./chunk-ATS7PSQG.js";import"./chunk-5XVCUSSZ.js";function O(o){return o.value!=null}function E(o){return o.name!=null}function N(o){return o.op!=null&&o.left!=null&&o.right!=null}function I(o){return o.op!=null&&o.expr!=null}var y=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,u,h){r=s,e=a,i=u,n=h},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},L=1024*1024,l=class{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=L),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(u=>{this.curpc=s.$loc.offset,this.datums.push(u)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new y,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(l.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new g(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` +import{b as v}from"./chunk-3XE5YOCV.js";import{a as d,o as S}from"./chunk-UF5OFU7K.js";import"./chunk-PP6TWFIY.js";import"./chunk-5SHCNQ2O.js";import"./chunk-FNKLYD54.js";import"./chunk-YLYWUMYM.js";import{A as c,J as b,S as g,T as f,a as p}from"./chunk-ATS7PSQG.js";import"./chunk-5XVCUSSZ.js";function O(o){return o.value!=null}function E(o){return o.name!=null}function N(o){return o.op!=null&&o.left!=null&&o.right!=null}function I(o){return o.op!=null&&o.expr!=null}var y=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,u,h){r=s,e=a,i=u,n=h},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},L=1024*1024,l=class{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=L),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(u=>{this.curpc=s.$loc.offset,this.datums.push(u)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new y,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(l.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new g(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` `)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=` `):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),O(t))return JSON.stringify(t.value);if(E(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let u=t.args?t.args.map(h=>this.expr2js(h,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${u})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${u})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${u})`:e+=`this.arrayGet(${i}, ${u})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(N(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(I(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var u=()=>i>=0?this.vars[t]>e:this.vars[t]h==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:h=>{h&&t!=h&&this.runtimeError(`I executed NEXT "${h}", but the last FOR was for "${t}".`),this.vars[t]+=i;var m=u();m?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${m}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s=i.length&&this.runtimeError(`I tried to lookup ${t}(${r}) but it exceeded the dimensions of the array.`),i=i[r[n]]}return c(i)&&this.runtimeError(`I tried to lookup ${t}(${r}) but used too few dimensions.`),i}modifyStringSlice(t,r,e,i){return t=t||"",this.checkString(t),this.checkString(r),i||(i=e),e=this.ROUND(e),i=this.ROUND(i),e<1&&this.dialectError("accept a string slice index less than 1"),ir.length)&&this.runtimeError(`I needed a number between 1 and ${r.length}, but I got ${t}.`),t<1||t>r.length?0:t}onGotoLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gotoLabel(r[t-1])}onGosubLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gosubLabel(r[t-1])}nextDatum(){return this.dataptr>=this.datums.length&&this.runtimeError("I tried to READ, but ran out of data."),this.datums[this.dataptr++].value}do__PRINT(t){var r="";for(var e of t.args){var i=this.expr2js(e),n=i.name;r+=`this.printExpr(this.checkValue(${i}, ${JSON.stringify(n)}));`}return r}preInput(){this.running=!1,this.curpc--}postInput(t){t&&this.curpc++,this.running=!0,this.resume()}do__INPUT(t){var r=t.prompt!=null?this.expr2js(t.prompt):'""',e=t.elapsed!=null?this.assign2js(t.elapsed):"let ___",i="";return t.args.forEach((n,s)=>{var a=this.assign2js(n);i+=` var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]); @@ -34,4 +34,4 @@ import{b as v}from"./chunk-3XE5YOCV.js";import{a as d,o as S}from"./chunk-2C4DBX `),this.tty.addtext("*** END OF PROGRAM ***",1),this.tty.showPrintHead(!1)}loadROM(t,r){var e=this.runtime.exited;this.program=r;var i=this.runtime.load(r);this.tty.uppercaseOnly=!0,d.input=this.program.opts.uppercaseOnly?n=>n.toUpperCase():null,(!this.hotReload||e||!i)&&this.reset()}getROMExtension(){return".json"}reset(){this.tty.clear(),this.runtime.reset(),this.clock=0,this.transcript=[]}pause(){this.timer.stop()}resume(){this.isBlocked()||(this.animcount=0,this.timer.start())}isBlocked(){return this.tty.waitingfor!=null||this.runtime.exited}isRunning(){return this.timer.isRunning()}getDefaultExtension(){return".bas"}getToolForFilename(){return"basic"}getPresets(){return T}getPC(){return this.runtime.curpc}getSP(){return 4096-this.runtime.returnStack.length}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP()}}saveState(){return{c:this.getCPUState(),rt:this.runtime.saveState()}}loadState(t){this.runtime.loadState(t)}getDebugTree(){return{CurrentLine:this.runtime.getCurrentLabel(),Variables:this.runtime.vars,Arrays:this.runtime.arrays,Functions:this.runtime.defs,ForLoops:this.runtime.forLoops,WhileLoops:this.runtime.whileLoops,ReturnStack:this.runtime.returnStack,NextDatum:this.runtime.datums[this.runtime.dataptr],Clock:this.clock,Options:this.runtime.opts,Internals:this.runtime}}inspect(t){let r=this.runtime.vars[t];if(r!=null)return`${t} = ${r}`}showHelp(){return"https://8bitworkshop.com/docs/platforms/basic/"}getDebugCategories(){return["Variables"]}getDebugInfo(t,r){switch(t){case"Variables":return this.varsToLongString()}}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=p(e,3)+" = "+n+` `}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){u(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var o=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),u=o.saveAs||(typeof window!="object"||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(t,r,c){var a=o.URL||o.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):n(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(n(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",g=/constructor/i.test(o.HTMLElement)||o.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&g||m)&&typeof FileReader!="undefined"){var f=new FileReader;f.onloadend=function(){var p=f.result;p=S?p:p.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=p:location=p,a=null},f.readAsDataURL(t)}else{var k=o.URL||o.webkitURL,h=k.createObjectURL(t);a?a.location=h:location.href=h,a=null,setTimeout(function(){k.revokeObjectURL(h)},4e4)}});o.saveAs=u.saveAs=u,typeof v!="undefined"&&(v.exports=u)})});var E=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},n=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var n=Math.floor(e/this.checkpointInterval),i=n0&&this.platform.advanceFrameClock&&(n=this.platform.advanceFrameClock(null,n)),this.lastSeekFrame=e,this.lastSeekStep=n,this.lastStepCount=m,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-A6Z6HE7G.js");case"arm32":return import("./arm32-HYYFGNDA.js");case"astrocade":return import("./astrocade-GYONYR6C.js");case"atari7800":return import("./atari7800-FJSKJHUU.js");case"atari8":return import("./atari8-UCIJ4PJI.js");case"basic":return import("./basic-2FDN7GZS.js");case"c64":return import("./c64-MGSPFAID.js");case"coleco":return import("./coleco-D3NQZQT3.js");case"cpc":return import("./cpc-N3CCWOXN.js");case"devel":return import("./devel-Y2BQVV6T.js");case"galaxian":return import("./galaxian-G3KQ4N7Z.js");case"kim1":return import("./kim1-GWGKA3M6.js");case"markdown":return import("./markdown-XTWRQVX3.js");case"msx":return import("./msx-RNT34DI2.js");case"mw8080bw":return import("./mw8080bw-NPXXBTKL.js");case"nes":return import("./nes-IOIHWE5D.js");case"script":return import("./script-RMWZFBYM.js");case"sms":return import("./sms-FK5WRH2Z.js");case"sound_konami":return import("./sound_konami-3KLAUTFP.js");case"sound_williams":return import("./sound_williams-WXRSOFOS.js");case"vcs":return import("./vcs-CIIPGW7M.js");case"vector":return import("./vector-7GSPQDIY.js");case"vectrex":return import("./vectrex-DLX6ZIGC.js");case"verilog":return import("./verilog-YLF2L3BG.js");case"vic20":return import("./vic20-4I7VOXDQ.js");case"vicdual":return import("./vicdual-DD7HQBUM.js");case"williams":return import("./williams-I2D2VBJ7.js");case"x86":return import("./x86-UUJNST5M.js");case"zmachine":return import("./zmachine-CRLVUUHE.js");case"zx":return import("./zx-OKBEWLWD.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{E as a,R as b,y as c}; -//# sourceMappingURL=chunk-3FNZJ4LP.js.map +import{L as b,M as w}from"./chunk-ATS7PSQG.js";import{c as C}from"./chunk-5XVCUSSZ.js";var y=C((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){u(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var o=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),u=o.saveAs||(typeof window!="object"||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(t,r,c){var a=o.URL||o.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):n(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(n(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",g=/constructor/i.test(o.HTMLElement)||o.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&g||m)&&typeof FileReader!="undefined"){var f=new FileReader;f.onloadend=function(){var p=f.result;p=S?p:p.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=p:location=p,a=null},f.readAsDataURL(t)}else{var k=o.URL||o.webkitURL,h=k.createObjectURL(t);a?a.location=h:location.href=h,a=null,setTimeout(function(){k.revokeObjectURL(h)},4e4)}});o.saveAs=u.saveAs=u,typeof v!="undefined"&&(v.exports=u)})});var E=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},n=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var n=Math.floor(e/this.checkpointInterval),i=n0&&this.platform.advanceFrameClock&&(n=this.platform.advanceFrameClock(null,n)),this.lastSeekFrame=e,this.lastSeekStep=n,this.lastStepCount=m,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-A6Z6HE7G.js");case"arm32":return import("./arm32-HYYFGNDA.js");case"astrocade":return import("./astrocade-GYONYR6C.js");case"atari7800":return import("./atari7800-LRWPIHAM.js");case"atari8":return import("./atari8-UCIJ4PJI.js");case"basic":return import("./basic-TD5ASNGV.js");case"c64":return import("./c64-MGSPFAID.js");case"coleco":return import("./coleco-D3NQZQT3.js");case"cpc":return import("./cpc-N3CCWOXN.js");case"devel":return import("./devel-OHII2XIJ.js");case"galaxian":return import("./galaxian-G3KQ4N7Z.js");case"kim1":return import("./kim1-GWGKA3M6.js");case"markdown":return import("./markdown-XTWRQVX3.js");case"msx":return import("./msx-RNT34DI2.js");case"mw8080bw":return import("./mw8080bw-NPXXBTKL.js");case"nes":return import("./nes-IOIHWE5D.js");case"script":return import("./script-5EHZ274V.js");case"sms":return import("./sms-WTRCW3UB.js");case"sound_konami":return import("./sound_konami-3KLAUTFP.js");case"sound_williams":return import("./sound_williams-WXRSOFOS.js");case"vcs":return import("./vcs-CIIPGW7M.js");case"vector":return import("./vector-7GSPQDIY.js");case"vectrex":return import("./vectrex-DLX6ZIGC.js");case"verilog":return import("./verilog-YLF2L3BG.js");case"vic20":return import("./vic20-4I7VOXDQ.js");case"vicdual":return import("./vicdual-DD7HQBUM.js");case"williams":return import("./williams-I2D2VBJ7.js");case"x86":return import("./x86-UUJNST5M.js");case"zmachine":return import("./zmachine-CRLVUUHE.js");case"zx":return import("./zx-OKBEWLWD.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{E as a,R as b,y as c}; +//# sourceMappingURL=chunk-FNKLYD54.js.map diff --git a/gen/chunk-3FNZJ4LP.js.map b/gen/chunk-FNKLYD54.js.map similarity index 100% rename from gen/chunk-3FNZJ4LP.js.map rename to gen/chunk-FNKLYD54.js.map diff --git a/gen/chunk-2C4DBXAR.js b/gen/chunk-UF5OFU7K.js similarity index 99% rename from gen/chunk-2C4DBXAR.js rename to gen/chunk-UF5OFU7K.js index 9bb154b9..e545c806 100644 --- a/gen/chunk-2C4DBXAR.js +++ b/gen/chunk-UF5OFU7K.js @@ -1,4 +1,4 @@ -import{a as tn,b as Ko,c as Zo}from"./chunk-PP6TWFIY.js";import{a as Fs}from"./chunk-5SHCNQ2O.js";import{a as Ls,b as Rs,c as el}from"./chunk-3FNZJ4LP.js";import{D as ca,J as fa,l as Z,u as As,v as Ds}from"./chunk-YLYWUMYM.js";import{D as Lt,E as oa,F as Rr,I as Cs,J as la,S as ua,U as ks,a as Ft,aa as en,b as ni,ba as Ps,ca as ai,d as wt,e as sa,f as pt,g as Fe,j as Es,l as Xi,m as Qi,n as Ji,o as vr,p as Ss,s as Ki,v as _s,w as Ts,x as Zi,y as gt,z as Lr}from"./chunk-ATS7PSQG.js";import{b as ii,c as ws,e as aa}from"./chunk-5XVCUSSZ.js";var ha=ws((Is,da)=>{(function(l){if(typeof Is=="object"&&typeof da!="undefined")da.exports=l();else if(typeof define=="function"&&define.amd)define([],l);else{var t;typeof window!="undefined"?t=window:typeof global!="undefined"?t=global:typeof self!="undefined"?t=self:t=this,t.localforage=l()}})(function(){var l,t,r;return function a(u,d,m){function y(W,fe){if(!d[W]){if(!u[W]){var z=typeof ii=="function"&ⅈif(!fe&&z)return z(W,!0);if(b)return b(W,!0);var H=new Error("Cannot find module '"+W+"'");throw H.code="MODULE_NOT_FOUND",H}var G=d[W]={exports:{}};u[W][0].call(G.exports,function(de){var K=u[W][1][de];return y(K||de)},G,G.exports,a,u,d,m)}return d[W].exports}for(var b=typeof ii=="function"&&ii,L=0;L=43)}}).catch(function(){return!1})}function Te(p){return typeof Pe=="boolean"?z.resolve(Pe):se(p).then(function(S){return Pe=S,Pe})}function He(p){var S=be[p.name],v={};v.promise=new z(function(_,P){v.resolve=_,v.reject=P}),S.deferredOperations.push(v),S.dbReady?S.dbReady=S.dbReady.then(function(){return v.promise}):S.dbReady=v.promise}function Ie(p){var S=be[p.name],v=S.deferredOperations.pop();if(v)return v.resolve(),v.promise}function tt(p,S){var v=be[p.name],_=v.deferredOperations.pop();if(_)return _.reject(S),_.promise}function Xe(p,S){return new z(function(v,_){if(be[p.name]=be[p.name]||ar(),p.db)if(S)He(p),p.db.close();else return v(p.db);var P=[p.name];S&&P.push(p.version);var T=L.open.apply(L,P);S&&(T.onupgradeneeded=function(N){var U=T.result;try{U.createObjectStore(p.storeName),N.oldVersion<=1&&U.createObjectStore(ye)}catch(V){if(V.name==="ConstraintError")console.warn('The database "'+p.name+'" has been upgraded from version '+N.oldVersion+" to version "+N.newVersion+', but the storage "'+p.storeName+'" already exists.');else throw V}}),T.onerror=function(N){N.preventDefault(),_(T.error)},T.onsuccess=function(){var N=T.result;N.onversionchange=function(U){U.target.close()},v(N),Ie(p)}})}function mt(p){return Xe(p,!1)}function nr(p){return Xe(p,!0)}function Sr(p,S){if(!p.db)return!0;var v=!p.db.objectStoreNames.contains(p.storeName),_=p.versionp.db.version;if(_&&(p.version!==S&&console.warn('The database "'+p.name+`" can't be downgraded from version `+p.db.version+" to version "+p.version+"."),p.version=p.db.version),P||v){if(v){var T=p.db.version+1;T>p.version&&(p.version=T)}return!0}return!1}function Or(p){return new z(function(S,v){var _=new FileReader;_.onerror=v,_.onloadend=function(P){var T=btoa(P.target.result||"");S({__local_forage_encoded_blob:!0,data:T,type:p.type})},_.readAsBinaryString(p)})}function Yt(p){var S=ae(atob(p.data));return fe([S],{type:p.type})}function $r(p){return p&&p.__local_forage_encoded_blob}function vt(p){var S=this,v=S._initReady().then(function(){var _=be[S._dbInfo.name];if(_&&_.dbReady)return _.dbReady});return G(v,p,p),v}function Tn(p){He(p);for(var S=be[p.name],v=S.forages,_=0;_0&&(!p.db||T.name==="InvalidStateError"||T.name==="NotFoundError"))return z.resolve().then(function(){if(!p.db||T.name==="NotFoundError"&&!p.db.objectStoreNames.contains(p.storeName)&&p.version<=p.db.version)return p.db&&(p.version=p.db.version+1),nr(p)}).then(function(){return Tn(p).then(function(){Qe(p,S,v,_-1)})}).catch(v);v(T)}}function ar(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Ti(p){var S=this,v={db:null};if(p)for(var _ in p)v[_]=p[_];var P=be[v.name];P||(P=ar(),be[v.name]=P),P.forages.push(S),S._initReady||(S._initReady=S.ready,S.ready=vt);var T=[];function N(){return z.resolve()}for(var U=0;U>4,X[P++]=(N&15)<<4|U>>2,X[P++]=(U&3)<<6|V&63;return q}function Je(p){var S=new Uint8Array(p),v="",_;for(_=0;_>2],v+=$e[(S[_]&3)<<4|S[_+1]>>4],v+=$e[(S[_+1]&15)<<2|S[_+2]>>6],v+=$e[S[_+2]&63];return S.length%3==2?v=v.substring(0,v.length-1)+"=":S.length%3==1&&(v=v.substring(0,v.length-2)+"=="),v}function Ke(p,S){var v="";if(p&&(v=Hr.call(p)),p&&(v==="[object ArrayBuffer]"||p.buffer&&Hr.call(p.buffer)==="[object ArrayBuffer]")){var _,P=Tr;p instanceof ArrayBuffer?(_=p,P+=kr):(_=p.buffer,v==="[object Int8Array]"?P+=yt:v==="[object Uint8Array]"?P+=Dt:v==="[object Uint8ClampedArray]"?P+=Ot:v==="[object Int16Array]"?P+=ki:v==="[object Uint16Array]"?P+=jr:v==="[object Int32Array]"?P+=lr:v==="[object Uint32Array]"?P+=Br:v==="[object Float32Array]"?P+=Pi:v==="[object Float64Array]"?P+=$t:S(new Error("Failed to get type for BinaryArray"))),S(P+Je(_))}else if(v==="[object Blob]"){var T=new FileReader;T.onload=function(){var N=Dn+p.type+"~"+Je(this.result);S(Tr+Nt+N)},T.readAsArrayBuffer(p)}else try{S(JSON.stringify(p))}catch(N){console.error("Couldn't convert value into a JSON string: ",p),S(null,N)}}function zr(p){if(p.substring(0,Cr)!==Tr)return JSON.parse(p);var S=p.substring(Xt),v=p.substring(Cr,Xt),_;if(v===Nt&&Ci.test(S)){var P=S.match(Ci);_=P[1],S=S.substring(P[0].length)}var T=Ur(S);switch(v){case kr:return T;case Nt:return fe([T],{type:_});case yt:return new Int8Array(T);case Dt:return new Uint8Array(T);case Ot:return new Uint8ClampedArray(T);case ki:return new Int16Array(T);case jr:return new Uint16Array(T);case lr:return new Int32Array(T);case Br:return new Uint32Array(T);case Pi:return new Float32Array(T);case $t:return new Float64Array(T);default:throw new Error("Unkown type: "+v)}}var Vr={serialize:Ke,deserialize:zr,stringToBuffer:Ur,bufferToString:Je};function qr(p,S,v,_){p.executeSql("CREATE TABLE IF NOT EXISTS "+S.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],v,_)}function Ai(p){var S=this,v={db:null};if(p)for(var _ in p)v[_]=typeof p[_]!="string"?p[_].toString():p[_];var P=new z(function(T,N){try{v.db=openDatabase(v.name,String(v.version),v.description,v.size)}catch(U){return N(U)}v.db.transaction(function(U){qr(U,v,function(){S._dbInfo=v,T()},function(V,q){N(q)})},N)});return v.serializer=Vr,P}function rt(p,S,v,_,P,T){p.executeSql(v,_,P,function(N,U){U.code===U.SYNTAX_ERR?N.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[S.storeName],function(V,q){q.rows.length?T(V,U):qr(V,S,function(){V.executeSql(v,_,P,T)},T)},T):T(N,U)},T)}function Qt(p,S){var v=this;p=de(p);var _=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"SELECT * FROM "+N.storeName+" WHERE key = ? LIMIT 1",[p],function(V,q){var X=q.rows.length?q.rows.item(0).value:null;X&&(X=N.serializer.deserialize(X)),P(X)},function(V,q){T(q)})})}).catch(T)});return H(_,S),_}function Fn(p,S){var v=this,_=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"SELECT * FROM "+N.storeName,[],function(V,q){for(var X=q.rows,te=X.length,xe=0;xe0){N(Di.apply(P,[p,V,v,_-1]));return}U(xe)}})})}).catch(U)});return H(T,v),T}function Gr(p,S,v){return Di.apply(this,[p,S,v,1])}function Pr(p,S){var v=this;p=de(p);var _=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"DELETE FROM "+N.storeName+" WHERE key = ?",[p],function(){P()},function(V,q){T(q)})})}).catch(T)});return H(_,S),_}function Ln(p){var S=this,v=new z(function(_,P){S.ready().then(function(){var T=S._dbInfo;T.db.transaction(function(N){rt(N,T,"DELETE FROM "+T.storeName,[],function(){_()},function(U,V){P(V)})})}).catch(P)});return H(v,p),v}function Rn(p){var S=this,v=new z(function(_,P){S.ready().then(function(){var T=S._dbInfo;T.db.transaction(function(N){rt(N,T,"SELECT COUNT(key) as c FROM "+T.storeName,[],function(U,V){var q=V.rows.item(0).c;_(q)},function(U,V){P(V)})})}).catch(P)});return H(v,p),v}function In(p,S){var v=this,_=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"SELECT key FROM "+N.storeName+" WHERE id = ? LIMIT 1",[p+1],function(V,q){var X=q.rows.length?q.rows.item(0).key:null;P(X)},function(V,q){T(q)})})}).catch(T)});return H(_,S),_}function Fi(p){var S=this,v=new z(function(_,P){S.ready().then(function(){var T=S._dbInfo;T.db.transaction(function(N){rt(N,T,"SELECT key FROM "+T.storeName,[],function(U,V){for(var q=[],X=0;X '__WebKitDatabaseInfoTable__'",[],function(P,T){for(var N=[],U=0;U0}function Ar(p){var S=this,v={};if(p)for(var _ in p)v[_]=p[_];return v.keyPrefix=Wt(p,S._defaultConfig),Yr()?(S._dbInfo=v,v.serializer=Vr,z.resolve()):z.reject()}function Ii(p){var S=this,v=S.ready().then(function(){for(var _=S._dbInfo.keyPrefix,P=localStorage.length-1;P>=0;P--){var T=localStorage.key(P);T.indexOf(_)===0&&localStorage.removeItem(T)}});return H(v,p),v}function $n(p,S){var v=this;p=de(p);var _=v.ready().then(function(){var P=v._dbInfo,T=localStorage.getItem(P.keyPrefix+p);return T&&(T=P.serializer.deserialize(T)),T});return H(_,S),_}function ur(p,S){var v=this,_=v.ready().then(function(){for(var P=v._dbInfo,T=P.keyPrefix,N=T.length,U=localStorage.length,V=1,q=0;q=0;N--){var U=localStorage.key(N);U.indexOf(T)===0&&localStorage.removeItem(U)}}):P=z.reject("Invalid arguments"),H(P,S),P}var jn={_driver:"localStorageWrapper",_initStorage:Ar,_support:On(),iterate:ur,getItem:$n,setItem:Wn,removeItem:$i,clear:Ii,length:Oi,key:Mi,keys:Ni,dropInstance:Xr},Wi=function(S,v){return S===v||typeof S=="number"&&typeof v=="number"&&isNaN(S)&&isNaN(v)},Bn=function(S,v){for(var _=S.length,P=0;P<_;){if(Wi(S[P],v))return!0;P++}return!1},Qr=Array.isArray||function(p){return Object.prototype.toString.call(p)==="[object Array]"},Jt={},Dr={},jt={INDEXEDDB:or,WEBSQL:Li,LOCALSTORAGE:jn},Ze=[jt.INDEXEDDB._driver,jt.WEBSQL._driver,jt.LOCALSTORAGE._driver],_t=["dropInstance"],Kt=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(_t),Hn={description:"",driver:Ze.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function Un(p,S){p[S]=function(){var v=arguments;return p.ready().then(function(){return p[S].apply(p,v)})}}function cr(){for(var p=1;p{(function(l,t){"use strict";typeof nn=="object"&&typeof nn.exports=="object"?nn.exports=l.document?t(l,!0):function(r){if(!r.document)throw new Error("jQuery requires a window with a document");return t(r)}:t(l)})(typeof window!="undefined"?window:$s,function(l,t){"use strict";var r=[],a=Object.getPrototypeOf,u=r.slice,d=r.flat?function(e){return r.flat.call(e)}:function(e){return r.concat.apply([],e)},m=r.push,y=r.indexOf,b={},L=b.toString,W=b.hasOwnProperty,fe=W.toString,z=fe.call(Object),H={},G=function(i){return typeof i=="function"&&typeof i.nodeType!="number"&&typeof i.item!="function"},de=function(i){return i!=null&&i===i.window},K=l.document,ye={type:!0,src:!0,nonce:!0,noModule:!0};function Pe(e,i,n){n=n||K;var s,c,f=n.createElement("script");if(f.text=e,i)for(s in ye)c=i[s]||i.getAttribute&&i.getAttribute(s),c&&f.setAttribute(s,c);n.head.appendChild(f).parentNode.removeChild(f)}function be(e){return e==null?e+"":typeof e=="object"||typeof e=="function"?b[L.call(e)]||"object":typeof e}var _e="3.6.0",o=function(e,i){return new o.fn.init(e,i)};o.fn=o.prototype={jquery:_e,constructor:o,length:0,toArray:function(){return u.call(this)},get:function(e){return e==null?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var i=o.merge(this.constructor(),e);return i.prevObject=this,i},each:function(e){return o.each(this,e)},map:function(e){return this.pushStack(o.map(this,function(i,n){return e.call(i,n,i)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(o.grep(this,function(e,i){return(i+1)%2}))},odd:function(){return this.pushStack(o.grep(this,function(e,i){return i%2}))},eq:function(e){var i=this.length,n=+e+(e<0?i:0);return this.pushStack(n>=0&&n0&&i-1 in e}var ae=function(e){var i,n,s,c,f,h,w,E,k,R,j,F,I,ie,ve,ne,ze,Ue,ct,De="sizzle"+1*new Date,me=e.document,st=0,ke=0,je=Vi(),Zr=Vi(),Hi=Vi(),ft=Vi(),dr=function(g,x){return g===x&&(j=!0),0},hr={}.hasOwnProperty,ot=[],er=ot.pop,xt=ot.push,tr=ot.push,ds=ot.slice,pr=function(g,x){for(var C=0,M=g.length;C+~]|"+Ae+")"+Ae+"*"),jo=new RegExp(Ae+"|>"),Bo=new RegExp(Kn),Ho=new RegExp("^"+gr+"$"),zi={ID:new RegExp("^#("+gr+")"),CLASS:new RegExp("^\\.("+gr+")"),TAG:new RegExp("^("+gr+"|[*])"),ATTR:new RegExp("^"+hs),PSEUDO:new RegExp("^"+Kn),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+Ae+"*(even|odd|(([+-]|)(\\d*)n|)"+Ae+"*(?:([+-]|)"+Ae+"*(\\d+)|))"+Ae+"*\\)|)","i"),bool:new RegExp("^(?:"+Jn+")$","i"),needsContext:new RegExp("^"+Ae+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+Ae+"*((?:-\\d)?\\d*)"+Ae+"*\\)|)(?=[^-]|$)","i")},Uo=/HTML$/i,zo=/^(?:input|select|textarea|button)$/i,Vo=/^h\d$/i,ei=/^[^{]+\{\s*\[native \w/,qo=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Zn=/[+~]/,Bt=new RegExp("\\\\[\\da-fA-F]{1,6}"+Ae+"?|\\\\([^\\r\\n\\f])","g"),Ht=function(g,x){var C="0x"+g.slice(1)-65536;return x||(C<0?String.fromCharCode(C+65536):String.fromCharCode(C>>10|55296,C&1023|56320))},gs=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ms=function(g,x){return x?g==="\0"?"\uFFFD":g.slice(0,-1)+"\\"+g.charCodeAt(g.length-1).toString(16)+" ":"\\"+g},vs=function(){F()},Go=Gi(function(g){return g.disabled===!0&&g.nodeName.toLowerCase()==="fieldset"},{dir:"parentNode",next:"legend"});try{tr.apply(ot=ds.call(me.childNodes),me.childNodes),ot[me.childNodes.length].nodeType}catch(g){tr={apply:ot.length?function(x,C){xt.apply(x,ds.call(C))}:function(x,C){for(var M=x.length,A=0;x[M++]=C[A++];);x.length=M-1}}}function Le(g,x,C,M){var A,O,B,Q,J,ue,oe,he=x&&x.ownerDocument,we=x?x.nodeType:9;if(C=C||[],typeof g!="string"||!g||we!==1&&we!==9&&we!==11)return C;if(!M&&(F(x),x=x||I,ve)){if(we!==11&&(J=qo.exec(g)))if(A=J[1]){if(we===9)if(B=x.getElementById(A)){if(B.id===A)return C.push(B),C}else return C;else if(he&&(B=he.getElementById(A))&&ct(x,B)&&B.id===A)return C.push(B),C}else{if(J[2])return tr.apply(C,x.getElementsByTagName(g)),C;if((A=J[3])&&n.getElementsByClassName&&x.getElementsByClassName)return tr.apply(C,x.getElementsByClassName(A)),C}if(n.qsa&&!ft[g+" "]&&(!ne||!ne.test(g))&&(we!==1||x.nodeName.toLowerCase()!=="object")){if(oe=g,he=x,we===1&&(jo.test(g)||ps.test(g))){for(he=Zn.test(g)&&ta(x.parentNode)||x,(he!==x||!n.scope)&&((Q=x.getAttribute("id"))?Q=Q.replace(gs,ms):x.setAttribute("id",Q=De)),ue=h(g),O=ue.length;O--;)ue[O]=(Q?"#"+Q:":scope")+" "+qi(ue[O]);oe=ue.join(",")}try{return tr.apply(C,he.querySelectorAll(oe)),C}catch(Re){ft(g,!0)}finally{Q===De&&x.removeAttribute("id")}}}return E(g.replace(Ui,"$1"),x,C,M)}function Vi(){var g=[];function x(C,M){return g.push(C+" ")>s.cacheLength&&delete x[g.shift()],x[C+" "]=M}return x}function Tt(g){return g[De]=!0,g}function Ct(g){var x=I.createElement("fieldset");try{return!!g(x)}catch(C){return!1}finally{x.parentNode&&x.parentNode.removeChild(x),x=null}}function ea(g,x){for(var C=g.split("|"),M=C.length;M--;)s.attrHandle[C[M]]=x}function bs(g,x){var C=x&&g,M=C&&g.nodeType===1&&x.nodeType===1&&g.sourceIndex-x.sourceIndex;if(M)return M;if(C){for(;C=C.nextSibling;)if(C===x)return-1}return g?1:-1}function Yo(g){return function(x){var C=x.nodeName.toLowerCase();return C==="input"&&x.type===g}}function Xo(g){return function(x){var C=x.nodeName.toLowerCase();return(C==="input"||C==="button")&&x.type===g}}function ys(g){return function(x){return"form"in x?x.parentNode&&x.disabled===!1?"label"in x?"label"in x.parentNode?x.parentNode.disabled===g:x.disabled===g:x.isDisabled===g||x.isDisabled!==!g&&Go(x)===g:x.disabled===g:"label"in x?x.disabled===g:!1}}function mr(g){return Tt(function(x){return x=+x,Tt(function(C,M){for(var A,O=g([],C.length,x),B=O.length;B--;)C[A=O[B]]&&(C[A]=!(M[A]=C[A]))})})}function ta(g){return g&&typeof g.getElementsByTagName!="undefined"&&g}n=Le.support={},f=Le.isXML=function(g){var x=g&&g.namespaceURI,C=g&&(g.ownerDocument||g).documentElement;return!Uo.test(x||C&&C.nodeName||"HTML")},F=Le.setDocument=function(g){var x,C,M=g?g.ownerDocument||g:me;return M==I||M.nodeType!==9||!M.documentElement||(I=M,ie=I.documentElement,ve=!f(I),me!=I&&(C=I.defaultView)&&C.top!==C&&(C.addEventListener?C.addEventListener("unload",vs,!1):C.attachEvent&&C.attachEvent("onunload",vs)),n.scope=Ct(function(A){return ie.appendChild(A).appendChild(I.createElement("div")),typeof A.querySelectorAll!="undefined"&&!A.querySelectorAll(":scope fieldset div").length}),n.attributes=Ct(function(A){return A.className="i",!A.getAttribute("className")}),n.getElementsByTagName=Ct(function(A){return A.appendChild(I.createComment("")),!A.getElementsByTagName("*").length}),n.getElementsByClassName=ei.test(I.getElementsByClassName),n.getById=Ct(function(A){return ie.appendChild(A).id=De,!I.getElementsByName||!I.getElementsByName(De).length}),n.getById?(s.filter.ID=function(A){var O=A.replace(Bt,Ht);return function(B){return B.getAttribute("id")===O}},s.find.ID=function(A,O){if(typeof O.getElementById!="undefined"&&ve){var B=O.getElementById(A);return B?[B]:[]}}):(s.filter.ID=function(A){var O=A.replace(Bt,Ht);return function(B){var Q=typeof B.getAttributeNode!="undefined"&&B.getAttributeNode("id");return Q&&Q.value===O}},s.find.ID=function(A,O){if(typeof O.getElementById!="undefined"&&ve){var B,Q,J,ue=O.getElementById(A);if(ue){if(B=ue.getAttributeNode("id"),B&&B.value===A)return[ue];for(J=O.getElementsByName(A),Q=0;ue=J[Q++];)if(B=ue.getAttributeNode("id"),B&&B.value===A)return[ue]}return[]}}),s.find.TAG=n.getElementsByTagName?function(A,O){if(typeof O.getElementsByTagName!="undefined")return O.getElementsByTagName(A);if(n.qsa)return O.querySelectorAll(A)}:function(A,O){var B,Q=[],J=0,ue=O.getElementsByTagName(A);if(A==="*"){for(;B=ue[J++];)B.nodeType===1&&Q.push(B);return Q}return ue},s.find.CLASS=n.getElementsByClassName&&function(A,O){if(typeof O.getElementsByClassName!="undefined"&&ve)return O.getElementsByClassName(A)},ze=[],ne=[],(n.qsa=ei.test(I.querySelectorAll))&&(Ct(function(A){var O;ie.appendChild(A).innerHTML="",A.querySelectorAll("[msallowcapture^='']").length&&ne.push("[*^$]="+Ae+`*(?:''|"")`),A.querySelectorAll("[selected]").length||ne.push("\\["+Ae+"*(?:value|"+Jn+")"),A.querySelectorAll("[id~="+De+"-]").length||ne.push("~="),O=I.createElement("input"),O.setAttribute("name",""),A.appendChild(O),A.querySelectorAll("[name='']").length||ne.push("\\["+Ae+"*name"+Ae+"*="+Ae+`*(?:''|"")`),A.querySelectorAll(":checked").length||ne.push(":checked"),A.querySelectorAll("a#"+De+"+*").length||ne.push(".#.+[+~]"),A.querySelectorAll("\\\f"),ne.push("[\\r\\n\\f]")}),Ct(function(A){A.innerHTML="";var O=I.createElement("input");O.setAttribute("type","hidden"),A.appendChild(O).setAttribute("name","D"),A.querySelectorAll("[name=d]").length&&ne.push("name"+Ae+"*[*^$|!~]?="),A.querySelectorAll(":enabled").length!==2&&ne.push(":enabled",":disabled"),ie.appendChild(A).disabled=!0,A.querySelectorAll(":disabled").length!==2&&ne.push(":enabled",":disabled"),A.querySelectorAll("*,:x"),ne.push(",.*:")})),(n.matchesSelector=ei.test(Ue=ie.matches||ie.webkitMatchesSelector||ie.mozMatchesSelector||ie.oMatchesSelector||ie.msMatchesSelector))&&Ct(function(A){n.disconnectedMatch=Ue.call(A,"*"),Ue.call(A,"[s!='']:x"),ze.push("!=",Kn)}),ne=ne.length&&new RegExp(ne.join("|")),ze=ze.length&&new RegExp(ze.join("|")),x=ei.test(ie.compareDocumentPosition),ct=x||ei.test(ie.contains)?function(A,O){var B=A.nodeType===9?A.documentElement:A,Q=O&&O.parentNode;return A===Q||!!(Q&&Q.nodeType===1&&(B.contains?B.contains(Q):A.compareDocumentPosition&&A.compareDocumentPosition(Q)&16))}:function(A,O){if(O){for(;O=O.parentNode;)if(O===A)return!0}return!1},dr=x?function(A,O){if(A===O)return j=!0,0;var B=!A.compareDocumentPosition-!O.compareDocumentPosition;return B||(B=(A.ownerDocument||A)==(O.ownerDocument||O)?A.compareDocumentPosition(O):1,B&1||!n.sortDetached&&O.compareDocumentPosition(A)===B?A==I||A.ownerDocument==me&&ct(me,A)?-1:O==I||O.ownerDocument==me&&ct(me,O)?1:R?pr(R,A)-pr(R,O):0:B&4?-1:1)}:function(A,O){if(A===O)return j=!0,0;var B,Q=0,J=A.parentNode,ue=O.parentNode,oe=[A],he=[O];if(!J||!ue)return A==I?-1:O==I?1:J?-1:ue?1:R?pr(R,A)-pr(R,O):0;if(J===ue)return bs(A,O);for(B=A;B=B.parentNode;)oe.unshift(B);for(B=O;B=B.parentNode;)he.unshift(B);for(;oe[Q]===he[Q];)Q++;return Q?bs(oe[Q],he[Q]):oe[Q]==me?-1:he[Q]==me?1:0}),I},Le.matches=function(g,x){return Le(g,null,null,x)},Le.matchesSelector=function(g,x){if(F(g),n.matchesSelector&&ve&&!ft[x+" "]&&(!ze||!ze.test(x))&&(!ne||!ne.test(x)))try{var C=Ue.call(g,x);if(C||n.disconnectedMatch||g.document&&g.document.nodeType!==11)return C}catch(M){ft(x,!0)}return Le(x,I,null,[g]).length>0},Le.contains=function(g,x){return(g.ownerDocument||g)!=I&&F(g),ct(g,x)},Le.attr=function(g,x){(g.ownerDocument||g)!=I&&F(g);var C=s.attrHandle[x.toLowerCase()],M=C&&hr.call(s.attrHandle,x.toLowerCase())?C(g,x,!ve):void 0;return M!==void 0?M:n.attributes||!ve?g.getAttribute(x):(M=g.getAttributeNode(x))&&M.specified?M.value:null},Le.escape=function(g){return(g+"").replace(gs,ms)},Le.error=function(g){throw new Error("Syntax error, unrecognized expression: "+g)},Le.uniqueSort=function(g){var x,C=[],M=0,A=0;if(j=!n.detectDuplicates,R=!n.sortStable&&g.slice(0),g.sort(dr),j){for(;x=g[A++];)x===g[A]&&(M=C.push(A));for(;M--;)g.splice(C[M],1)}return R=null,g},c=Le.getText=function(g){var x,C="",M=0,A=g.nodeType;if(A){if(A===1||A===9||A===11){if(typeof g.textContent=="string")return g.textContent;for(g=g.firstChild;g;g=g.nextSibling)C+=c(g)}else if(A===3||A===4)return g.nodeValue}else for(;x=g[M++];)C+=c(x);return C},s=Le.selectors={cacheLength:50,createPseudo:Tt,match:zi,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(g){return g[1]=g[1].replace(Bt,Ht),g[3]=(g[3]||g[4]||g[5]||"").replace(Bt,Ht),g[2]==="~="&&(g[3]=" "+g[3]+" "),g.slice(0,4)},CHILD:function(g){return g[1]=g[1].toLowerCase(),g[1].slice(0,3)==="nth"?(g[3]||Le.error(g[0]),g[4]=+(g[4]?g[5]+(g[6]||1):2*(g[3]==="even"||g[3]==="odd")),g[5]=+(g[7]+g[8]||g[3]==="odd")):g[3]&&Le.error(g[0]),g},PSEUDO:function(g){var x,C=!g[6]&&g[2];return zi.CHILD.test(g[0])?null:(g[3]?g[2]=g[4]||g[5]||"":C&&Bo.test(C)&&(x=h(C,!0))&&(x=C.indexOf(")",C.length-x)-C.length)&&(g[0]=g[0].slice(0,x),g[2]=C.slice(0,x)),g.slice(0,3))}},filter:{TAG:function(g){var x=g.replace(Bt,Ht).toLowerCase();return g==="*"?function(){return!0}:function(C){return C.nodeName&&C.nodeName.toLowerCase()===x}},CLASS:function(g){var x=je[g+" "];return x||(x=new RegExp("(^|"+Ae+")"+g+"("+Ae+"|$)"))&&je(g,function(C){return x.test(typeof C.className=="string"&&C.className||typeof C.getAttribute!="undefined"&&C.getAttribute("class")||"")})},ATTR:function(g,x,C){return function(M){var A=Le.attr(M,g);return A==null?x==="!=":x?(A+="",x==="="?A===C:x==="!="?A!==C:x==="^="?C&&A.indexOf(C)===0:x==="*="?C&&A.indexOf(C)>-1:x==="$="?C&&A.slice(-C.length)===C:x==="~="?(" "+A.replace($o," ")+" ").indexOf(C)>-1:x==="|="?A===C||A.slice(0,C.length+1)===C+"-":!1):!0}},CHILD:function(g,x,C,M,A){var O=g.slice(0,3)!=="nth",B=g.slice(-4)!=="last",Q=x==="of-type";return M===1&&A===0?function(J){return!!J.parentNode}:function(J,ue,oe){var he,we,Re,ce,Ve,et,dt=O!==B?"nextSibling":"previousSibling",Ne=J.parentNode,ti=Q&&J.nodeName.toLowerCase(),ri=!oe&&!Q,ht=!1;if(Ne){if(O){for(;dt;){for(ce=J;ce=ce[dt];)if(Q?ce.nodeName.toLowerCase()===ti:ce.nodeType===1)return!1;et=dt=g==="only"&&!et&&"nextSibling"}return!0}if(et=[B?Ne.firstChild:Ne.lastChild],B&&ri){for(ce=Ne,Re=ce[De]||(ce[De]={}),we=Re[ce.uniqueID]||(Re[ce.uniqueID]={}),he=we[g]||[],Ve=he[0]===st&&he[1],ht=Ve&&he[2],ce=Ve&&Ne.childNodes[Ve];ce=++Ve&&ce&&ce[dt]||(ht=Ve=0)||et.pop();)if(ce.nodeType===1&&++ht&&ce===J){we[g]=[st,Ve,ht];break}}else if(ri&&(ce=J,Re=ce[De]||(ce[De]={}),we=Re[ce.uniqueID]||(Re[ce.uniqueID]={}),he=we[g]||[],Ve=he[0]===st&&he[1],ht=Ve),ht===!1)for(;(ce=++Ve&&ce&&ce[dt]||(ht=Ve=0)||et.pop())&&!((Q?ce.nodeName.toLowerCase()===ti:ce.nodeType===1)&&++ht&&(ri&&(Re=ce[De]||(ce[De]={}),we=Re[ce.uniqueID]||(Re[ce.uniqueID]={}),we[g]=[st,ht]),ce===J)););return ht-=A,ht===M||ht%M==0&&ht/M>=0}}},PSEUDO:function(g,x){var C,M=s.pseudos[g]||s.setFilters[g.toLowerCase()]||Le.error("unsupported pseudo: "+g);return M[De]?M(x):M.length>1?(C=[g,g,"",x],s.setFilters.hasOwnProperty(g.toLowerCase())?Tt(function(A,O){for(var B,Q=M(A,x),J=Q.length;J--;)B=pr(A,Q[J]),A[B]=!(O[B]=Q[J])}):function(A){return M(A,0,C)}):M}},pseudos:{not:Tt(function(g){var x=[],C=[],M=w(g.replace(Ui,"$1"));return M[De]?Tt(function(A,O,B,Q){for(var J,ue=M(A,null,Q,[]),oe=A.length;oe--;)(J=ue[oe])&&(A[oe]=!(O[oe]=J))}):function(A,O,B){return x[0]=A,M(x,null,B,C),x[0]=null,!C.pop()}}),has:Tt(function(g){return function(x){return Le(g,x).length>0}}),contains:Tt(function(g){return g=g.replace(Bt,Ht),function(x){return(x.textContent||c(x)).indexOf(g)>-1}}),lang:Tt(function(g){return Ho.test(g||"")||Le.error("unsupported lang: "+g),g=g.replace(Bt,Ht).toLowerCase(),function(x){var C;do if(C=ve?x.lang:x.getAttribute("xml:lang")||x.getAttribute("lang"))return C=C.toLowerCase(),C===g||C.indexOf(g+"-")===0;while((x=x.parentNode)&&x.nodeType===1);return!1}}),target:function(g){var x=e.location&&e.location.hash;return x&&x.slice(1)===g.id},root:function(g){return g===ie},focus:function(g){return g===I.activeElement&&(!I.hasFocus||I.hasFocus())&&!!(g.type||g.href||~g.tabIndex)},enabled:ys(!1),disabled:ys(!0),checked:function(g){var x=g.nodeName.toLowerCase();return x==="input"&&!!g.checked||x==="option"&&!!g.selected},selected:function(g){return g.parentNode&&g.parentNode.selectedIndex,g.selected===!0},empty:function(g){for(g=g.firstChild;g;g=g.nextSibling)if(g.nodeType<6)return!1;return!0},parent:function(g){return!s.pseudos.empty(g)},header:function(g){return Vo.test(g.nodeName)},input:function(g){return zo.test(g.nodeName)},button:function(g){var x=g.nodeName.toLowerCase();return x==="input"&&g.type==="button"||x==="button"},text:function(g){var x;return g.nodeName.toLowerCase()==="input"&&g.type==="text"&&((x=g.getAttribute("type"))==null||x.toLowerCase()==="text")},first:mr(function(){return[0]}),last:mr(function(g,x){return[x-1]}),eq:mr(function(g,x,C){return[C<0?C+x:C]}),even:mr(function(g,x){for(var C=0;Cx?x:C;--M>=0;)g.push(M);return g}),gt:mr(function(g,x,C){for(var M=C<0?C+x:C;++M1?function(x,C,M){for(var A=g.length;A--;)if(!g[A](x,C,M))return!1;return!0}:g[0]}function Qo(g,x,C){for(var M=0,A=x.length;M-1&&(B[oe]=!(Q[oe]=we))}}else Ne=Yi(Ne===Q?Ne.splice(Ve,Ne.length):Ne),A?A(null,Q,Ne,ue):tr.apply(Q,Ne)})}function na(g){for(var x,C,M,A=g.length,O=s.relative[g[0].type],B=O||s.relative[" "],Q=O?1:0,J=Gi(function(he){return he===x},B,!0),ue=Gi(function(he){return pr(x,he)>-1},B,!0),oe=[function(he,we,Re){var ce=!O&&(Re||we!==k)||((x=we).nodeType?J(he,we,Re):ue(he,we,Re));return x=null,ce}];Q1&&ra(oe),Q>1&&qi(g.slice(0,Q-1).concat({value:g[Q-2].type===" "?"*":""})).replace(Ui,"$1"),C,Q0,M=g.length>0,A=function(O,B,Q,J,ue){var oe,he,we,Re=0,ce="0",Ve=O&&[],et=[],dt=k,Ne=O||M&&s.find.TAG("*",ue),ti=st+=dt==null?1:Math.random()||.1,ri=Ne.length;for(ue&&(k=B==I||B||ue);ce!==ri&&(oe=Ne[ce])!=null;ce++){if(M&&oe){for(he=0,!B&&oe.ownerDocument!=I&&(F(oe),Q=!ve);we=g[he++];)if(we(oe,B||I,Q)){J.push(oe);break}ue&&(st=ti)}C&&((oe=!we&&oe)&&Re--,O&&Ve.push(oe))}if(Re+=ce,C&&ce!==Re){for(he=0;we=x[he++];)we(Ve,et,B,Q);if(O){if(Re>0)for(;ce--;)Ve[ce]||et[ce]||(et[ce]=er.call(J));et=Yi(et)}tr.apply(J,et),ue&&!O&&et.length>0&&Re+x.length>1&&Le.uniqueSort(J)}return ue&&(st=ti,k=dt),Ve};return C?Tt(A):A}return w=Le.compile=function(g,x){var C,M=[],A=[],O=Hi[g+" "];if(!O){for(x||(x=h(g)),C=x.length;C--;)O=na(x[C]),O[De]?M.push(O):A.push(O);O=Hi(g,Jo(A,M)),O.selector=g}return O},E=Le.select=function(g,x,C,M){var A,O,B,Q,J,ue=typeof g=="function"&&g,oe=!M&&h(g=ue.selector||g);if(C=C||[],oe.length===1){if(O=oe[0]=oe[0].slice(0),O.length>2&&(B=O[0]).type==="ID"&&x.nodeType===9&&ve&&s.relative[O[1].type]){if(x=(s.find.ID(B.matches[0].replace(Bt,Ht),x)||[])[0],x)ue&&(x=x.parentNode);else return C;g=g.slice(O.shift().value.length)}for(A=zi.needsContext.test(g)?0:O.length;A--&&(B=O[A],!s.relative[Q=B.type]);)if((J=s.find[Q])&&(M=J(B.matches[0].replace(Bt,Ht),Zn.test(O[0].type)&&ta(x.parentNode)||x))){if(O.splice(A,1),g=M.length&&qi(O),!g)return tr.apply(C,M),C;break}}return(ue||w(g,oe))(M,x,!ve,C,!x||Zn.test(g)&&ta(x.parentNode)||x),C},n.sortStable=De.split("").sort(dr).join("")===De,n.detectDuplicates=!!j,F(),n.sortDetached=Ct(function(g){return g.compareDocumentPosition(I.createElement("fieldset"))&1}),Ct(function(g){return g.innerHTML="",g.firstChild.getAttribute("href")==="#"})||ea("type|href|height|width",function(g,x,C){if(!C)return g.getAttribute(x,x.toLowerCase()==="type"?1:2)}),(!n.attributes||!Ct(function(g){return g.innerHTML="",g.firstChild.setAttribute("value",""),g.firstChild.getAttribute("value")===""}))&&ea("value",function(g,x,C){if(!C&&g.nodeName.toLowerCase()==="input")return g.defaultValue}),Ct(function(g){return g.getAttribute("disabled")==null})||ea(Jn,function(g,x,C){var M;if(!C)return g[x]===!0?x.toLowerCase():(M=g.getAttributeNode(x))&&M.specified?M.value:null}),Le}(l);o.find=ae,o.expr=ae.selectors,o.expr[":"]=o.expr.pseudos,o.uniqueSort=o.unique=ae.uniqueSort,o.text=ae.getText,o.isXMLDoc=ae.isXML,o.contains=ae.contains,o.escapeSelector=ae.escape;var se=function(e,i,n){for(var s=[],c=n!==void 0;(e=e[i])&&e.nodeType!==9;)if(e.nodeType===1){if(c&&o(e).is(n))break;s.push(e)}return s},Te=function(e,i){for(var n=[];e;e=e.nextSibling)e.nodeType===1&&e!==i&&n.push(e);return n},He=o.expr.match.needsContext;function Ie(e,i){return e.nodeName&&e.nodeName.toLowerCase()===i.toLowerCase()}var tt=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Xe(e,i,n){return G(i)?o.grep(e,function(s,c){return!!i.call(s,c,s)!==n}):i.nodeType?o.grep(e,function(s){return s===i!==n}):typeof i!="string"?o.grep(e,function(s){return y.call(i,s)>-1!==n}):o.filter(i,e,n)}o.filter=function(e,i,n){var s=i[0];return n&&(e=":not("+e+")"),i.length===1&&s.nodeType===1?o.find.matchesSelector(s,e)?[s]:[]:o.find.matches(e,o.grep(i,function(c){return c.nodeType===1}))},o.fn.extend({find:function(e){var i,n,s=this.length,c=this;if(typeof e!="string")return this.pushStack(o(e).filter(function(){for(i=0;i1?o.uniqueSort(n):n},filter:function(e){return this.pushStack(Xe(this,e||[],!1))},not:function(e){return this.pushStack(Xe(this,e||[],!0))},is:function(e){return!!Xe(this,typeof e=="string"&&He.test(e)?o(e):e||[],!1).length}});var mt,nr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Sr=o.fn.init=function(e,i,n){var s,c;if(!e)return this;if(n=n||mt,typeof e=="string")if(e[0]==="<"&&e[e.length-1]===">"&&e.length>=3?s=[null,e,null]:s=nr.exec(e),s&&(s[1]||!i))if(s[1]){if(i=i instanceof o?i[0]:i,o.merge(this,o.parseHTML(s[1],i&&i.nodeType?i.ownerDocument||i:K,!0)),tt.test(s[1])&&o.isPlainObject(i))for(s in i)G(this[s])?this[s](i[s]):this.attr(s,i[s]);return this}else return c=K.getElementById(s[2]),c&&(this[0]=c,this.length=1),this;else return!i||i.jquery?(i||n).find(e):this.constructor(i).find(e);else{if(e.nodeType)return this[0]=e,this.length=1,this;if(G(e))return n.ready!==void 0?n.ready(e):e(o)}return o.makeArray(e,this)};Sr.prototype=o.fn,mt=o(K);var Or=/^(?:parents|prev(?:Until|All))/,Yt={children:!0,contents:!0,next:!0,prev:!0};o.fn.extend({has:function(e){var i=o(e,this),n=i.length;return this.filter(function(){for(var s=0;s-1:n.nodeType===1&&o.find.matchesSelector(n,e))){f.push(n);break}}return this.pushStack(f.length>1?o.uniqueSort(f):f)},index:function(e){return e?typeof e=="string"?y.call(o(e),this[0]):y.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,i){return this.pushStack(o.uniqueSort(o.merge(this.get(),o(e,i))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function $r(e,i){for(;(e=e[i])&&e.nodeType!==1;);return e}o.each({parent:function(e){var i=e.parentNode;return i&&i.nodeType!==11?i:null},parents:function(e){return se(e,"parentNode")},parentsUntil:function(e,i,n){return se(e,"parentNode",n)},next:function(e){return $r(e,"nextSibling")},prev:function(e){return $r(e,"previousSibling")},nextAll:function(e){return se(e,"nextSibling")},prevAll:function(e){return se(e,"previousSibling")},nextUntil:function(e,i,n){return se(e,"nextSibling",n)},prevUntil:function(e,i,n){return se(e,"previousSibling",n)},siblings:function(e){return Te((e.parentNode||{}).firstChild,e)},children:function(e){return Te(e.firstChild)},contents:function(e){return e.contentDocument!=null&&a(e.contentDocument)?e.contentDocument:(Ie(e,"template")&&(e=e.content||e),o.merge([],e.childNodes))}},function(e,i){o.fn[e]=function(n,s){var c=o.map(this,i,n);return e.slice(-5)!=="Until"&&(s=n),s&&typeof s=="string"&&(c=o.filter(s,c)),this.length>1&&(Yt[e]||o.uniqueSort(c),Or.test(e)&&c.reverse()),this.pushStack(c)}});var vt=/[^\x20\t\r\n\f]+/g;function Tn(e){var i={};return o.each(e.match(vt)||[],function(n,s){i[s]=!0}),i}o.Callbacks=function(e){e=typeof e=="string"?Tn(e):o.extend({},e);var i,n,s,c,f=[],h=[],w=-1,E=function(){for(c=c||e.once,s=i=!0;h.length;w=-1)for(n=h.shift();++w-1;)f.splice(F,1),F<=w&&w--}),this},has:function(R){return R?o.inArray(R,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return c=h=[],f=n="",this},disabled:function(){return!f},lock:function(){return c=h=[],!n&&!i&&(f=n=""),this},locked:function(){return!!c},fireWith:function(R,j){return c||(j=j||[],j=[R,j.slice?j.slice():j],h.push(j),i||E()),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!s}};return k};function Qe(e){return e}function ar(e){throw e}function Ti(e,i,n,s){var c;try{e&&G(c=e.promise)?c.call(e).done(i).fail(n):e&&G(c=e.then)?c.call(e,i,n):i.apply(void 0,[e].slice(s))}catch(f){n.apply(void 0,[f])}}o.extend({Deferred:function(e){var i=[["notify","progress",o.Callbacks("memory"),o.Callbacks("memory"),2],["resolve","done",o.Callbacks("once memory"),o.Callbacks("once memory"),0,"resolved"],["reject","fail",o.Callbacks("once memory"),o.Callbacks("once memory"),1,"rejected"]],n="pending",s={state:function(){return n},always:function(){return c.done(arguments).fail(arguments),this},catch:function(f){return s.then(null,f)},pipe:function(){var f=arguments;return o.Deferred(function(h){o.each(i,function(w,E){var k=G(f[E[4]])&&f[E[4]];c[E[1]](function(){var R=k&&k.apply(this,arguments);R&&G(R.promise)?R.promise().progress(h.notify).done(h.resolve).fail(h.reject):h[E[0]+"With"](this,k?[R]:arguments)})}),f=null}).promise()},then:function(f,h,w){var E=0;function k(R,j,F,I){return function(){var ie=this,ve=arguments,ne=function(){var Ue,ct;if(!(R=E&&(F!==ar&&(ie=void 0,ve=[Ue]),j.rejectWith(ie,ve))}};R?ze():(o.Deferred.getStackHook&&(ze.stackTrace=o.Deferred.getStackHook()),l.setTimeout(ze))}}return o.Deferred(function(R){i[0][3].add(k(0,R,G(w)?w:Qe,R.notifyWith)),i[1][3].add(k(0,R,G(f)?f:Qe)),i[2][3].add(k(0,R,G(h)?h:ar))}).promise()},promise:function(f){return f!=null?o.extend(f,s):s}},c={};return o.each(i,function(f,h){var w=h[2],E=h[5];s[h[1]]=w.add,E&&w.add(function(){n=E},i[3-f][2].disable,i[3-f][3].disable,i[0][2].lock,i[0][3].lock),w.add(h[3].fire),c[h[0]]=function(){return c[h[0]+"With"](this===c?void 0:this,arguments),this},c[h[0]+"With"]=w.fireWith}),s.promise(c),e&&e.call(c,c),c},when:function(e){var i=arguments.length,n=i,s=Array(n),c=u.call(arguments),f=o.Deferred(),h=function(w){return function(E){s[w]=this,c[w]=arguments.length>1?u.call(arguments):E,--i||f.resolveWith(s,c)}};if(i<=1&&(Ti(e,f.done(h(n)).resolve,f.reject,!i),f.state()==="pending"||G(c[n]&&c[n].then)))return f.then();for(;n--;)Ti(c[n],h(n),f.reject);return f.promise()}});var Cn=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;o.Deferred.exceptionHook=function(e,i){l.console&&l.console.warn&&e&&Cn.test(e.name)&&l.console.warn("jQuery.Deferred exception: "+e.message,e.stack,i)},o.readyException=function(e){l.setTimeout(function(){throw e})};var Wr=o.Deferred();o.fn.ready=function(e){return Wr.then(e).catch(function(i){o.readyException(i)}),this},o.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--o.readyWait:o.isReady)||(o.isReady=!0,!(e!==!0&&--o.readyWait>0)&&Wr.resolveWith(K,[o]))}}),o.ready.then=Wr.then;function _r(){K.removeEventListener("DOMContentLoaded",_r),l.removeEventListener("load",_r),o.ready()}K.readyState==="complete"||K.readyState!=="loading"&&!K.documentElement.doScroll?l.setTimeout(o.ready):(K.addEventListener("DOMContentLoaded",_r),l.addEventListener("load",_r));var St=function(e,i,n,s,c,f,h){var w=0,E=e.length,k=n==null;if(be(n)==="object"){c=!0;for(w in n)St(e,i,w,n[w],!0,f,h)}else if(s!==void 0&&(c=!0,G(s)||(h=!0),k&&(h?(i.call(e,s),i=null):(k=i,i=function(R,j,F){return k.call(o(R),F)})),i))for(;w1,null,!0)},removeData:function(e){return this.each(function(){$e.remove(this,e)})}}),o.extend({queue:function(e,i,n){var s;if(e)return i=(i||"fx")+"queue",s=le.get(e,i),n&&(!s||Array.isArray(n)?s=le.access(e,i,o.makeArray(n)):s.push(n)),s||[]},dequeue:function(e,i){i=i||"fx";var n=o.queue(e,i),s=n.length,c=n.shift(),f=o._queueHooks(e,i),h=function(){o.dequeue(e,i)};c==="inprogress"&&(c=n.shift(),s--),c&&(i==="fx"&&n.unshift("inprogress"),delete f.stop,c.call(e,h,f)),!s&&f&&f.empty.fire()},_queueHooks:function(e,i){var n=i+"queueHooks";return le.get(e,n)||le.access(e,n,{empty:o.Callbacks("once memory").add(function(){le.remove(e,[i+"queue",n])})})}}),o.fn.extend({queue:function(e,i){var n=2;return typeof e!="string"&&(i=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,Ur=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=K.createDocumentFragment(),i=e.appendChild(K.createElement("div")),n=K.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),i.appendChild(n),H.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,i.innerHTML="",H.noCloneChecked=!!i.cloneNode(!0).lastChild.defaultValue,i.innerHTML="",H.option=!!i.lastChild})();var Je={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td,H.option||(Je.optgroup=Je.option=[1,""]);function Ke(e,i){var n;return typeof e.getElementsByTagName!="undefined"?n=e.getElementsByTagName(i||"*"):typeof e.querySelectorAll!="undefined"?n=e.querySelectorAll(i||"*"):n=[],i===void 0||i&&Ie(e,i)?o.merge([e],n):n}function zr(e,i){for(var n=0,s=e.length;n-1){c&&c.push(f);continue}if(k=Ot(f),h=Ke(j.appendChild(f),"script"),k&&zr(h),n)for(R=0;f=h[R++];)Ur.test(f.type||"")&&n.push(f)}return j}var Ai=/^([^.]*)(?:\.(.+)|)/;function rt(){return!0}function Qt(){return!1}function Fn(e,i){return e===Di()==(i==="focus")}function Di(){try{return K.activeElement}catch(e){}}function Gr(e,i,n,s,c,f){var h,w;if(typeof i=="object"){typeof n!="string"&&(s=s||n,n=void 0);for(w in i)Gr(e,w,n,s,i[w],f);return e}if(s==null&&c==null?(c=n,s=n=void 0):c==null&&(typeof n=="string"?(c=s,s=void 0):(c=s,s=n,n=void 0)),c===!1)c=Qt;else if(!c)return e;return f===1&&(h=c,c=function(E){return o().off(E),h.apply(this,arguments)},c.guid=h.guid||(h.guid=o.guid++)),e.each(function(){o.event.add(this,i,c,s,n)})}o.event={global:{},add:function(e,i,n,s,c){var f,h,w,E,k,R,j,F,I,ie,ve,ne=le.get(e);if(!!sr(e))for(n.handler&&(f=n,n=f.handler,c=f.selector),c&&o.find.matchesSelector(Dt,c),n.guid||(n.guid=o.guid++),(E=ne.events)||(E=ne.events=Object.create(null)),(h=ne.handle)||(h=ne.handle=function(ze){return typeof o!="undefined"&&o.event.triggered!==ze.type?o.event.dispatch.apply(e,arguments):void 0}),i=(i||"").match(vt)||[""],k=i.length;k--;)w=Ai.exec(i[k])||[],I=ve=w[1],ie=(w[2]||"").split(".").sort(),!!I&&(j=o.event.special[I]||{},I=(c?j.delegateType:j.bindType)||I,j=o.event.special[I]||{},R=o.extend({type:I,origType:ve,data:s,handler:n,guid:n.guid,selector:c,needsContext:c&&o.expr.match.needsContext.test(c),namespace:ie.join(".")},f),(F=E[I])||(F=E[I]=[],F.delegateCount=0,(!j.setup||j.setup.call(e,s,ie,h)===!1)&&e.addEventListener&&e.addEventListener(I,h)),j.add&&(j.add.call(e,R),R.handler.guid||(R.handler.guid=n.guid)),c?F.splice(F.delegateCount++,0,R):F.push(R),o.event.global[I]=!0)},remove:function(e,i,n,s,c){var f,h,w,E,k,R,j,F,I,ie,ve,ne=le.hasData(e)&&le.get(e);if(!(!ne||!(E=ne.events))){for(i=(i||"").match(vt)||[""],k=i.length;k--;){if(w=Ai.exec(i[k])||[],I=ve=w[1],ie=(w[2]||"").split(".").sort(),!I){for(I in E)o.event.remove(e,I+i[k],n,s,!0);continue}for(j=o.event.special[I]||{},I=(s?j.delegateType:j.bindType)||I,F=E[I]||[],w=w[2]&&new RegExp("(^|\\.)"+ie.join("\\.(?:.*\\.|)")+"(\\.|$)"),h=f=F.length;f--;)R=F[f],(c||ve===R.origType)&&(!n||n.guid===R.guid)&&(!w||w.test(R.namespace))&&(!s||s===R.selector||s==="**"&&R.selector)&&(F.splice(f,1),R.selector&&F.delegateCount--,j.remove&&j.remove.call(e,R));h&&!F.length&&((!j.teardown||j.teardown.call(e,ie,ne.handle)===!1)&&o.removeEvent(e,I,ne.handle),delete E[I])}o.isEmptyObject(E)&&le.remove(e,"handle events")}},dispatch:function(e){var i,n,s,c,f,h,w=new Array(arguments.length),E=o.event.fix(e),k=(le.get(this,"events")||Object.create(null))[E.type]||[],R=o.event.special[E.type]||{};for(w[0]=E,i=1;i=1)){for(;k!==this;k=k.parentNode||this)if(k.nodeType===1&&!(e.type==="click"&&k.disabled===!0)){for(f=[],h={},n=0;n-1:o.find(c,this,null,[k]).length),h[c]&&f.push(s);f.length&&w.push({elem:k,handlers:f})}}return k=this,E\s*$/g;function Fi(e,i){return Ie(e,"table")&&Ie(i.nodeType!==11?i:i.firstChild,"tr")&&o(e).children("tbody")[0]||e}function Mn(e){return e.type=(e.getAttribute("type")!==null)+"/"+e.type,e}function Nn(e){return(e.type||"").slice(0,5)==="true/"?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Li(e,i){var n,s,c,f,h,w,E;if(i.nodeType===1){if(le.hasData(e)&&(f=le.get(e),E=f.events,E)){le.remove(i,"handle events");for(c in E)for(n=0,s=E[c].length;n1&&typeof I=="string"&&!H.checkClone&&Rn.test(I))return e.each(function(ve){var ne=e.eq(ve);ie&&(i[0]=I.call(this,ve,ne.html())),Wt(ne,i,n,s)});if(j&&(c=qr(i,e[0].ownerDocument,!1,e,s),f=c.firstChild,c.childNodes.length===1&&(c=f),f||s)){for(h=o.map(Ke(c,"script"),Mn),w=h.length;R0&&zr(h,!E&&Ke(e,"script")),w},cleanData:function(e){for(var i,n,s,c=o.event.special,f=0;(n=e[f])!==void 0;f++)if(sr(n)){if(i=n[le.expando]){if(i.events)for(s in i.events)c[s]?o.event.remove(n,s):o.removeEvent(n,s,i.handle);n[le.expando]=void 0}n[$e.expando]&&(n[$e.expando]=void 0)}}}),o.fn.extend({detach:function(e){return Ri(this,e,!0)},remove:function(e){return Ri(this,e)},text:function(e){return St(this,function(i){return i===void 0?o.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=i)})},null,e,arguments.length)},append:function(){return Wt(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=Fi(this,e);i.appendChild(e)}})},prepend:function(){return Wt(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=Fi(this,e);i.insertBefore(e,i.firstChild)}})},before:function(){return Wt(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Wt(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,i=0;(e=this[i])!=null;i++)e.nodeType===1&&(o.cleanData(Ke(e,!1)),e.textContent="");return this},clone:function(e,i){return e=e==null?!1:e,i=i==null?e:i,this.map(function(){return o.clone(this,e,i)})},html:function(e){return St(this,function(i){var n=this[0]||{},s=0,c=this.length;if(i===void 0&&n.nodeType===1)return n.innerHTML;if(typeof i=="string"&&!Ln.test(i)&&!Je[(Hr.exec(i)||["",""])[1].toLowerCase()]){i=o.htmlPrefilter(i);try{for(;s=0&&(E+=Math.max(0,Math.ceil(e["offset"+i[0].toUpperCase()+i.slice(1)]-f-E-w-.5))||0),E}function jt(e,i,n){var s=Ar(e),c=!H.boxSizingReliable()||n,f=c&&o.css(e,"boxSizing",!1,s)==="border-box",h=f,w=ur(e,i,s),E="offset"+i[0].toUpperCase()+i.slice(1);if(Yr.test(w)){if(!n)return w;w="auto"}return(!H.boxSizingReliable()&&f||!H.reliableTrDimensions()&&Ie(e,"tr")||w==="auto"||!parseFloat(w)&&o.css(e,"display",!1,s)==="inline")&&e.getClientRects().length&&(f=o.css(e,"boxSizing",!1,s)==="border-box",h=E in e,h&&(w=e[E])),w=parseFloat(w)||0,w+Dr(e,i,n||(f?"border":"content"),h,s,w)+"px"}o.extend({cssHooks:{opacity:{get:function(e,i){if(i){var n=ur(e,"opacity");return n===""?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,i,n,s){if(!(!e||e.nodeType===3||e.nodeType===8||!e.style)){var c,f,h,w=bt(i),E=Wi.test(i),k=e.style;if(E||(i=Xr(w)),h=o.cssHooks[i]||o.cssHooks[w],n!==void 0){if(f=typeof n,f==="string"&&(c=Nt.exec(n))&&c[1]&&(n=jr(e,i,c),f="number"),n==null||n!==n)return;f==="number"&&!E&&(n+=c&&c[3]||(o.cssNumber[w]?"":"px")),!H.clearCloneStyle&&n===""&&i.indexOf("background")===0&&(k[i]="inherit"),(!h||!("set"in h)||(n=h.set(e,n,s))!==void 0)&&(E?k.setProperty(i,n):k[i]=n)}else return h&&"get"in h&&(c=h.get(e,!1,s))!==void 0?c:k[i]}},css:function(e,i,n,s){var c,f,h,w=bt(i),E=Wi.test(i);return E||(i=Xr(w)),h=o.cssHooks[i]||o.cssHooks[w],h&&"get"in h&&(c=h.get(e,!0,n)),c===void 0&&(c=ur(e,i,s)),c==="normal"&&i in Qr&&(c=Qr[i]),n===""||n?(f=parseFloat(c),n===!0||isFinite(f)?f||0:c):c}}),o.each(["height","width"],function(e,i){o.cssHooks[i]={get:function(n,s,c){if(s)return jn.test(o.css(n,"display"))&&(!n.getClientRects().length||!n.getBoundingClientRect().width)?Ii(n,Bn,function(){return jt(n,i,c)}):jt(n,i,c)},set:function(n,s,c){var f,h=Ar(n),w=!H.scrollboxSize()&&h.position==="absolute",E=w||c,k=E&&o.css(n,"boxSizing",!1,h)==="border-box",R=c?Dr(n,i,c,k,h):0;return k&&w&&(R-=Math.ceil(n["offset"+i[0].toUpperCase()+i.slice(1)]-parseFloat(h[i])-Dr(n,i,"border",!1,h)-.5)),R&&(f=Nt.exec(s))&&(f[3]||"px")!=="px"&&(n.style[i]=s,s=o.css(n,i)),Jt(n,s,R)}}}),o.cssHooks.marginLeft=Mi(H.reliableMarginLeft,function(e,i){if(i)return(parseFloat(ur(e,"marginLeft"))||e.getBoundingClientRect().left-Ii(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),o.each({margin:"",padding:"",border:"Width"},function(e,i){o.cssHooks[e+i]={expand:function(n){for(var s=0,c={},f=typeof n=="string"?n.split(" "):[n];s<4;s++)c[e+yt[s]+i]=f[s]||f[s-2]||f[0];return c}},e!=="margin"&&(o.cssHooks[e+i].set=Jt)}),o.fn.extend({css:function(e,i){return St(this,function(n,s,c){var f,h,w={},E=0;if(Array.isArray(s)){for(f=Ar(n),h=s.length;E1)}});function Ze(e,i,n,s,c){return new Ze.prototype.init(e,i,n,s,c)}o.Tween=Ze,Ze.prototype={constructor:Ze,init:function(e,i,n,s,c,f){this.elem=e,this.prop=n,this.easing=c||o.easing._default,this.options=i,this.start=this.now=this.cur(),this.end=s,this.unit=f||(o.cssNumber[n]?"":"px")},cur:function(){var e=Ze.propHooks[this.prop];return e&&e.get?e.get(this):Ze.propHooks._default.get(this)},run:function(e){var i,n=Ze.propHooks[this.prop];return this.options.duration?this.pos=i=o.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=i=e,this.now=(this.end-this.start)*i+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ze.propHooks._default.set(this),this}},Ze.prototype.init.prototype=Ze.prototype,Ze.propHooks={_default:{get:function(e){var i;return e.elem.nodeType!==1||e.elem[e.prop]!=null&&e.elem.style[e.prop]==null?e.elem[e.prop]:(i=o.css(e.elem,e.prop,""),!i||i==="auto"?0:i)},set:function(e){o.fx.step[e.prop]?o.fx.step[e.prop](e):e.elem.nodeType===1&&(o.cssHooks[e.prop]||e.elem.style[Xr(e.prop)]!=null)?o.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ze.propHooks.scrollTop=Ze.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},o.easing={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},_default:"swing"},o.fx=Ze.prototype.init,o.fx.step={};var _t,Kt,Hn=/^(?:toggle|show|hide)$/,Un=/queueHooks$/;function cr(){Kt&&(K.hidden===!1&&l.requestAnimationFrame?l.requestAnimationFrame(cr):l.setTimeout(cr,o.fx.interval),o.fx.tick())}function ji(){return l.setTimeout(function(){_t=void 0}),_t=Date.now()}function Fr(e,i){var n,s=0,c={height:e};for(i=i?1:0;s<4;s+=2-i)n=yt[s],c["margin"+n]=c["padding"+n]=e;return i&&(c.opacity=c.width=e),c}function p(e,i,n){for(var s,c=(_.tweeners[i]||[]).concat(_.tweeners["*"]),f=0,h=c.length;f1)},removeAttr:function(e){return this.each(function(){o.removeAttr(this,e)})}}),o.extend({attr:function(e,i,n){var s,c,f=e.nodeType;if(!(f===3||f===8||f===2)){if(typeof e.getAttribute=="undefined")return o.prop(e,i,n);if((f!==1||!o.isXMLDoc(e))&&(c=o.attrHooks[i.toLowerCase()]||(o.expr.match.bool.test(i)?P:void 0)),n!==void 0){if(n===null){o.removeAttr(e,i);return}return c&&"set"in c&&(s=c.set(e,n,i))!==void 0?s:(e.setAttribute(i,n+""),n)}return c&&"get"in c&&(s=c.get(e,i))!==null?s:(s=o.find.attr(e,i),s==null?void 0:s)}},attrHooks:{type:{set:function(e,i){if(!H.radioValue&&i==="radio"&&Ie(e,"input")){var n=e.value;return e.setAttribute("type",i),n&&(e.value=n),i}}}},removeAttr:function(e,i){var n,s=0,c=i&&i.match(vt);if(c&&e.nodeType===1)for(;n=c[s++];)e.removeAttribute(n)}}),P={set:function(e,i,n){return i===!1?o.removeAttr(e,n):e.setAttribute(n,n),n}},o.each(o.expr.match.bool.source.match(/\w+/g),function(e,i){var n=T[i]||o.find.attr;T[i]=function(s,c,f){var h,w,E=c.toLowerCase();return f||(w=T[E],T[E]=h,h=n(s,c,f)!=null?E:null,T[E]=w),h}});var N=/^(?:input|select|textarea|button)$/i,U=/^(?:a|area)$/i;o.fn.extend({prop:function(e,i){return St(this,o.prop,e,i,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[o.propFix[e]||e]})}}),o.extend({prop:function(e,i,n){var s,c,f=e.nodeType;if(!(f===3||f===8||f===2))return(f!==1||!o.isXMLDoc(e))&&(i=o.propFix[i]||i,c=o.propHooks[i]),n!==void 0?c&&"set"in c&&(s=c.set(e,n,i))!==void 0?s:e[i]=n:c&&"get"in c&&(s=c.get(e,i))!==null?s:e[i]},propHooks:{tabIndex:{get:function(e){var i=o.find.attr(e,"tabindex");return i?parseInt(i,10):N.test(e.nodeName)||U.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),H.optSelected||(o.propHooks.selected={get:function(e){var i=e.parentNode;return i&&i.parentNode&&i.parentNode.selectedIndex,null},set:function(e){var i=e.parentNode;i&&(i.selectedIndex,i.parentNode&&i.parentNode.selectedIndex)}}),o.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){o.propFix[this.toLowerCase()]=this});function V(e){var i=e.match(vt)||[];return i.join(" ")}function q(e){return e.getAttribute&&e.getAttribute("class")||""}function X(e){return Array.isArray(e)?e:typeof e=="string"?e.match(vt)||[]:[]}o.fn.extend({addClass:function(e){var i,n,s,c,f,h,w,E=0;if(G(e))return this.each(function(k){o(this).addClass(e.call(this,k,q(this)))});if(i=X(e),i.length){for(;n=this[E++];)if(c=q(n),s=n.nodeType===1&&" "+V(c)+" ",s){for(h=0;f=i[h++];)s.indexOf(" "+f+" ")<0&&(s+=f+" ");w=V(s),c!==w&&n.setAttribute("class",w)}}return this},removeClass:function(e){var i,n,s,c,f,h,w,E=0;if(G(e))return this.each(function(k){o(this).removeClass(e.call(this,k,q(this)))});if(!arguments.length)return this.attr("class","");if(i=X(e),i.length){for(;n=this[E++];)if(c=q(n),s=n.nodeType===1&&" "+V(c)+" ",s){for(h=0;f=i[h++];)for(;s.indexOf(" "+f+" ")>-1;)s=s.replace(" "+f+" "," ");w=V(s),c!==w&&n.setAttribute("class",w)}}return this},toggleClass:function(e,i){var n=typeof e,s=n==="string"||Array.isArray(e);return typeof i=="boolean"&&s?i?this.addClass(e):this.removeClass(e):G(e)?this.each(function(c){o(this).toggleClass(e.call(this,c,q(this),i),i)}):this.each(function(){var c,f,h,w;if(s)for(f=0,h=o(this),w=X(e);c=w[f++];)h.hasClass(c)?h.removeClass(c):h.addClass(c);else(e===void 0||n==="boolean")&&(c=q(this),c&&le.set(this,"__className__",c),this.setAttribute&&this.setAttribute("class",c||e===!1?"":le.get(this,"__className__")||""))})},hasClass:function(e){var i,n,s=0;for(i=" "+e+" ";n=this[s++];)if(n.nodeType===1&&(" "+V(q(n))+" ").indexOf(i)>-1)return!0;return!1}});var te=/\r/g;o.fn.extend({val:function(e){var i,n,s,c=this[0];return arguments.length?(s=G(e),this.each(function(f){var h;this.nodeType===1&&(s?h=e.call(this,f,o(this).val()):h=e,h==null?h="":typeof h=="number"?h+="":Array.isArray(h)&&(h=o.map(h,function(w){return w==null?"":w+""})),i=o.valHooks[this.type]||o.valHooks[this.nodeName.toLowerCase()],(!i||!("set"in i)||i.set(this,h,"value")===void 0)&&(this.value=h))})):c?(i=o.valHooks[c.type]||o.valHooks[c.nodeName.toLowerCase()],i&&"get"in i&&(n=i.get(c,"value"))!==void 0?n:(n=c.value,typeof n=="string"?n.replace(te,""):n==null?"":n)):void 0}}),o.extend({valHooks:{option:{get:function(e){var i=o.find.attr(e,"value");return i!=null?i:V(o.text(e))}},select:{get:function(e){var i,n,s,c=e.options,f=e.selectedIndex,h=e.type==="select-one",w=h?null:[],E=h?f+1:c.length;for(f<0?s=E:s=h?f:0;s-1)&&(n=!0);return n||(e.selectedIndex=-1),f}}}}),o.each(["radio","checkbox"],function(){o.valHooks[this]={set:function(e,i){if(Array.isArray(i))return e.checked=o.inArray(o(e).val(),i)>-1}},H.checkOn||(o.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value})}),H.focusin="onfocusin"in l;var xe=/^(?:focusinfocus|focusoutblur)$/,Ce=function(e){e.stopPropagation()};o.extend(o.event,{trigger:function(e,i,n,s){var c,f,h,w,E,k,R,j,F=[n||K],I=W.call(e,"type")?e.type:e,ie=W.call(e,"namespace")?e.namespace.split("."):[];if(f=j=h=n=n||K,!(n.nodeType===3||n.nodeType===8)&&!xe.test(I+o.event.triggered)&&(I.indexOf(".")>-1&&(ie=I.split("."),I=ie.shift(),ie.sort()),E=I.indexOf(":")<0&&"on"+I,e=e[o.expando]?e:new o.Event(I,typeof e=="object"&&e),e.isTrigger=s?2:3,e.namespace=ie.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+ie.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),i=i==null?[e]:o.makeArray(i,[e]),R=o.event.special[I]||{},!(!s&&R.trigger&&R.trigger.apply(n,i)===!1))){if(!s&&!R.noBubble&&!de(n)){for(w=R.delegateType||I,xe.test(w+I)||(f=f.parentNode);f;f=f.parentNode)F.push(f),h=f;h===(n.ownerDocument||K)&&F.push(h.defaultView||h.parentWindow||l)}for(c=0;(f=F[c++])&&!e.isPropagationStopped();)j=f,e.type=c>1?w:R.bindType||I,k=(le.get(f,"events")||Object.create(null))[e.type]&&le.get(f,"handle"),k&&k.apply(f,i),k=E&&f[E],k&&k.apply&&sr(f)&&(e.result=k.apply(f,i),e.result===!1&&e.preventDefault());return e.type=I,!s&&!e.isDefaultPrevented()&&(!R._default||R._default.apply(F.pop(),i)===!1)&&sr(n)&&E&&G(n[I])&&!de(n)&&(h=n[E],h&&(n[E]=null),o.event.triggered=I,e.isPropagationStopped()&&j.addEventListener(I,Ce),n[I](),e.isPropagationStopped()&&j.removeEventListener(I,Ce),o.event.triggered=void 0,h&&(n[E]=h)),e.result}},simulate:function(e,i,n){var s=o.extend(new o.Event,n,{type:e,isSimulated:!0});o.event.trigger(s,null,i)}}),o.fn.extend({trigger:function(e,i){return this.each(function(){o.event.trigger(e,i,this)})},triggerHandler:function(e,i){var n=this[0];if(n)return o.event.trigger(e,i,n,!0)}}),H.focusin||o.each({focus:"focusin",blur:"focusout"},function(e,i){var n=function(s){o.event.simulate(i,s.target,o.event.fix(s))};o.event.special[i]={setup:function(){var s=this.ownerDocument||this.document||this,c=le.access(s,i);c||s.addEventListener(e,n,!0),le.access(s,i,(c||0)+1)},teardown:function(){var s=this.ownerDocument||this.document||this,c=le.access(s,i)-1;c?le.access(s,i,c):(s.removeEventListener(e,n,!0),le.remove(s,i))}}});var Se=l.location,We={guid:Date.now()},Me=/\?/;o.parseXML=function(e){var i,n;if(!e||typeof e!="string")return null;try{i=new l.DOMParser().parseFromString(e,"text/xml")}catch(s){}return n=i&&i.getElementsByTagName("parsererror")[0],(!i||n)&&o.error("Invalid XML: "+(n?o.map(n.childNodes,function(s){return s.textContent}).join(` +import{a as tn,b as Ko,c as Zo}from"./chunk-PP6TWFIY.js";import{a as Fs}from"./chunk-5SHCNQ2O.js";import{a as Ls,b as Rs,c as el}from"./chunk-FNKLYD54.js";import{D as ca,J as fa,l as Z,u as As,v as Ds}from"./chunk-YLYWUMYM.js";import{D as Lt,E as oa,F as Rr,I as Cs,J as la,S as ua,U as ks,a as Ft,aa as en,b as ni,ba as Ps,ca as ai,d as wt,e as sa,f as pt,g as Fe,j as Es,l as Xi,m as Qi,n as Ji,o as vr,p as Ss,s as Ki,v as _s,w as Ts,x as Zi,y as gt,z as Lr}from"./chunk-ATS7PSQG.js";import{b as ii,c as ws,e as aa}from"./chunk-5XVCUSSZ.js";var ha=ws((Is,da)=>{(function(l){if(typeof Is=="object"&&typeof da!="undefined")da.exports=l();else if(typeof define=="function"&&define.amd)define([],l);else{var t;typeof window!="undefined"?t=window:typeof global!="undefined"?t=global:typeof self!="undefined"?t=self:t=this,t.localforage=l()}})(function(){var l,t,r;return function a(u,d,m){function y(W,fe){if(!d[W]){if(!u[W]){var z=typeof ii=="function"&ⅈif(!fe&&z)return z(W,!0);if(b)return b(W,!0);var H=new Error("Cannot find module '"+W+"'");throw H.code="MODULE_NOT_FOUND",H}var G=d[W]={exports:{}};u[W][0].call(G.exports,function(de){var K=u[W][1][de];return y(K||de)},G,G.exports,a,u,d,m)}return d[W].exports}for(var b=typeof ii=="function"&&ii,L=0;L=43)}}).catch(function(){return!1})}function Te(p){return typeof Pe=="boolean"?z.resolve(Pe):se(p).then(function(S){return Pe=S,Pe})}function He(p){var S=be[p.name],v={};v.promise=new z(function(_,P){v.resolve=_,v.reject=P}),S.deferredOperations.push(v),S.dbReady?S.dbReady=S.dbReady.then(function(){return v.promise}):S.dbReady=v.promise}function Ie(p){var S=be[p.name],v=S.deferredOperations.pop();if(v)return v.resolve(),v.promise}function tt(p,S){var v=be[p.name],_=v.deferredOperations.pop();if(_)return _.reject(S),_.promise}function Xe(p,S){return new z(function(v,_){if(be[p.name]=be[p.name]||ar(),p.db)if(S)He(p),p.db.close();else return v(p.db);var P=[p.name];S&&P.push(p.version);var T=L.open.apply(L,P);S&&(T.onupgradeneeded=function(N){var U=T.result;try{U.createObjectStore(p.storeName),N.oldVersion<=1&&U.createObjectStore(ye)}catch(V){if(V.name==="ConstraintError")console.warn('The database "'+p.name+'" has been upgraded from version '+N.oldVersion+" to version "+N.newVersion+', but the storage "'+p.storeName+'" already exists.');else throw V}}),T.onerror=function(N){N.preventDefault(),_(T.error)},T.onsuccess=function(){var N=T.result;N.onversionchange=function(U){U.target.close()},v(N),Ie(p)}})}function mt(p){return Xe(p,!1)}function nr(p){return Xe(p,!0)}function Sr(p,S){if(!p.db)return!0;var v=!p.db.objectStoreNames.contains(p.storeName),_=p.versionp.db.version;if(_&&(p.version!==S&&console.warn('The database "'+p.name+`" can't be downgraded from version `+p.db.version+" to version "+p.version+"."),p.version=p.db.version),P||v){if(v){var T=p.db.version+1;T>p.version&&(p.version=T)}return!0}return!1}function Or(p){return new z(function(S,v){var _=new FileReader;_.onerror=v,_.onloadend=function(P){var T=btoa(P.target.result||"");S({__local_forage_encoded_blob:!0,data:T,type:p.type})},_.readAsBinaryString(p)})}function Yt(p){var S=ae(atob(p.data));return fe([S],{type:p.type})}function $r(p){return p&&p.__local_forage_encoded_blob}function vt(p){var S=this,v=S._initReady().then(function(){var _=be[S._dbInfo.name];if(_&&_.dbReady)return _.dbReady});return G(v,p,p),v}function Tn(p){He(p);for(var S=be[p.name],v=S.forages,_=0;_0&&(!p.db||T.name==="InvalidStateError"||T.name==="NotFoundError"))return z.resolve().then(function(){if(!p.db||T.name==="NotFoundError"&&!p.db.objectStoreNames.contains(p.storeName)&&p.version<=p.db.version)return p.db&&(p.version=p.db.version+1),nr(p)}).then(function(){return Tn(p).then(function(){Qe(p,S,v,_-1)})}).catch(v);v(T)}}function ar(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Ti(p){var S=this,v={db:null};if(p)for(var _ in p)v[_]=p[_];var P=be[v.name];P||(P=ar(),be[v.name]=P),P.forages.push(S),S._initReady||(S._initReady=S.ready,S.ready=vt);var T=[];function N(){return z.resolve()}for(var U=0;U>4,X[P++]=(N&15)<<4|U>>2,X[P++]=(U&3)<<6|V&63;return q}function Je(p){var S=new Uint8Array(p),v="",_;for(_=0;_>2],v+=$e[(S[_]&3)<<4|S[_+1]>>4],v+=$e[(S[_+1]&15)<<2|S[_+2]>>6],v+=$e[S[_+2]&63];return S.length%3==2?v=v.substring(0,v.length-1)+"=":S.length%3==1&&(v=v.substring(0,v.length-2)+"=="),v}function Ke(p,S){var v="";if(p&&(v=Hr.call(p)),p&&(v==="[object ArrayBuffer]"||p.buffer&&Hr.call(p.buffer)==="[object ArrayBuffer]")){var _,P=Tr;p instanceof ArrayBuffer?(_=p,P+=kr):(_=p.buffer,v==="[object Int8Array]"?P+=yt:v==="[object Uint8Array]"?P+=Dt:v==="[object Uint8ClampedArray]"?P+=Ot:v==="[object Int16Array]"?P+=ki:v==="[object Uint16Array]"?P+=jr:v==="[object Int32Array]"?P+=lr:v==="[object Uint32Array]"?P+=Br:v==="[object Float32Array]"?P+=Pi:v==="[object Float64Array]"?P+=$t:S(new Error("Failed to get type for BinaryArray"))),S(P+Je(_))}else if(v==="[object Blob]"){var T=new FileReader;T.onload=function(){var N=Dn+p.type+"~"+Je(this.result);S(Tr+Nt+N)},T.readAsArrayBuffer(p)}else try{S(JSON.stringify(p))}catch(N){console.error("Couldn't convert value into a JSON string: ",p),S(null,N)}}function zr(p){if(p.substring(0,Cr)!==Tr)return JSON.parse(p);var S=p.substring(Xt),v=p.substring(Cr,Xt),_;if(v===Nt&&Ci.test(S)){var P=S.match(Ci);_=P[1],S=S.substring(P[0].length)}var T=Ur(S);switch(v){case kr:return T;case Nt:return fe([T],{type:_});case yt:return new Int8Array(T);case Dt:return new Uint8Array(T);case Ot:return new Uint8ClampedArray(T);case ki:return new Int16Array(T);case jr:return new Uint16Array(T);case lr:return new Int32Array(T);case Br:return new Uint32Array(T);case Pi:return new Float32Array(T);case $t:return new Float64Array(T);default:throw new Error("Unkown type: "+v)}}var Vr={serialize:Ke,deserialize:zr,stringToBuffer:Ur,bufferToString:Je};function qr(p,S,v,_){p.executeSql("CREATE TABLE IF NOT EXISTS "+S.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],v,_)}function Ai(p){var S=this,v={db:null};if(p)for(var _ in p)v[_]=typeof p[_]!="string"?p[_].toString():p[_];var P=new z(function(T,N){try{v.db=openDatabase(v.name,String(v.version),v.description,v.size)}catch(U){return N(U)}v.db.transaction(function(U){qr(U,v,function(){S._dbInfo=v,T()},function(V,q){N(q)})},N)});return v.serializer=Vr,P}function rt(p,S,v,_,P,T){p.executeSql(v,_,P,function(N,U){U.code===U.SYNTAX_ERR?N.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[S.storeName],function(V,q){q.rows.length?T(V,U):qr(V,S,function(){V.executeSql(v,_,P,T)},T)},T):T(N,U)},T)}function Qt(p,S){var v=this;p=de(p);var _=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"SELECT * FROM "+N.storeName+" WHERE key = ? LIMIT 1",[p],function(V,q){var X=q.rows.length?q.rows.item(0).value:null;X&&(X=N.serializer.deserialize(X)),P(X)},function(V,q){T(q)})})}).catch(T)});return H(_,S),_}function Fn(p,S){var v=this,_=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"SELECT * FROM "+N.storeName,[],function(V,q){for(var X=q.rows,te=X.length,xe=0;xe0){N(Di.apply(P,[p,V,v,_-1]));return}U(xe)}})})}).catch(U)});return H(T,v),T}function Gr(p,S,v){return Di.apply(this,[p,S,v,1])}function Pr(p,S){var v=this;p=de(p);var _=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"DELETE FROM "+N.storeName+" WHERE key = ?",[p],function(){P()},function(V,q){T(q)})})}).catch(T)});return H(_,S),_}function Ln(p){var S=this,v=new z(function(_,P){S.ready().then(function(){var T=S._dbInfo;T.db.transaction(function(N){rt(N,T,"DELETE FROM "+T.storeName,[],function(){_()},function(U,V){P(V)})})}).catch(P)});return H(v,p),v}function Rn(p){var S=this,v=new z(function(_,P){S.ready().then(function(){var T=S._dbInfo;T.db.transaction(function(N){rt(N,T,"SELECT COUNT(key) as c FROM "+T.storeName,[],function(U,V){var q=V.rows.item(0).c;_(q)},function(U,V){P(V)})})}).catch(P)});return H(v,p),v}function In(p,S){var v=this,_=new z(function(P,T){v.ready().then(function(){var N=v._dbInfo;N.db.transaction(function(U){rt(U,N,"SELECT key FROM "+N.storeName+" WHERE id = ? LIMIT 1",[p+1],function(V,q){var X=q.rows.length?q.rows.item(0).key:null;P(X)},function(V,q){T(q)})})}).catch(T)});return H(_,S),_}function Fi(p){var S=this,v=new z(function(_,P){S.ready().then(function(){var T=S._dbInfo;T.db.transaction(function(N){rt(N,T,"SELECT key FROM "+T.storeName,[],function(U,V){for(var q=[],X=0;X '__WebKitDatabaseInfoTable__'",[],function(P,T){for(var N=[],U=0;U0}function Ar(p){var S=this,v={};if(p)for(var _ in p)v[_]=p[_];return v.keyPrefix=Wt(p,S._defaultConfig),Yr()?(S._dbInfo=v,v.serializer=Vr,z.resolve()):z.reject()}function Ii(p){var S=this,v=S.ready().then(function(){for(var _=S._dbInfo.keyPrefix,P=localStorage.length-1;P>=0;P--){var T=localStorage.key(P);T.indexOf(_)===0&&localStorage.removeItem(T)}});return H(v,p),v}function $n(p,S){var v=this;p=de(p);var _=v.ready().then(function(){var P=v._dbInfo,T=localStorage.getItem(P.keyPrefix+p);return T&&(T=P.serializer.deserialize(T)),T});return H(_,S),_}function ur(p,S){var v=this,_=v.ready().then(function(){for(var P=v._dbInfo,T=P.keyPrefix,N=T.length,U=localStorage.length,V=1,q=0;q=0;N--){var U=localStorage.key(N);U.indexOf(T)===0&&localStorage.removeItem(U)}}):P=z.reject("Invalid arguments"),H(P,S),P}var jn={_driver:"localStorageWrapper",_initStorage:Ar,_support:On(),iterate:ur,getItem:$n,setItem:Wn,removeItem:$i,clear:Ii,length:Oi,key:Mi,keys:Ni,dropInstance:Xr},Wi=function(S,v){return S===v||typeof S=="number"&&typeof v=="number"&&isNaN(S)&&isNaN(v)},Bn=function(S,v){for(var _=S.length,P=0;P<_;){if(Wi(S[P],v))return!0;P++}return!1},Qr=Array.isArray||function(p){return Object.prototype.toString.call(p)==="[object Array]"},Jt={},Dr={},jt={INDEXEDDB:or,WEBSQL:Li,LOCALSTORAGE:jn},Ze=[jt.INDEXEDDB._driver,jt.WEBSQL._driver,jt.LOCALSTORAGE._driver],_t=["dropInstance"],Kt=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(_t),Hn={description:"",driver:Ze.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function Un(p,S){p[S]=function(){var v=arguments;return p.ready().then(function(){return p[S].apply(p,v)})}}function cr(){for(var p=1;p{(function(l,t){"use strict";typeof nn=="object"&&typeof nn.exports=="object"?nn.exports=l.document?t(l,!0):function(r){if(!r.document)throw new Error("jQuery requires a window with a document");return t(r)}:t(l)})(typeof window!="undefined"?window:$s,function(l,t){"use strict";var r=[],a=Object.getPrototypeOf,u=r.slice,d=r.flat?function(e){return r.flat.call(e)}:function(e){return r.concat.apply([],e)},m=r.push,y=r.indexOf,b={},L=b.toString,W=b.hasOwnProperty,fe=W.toString,z=fe.call(Object),H={},G=function(i){return typeof i=="function"&&typeof i.nodeType!="number"&&typeof i.item!="function"},de=function(i){return i!=null&&i===i.window},K=l.document,ye={type:!0,src:!0,nonce:!0,noModule:!0};function Pe(e,i,n){n=n||K;var s,c,f=n.createElement("script");if(f.text=e,i)for(s in ye)c=i[s]||i.getAttribute&&i.getAttribute(s),c&&f.setAttribute(s,c);n.head.appendChild(f).parentNode.removeChild(f)}function be(e){return e==null?e+"":typeof e=="object"||typeof e=="function"?b[L.call(e)]||"object":typeof e}var _e="3.6.0",o=function(e,i){return new o.fn.init(e,i)};o.fn=o.prototype={jquery:_e,constructor:o,length:0,toArray:function(){return u.call(this)},get:function(e){return e==null?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var i=o.merge(this.constructor(),e);return i.prevObject=this,i},each:function(e){return o.each(this,e)},map:function(e){return this.pushStack(o.map(this,function(i,n){return e.call(i,n,i)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(o.grep(this,function(e,i){return(i+1)%2}))},odd:function(){return this.pushStack(o.grep(this,function(e,i){return i%2}))},eq:function(e){var i=this.length,n=+e+(e<0?i:0);return this.pushStack(n>=0&&n0&&i-1 in e}var ae=function(e){var i,n,s,c,f,h,w,E,k,R,j,F,I,ie,ve,ne,ze,Ue,ct,De="sizzle"+1*new Date,me=e.document,st=0,ke=0,je=Vi(),Zr=Vi(),Hi=Vi(),ft=Vi(),dr=function(g,x){return g===x&&(j=!0),0},hr={}.hasOwnProperty,ot=[],er=ot.pop,xt=ot.push,tr=ot.push,ds=ot.slice,pr=function(g,x){for(var C=0,M=g.length;C+~]|"+Ae+")"+Ae+"*"),jo=new RegExp(Ae+"|>"),Bo=new RegExp(Kn),Ho=new RegExp("^"+gr+"$"),zi={ID:new RegExp("^#("+gr+")"),CLASS:new RegExp("^\\.("+gr+")"),TAG:new RegExp("^("+gr+"|[*])"),ATTR:new RegExp("^"+hs),PSEUDO:new RegExp("^"+Kn),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+Ae+"*(even|odd|(([+-]|)(\\d*)n|)"+Ae+"*(?:([+-]|)"+Ae+"*(\\d+)|))"+Ae+"*\\)|)","i"),bool:new RegExp("^(?:"+Jn+")$","i"),needsContext:new RegExp("^"+Ae+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+Ae+"*((?:-\\d)?\\d*)"+Ae+"*\\)|)(?=[^-]|$)","i")},Uo=/HTML$/i,zo=/^(?:input|select|textarea|button)$/i,Vo=/^h\d$/i,ei=/^[^{]+\{\s*\[native \w/,qo=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Zn=/[+~]/,Bt=new RegExp("\\\\[\\da-fA-F]{1,6}"+Ae+"?|\\\\([^\\r\\n\\f])","g"),Ht=function(g,x){var C="0x"+g.slice(1)-65536;return x||(C<0?String.fromCharCode(C+65536):String.fromCharCode(C>>10|55296,C&1023|56320))},gs=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ms=function(g,x){return x?g==="\0"?"\uFFFD":g.slice(0,-1)+"\\"+g.charCodeAt(g.length-1).toString(16)+" ":"\\"+g},vs=function(){F()},Go=Gi(function(g){return g.disabled===!0&&g.nodeName.toLowerCase()==="fieldset"},{dir:"parentNode",next:"legend"});try{tr.apply(ot=ds.call(me.childNodes),me.childNodes),ot[me.childNodes.length].nodeType}catch(g){tr={apply:ot.length?function(x,C){xt.apply(x,ds.call(C))}:function(x,C){for(var M=x.length,A=0;x[M++]=C[A++];);x.length=M-1}}}function Le(g,x,C,M){var A,O,B,Q,J,ue,oe,he=x&&x.ownerDocument,we=x?x.nodeType:9;if(C=C||[],typeof g!="string"||!g||we!==1&&we!==9&&we!==11)return C;if(!M&&(F(x),x=x||I,ve)){if(we!==11&&(J=qo.exec(g)))if(A=J[1]){if(we===9)if(B=x.getElementById(A)){if(B.id===A)return C.push(B),C}else return C;else if(he&&(B=he.getElementById(A))&&ct(x,B)&&B.id===A)return C.push(B),C}else{if(J[2])return tr.apply(C,x.getElementsByTagName(g)),C;if((A=J[3])&&n.getElementsByClassName&&x.getElementsByClassName)return tr.apply(C,x.getElementsByClassName(A)),C}if(n.qsa&&!ft[g+" "]&&(!ne||!ne.test(g))&&(we!==1||x.nodeName.toLowerCase()!=="object")){if(oe=g,he=x,we===1&&(jo.test(g)||ps.test(g))){for(he=Zn.test(g)&&ta(x.parentNode)||x,(he!==x||!n.scope)&&((Q=x.getAttribute("id"))?Q=Q.replace(gs,ms):x.setAttribute("id",Q=De)),ue=h(g),O=ue.length;O--;)ue[O]=(Q?"#"+Q:":scope")+" "+qi(ue[O]);oe=ue.join(",")}try{return tr.apply(C,he.querySelectorAll(oe)),C}catch(Re){ft(g,!0)}finally{Q===De&&x.removeAttribute("id")}}}return E(g.replace(Ui,"$1"),x,C,M)}function Vi(){var g=[];function x(C,M){return g.push(C+" ")>s.cacheLength&&delete x[g.shift()],x[C+" "]=M}return x}function Tt(g){return g[De]=!0,g}function Ct(g){var x=I.createElement("fieldset");try{return!!g(x)}catch(C){return!1}finally{x.parentNode&&x.parentNode.removeChild(x),x=null}}function ea(g,x){for(var C=g.split("|"),M=C.length;M--;)s.attrHandle[C[M]]=x}function bs(g,x){var C=x&&g,M=C&&g.nodeType===1&&x.nodeType===1&&g.sourceIndex-x.sourceIndex;if(M)return M;if(C){for(;C=C.nextSibling;)if(C===x)return-1}return g?1:-1}function Yo(g){return function(x){var C=x.nodeName.toLowerCase();return C==="input"&&x.type===g}}function Xo(g){return function(x){var C=x.nodeName.toLowerCase();return(C==="input"||C==="button")&&x.type===g}}function ys(g){return function(x){return"form"in x?x.parentNode&&x.disabled===!1?"label"in x?"label"in x.parentNode?x.parentNode.disabled===g:x.disabled===g:x.isDisabled===g||x.isDisabled!==!g&&Go(x)===g:x.disabled===g:"label"in x?x.disabled===g:!1}}function mr(g){return Tt(function(x){return x=+x,Tt(function(C,M){for(var A,O=g([],C.length,x),B=O.length;B--;)C[A=O[B]]&&(C[A]=!(M[A]=C[A]))})})}function ta(g){return g&&typeof g.getElementsByTagName!="undefined"&&g}n=Le.support={},f=Le.isXML=function(g){var x=g&&g.namespaceURI,C=g&&(g.ownerDocument||g).documentElement;return!Uo.test(x||C&&C.nodeName||"HTML")},F=Le.setDocument=function(g){var x,C,M=g?g.ownerDocument||g:me;return M==I||M.nodeType!==9||!M.documentElement||(I=M,ie=I.documentElement,ve=!f(I),me!=I&&(C=I.defaultView)&&C.top!==C&&(C.addEventListener?C.addEventListener("unload",vs,!1):C.attachEvent&&C.attachEvent("onunload",vs)),n.scope=Ct(function(A){return ie.appendChild(A).appendChild(I.createElement("div")),typeof A.querySelectorAll!="undefined"&&!A.querySelectorAll(":scope fieldset div").length}),n.attributes=Ct(function(A){return A.className="i",!A.getAttribute("className")}),n.getElementsByTagName=Ct(function(A){return A.appendChild(I.createComment("")),!A.getElementsByTagName("*").length}),n.getElementsByClassName=ei.test(I.getElementsByClassName),n.getById=Ct(function(A){return ie.appendChild(A).id=De,!I.getElementsByName||!I.getElementsByName(De).length}),n.getById?(s.filter.ID=function(A){var O=A.replace(Bt,Ht);return function(B){return B.getAttribute("id")===O}},s.find.ID=function(A,O){if(typeof O.getElementById!="undefined"&&ve){var B=O.getElementById(A);return B?[B]:[]}}):(s.filter.ID=function(A){var O=A.replace(Bt,Ht);return function(B){var Q=typeof B.getAttributeNode!="undefined"&&B.getAttributeNode("id");return Q&&Q.value===O}},s.find.ID=function(A,O){if(typeof O.getElementById!="undefined"&&ve){var B,Q,J,ue=O.getElementById(A);if(ue){if(B=ue.getAttributeNode("id"),B&&B.value===A)return[ue];for(J=O.getElementsByName(A),Q=0;ue=J[Q++];)if(B=ue.getAttributeNode("id"),B&&B.value===A)return[ue]}return[]}}),s.find.TAG=n.getElementsByTagName?function(A,O){if(typeof O.getElementsByTagName!="undefined")return O.getElementsByTagName(A);if(n.qsa)return O.querySelectorAll(A)}:function(A,O){var B,Q=[],J=0,ue=O.getElementsByTagName(A);if(A==="*"){for(;B=ue[J++];)B.nodeType===1&&Q.push(B);return Q}return ue},s.find.CLASS=n.getElementsByClassName&&function(A,O){if(typeof O.getElementsByClassName!="undefined"&&ve)return O.getElementsByClassName(A)},ze=[],ne=[],(n.qsa=ei.test(I.querySelectorAll))&&(Ct(function(A){var O;ie.appendChild(A).innerHTML="",A.querySelectorAll("[msallowcapture^='']").length&&ne.push("[*^$]="+Ae+`*(?:''|"")`),A.querySelectorAll("[selected]").length||ne.push("\\["+Ae+"*(?:value|"+Jn+")"),A.querySelectorAll("[id~="+De+"-]").length||ne.push("~="),O=I.createElement("input"),O.setAttribute("name",""),A.appendChild(O),A.querySelectorAll("[name='']").length||ne.push("\\["+Ae+"*name"+Ae+"*="+Ae+`*(?:''|"")`),A.querySelectorAll(":checked").length||ne.push(":checked"),A.querySelectorAll("a#"+De+"+*").length||ne.push(".#.+[+~]"),A.querySelectorAll("\\\f"),ne.push("[\\r\\n\\f]")}),Ct(function(A){A.innerHTML="";var O=I.createElement("input");O.setAttribute("type","hidden"),A.appendChild(O).setAttribute("name","D"),A.querySelectorAll("[name=d]").length&&ne.push("name"+Ae+"*[*^$|!~]?="),A.querySelectorAll(":enabled").length!==2&&ne.push(":enabled",":disabled"),ie.appendChild(A).disabled=!0,A.querySelectorAll(":disabled").length!==2&&ne.push(":enabled",":disabled"),A.querySelectorAll("*,:x"),ne.push(",.*:")})),(n.matchesSelector=ei.test(Ue=ie.matches||ie.webkitMatchesSelector||ie.mozMatchesSelector||ie.oMatchesSelector||ie.msMatchesSelector))&&Ct(function(A){n.disconnectedMatch=Ue.call(A,"*"),Ue.call(A,"[s!='']:x"),ze.push("!=",Kn)}),ne=ne.length&&new RegExp(ne.join("|")),ze=ze.length&&new RegExp(ze.join("|")),x=ei.test(ie.compareDocumentPosition),ct=x||ei.test(ie.contains)?function(A,O){var B=A.nodeType===9?A.documentElement:A,Q=O&&O.parentNode;return A===Q||!!(Q&&Q.nodeType===1&&(B.contains?B.contains(Q):A.compareDocumentPosition&&A.compareDocumentPosition(Q)&16))}:function(A,O){if(O){for(;O=O.parentNode;)if(O===A)return!0}return!1},dr=x?function(A,O){if(A===O)return j=!0,0;var B=!A.compareDocumentPosition-!O.compareDocumentPosition;return B||(B=(A.ownerDocument||A)==(O.ownerDocument||O)?A.compareDocumentPosition(O):1,B&1||!n.sortDetached&&O.compareDocumentPosition(A)===B?A==I||A.ownerDocument==me&&ct(me,A)?-1:O==I||O.ownerDocument==me&&ct(me,O)?1:R?pr(R,A)-pr(R,O):0:B&4?-1:1)}:function(A,O){if(A===O)return j=!0,0;var B,Q=0,J=A.parentNode,ue=O.parentNode,oe=[A],he=[O];if(!J||!ue)return A==I?-1:O==I?1:J?-1:ue?1:R?pr(R,A)-pr(R,O):0;if(J===ue)return bs(A,O);for(B=A;B=B.parentNode;)oe.unshift(B);for(B=O;B=B.parentNode;)he.unshift(B);for(;oe[Q]===he[Q];)Q++;return Q?bs(oe[Q],he[Q]):oe[Q]==me?-1:he[Q]==me?1:0}),I},Le.matches=function(g,x){return Le(g,null,null,x)},Le.matchesSelector=function(g,x){if(F(g),n.matchesSelector&&ve&&!ft[x+" "]&&(!ze||!ze.test(x))&&(!ne||!ne.test(x)))try{var C=Ue.call(g,x);if(C||n.disconnectedMatch||g.document&&g.document.nodeType!==11)return C}catch(M){ft(x,!0)}return Le(x,I,null,[g]).length>0},Le.contains=function(g,x){return(g.ownerDocument||g)!=I&&F(g),ct(g,x)},Le.attr=function(g,x){(g.ownerDocument||g)!=I&&F(g);var C=s.attrHandle[x.toLowerCase()],M=C&&hr.call(s.attrHandle,x.toLowerCase())?C(g,x,!ve):void 0;return M!==void 0?M:n.attributes||!ve?g.getAttribute(x):(M=g.getAttributeNode(x))&&M.specified?M.value:null},Le.escape=function(g){return(g+"").replace(gs,ms)},Le.error=function(g){throw new Error("Syntax error, unrecognized expression: "+g)},Le.uniqueSort=function(g){var x,C=[],M=0,A=0;if(j=!n.detectDuplicates,R=!n.sortStable&&g.slice(0),g.sort(dr),j){for(;x=g[A++];)x===g[A]&&(M=C.push(A));for(;M--;)g.splice(C[M],1)}return R=null,g},c=Le.getText=function(g){var x,C="",M=0,A=g.nodeType;if(A){if(A===1||A===9||A===11){if(typeof g.textContent=="string")return g.textContent;for(g=g.firstChild;g;g=g.nextSibling)C+=c(g)}else if(A===3||A===4)return g.nodeValue}else for(;x=g[M++];)C+=c(x);return C},s=Le.selectors={cacheLength:50,createPseudo:Tt,match:zi,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(g){return g[1]=g[1].replace(Bt,Ht),g[3]=(g[3]||g[4]||g[5]||"").replace(Bt,Ht),g[2]==="~="&&(g[3]=" "+g[3]+" "),g.slice(0,4)},CHILD:function(g){return g[1]=g[1].toLowerCase(),g[1].slice(0,3)==="nth"?(g[3]||Le.error(g[0]),g[4]=+(g[4]?g[5]+(g[6]||1):2*(g[3]==="even"||g[3]==="odd")),g[5]=+(g[7]+g[8]||g[3]==="odd")):g[3]&&Le.error(g[0]),g},PSEUDO:function(g){var x,C=!g[6]&&g[2];return zi.CHILD.test(g[0])?null:(g[3]?g[2]=g[4]||g[5]||"":C&&Bo.test(C)&&(x=h(C,!0))&&(x=C.indexOf(")",C.length-x)-C.length)&&(g[0]=g[0].slice(0,x),g[2]=C.slice(0,x)),g.slice(0,3))}},filter:{TAG:function(g){var x=g.replace(Bt,Ht).toLowerCase();return g==="*"?function(){return!0}:function(C){return C.nodeName&&C.nodeName.toLowerCase()===x}},CLASS:function(g){var x=je[g+" "];return x||(x=new RegExp("(^|"+Ae+")"+g+"("+Ae+"|$)"))&&je(g,function(C){return x.test(typeof C.className=="string"&&C.className||typeof C.getAttribute!="undefined"&&C.getAttribute("class")||"")})},ATTR:function(g,x,C){return function(M){var A=Le.attr(M,g);return A==null?x==="!=":x?(A+="",x==="="?A===C:x==="!="?A!==C:x==="^="?C&&A.indexOf(C)===0:x==="*="?C&&A.indexOf(C)>-1:x==="$="?C&&A.slice(-C.length)===C:x==="~="?(" "+A.replace($o," ")+" ").indexOf(C)>-1:x==="|="?A===C||A.slice(0,C.length+1)===C+"-":!1):!0}},CHILD:function(g,x,C,M,A){var O=g.slice(0,3)!=="nth",B=g.slice(-4)!=="last",Q=x==="of-type";return M===1&&A===0?function(J){return!!J.parentNode}:function(J,ue,oe){var he,we,Re,ce,Ve,et,dt=O!==B?"nextSibling":"previousSibling",Ne=J.parentNode,ti=Q&&J.nodeName.toLowerCase(),ri=!oe&&!Q,ht=!1;if(Ne){if(O){for(;dt;){for(ce=J;ce=ce[dt];)if(Q?ce.nodeName.toLowerCase()===ti:ce.nodeType===1)return!1;et=dt=g==="only"&&!et&&"nextSibling"}return!0}if(et=[B?Ne.firstChild:Ne.lastChild],B&&ri){for(ce=Ne,Re=ce[De]||(ce[De]={}),we=Re[ce.uniqueID]||(Re[ce.uniqueID]={}),he=we[g]||[],Ve=he[0]===st&&he[1],ht=Ve&&he[2],ce=Ve&&Ne.childNodes[Ve];ce=++Ve&&ce&&ce[dt]||(ht=Ve=0)||et.pop();)if(ce.nodeType===1&&++ht&&ce===J){we[g]=[st,Ve,ht];break}}else if(ri&&(ce=J,Re=ce[De]||(ce[De]={}),we=Re[ce.uniqueID]||(Re[ce.uniqueID]={}),he=we[g]||[],Ve=he[0]===st&&he[1],ht=Ve),ht===!1)for(;(ce=++Ve&&ce&&ce[dt]||(ht=Ve=0)||et.pop())&&!((Q?ce.nodeName.toLowerCase()===ti:ce.nodeType===1)&&++ht&&(ri&&(Re=ce[De]||(ce[De]={}),we=Re[ce.uniqueID]||(Re[ce.uniqueID]={}),we[g]=[st,ht]),ce===J)););return ht-=A,ht===M||ht%M==0&&ht/M>=0}}},PSEUDO:function(g,x){var C,M=s.pseudos[g]||s.setFilters[g.toLowerCase()]||Le.error("unsupported pseudo: "+g);return M[De]?M(x):M.length>1?(C=[g,g,"",x],s.setFilters.hasOwnProperty(g.toLowerCase())?Tt(function(A,O){for(var B,Q=M(A,x),J=Q.length;J--;)B=pr(A,Q[J]),A[B]=!(O[B]=Q[J])}):function(A){return M(A,0,C)}):M}},pseudos:{not:Tt(function(g){var x=[],C=[],M=w(g.replace(Ui,"$1"));return M[De]?Tt(function(A,O,B,Q){for(var J,ue=M(A,null,Q,[]),oe=A.length;oe--;)(J=ue[oe])&&(A[oe]=!(O[oe]=J))}):function(A,O,B){return x[0]=A,M(x,null,B,C),x[0]=null,!C.pop()}}),has:Tt(function(g){return function(x){return Le(g,x).length>0}}),contains:Tt(function(g){return g=g.replace(Bt,Ht),function(x){return(x.textContent||c(x)).indexOf(g)>-1}}),lang:Tt(function(g){return Ho.test(g||"")||Le.error("unsupported lang: "+g),g=g.replace(Bt,Ht).toLowerCase(),function(x){var C;do if(C=ve?x.lang:x.getAttribute("xml:lang")||x.getAttribute("lang"))return C=C.toLowerCase(),C===g||C.indexOf(g+"-")===0;while((x=x.parentNode)&&x.nodeType===1);return!1}}),target:function(g){var x=e.location&&e.location.hash;return x&&x.slice(1)===g.id},root:function(g){return g===ie},focus:function(g){return g===I.activeElement&&(!I.hasFocus||I.hasFocus())&&!!(g.type||g.href||~g.tabIndex)},enabled:ys(!1),disabled:ys(!0),checked:function(g){var x=g.nodeName.toLowerCase();return x==="input"&&!!g.checked||x==="option"&&!!g.selected},selected:function(g){return g.parentNode&&g.parentNode.selectedIndex,g.selected===!0},empty:function(g){for(g=g.firstChild;g;g=g.nextSibling)if(g.nodeType<6)return!1;return!0},parent:function(g){return!s.pseudos.empty(g)},header:function(g){return Vo.test(g.nodeName)},input:function(g){return zo.test(g.nodeName)},button:function(g){var x=g.nodeName.toLowerCase();return x==="input"&&g.type==="button"||x==="button"},text:function(g){var x;return g.nodeName.toLowerCase()==="input"&&g.type==="text"&&((x=g.getAttribute("type"))==null||x.toLowerCase()==="text")},first:mr(function(){return[0]}),last:mr(function(g,x){return[x-1]}),eq:mr(function(g,x,C){return[C<0?C+x:C]}),even:mr(function(g,x){for(var C=0;Cx?x:C;--M>=0;)g.push(M);return g}),gt:mr(function(g,x,C){for(var M=C<0?C+x:C;++M1?function(x,C,M){for(var A=g.length;A--;)if(!g[A](x,C,M))return!1;return!0}:g[0]}function Qo(g,x,C){for(var M=0,A=x.length;M-1&&(B[oe]=!(Q[oe]=we))}}else Ne=Yi(Ne===Q?Ne.splice(Ve,Ne.length):Ne),A?A(null,Q,Ne,ue):tr.apply(Q,Ne)})}function na(g){for(var x,C,M,A=g.length,O=s.relative[g[0].type],B=O||s.relative[" "],Q=O?1:0,J=Gi(function(he){return he===x},B,!0),ue=Gi(function(he){return pr(x,he)>-1},B,!0),oe=[function(he,we,Re){var ce=!O&&(Re||we!==k)||((x=we).nodeType?J(he,we,Re):ue(he,we,Re));return x=null,ce}];Q1&&ra(oe),Q>1&&qi(g.slice(0,Q-1).concat({value:g[Q-2].type===" "?"*":""})).replace(Ui,"$1"),C,Q0,M=g.length>0,A=function(O,B,Q,J,ue){var oe,he,we,Re=0,ce="0",Ve=O&&[],et=[],dt=k,Ne=O||M&&s.find.TAG("*",ue),ti=st+=dt==null?1:Math.random()||.1,ri=Ne.length;for(ue&&(k=B==I||B||ue);ce!==ri&&(oe=Ne[ce])!=null;ce++){if(M&&oe){for(he=0,!B&&oe.ownerDocument!=I&&(F(oe),Q=!ve);we=g[he++];)if(we(oe,B||I,Q)){J.push(oe);break}ue&&(st=ti)}C&&((oe=!we&&oe)&&Re--,O&&Ve.push(oe))}if(Re+=ce,C&&ce!==Re){for(he=0;we=x[he++];)we(Ve,et,B,Q);if(O){if(Re>0)for(;ce--;)Ve[ce]||et[ce]||(et[ce]=er.call(J));et=Yi(et)}tr.apply(J,et),ue&&!O&&et.length>0&&Re+x.length>1&&Le.uniqueSort(J)}return ue&&(st=ti,k=dt),Ve};return C?Tt(A):A}return w=Le.compile=function(g,x){var C,M=[],A=[],O=Hi[g+" "];if(!O){for(x||(x=h(g)),C=x.length;C--;)O=na(x[C]),O[De]?M.push(O):A.push(O);O=Hi(g,Jo(A,M)),O.selector=g}return O},E=Le.select=function(g,x,C,M){var A,O,B,Q,J,ue=typeof g=="function"&&g,oe=!M&&h(g=ue.selector||g);if(C=C||[],oe.length===1){if(O=oe[0]=oe[0].slice(0),O.length>2&&(B=O[0]).type==="ID"&&x.nodeType===9&&ve&&s.relative[O[1].type]){if(x=(s.find.ID(B.matches[0].replace(Bt,Ht),x)||[])[0],x)ue&&(x=x.parentNode);else return C;g=g.slice(O.shift().value.length)}for(A=zi.needsContext.test(g)?0:O.length;A--&&(B=O[A],!s.relative[Q=B.type]);)if((J=s.find[Q])&&(M=J(B.matches[0].replace(Bt,Ht),Zn.test(O[0].type)&&ta(x.parentNode)||x))){if(O.splice(A,1),g=M.length&&qi(O),!g)return tr.apply(C,M),C;break}}return(ue||w(g,oe))(M,x,!ve,C,!x||Zn.test(g)&&ta(x.parentNode)||x),C},n.sortStable=De.split("").sort(dr).join("")===De,n.detectDuplicates=!!j,F(),n.sortDetached=Ct(function(g){return g.compareDocumentPosition(I.createElement("fieldset"))&1}),Ct(function(g){return g.innerHTML="",g.firstChild.getAttribute("href")==="#"})||ea("type|href|height|width",function(g,x,C){if(!C)return g.getAttribute(x,x.toLowerCase()==="type"?1:2)}),(!n.attributes||!Ct(function(g){return g.innerHTML="",g.firstChild.setAttribute("value",""),g.firstChild.getAttribute("value")===""}))&&ea("value",function(g,x,C){if(!C&&g.nodeName.toLowerCase()==="input")return g.defaultValue}),Ct(function(g){return g.getAttribute("disabled")==null})||ea(Jn,function(g,x,C){var M;if(!C)return g[x]===!0?x.toLowerCase():(M=g.getAttributeNode(x))&&M.specified?M.value:null}),Le}(l);o.find=ae,o.expr=ae.selectors,o.expr[":"]=o.expr.pseudos,o.uniqueSort=o.unique=ae.uniqueSort,o.text=ae.getText,o.isXMLDoc=ae.isXML,o.contains=ae.contains,o.escapeSelector=ae.escape;var se=function(e,i,n){for(var s=[],c=n!==void 0;(e=e[i])&&e.nodeType!==9;)if(e.nodeType===1){if(c&&o(e).is(n))break;s.push(e)}return s},Te=function(e,i){for(var n=[];e;e=e.nextSibling)e.nodeType===1&&e!==i&&n.push(e);return n},He=o.expr.match.needsContext;function Ie(e,i){return e.nodeName&&e.nodeName.toLowerCase()===i.toLowerCase()}var tt=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Xe(e,i,n){return G(i)?o.grep(e,function(s,c){return!!i.call(s,c,s)!==n}):i.nodeType?o.grep(e,function(s){return s===i!==n}):typeof i!="string"?o.grep(e,function(s){return y.call(i,s)>-1!==n}):o.filter(i,e,n)}o.filter=function(e,i,n){var s=i[0];return n&&(e=":not("+e+")"),i.length===1&&s.nodeType===1?o.find.matchesSelector(s,e)?[s]:[]:o.find.matches(e,o.grep(i,function(c){return c.nodeType===1}))},o.fn.extend({find:function(e){var i,n,s=this.length,c=this;if(typeof e!="string")return this.pushStack(o(e).filter(function(){for(i=0;i1?o.uniqueSort(n):n},filter:function(e){return this.pushStack(Xe(this,e||[],!1))},not:function(e){return this.pushStack(Xe(this,e||[],!0))},is:function(e){return!!Xe(this,typeof e=="string"&&He.test(e)?o(e):e||[],!1).length}});var mt,nr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Sr=o.fn.init=function(e,i,n){var s,c;if(!e)return this;if(n=n||mt,typeof e=="string")if(e[0]==="<"&&e[e.length-1]===">"&&e.length>=3?s=[null,e,null]:s=nr.exec(e),s&&(s[1]||!i))if(s[1]){if(i=i instanceof o?i[0]:i,o.merge(this,o.parseHTML(s[1],i&&i.nodeType?i.ownerDocument||i:K,!0)),tt.test(s[1])&&o.isPlainObject(i))for(s in i)G(this[s])?this[s](i[s]):this.attr(s,i[s]);return this}else return c=K.getElementById(s[2]),c&&(this[0]=c,this.length=1),this;else return!i||i.jquery?(i||n).find(e):this.constructor(i).find(e);else{if(e.nodeType)return this[0]=e,this.length=1,this;if(G(e))return n.ready!==void 0?n.ready(e):e(o)}return o.makeArray(e,this)};Sr.prototype=o.fn,mt=o(K);var Or=/^(?:parents|prev(?:Until|All))/,Yt={children:!0,contents:!0,next:!0,prev:!0};o.fn.extend({has:function(e){var i=o(e,this),n=i.length;return this.filter(function(){for(var s=0;s-1:n.nodeType===1&&o.find.matchesSelector(n,e))){f.push(n);break}}return this.pushStack(f.length>1?o.uniqueSort(f):f)},index:function(e){return e?typeof e=="string"?y.call(o(e),this[0]):y.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,i){return this.pushStack(o.uniqueSort(o.merge(this.get(),o(e,i))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function $r(e,i){for(;(e=e[i])&&e.nodeType!==1;);return e}o.each({parent:function(e){var i=e.parentNode;return i&&i.nodeType!==11?i:null},parents:function(e){return se(e,"parentNode")},parentsUntil:function(e,i,n){return se(e,"parentNode",n)},next:function(e){return $r(e,"nextSibling")},prev:function(e){return $r(e,"previousSibling")},nextAll:function(e){return se(e,"nextSibling")},prevAll:function(e){return se(e,"previousSibling")},nextUntil:function(e,i,n){return se(e,"nextSibling",n)},prevUntil:function(e,i,n){return se(e,"previousSibling",n)},siblings:function(e){return Te((e.parentNode||{}).firstChild,e)},children:function(e){return Te(e.firstChild)},contents:function(e){return e.contentDocument!=null&&a(e.contentDocument)?e.contentDocument:(Ie(e,"template")&&(e=e.content||e),o.merge([],e.childNodes))}},function(e,i){o.fn[e]=function(n,s){var c=o.map(this,i,n);return e.slice(-5)!=="Until"&&(s=n),s&&typeof s=="string"&&(c=o.filter(s,c)),this.length>1&&(Yt[e]||o.uniqueSort(c),Or.test(e)&&c.reverse()),this.pushStack(c)}});var vt=/[^\x20\t\r\n\f]+/g;function Tn(e){var i={};return o.each(e.match(vt)||[],function(n,s){i[s]=!0}),i}o.Callbacks=function(e){e=typeof e=="string"?Tn(e):o.extend({},e);var i,n,s,c,f=[],h=[],w=-1,E=function(){for(c=c||e.once,s=i=!0;h.length;w=-1)for(n=h.shift();++w-1;)f.splice(F,1),F<=w&&w--}),this},has:function(R){return R?o.inArray(R,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return c=h=[],f=n="",this},disabled:function(){return!f},lock:function(){return c=h=[],!n&&!i&&(f=n=""),this},locked:function(){return!!c},fireWith:function(R,j){return c||(j=j||[],j=[R,j.slice?j.slice():j],h.push(j),i||E()),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!s}};return k};function Qe(e){return e}function ar(e){throw e}function Ti(e,i,n,s){var c;try{e&&G(c=e.promise)?c.call(e).done(i).fail(n):e&&G(c=e.then)?c.call(e,i,n):i.apply(void 0,[e].slice(s))}catch(f){n.apply(void 0,[f])}}o.extend({Deferred:function(e){var i=[["notify","progress",o.Callbacks("memory"),o.Callbacks("memory"),2],["resolve","done",o.Callbacks("once memory"),o.Callbacks("once memory"),0,"resolved"],["reject","fail",o.Callbacks("once memory"),o.Callbacks("once memory"),1,"rejected"]],n="pending",s={state:function(){return n},always:function(){return c.done(arguments).fail(arguments),this},catch:function(f){return s.then(null,f)},pipe:function(){var f=arguments;return o.Deferred(function(h){o.each(i,function(w,E){var k=G(f[E[4]])&&f[E[4]];c[E[1]](function(){var R=k&&k.apply(this,arguments);R&&G(R.promise)?R.promise().progress(h.notify).done(h.resolve).fail(h.reject):h[E[0]+"With"](this,k?[R]:arguments)})}),f=null}).promise()},then:function(f,h,w){var E=0;function k(R,j,F,I){return function(){var ie=this,ve=arguments,ne=function(){var Ue,ct;if(!(R=E&&(F!==ar&&(ie=void 0,ve=[Ue]),j.rejectWith(ie,ve))}};R?ze():(o.Deferred.getStackHook&&(ze.stackTrace=o.Deferred.getStackHook()),l.setTimeout(ze))}}return o.Deferred(function(R){i[0][3].add(k(0,R,G(w)?w:Qe,R.notifyWith)),i[1][3].add(k(0,R,G(f)?f:Qe)),i[2][3].add(k(0,R,G(h)?h:ar))}).promise()},promise:function(f){return f!=null?o.extend(f,s):s}},c={};return o.each(i,function(f,h){var w=h[2],E=h[5];s[h[1]]=w.add,E&&w.add(function(){n=E},i[3-f][2].disable,i[3-f][3].disable,i[0][2].lock,i[0][3].lock),w.add(h[3].fire),c[h[0]]=function(){return c[h[0]+"With"](this===c?void 0:this,arguments),this},c[h[0]+"With"]=w.fireWith}),s.promise(c),e&&e.call(c,c),c},when:function(e){var i=arguments.length,n=i,s=Array(n),c=u.call(arguments),f=o.Deferred(),h=function(w){return function(E){s[w]=this,c[w]=arguments.length>1?u.call(arguments):E,--i||f.resolveWith(s,c)}};if(i<=1&&(Ti(e,f.done(h(n)).resolve,f.reject,!i),f.state()==="pending"||G(c[n]&&c[n].then)))return f.then();for(;n--;)Ti(c[n],h(n),f.reject);return f.promise()}});var Cn=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;o.Deferred.exceptionHook=function(e,i){l.console&&l.console.warn&&e&&Cn.test(e.name)&&l.console.warn("jQuery.Deferred exception: "+e.message,e.stack,i)},o.readyException=function(e){l.setTimeout(function(){throw e})};var Wr=o.Deferred();o.fn.ready=function(e){return Wr.then(e).catch(function(i){o.readyException(i)}),this},o.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--o.readyWait:o.isReady)||(o.isReady=!0,!(e!==!0&&--o.readyWait>0)&&Wr.resolveWith(K,[o]))}}),o.ready.then=Wr.then;function _r(){K.removeEventListener("DOMContentLoaded",_r),l.removeEventListener("load",_r),o.ready()}K.readyState==="complete"||K.readyState!=="loading"&&!K.documentElement.doScroll?l.setTimeout(o.ready):(K.addEventListener("DOMContentLoaded",_r),l.addEventListener("load",_r));var St=function(e,i,n,s,c,f,h){var w=0,E=e.length,k=n==null;if(be(n)==="object"){c=!0;for(w in n)St(e,i,w,n[w],!0,f,h)}else if(s!==void 0&&(c=!0,G(s)||(h=!0),k&&(h?(i.call(e,s),i=null):(k=i,i=function(R,j,F){return k.call(o(R),F)})),i))for(;w1,null,!0)},removeData:function(e){return this.each(function(){$e.remove(this,e)})}}),o.extend({queue:function(e,i,n){var s;if(e)return i=(i||"fx")+"queue",s=le.get(e,i),n&&(!s||Array.isArray(n)?s=le.access(e,i,o.makeArray(n)):s.push(n)),s||[]},dequeue:function(e,i){i=i||"fx";var n=o.queue(e,i),s=n.length,c=n.shift(),f=o._queueHooks(e,i),h=function(){o.dequeue(e,i)};c==="inprogress"&&(c=n.shift(),s--),c&&(i==="fx"&&n.unshift("inprogress"),delete f.stop,c.call(e,h,f)),!s&&f&&f.empty.fire()},_queueHooks:function(e,i){var n=i+"queueHooks";return le.get(e,n)||le.access(e,n,{empty:o.Callbacks("once memory").add(function(){le.remove(e,[i+"queue",n])})})}}),o.fn.extend({queue:function(e,i){var n=2;return typeof e!="string"&&(i=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,Ur=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=K.createDocumentFragment(),i=e.appendChild(K.createElement("div")),n=K.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),i.appendChild(n),H.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,i.innerHTML="",H.noCloneChecked=!!i.cloneNode(!0).lastChild.defaultValue,i.innerHTML="",H.option=!!i.lastChild})();var Je={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td,H.option||(Je.optgroup=Je.option=[1,""]);function Ke(e,i){var n;return typeof e.getElementsByTagName!="undefined"?n=e.getElementsByTagName(i||"*"):typeof e.querySelectorAll!="undefined"?n=e.querySelectorAll(i||"*"):n=[],i===void 0||i&&Ie(e,i)?o.merge([e],n):n}function zr(e,i){for(var n=0,s=e.length;n-1){c&&c.push(f);continue}if(k=Ot(f),h=Ke(j.appendChild(f),"script"),k&&zr(h),n)for(R=0;f=h[R++];)Ur.test(f.type||"")&&n.push(f)}return j}var Ai=/^([^.]*)(?:\.(.+)|)/;function rt(){return!0}function Qt(){return!1}function Fn(e,i){return e===Di()==(i==="focus")}function Di(){try{return K.activeElement}catch(e){}}function Gr(e,i,n,s,c,f){var h,w;if(typeof i=="object"){typeof n!="string"&&(s=s||n,n=void 0);for(w in i)Gr(e,w,n,s,i[w],f);return e}if(s==null&&c==null?(c=n,s=n=void 0):c==null&&(typeof n=="string"?(c=s,s=void 0):(c=s,s=n,n=void 0)),c===!1)c=Qt;else if(!c)return e;return f===1&&(h=c,c=function(E){return o().off(E),h.apply(this,arguments)},c.guid=h.guid||(h.guid=o.guid++)),e.each(function(){o.event.add(this,i,c,s,n)})}o.event={global:{},add:function(e,i,n,s,c){var f,h,w,E,k,R,j,F,I,ie,ve,ne=le.get(e);if(!!sr(e))for(n.handler&&(f=n,n=f.handler,c=f.selector),c&&o.find.matchesSelector(Dt,c),n.guid||(n.guid=o.guid++),(E=ne.events)||(E=ne.events=Object.create(null)),(h=ne.handle)||(h=ne.handle=function(ze){return typeof o!="undefined"&&o.event.triggered!==ze.type?o.event.dispatch.apply(e,arguments):void 0}),i=(i||"").match(vt)||[""],k=i.length;k--;)w=Ai.exec(i[k])||[],I=ve=w[1],ie=(w[2]||"").split(".").sort(),!!I&&(j=o.event.special[I]||{},I=(c?j.delegateType:j.bindType)||I,j=o.event.special[I]||{},R=o.extend({type:I,origType:ve,data:s,handler:n,guid:n.guid,selector:c,needsContext:c&&o.expr.match.needsContext.test(c),namespace:ie.join(".")},f),(F=E[I])||(F=E[I]=[],F.delegateCount=0,(!j.setup||j.setup.call(e,s,ie,h)===!1)&&e.addEventListener&&e.addEventListener(I,h)),j.add&&(j.add.call(e,R),R.handler.guid||(R.handler.guid=n.guid)),c?F.splice(F.delegateCount++,0,R):F.push(R),o.event.global[I]=!0)},remove:function(e,i,n,s,c){var f,h,w,E,k,R,j,F,I,ie,ve,ne=le.hasData(e)&&le.get(e);if(!(!ne||!(E=ne.events))){for(i=(i||"").match(vt)||[""],k=i.length;k--;){if(w=Ai.exec(i[k])||[],I=ve=w[1],ie=(w[2]||"").split(".").sort(),!I){for(I in E)o.event.remove(e,I+i[k],n,s,!0);continue}for(j=o.event.special[I]||{},I=(s?j.delegateType:j.bindType)||I,F=E[I]||[],w=w[2]&&new RegExp("(^|\\.)"+ie.join("\\.(?:.*\\.|)")+"(\\.|$)"),h=f=F.length;f--;)R=F[f],(c||ve===R.origType)&&(!n||n.guid===R.guid)&&(!w||w.test(R.namespace))&&(!s||s===R.selector||s==="**"&&R.selector)&&(F.splice(f,1),R.selector&&F.delegateCount--,j.remove&&j.remove.call(e,R));h&&!F.length&&((!j.teardown||j.teardown.call(e,ie,ne.handle)===!1)&&o.removeEvent(e,I,ne.handle),delete E[I])}o.isEmptyObject(E)&&le.remove(e,"handle events")}},dispatch:function(e){var i,n,s,c,f,h,w=new Array(arguments.length),E=o.event.fix(e),k=(le.get(this,"events")||Object.create(null))[E.type]||[],R=o.event.special[E.type]||{};for(w[0]=E,i=1;i=1)){for(;k!==this;k=k.parentNode||this)if(k.nodeType===1&&!(e.type==="click"&&k.disabled===!0)){for(f=[],h={},n=0;n-1:o.find(c,this,null,[k]).length),h[c]&&f.push(s);f.length&&w.push({elem:k,handlers:f})}}return k=this,E\s*$/g;function Fi(e,i){return Ie(e,"table")&&Ie(i.nodeType!==11?i:i.firstChild,"tr")&&o(e).children("tbody")[0]||e}function Mn(e){return e.type=(e.getAttribute("type")!==null)+"/"+e.type,e}function Nn(e){return(e.type||"").slice(0,5)==="true/"?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Li(e,i){var n,s,c,f,h,w,E;if(i.nodeType===1){if(le.hasData(e)&&(f=le.get(e),E=f.events,E)){le.remove(i,"handle events");for(c in E)for(n=0,s=E[c].length;n1&&typeof I=="string"&&!H.checkClone&&Rn.test(I))return e.each(function(ve){var ne=e.eq(ve);ie&&(i[0]=I.call(this,ve,ne.html())),Wt(ne,i,n,s)});if(j&&(c=qr(i,e[0].ownerDocument,!1,e,s),f=c.firstChild,c.childNodes.length===1&&(c=f),f||s)){for(h=o.map(Ke(c,"script"),Mn),w=h.length;R0&&zr(h,!E&&Ke(e,"script")),w},cleanData:function(e){for(var i,n,s,c=o.event.special,f=0;(n=e[f])!==void 0;f++)if(sr(n)){if(i=n[le.expando]){if(i.events)for(s in i.events)c[s]?o.event.remove(n,s):o.removeEvent(n,s,i.handle);n[le.expando]=void 0}n[$e.expando]&&(n[$e.expando]=void 0)}}}),o.fn.extend({detach:function(e){return Ri(this,e,!0)},remove:function(e){return Ri(this,e)},text:function(e){return St(this,function(i){return i===void 0?o.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=i)})},null,e,arguments.length)},append:function(){return Wt(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=Fi(this,e);i.appendChild(e)}})},prepend:function(){return Wt(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=Fi(this,e);i.insertBefore(e,i.firstChild)}})},before:function(){return Wt(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Wt(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,i=0;(e=this[i])!=null;i++)e.nodeType===1&&(o.cleanData(Ke(e,!1)),e.textContent="");return this},clone:function(e,i){return e=e==null?!1:e,i=i==null?e:i,this.map(function(){return o.clone(this,e,i)})},html:function(e){return St(this,function(i){var n=this[0]||{},s=0,c=this.length;if(i===void 0&&n.nodeType===1)return n.innerHTML;if(typeof i=="string"&&!Ln.test(i)&&!Je[(Hr.exec(i)||["",""])[1].toLowerCase()]){i=o.htmlPrefilter(i);try{for(;s=0&&(E+=Math.max(0,Math.ceil(e["offset"+i[0].toUpperCase()+i.slice(1)]-f-E-w-.5))||0),E}function jt(e,i,n){var s=Ar(e),c=!H.boxSizingReliable()||n,f=c&&o.css(e,"boxSizing",!1,s)==="border-box",h=f,w=ur(e,i,s),E="offset"+i[0].toUpperCase()+i.slice(1);if(Yr.test(w)){if(!n)return w;w="auto"}return(!H.boxSizingReliable()&&f||!H.reliableTrDimensions()&&Ie(e,"tr")||w==="auto"||!parseFloat(w)&&o.css(e,"display",!1,s)==="inline")&&e.getClientRects().length&&(f=o.css(e,"boxSizing",!1,s)==="border-box",h=E in e,h&&(w=e[E])),w=parseFloat(w)||0,w+Dr(e,i,n||(f?"border":"content"),h,s,w)+"px"}o.extend({cssHooks:{opacity:{get:function(e,i){if(i){var n=ur(e,"opacity");return n===""?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,i,n,s){if(!(!e||e.nodeType===3||e.nodeType===8||!e.style)){var c,f,h,w=bt(i),E=Wi.test(i),k=e.style;if(E||(i=Xr(w)),h=o.cssHooks[i]||o.cssHooks[w],n!==void 0){if(f=typeof n,f==="string"&&(c=Nt.exec(n))&&c[1]&&(n=jr(e,i,c),f="number"),n==null||n!==n)return;f==="number"&&!E&&(n+=c&&c[3]||(o.cssNumber[w]?"":"px")),!H.clearCloneStyle&&n===""&&i.indexOf("background")===0&&(k[i]="inherit"),(!h||!("set"in h)||(n=h.set(e,n,s))!==void 0)&&(E?k.setProperty(i,n):k[i]=n)}else return h&&"get"in h&&(c=h.get(e,!1,s))!==void 0?c:k[i]}},css:function(e,i,n,s){var c,f,h,w=bt(i),E=Wi.test(i);return E||(i=Xr(w)),h=o.cssHooks[i]||o.cssHooks[w],h&&"get"in h&&(c=h.get(e,!0,n)),c===void 0&&(c=ur(e,i,s)),c==="normal"&&i in Qr&&(c=Qr[i]),n===""||n?(f=parseFloat(c),n===!0||isFinite(f)?f||0:c):c}}),o.each(["height","width"],function(e,i){o.cssHooks[i]={get:function(n,s,c){if(s)return jn.test(o.css(n,"display"))&&(!n.getClientRects().length||!n.getBoundingClientRect().width)?Ii(n,Bn,function(){return jt(n,i,c)}):jt(n,i,c)},set:function(n,s,c){var f,h=Ar(n),w=!H.scrollboxSize()&&h.position==="absolute",E=w||c,k=E&&o.css(n,"boxSizing",!1,h)==="border-box",R=c?Dr(n,i,c,k,h):0;return k&&w&&(R-=Math.ceil(n["offset"+i[0].toUpperCase()+i.slice(1)]-parseFloat(h[i])-Dr(n,i,"border",!1,h)-.5)),R&&(f=Nt.exec(s))&&(f[3]||"px")!=="px"&&(n.style[i]=s,s=o.css(n,i)),Jt(n,s,R)}}}),o.cssHooks.marginLeft=Mi(H.reliableMarginLeft,function(e,i){if(i)return(parseFloat(ur(e,"marginLeft"))||e.getBoundingClientRect().left-Ii(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),o.each({margin:"",padding:"",border:"Width"},function(e,i){o.cssHooks[e+i]={expand:function(n){for(var s=0,c={},f=typeof n=="string"?n.split(" "):[n];s<4;s++)c[e+yt[s]+i]=f[s]||f[s-2]||f[0];return c}},e!=="margin"&&(o.cssHooks[e+i].set=Jt)}),o.fn.extend({css:function(e,i){return St(this,function(n,s,c){var f,h,w={},E=0;if(Array.isArray(s)){for(f=Ar(n),h=s.length;E1)}});function Ze(e,i,n,s,c){return new Ze.prototype.init(e,i,n,s,c)}o.Tween=Ze,Ze.prototype={constructor:Ze,init:function(e,i,n,s,c,f){this.elem=e,this.prop=n,this.easing=c||o.easing._default,this.options=i,this.start=this.now=this.cur(),this.end=s,this.unit=f||(o.cssNumber[n]?"":"px")},cur:function(){var e=Ze.propHooks[this.prop];return e&&e.get?e.get(this):Ze.propHooks._default.get(this)},run:function(e){var i,n=Ze.propHooks[this.prop];return this.options.duration?this.pos=i=o.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=i=e,this.now=(this.end-this.start)*i+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ze.propHooks._default.set(this),this}},Ze.prototype.init.prototype=Ze.prototype,Ze.propHooks={_default:{get:function(e){var i;return e.elem.nodeType!==1||e.elem[e.prop]!=null&&e.elem.style[e.prop]==null?e.elem[e.prop]:(i=o.css(e.elem,e.prop,""),!i||i==="auto"?0:i)},set:function(e){o.fx.step[e.prop]?o.fx.step[e.prop](e):e.elem.nodeType===1&&(o.cssHooks[e.prop]||e.elem.style[Xr(e.prop)]!=null)?o.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ze.propHooks.scrollTop=Ze.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},o.easing={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},_default:"swing"},o.fx=Ze.prototype.init,o.fx.step={};var _t,Kt,Hn=/^(?:toggle|show|hide)$/,Un=/queueHooks$/;function cr(){Kt&&(K.hidden===!1&&l.requestAnimationFrame?l.requestAnimationFrame(cr):l.setTimeout(cr,o.fx.interval),o.fx.tick())}function ji(){return l.setTimeout(function(){_t=void 0}),_t=Date.now()}function Fr(e,i){var n,s=0,c={height:e};for(i=i?1:0;s<4;s+=2-i)n=yt[s],c["margin"+n]=c["padding"+n]=e;return i&&(c.opacity=c.width=e),c}function p(e,i,n){for(var s,c=(_.tweeners[i]||[]).concat(_.tweeners["*"]),f=0,h=c.length;f1)},removeAttr:function(e){return this.each(function(){o.removeAttr(this,e)})}}),o.extend({attr:function(e,i,n){var s,c,f=e.nodeType;if(!(f===3||f===8||f===2)){if(typeof e.getAttribute=="undefined")return o.prop(e,i,n);if((f!==1||!o.isXMLDoc(e))&&(c=o.attrHooks[i.toLowerCase()]||(o.expr.match.bool.test(i)?P:void 0)),n!==void 0){if(n===null){o.removeAttr(e,i);return}return c&&"set"in c&&(s=c.set(e,n,i))!==void 0?s:(e.setAttribute(i,n+""),n)}return c&&"get"in c&&(s=c.get(e,i))!==null?s:(s=o.find.attr(e,i),s==null?void 0:s)}},attrHooks:{type:{set:function(e,i){if(!H.radioValue&&i==="radio"&&Ie(e,"input")){var n=e.value;return e.setAttribute("type",i),n&&(e.value=n),i}}}},removeAttr:function(e,i){var n,s=0,c=i&&i.match(vt);if(c&&e.nodeType===1)for(;n=c[s++];)e.removeAttribute(n)}}),P={set:function(e,i,n){return i===!1?o.removeAttr(e,n):e.setAttribute(n,n),n}},o.each(o.expr.match.bool.source.match(/\w+/g),function(e,i){var n=T[i]||o.find.attr;T[i]=function(s,c,f){var h,w,E=c.toLowerCase();return f||(w=T[E],T[E]=h,h=n(s,c,f)!=null?E:null,T[E]=w),h}});var N=/^(?:input|select|textarea|button)$/i,U=/^(?:a|area)$/i;o.fn.extend({prop:function(e,i){return St(this,o.prop,e,i,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[o.propFix[e]||e]})}}),o.extend({prop:function(e,i,n){var s,c,f=e.nodeType;if(!(f===3||f===8||f===2))return(f!==1||!o.isXMLDoc(e))&&(i=o.propFix[i]||i,c=o.propHooks[i]),n!==void 0?c&&"set"in c&&(s=c.set(e,n,i))!==void 0?s:e[i]=n:c&&"get"in c&&(s=c.get(e,i))!==null?s:e[i]},propHooks:{tabIndex:{get:function(e){var i=o.find.attr(e,"tabindex");return i?parseInt(i,10):N.test(e.nodeName)||U.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),H.optSelected||(o.propHooks.selected={get:function(e){var i=e.parentNode;return i&&i.parentNode&&i.parentNode.selectedIndex,null},set:function(e){var i=e.parentNode;i&&(i.selectedIndex,i.parentNode&&i.parentNode.selectedIndex)}}),o.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){o.propFix[this.toLowerCase()]=this});function V(e){var i=e.match(vt)||[];return i.join(" ")}function q(e){return e.getAttribute&&e.getAttribute("class")||""}function X(e){return Array.isArray(e)?e:typeof e=="string"?e.match(vt)||[]:[]}o.fn.extend({addClass:function(e){var i,n,s,c,f,h,w,E=0;if(G(e))return this.each(function(k){o(this).addClass(e.call(this,k,q(this)))});if(i=X(e),i.length){for(;n=this[E++];)if(c=q(n),s=n.nodeType===1&&" "+V(c)+" ",s){for(h=0;f=i[h++];)s.indexOf(" "+f+" ")<0&&(s+=f+" ");w=V(s),c!==w&&n.setAttribute("class",w)}}return this},removeClass:function(e){var i,n,s,c,f,h,w,E=0;if(G(e))return this.each(function(k){o(this).removeClass(e.call(this,k,q(this)))});if(!arguments.length)return this.attr("class","");if(i=X(e),i.length){for(;n=this[E++];)if(c=q(n),s=n.nodeType===1&&" "+V(c)+" ",s){for(h=0;f=i[h++];)for(;s.indexOf(" "+f+" ")>-1;)s=s.replace(" "+f+" "," ");w=V(s),c!==w&&n.setAttribute("class",w)}}return this},toggleClass:function(e,i){var n=typeof e,s=n==="string"||Array.isArray(e);return typeof i=="boolean"&&s?i?this.addClass(e):this.removeClass(e):G(e)?this.each(function(c){o(this).toggleClass(e.call(this,c,q(this),i),i)}):this.each(function(){var c,f,h,w;if(s)for(f=0,h=o(this),w=X(e);c=w[f++];)h.hasClass(c)?h.removeClass(c):h.addClass(c);else(e===void 0||n==="boolean")&&(c=q(this),c&&le.set(this,"__className__",c),this.setAttribute&&this.setAttribute("class",c||e===!1?"":le.get(this,"__className__")||""))})},hasClass:function(e){var i,n,s=0;for(i=" "+e+" ";n=this[s++];)if(n.nodeType===1&&(" "+V(q(n))+" ").indexOf(i)>-1)return!0;return!1}});var te=/\r/g;o.fn.extend({val:function(e){var i,n,s,c=this[0];return arguments.length?(s=G(e),this.each(function(f){var h;this.nodeType===1&&(s?h=e.call(this,f,o(this).val()):h=e,h==null?h="":typeof h=="number"?h+="":Array.isArray(h)&&(h=o.map(h,function(w){return w==null?"":w+""})),i=o.valHooks[this.type]||o.valHooks[this.nodeName.toLowerCase()],(!i||!("set"in i)||i.set(this,h,"value")===void 0)&&(this.value=h))})):c?(i=o.valHooks[c.type]||o.valHooks[c.nodeName.toLowerCase()],i&&"get"in i&&(n=i.get(c,"value"))!==void 0?n:(n=c.value,typeof n=="string"?n.replace(te,""):n==null?"":n)):void 0}}),o.extend({valHooks:{option:{get:function(e){var i=o.find.attr(e,"value");return i!=null?i:V(o.text(e))}},select:{get:function(e){var i,n,s,c=e.options,f=e.selectedIndex,h=e.type==="select-one",w=h?null:[],E=h?f+1:c.length;for(f<0?s=E:s=h?f:0;s-1)&&(n=!0);return n||(e.selectedIndex=-1),f}}}}),o.each(["radio","checkbox"],function(){o.valHooks[this]={set:function(e,i){if(Array.isArray(i))return e.checked=o.inArray(o(e).val(),i)>-1}},H.checkOn||(o.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value})}),H.focusin="onfocusin"in l;var xe=/^(?:focusinfocus|focusoutblur)$/,Ce=function(e){e.stopPropagation()};o.extend(o.event,{trigger:function(e,i,n,s){var c,f,h,w,E,k,R,j,F=[n||K],I=W.call(e,"type")?e.type:e,ie=W.call(e,"namespace")?e.namespace.split("."):[];if(f=j=h=n=n||K,!(n.nodeType===3||n.nodeType===8)&&!xe.test(I+o.event.triggered)&&(I.indexOf(".")>-1&&(ie=I.split("."),I=ie.shift(),ie.sort()),E=I.indexOf(":")<0&&"on"+I,e=e[o.expando]?e:new o.Event(I,typeof e=="object"&&e),e.isTrigger=s?2:3,e.namespace=ie.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+ie.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),i=i==null?[e]:o.makeArray(i,[e]),R=o.event.special[I]||{},!(!s&&R.trigger&&R.trigger.apply(n,i)===!1))){if(!s&&!R.noBubble&&!de(n)){for(w=R.delegateType||I,xe.test(w+I)||(f=f.parentNode);f;f=f.parentNode)F.push(f),h=f;h===(n.ownerDocument||K)&&F.push(h.defaultView||h.parentWindow||l)}for(c=0;(f=F[c++])&&!e.isPropagationStopped();)j=f,e.type=c>1?w:R.bindType||I,k=(le.get(f,"events")||Object.create(null))[e.type]&&le.get(f,"handle"),k&&k.apply(f,i),k=E&&f[E],k&&k.apply&&sr(f)&&(e.result=k.apply(f,i),e.result===!1&&e.preventDefault());return e.type=I,!s&&!e.isDefaultPrevented()&&(!R._default||R._default.apply(F.pop(),i)===!1)&&sr(n)&&E&&G(n[I])&&!de(n)&&(h=n[E],h&&(n[E]=null),o.event.triggered=I,e.isPropagationStopped()&&j.addEventListener(I,Ce),n[I](),e.isPropagationStopped()&&j.removeEventListener(I,Ce),o.event.triggered=void 0,h&&(n[E]=h)),e.result}},simulate:function(e,i,n){var s=o.extend(new o.Event,n,{type:e,isSimulated:!0});o.event.trigger(s,null,i)}}),o.fn.extend({trigger:function(e,i){return this.each(function(){o.event.trigger(e,i,this)})},triggerHandler:function(e,i){var n=this[0];if(n)return o.event.trigger(e,i,n,!0)}}),H.focusin||o.each({focus:"focusin",blur:"focusout"},function(e,i){var n=function(s){o.event.simulate(i,s.target,o.event.fix(s))};o.event.special[i]={setup:function(){var s=this.ownerDocument||this.document||this,c=le.access(s,i);c||s.addEventListener(e,n,!0),le.access(s,i,(c||0)+1)},teardown:function(){var s=this.ownerDocument||this.document||this,c=le.access(s,i)-1;c?le.access(s,i,c):(s.removeEventListener(e,n,!0),le.remove(s,i))}}});var Se=l.location,We={guid:Date.now()},Me=/\?/;o.parseXML=function(e){var i,n;if(!e||typeof e!="string")return null;try{i=new l.DOMParser().parseFromString(e,"text/xml")}catch(s){}return n=i&&i.getElementsByTagName("parsererror")[0],(!i||n)&&o.error("Invalid XML: "+(n?o.map(n.childNodes,function(s){return s.textContent}).join(` `):e)),i};var at=/\[\]$/,Zt=/\r?\n/g,Jr=/^(?:submit|button|image|reset|file)$/i,zn=/^(?:input|select|textarea|keygen)/i;function fr(e,i,n,s){var c;if(Array.isArray(i))o.each(i,function(f,h){n||at.test(e)?s(e,h):fr(e+"["+(typeof h=="object"&&h!=null?f:"")+"]",h,n,s)});else if(!n&&be(i)==="object")for(c in i)fr(e+"["+c+"]",i[c],n,s);else s(e,i)}o.param=function(e,i){var n,s=[],c=function(f,h){var w=G(h)?h():h;s[s.length]=encodeURIComponent(f)+"="+encodeURIComponent(w==null?"":w)};if(e==null)return"";if(Array.isArray(e)||e.jquery&&!o.isPlainObject(e))o.each(e,function(){c(this.name,this.value)});else for(n in e)fr(n,e[n],i,c);return s.join("&")},o.fn.extend({serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=o.prop(this,"elements");return e?o.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!o(this).is(":disabled")&&zn.test(this.nodeName)&&!Jr.test(e)&&(this.checked||!Xt.test(e))}).map(function(e,i){var n=o(this).val();return n==null?null:Array.isArray(n)?o.map(n,function(s){return{name:i.name,value:s.replace(Zt,`\r `)}}):{name:i.name,value:n.replace(Zt,`\r `)}}).get()}});var ss=/%20/g,Vn=/#.*$/,qn=/([?&])_=[^&]*/,Bi=/^(.*?):[ \t]*([^\r\n]*)$/mg,Ao=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Do=/^(?:GET|HEAD)$/,Fo=/^\/\//,os={},Gn={},ls="*/".concat("*"),Yn=K.createElement("a");Yn.href=Se.href;function us(e){return function(i,n){typeof i!="string"&&(n=i,i="*");var s,c=0,f=i.toLowerCase().match(vt)||[];if(G(n))for(;s=f[c++];)s[0]==="+"?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function cs(e,i,n,s){var c={},f=e===Gn;function h(w){var E;return c[w]=!0,o.each(e[w]||[],function(k,R){var j=R(i,n,s);if(typeof j=="string"&&!f&&!c[j])return i.dataTypes.unshift(j),h(j),!1;if(f)return!(E=j)}),E}return h(i.dataTypes[0])||!c["*"]&&h("*")}function Xn(e,i){var n,s,c=o.ajaxSettings.flatOptions||{};for(n in i)i[n]!==void 0&&((c[n]?e:s||(s={}))[n]=i[n]);return s&&o.extend(!0,e,s),e}function Lo(e,i,n){for(var s,c,f,h,w=e.contents,E=e.dataTypes;E[0]==="*";)E.shift(),s===void 0&&(s=e.mimeType||i.getResponseHeader("Content-Type"));if(s){for(c in w)if(w[c]&&w[c].test(s)){E.unshift(c);break}}if(E[0]in n)f=E[0];else{for(c in n){if(!E[0]||e.converters[c+" "+E[0]]){f=c;break}h||(h=c)}f=f||h}if(f)return f!==E[0]&&E.unshift(f),n[f]}function Ro(e,i,n,s){var c,f,h,w,E,k={},R=e.dataTypes.slice();if(R[1])for(h in e.converters)k[h.toLowerCase()]=e.converters[h];for(f=R.shift();f;)if(e.responseFields[f]&&(n[e.responseFields[f]]=i),!E&&s&&e.dataFilter&&(i=e.dataFilter(i,e.dataType)),E=f,f=R.shift(),f){if(f==="*")f=E;else if(E!=="*"&&E!==f){if(h=k[E+" "+f]||k["* "+f],!h){for(c in k)if(w=c.split(" "),w[1]===f&&(h=k[E+" "+w[0]]||k["* "+w[0]],h)){h===!0?h=k[c]:k[c]!==!0&&(f=w[0],R.unshift(w[1]));break}}if(h!==!0)if(h&&e.throws)i=h(i);else try{i=h(i)}catch(j){return{state:"parsererror",error:h?j:"No conversion from "+E+" to "+f}}}}return{state:"success",data:i}}o.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Se.href,type:"GET",isLocal:Ao.test(Se.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ls,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":o.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,i){return i?Xn(Xn(e,o.ajaxSettings),i):Xn(o.ajaxSettings,e)},ajaxPrefilter:us(os),ajaxTransport:us(Gn),ajax:function(e,i){typeof e=="object"&&(i=e,e=void 0),i=i||{};var n,s,c,f,h,w,E,k,R,j,F=o.ajaxSetup({},i),I=F.context||F,ie=F.context&&(I.nodeType||I.jquery)?o(I):o.event,ve=o.Deferred(),ne=o.Callbacks("once memory"),ze=F.statusCode||{},Ue={},ct={},De="canceled",me={readyState:0,getResponseHeader:function(ke){var je;if(E){if(!f)for(f={};je=Bi.exec(c);)f[je[1].toLowerCase()+" "]=(f[je[1].toLowerCase()+" "]||[]).concat(je[2]);je=f[ke.toLowerCase()+" "]}return je==null?null:je.join(", ")},getAllResponseHeaders:function(){return E?c:null},setRequestHeader:function(ke,je){return E==null&&(ke=ct[ke.toLowerCase()]=ct[ke.toLowerCase()]||ke,Ue[ke]=je),this},overrideMimeType:function(ke){return E==null&&(F.mimeType=ke),this},statusCode:function(ke){var je;if(ke)if(E)me.always(ke[me.status]);else for(je in ke)ze[je]=[ze[je],ke[je]];return this},abort:function(ke){var je=ke||De;return n&&n.abort(je),st(0,je),this}};if(ve.promise(me),F.url=((e||F.url||Se.href)+"").replace(Fo,Se.protocol+"//"),F.type=i.method||i.type||F.method||F.type,F.dataTypes=(F.dataType||"*").toLowerCase().match(vt)||[""],F.crossDomain==null){w=K.createElement("a");try{w.href=F.url,w.href=w.href,F.crossDomain=Yn.protocol+"//"+Yn.host!=w.protocol+"//"+w.host}catch(ke){F.crossDomain=!0}}if(F.data&&F.processData&&typeof F.data!="string"&&(F.data=o.param(F.data,F.traditional)),cs(os,F,i,me),E)return me;k=o.event&&F.global,k&&o.active++==0&&o.event.trigger("ajaxStart"),F.type=F.type.toUpperCase(),F.hasContent=!Do.test(F.type),s=F.url.replace(Vn,""),F.hasContent?F.data&&F.processData&&(F.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(F.data=F.data.replace(ss,"+")):(j=F.url.slice(s.length),F.data&&(F.processData||typeof F.data=="string")&&(s+=(Me.test(s)?"&":"?")+F.data,delete F.data),F.cache===!1&&(s=s.replace(qn,"$1"),j=(Me.test(s)?"&":"?")+"_="+We.guid+++j),F.url=s+j),F.ifModified&&(o.lastModified[s]&&me.setRequestHeader("If-Modified-Since",o.lastModified[s]),o.etag[s]&&me.setRequestHeader("If-None-Match",o.etag[s])),(F.data&&F.hasContent&&F.contentType!==!1||i.contentType)&&me.setRequestHeader("Content-Type",F.contentType),me.setRequestHeader("Accept",F.dataTypes[0]&&F.accepts[F.dataTypes[0]]?F.accepts[F.dataTypes[0]]+(F.dataTypes[0]!=="*"?", "+ls+"; q=0.01":""):F.accepts["*"]);for(R in F.headers)me.setRequestHeader(R,F.headers[R]);if(F.beforeSend&&(F.beforeSend.call(I,me,F)===!1||E))return me.abort();if(De="abort",ne.add(F.complete),me.done(F.success),me.fail(F.error),n=cs(Gn,F,i,me),!n)st(-1,"No Transport");else{if(me.readyState=1,k&&ie.trigger("ajaxSend",[me,F]),E)return me;F.async&&F.timeout>0&&(h=l.setTimeout(function(){me.abort("timeout")},F.timeout));try{E=!1,n.send(Ue,st)}catch(ke){if(E)throw ke;st(-1,ke)}}function st(ke,je,Zr,Hi){var ft,dr,hr,ot,er,xt=je;E||(E=!0,h&&l.clearTimeout(h),n=void 0,c=Hi||"",me.readyState=ke>0?4:0,ft=ke>=200&&ke<300||ke===304,Zr&&(ot=Lo(F,me,Zr)),!ft&&o.inArray("script",F.dataTypes)>-1&&o.inArray("json",F.dataTypes)<0&&(F.converters["text script"]=function(){}),ot=Ro(F,ot,me,ft),ft?(F.ifModified&&(er=me.getResponseHeader("Last-Modified"),er&&(o.lastModified[s]=er),er=me.getResponseHeader("etag"),er&&(o.etag[s]=er)),ke===204||F.type==="HEAD"?xt="nocontent":ke===304?xt="notmodified":(xt=ot.state,dr=ot.data,hr=ot.error,ft=!hr)):(hr=xt,(ke||!xt)&&(xt="error",ke<0&&(ke=0))),me.status=ke,me.statusText=(je||xt)+"",ft?ve.resolveWith(I,[dr,xt,me]):ve.rejectWith(I,[me,xt,hr]),me.statusCode(ze),ze=void 0,k&&ie.trigger(ft?"ajaxSuccess":"ajaxError",[me,F,ft?dr:hr]),ne.fireWith(I,[me,xt]),k&&(ie.trigger("ajaxComplete",[me,F]),--o.active||o.event.trigger("ajaxStop")))}return me},getJSON:function(e,i,n){return o.get(e,i,n,"json")},getScript:function(e,i){return o.get(e,void 0,i,"script")}}),o.each(["get","post"],function(e,i){o[i]=function(n,s,c,f){return G(s)&&(f=f||c,c=s,s=void 0),o.ajax(o.extend({url:n,type:i,dataType:f,data:s,success:c},o.isPlainObject(n)&&n))}}),o.ajaxPrefilter(function(e){var i;for(i in e.headers)i.toLowerCase()==="content-type"&&(e.contentType=e.headers[i]||"")}),o._evalUrl=function(e,i,n){return o.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(s){o.globalEval(s,i,n)}})},o.fn.extend({wrapAll:function(e){var i;return this[0]&&(G(e)&&(e=e.call(this[0])),i=o(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&i.insertBefore(this[0]),i.map(function(){for(var n=this;n.firstElementChild;)n=n.firstElementChild;return n}).append(this)),this},wrapInner:function(e){return G(e)?this.each(function(i){o(this).wrapInner(e.call(this,i))}):this.each(function(){var i=o(this),n=i.contents();n.length?n.wrapAll(e):i.append(e)})},wrap:function(e){var i=G(e);return this.each(function(n){o(this).wrapAll(i?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){o(this).replaceWith(this.childNodes)}),this}}),o.expr.pseudos.hidden=function(e){return!o.expr.pseudos.visible(e)},o.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},o.ajaxSettings.xhr=function(){try{return new l.XMLHttpRequest}catch(e){}};var Io={0:200,1223:204},Kr=o.ajaxSettings.xhr();H.cors=!!Kr&&"withCredentials"in Kr,H.ajax=Kr=!!Kr,o.ajaxTransport(function(e){var i,n;if(H.cors||Kr&&!e.crossDomain)return{send:function(s,c){var f,h=e.xhr();if(h.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(f in e.xhrFields)h[f]=e.xhrFields[f];e.mimeType&&h.overrideMimeType&&h.overrideMimeType(e.mimeType),!e.crossDomain&&!s["X-Requested-With"]&&(s["X-Requested-With"]="XMLHttpRequest");for(f in s)h.setRequestHeader(f,s[f]);i=function(w){return function(){i&&(i=n=h.onload=h.onerror=h.onabort=h.ontimeout=h.onreadystatechange=null,w==="abort"?h.abort():w==="error"?typeof h.status!="number"?c(0,"error"):c(h.status,h.statusText):c(Io[h.status]||h.status,h.statusText,(h.responseType||"text")!=="text"||typeof h.responseText!="string"?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=i(),n=h.onerror=h.ontimeout=i("error"),h.onabort!==void 0?h.onabort=n:h.onreadystatechange=function(){h.readyState===4&&l.setTimeout(function(){i&&n()})},i=i("abort");try{h.send(e.hasContent&&e.data||null)}catch(w){if(i)throw w}},abort:function(){i&&i()}}}),o.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),o.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return o.globalEval(e),e}}}),o.ajaxPrefilter("script",function(e){e.cache===void 0&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),o.ajaxTransport("script",function(e){if(e.crossDomain||e.scriptAttrs){var i,n;return{send:function(s,c){i=o("