gitextract_a23fu6lt/ ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .npmignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── Viewer.code-workspace ├── Viewer.sublime-project ├── clean.js ├── clients/ │ ├── README.md │ ├── downgrader/ │ │ ├── index.html │ │ └── index.js │ ├── example/ │ │ ├── README.md │ │ ├── index.html │ │ ├── index.js │ │ └── resources/ │ │ ├── SmileyGW_004.mdx │ │ └── Textures/ │ │ └── SmileyGW.blp │ ├── map/ │ │ ├── README.md │ │ ├── index.html │ │ └── index.js │ ├── mdlx/ │ │ ├── index.html │ │ └── index.js │ ├── mdlxoptimizer/ │ │ ├── index.html │ │ └── index.ts │ ├── melee/ │ │ ├── README.md │ │ ├── index.html │ │ └── index.js │ ├── rebuild/ │ │ ├── README.md │ │ ├── components/ │ │ │ └── rebuilder.js │ │ ├── index.html │ │ └── index.js │ ├── recorder/ │ │ ├── README.md │ │ ├── index.html │ │ └── index.js │ ├── sanitytest/ │ │ ├── README.md │ │ ├── components/ │ │ │ ├── logger.js │ │ │ ├── mdlview.js │ │ │ ├── sanitytester.js │ │ │ ├── teamcolors.js │ │ │ ├── testmeta.js │ │ │ ├── testresults.js │ │ │ ├── tooltips.js │ │ │ ├── viewer.js │ │ │ └── viewercontrols.js │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ └── test.js │ ├── shared/ │ │ ├── camera.js │ │ ├── component.js │ │ ├── components/ │ │ │ └── toggle.js │ │ ├── domutils.js │ │ ├── localorhive.js │ │ └── utils.js │ ├── tests/ │ │ ├── README.md │ │ ├── components/ │ │ │ └── unittester.js │ │ ├── index.html │ │ ├── index.js │ │ ├── solvers.js │ │ ├── tests/ │ │ │ ├── base.js │ │ │ ├── m3.js │ │ │ ├── mdx.js │ │ │ └── mdxprimitives.js │ │ └── unittester.js │ ├── textureatlas/ │ │ ├── index.html │ │ └── index.js │ ├── thirdparty/ │ │ ├── filesaver.js │ │ └── resemble.js │ └── weu/ │ ├── README.md │ ├── TriggerDataCustom.txt │ ├── TriggerDataPTR129.txt │ ├── TriggerDataWEU.txt │ ├── TriggerDataYDWE.txt │ ├── components/ │ │ ├── weuchanges.js │ │ ├── weuconverter.js │ │ └── weumeta.js │ ├── index.css │ ├── index.html │ └── index.js ├── package.json ├── src/ │ ├── common/ │ │ ├── arrayunique.ts │ │ ├── audio.ts │ │ ├── binarystream.ts │ │ ├── bitstream.ts │ │ ├── bytesof.ts │ │ ├── canvas.ts │ │ ├── convertbitrange.ts │ │ ├── dxt.ts │ │ ├── fetchdatatype.ts │ │ ├── gl-matrix-addon.ts │ │ ├── index.ts │ │ ├── isformat.ts │ │ ├── math.ts │ │ ├── path.ts │ │ ├── searches.ts │ │ ├── seededrandom.ts │ │ ├── sstrhash2.ts │ │ ├── stringreverse.ts │ │ ├── typecast.ts │ │ ├── urlwithparams.ts │ │ └── utf8.ts │ ├── index.ts │ ├── parsers/ │ │ ├── blp/ │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ ├── isformat.ts │ │ │ └── jpg.js │ │ ├── dds/ │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ └── isformat.ts │ │ ├── index.ts │ │ ├── ini/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── m3/ │ │ │ ├── animationreference.ts │ │ │ ├── attachmentpoint.ts │ │ │ ├── batch.ts │ │ │ ├── bone.ts │ │ │ ├── boundingshape.ts │ │ │ ├── boundingsphere.ts │ │ │ ├── camera.ts │ │ │ ├── division.ts │ │ │ ├── event.ts │ │ │ ├── index.ts │ │ │ ├── indexentry.ts │ │ │ ├── isformat.ts │ │ │ ├── layer.ts │ │ │ ├── light.ts │ │ │ ├── materialreference.ts │ │ │ ├── md34.ts │ │ │ ├── model.ts │ │ │ ├── modelheader.ts │ │ │ ├── reference.ts │ │ │ ├── region.ts │ │ │ ├── sd.ts │ │ │ ├── sequence.ts │ │ │ ├── standardmaterial.ts │ │ │ ├── stc.ts │ │ │ ├── stg.ts │ │ │ ├── sts.ts │ │ │ └── unsupportedentry.ts │ │ ├── mdlx/ │ │ │ ├── animatedobject.ts │ │ │ ├── animationmap.ts │ │ │ ├── animations.ts │ │ │ ├── attachment.ts │ │ │ ├── bone.ts │ │ │ ├── camera.ts │ │ │ ├── collisionshape.ts │ │ │ ├── eventobject.ts │ │ │ ├── extent.ts │ │ │ ├── faceeffect.ts │ │ │ ├── genericobject.ts │ │ │ ├── geoset.ts │ │ │ ├── geosetanimation.ts │ │ │ ├── helper.ts │ │ │ ├── index.ts │ │ │ ├── isformat.ts │ │ │ ├── layer.ts │ │ │ ├── light.ts │ │ │ ├── material.ts │ │ │ ├── model.ts │ │ │ ├── particleemitter.ts │ │ │ ├── particleemitter2.ts │ │ │ ├── particleemitterpopcorn.ts │ │ │ ├── ribbonemitter.ts │ │ │ ├── sequence.ts │ │ │ ├── texture.ts │ │ │ ├── textureanimation.ts │ │ │ ├── tokenstream.ts │ │ │ └── unknownchunk.ts │ │ ├── mpq/ │ │ │ ├── adpcm.ts │ │ │ ├── archive.ts │ │ │ ├── block.ts │ │ │ ├── blocktable.ts │ │ │ ├── constants.ts │ │ │ ├── crypto.ts │ │ │ ├── explode.ts │ │ │ ├── file.ts │ │ │ ├── hash.ts │ │ │ ├── hashtable.ts │ │ │ ├── index.ts │ │ │ └── isarchive.ts │ │ ├── slk/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── tga/ │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ └── isformat.ts │ │ └── w3x/ │ │ ├── doo/ │ │ │ ├── doodad.ts │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── randomitem.ts │ │ │ ├── randomitemset.ts │ │ │ └── terraindoodad.ts │ │ ├── imp/ │ │ │ ├── file.ts │ │ │ ├── import.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── map.ts │ │ ├── mmp/ │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ └── minimapicon.ts │ │ ├── shd/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── unitsdoo/ │ │ │ ├── droppeditem.ts │ │ │ ├── droppeditemset.ts │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── inventoryitem.ts │ │ │ ├── modifiedability.ts │ │ │ ├── randomunit.ts │ │ │ └── unit.ts │ │ ├── w3c/ │ │ │ ├── camera.ts │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── w3d/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── w3e/ │ │ │ ├── corner.ts │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── w3f/ │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── maporder.ts │ │ │ └── maptitle.ts │ │ ├── w3i/ │ │ │ ├── file.ts │ │ │ ├── force.ts │ │ │ ├── index.ts │ │ │ ├── player.ts │ │ │ ├── randomitem.ts │ │ │ ├── randomitemset.ts │ │ │ ├── randomitemtable.ts │ │ │ ├── randomunit.ts │ │ │ ├── randomunittable.ts │ │ │ ├── techavailabilitychange.ts │ │ │ └── upgradeavailabilitychange.ts │ │ ├── w3o/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── w3r/ │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ └── region.ts │ │ ├── w3s/ │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ └── sound.ts │ │ ├── w3u/ │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── modification.ts │ │ │ ├── modificationtable.ts │ │ │ └── modifiedobject.ts │ │ ├── wct/ │ │ │ ├── customtexttrigger.ts │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── wpm/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ ├── wtg/ │ │ │ ├── eca.ts │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── parameter.ts │ │ │ ├── subparameters.ts │ │ │ ├── trigger.ts │ │ │ ├── triggercategory.ts │ │ │ ├── triggerdata.ts │ │ │ └── variable.ts │ │ └── wts/ │ │ ├── file.ts │ │ └── index.ts │ ├── utils/ │ │ ├── blp/ │ │ │ ├── index.ts │ │ │ └── sanitytest.ts │ │ ├── dds/ │ │ │ ├── index.ts │ │ │ └── sanitytest.ts │ │ ├── index.ts │ │ ├── jass2/ │ │ │ ├── compilenatives.ts │ │ │ ├── constanthandles.ts │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ ├── jass2lua.ts │ │ │ ├── natives.ts │ │ │ ├── thread.ts │ │ │ ├── tokenstream.ts │ │ │ └── types/ │ │ │ ├── agent.ts │ │ │ ├── aidifficulty.ts │ │ │ ├── alliancetype.ts │ │ │ ├── animtype.ts │ │ │ ├── attacktype.ts │ │ │ ├── blendmode.ts │ │ │ ├── camerafield.ts │ │ │ ├── camerasetup.ts │ │ │ ├── damagetype.ts │ │ │ ├── dialogevent.ts │ │ │ ├── effecttype.ts │ │ │ ├── enum.ts │ │ │ ├── eventid.ts │ │ │ ├── fgamestate.ts │ │ │ ├── fogstate.ts │ │ │ ├── force.ts │ │ │ ├── gamedifficulty.ts │ │ │ ├── gameevent.ts │ │ │ ├── gamespeed.ts │ │ │ ├── gamestate.ts │ │ │ ├── gametype.ts │ │ │ ├── group.ts │ │ │ ├── handle.ts │ │ │ ├── hashtable.ts │ │ │ ├── igamestate.ts │ │ │ ├── index.ts │ │ │ ├── itemtype.ts │ │ │ ├── limitop.ts │ │ │ ├── location.ts │ │ │ ├── mapcontrol.ts │ │ │ ├── mapdensity.ts │ │ │ ├── mapflag.ts │ │ │ ├── mapsetting.ts │ │ │ ├── mapvisibility.ts │ │ │ ├── mousebuttontype.ts │ │ │ ├── pathingtype.ts │ │ │ ├── placement.ts │ │ │ ├── player.ts │ │ │ ├── playercolor.ts │ │ │ ├── playerevent.ts │ │ │ ├── playergameresult.ts │ │ │ ├── playerscore.ts │ │ │ ├── playerslotstate.ts │ │ │ ├── playerstate.ts │ │ │ ├── playerunitevent.ts │ │ │ ├── race.ts │ │ │ ├── racepreference.ts │ │ │ ├── raritycontrol.ts │ │ │ ├── rect.ts │ │ │ ├── region.ts │ │ │ ├── soundtype.ts │ │ │ ├── startlocprio.ts │ │ │ ├── subanimtype.ts │ │ │ ├── texmapflags.ts │ │ │ ├── timer.ts │ │ │ ├── trigger.ts │ │ │ ├── unit.ts │ │ │ ├── unitevent.ts │ │ │ ├── unitstate.ts │ │ │ ├── unittype.ts │ │ │ ├── version.ts │ │ │ ├── volumegroup.ts │ │ │ ├── weapontype.ts │ │ │ ├── weathereffect.ts │ │ │ ├── widget.ts │ │ │ └── widgetevent.ts │ │ ├── mappeddata.ts │ │ ├── mdlx/ │ │ │ ├── index.ts │ │ │ ├── mdlstructure.ts │ │ │ ├── primitives/ │ │ │ │ ├── createprimitive.ts │ │ │ │ └── primitives.ts │ │ │ └── sanitytest/ │ │ │ ├── data.ts │ │ │ ├── sanitytest.ts │ │ │ ├── testers.ts │ │ │ ├── tracks.ts │ │ │ └── utils.ts │ │ └── w3x/ │ │ ├── generatelistfile.ts │ │ ├── index.ts │ │ └── weu/ │ │ ├── conversions.ts │ │ ├── data.ts │ │ ├── parsewtg.ts │ │ ├── processing.ts │ │ ├── transformations/ │ │ │ ├── blz.ts │ │ │ ├── functions.ts │ │ │ ├── presets.ts │ │ │ ├── specific.ts │ │ │ └── transformer.ts │ │ ├── utils.ts │ │ └── weu.ts │ ├── version.ts │ └── viewer/ │ ├── bounds.ts │ ├── camera.ts │ ├── cell.ts │ ├── emittedobject.ts │ ├── emittedobjectupdater.ts │ ├── emitter.ts │ ├── genericresource.ts │ ├── gl/ │ │ ├── clientbuffer.ts │ │ ├── clientdatatexture.ts │ │ ├── datatexture.ts │ │ ├── gl.ts │ │ ├── index.ts │ │ └── shader.ts │ ├── grid.ts │ ├── handlerresource.ts │ ├── handlers/ │ │ ├── blp/ │ │ │ ├── handler.ts │ │ │ └── texture.ts │ │ ├── dds/ │ │ │ ├── handler.ts │ │ │ └── texture.ts │ │ ├── index.ts │ │ ├── m3/ │ │ │ ├── attachment.ts │ │ │ ├── batch.ts │ │ │ ├── bone.ts │ │ │ ├── boundingshape.ts │ │ │ ├── camera.ts │ │ │ ├── handler.ts │ │ │ ├── layer.ts │ │ │ ├── model.ts │ │ │ ├── modelinstance.ts │ │ │ ├── node.ts │ │ │ ├── region.ts │ │ │ ├── sd.ts │ │ │ ├── sequence.ts │ │ │ ├── shaders/ │ │ │ │ ├── layers.glsl.ts │ │ │ │ ├── standard.frag.ts │ │ │ │ └── standard.vert.ts │ │ │ ├── skeleton.ts │ │ │ ├── standardmaterial.ts │ │ │ ├── stc.ts │ │ │ ├── stg.ts │ │ │ ├── sts.ts │ │ │ └── texture.ts │ │ ├── mdx/ │ │ │ ├── animatedobject.ts │ │ │ ├── attachment.ts │ │ │ ├── attachmentinstance.ts │ │ │ ├── batch.ts │ │ │ ├── batchgroup.ts │ │ │ ├── bone.ts │ │ │ ├── camera.ts │ │ │ ├── collisionshape.ts │ │ │ ├── emitter.ts │ │ │ ├── emittergroup.ts │ │ │ ├── eventobjectemitter.ts │ │ │ ├── eventobjectemitterobject.ts │ │ │ ├── eventobjectsnd.ts │ │ │ ├── eventobjectsndemitter.ts │ │ │ ├── eventobjectsplemitter.ts │ │ │ ├── eventobjectsplubr.ts │ │ │ ├── eventobjectspn.ts │ │ │ ├── eventobjectspnemitter.ts │ │ │ ├── eventobjectubremitter.ts │ │ │ ├── filtermode.ts │ │ │ ├── genericobject.ts │ │ │ ├── geometryemitterfuncs.ts │ │ │ ├── geoset.ts │ │ │ ├── geosetanimation.ts │ │ │ ├── handler.ts │ │ │ ├── helper.ts │ │ │ ├── layer.ts │ │ │ ├── light.ts │ │ │ ├── material.ts │ │ │ ├── model.ts │ │ │ ├── modelinstance.ts │ │ │ ├── node.ts │ │ │ ├── particle.ts │ │ │ ├── particle2.ts │ │ │ ├── particleemitter.ts │ │ │ ├── particleemitter2.ts │ │ │ ├── particleemitter2object.ts │ │ │ ├── particleemitterobject.ts │ │ │ ├── replaceableids.ts │ │ │ ├── ribbon.ts │ │ │ ├── ribbonemitter.ts │ │ │ ├── ribbonemitterobject.ts │ │ │ ├── sd.ts │ │ │ ├── sequence.ts │ │ │ ├── setupgeosets.ts │ │ │ ├── setupgroups.ts │ │ │ ├── shaders/ │ │ │ │ ├── hd.frag.ts │ │ │ │ ├── hd.vert.ts │ │ │ │ ├── particles.frag.ts │ │ │ │ ├── particles.vert.ts │ │ │ │ ├── sd.frag.ts │ │ │ │ ├── sd.vert.ts │ │ │ │ └── transforms.glsl.ts │ │ │ ├── texture.ts │ │ │ └── textureanimation.ts │ │ ├── shaders/ │ │ │ ├── bonetexture.glsl.ts │ │ │ ├── precision.glsl.ts │ │ │ └── quattransform.glsl.ts │ │ ├── tga/ │ │ │ ├── handler.ts │ │ │ └── texture.ts │ │ └── w3x/ │ │ ├── doodad.ts │ │ ├── map.ts │ │ ├── shaders/ │ │ │ ├── cliffs.frag.ts │ │ │ ├── cliffs.vert.ts │ │ │ ├── ground.frag.ts │ │ │ ├── ground.vert.ts │ │ │ ├── water.frag.ts │ │ │ └── water.vert.ts │ │ ├── standsequence.ts │ │ ├── terraindoodad.ts │ │ ├── terrainmodel.ts │ │ ├── unit.ts │ │ ├── variations.ts │ │ ├── viewer.ts │ │ └── widget.ts │ ├── imagetexture.ts │ ├── index.ts │ ├── model.ts │ ├── modelinstance.ts │ ├── node.ts │ ├── resource.ts │ ├── scene.ts │ ├── skeletalnode.ts │ ├── texture.ts │ └── viewer.ts ├── tsconfig.json ├── types/ │ ├── fengari.d.ts │ └── tga-js.d.ts └── webpack.config.js