summaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorRay <[email protected]>2021-03-19 22:40:17 +0100
committerRay <[email protected]>2021-03-19 22:40:17 +0100
commitaad3ceff145724815da44195b73d45ebb6e960ae (patch)
treefaab64a6d4fe1c16380fa9b961286eced59caa61 /examples
parente70fc278cf5450a906405b7bf55eb3f4ae7c026d (diff)
downloadraylib.com-aad3ceff145724815da44195b73d45ebb6e960ae.tar.gz
raylib.com-aad3ceff145724815da44195b73d45ebb6e960ae.zip
REVIEWED some examples
Diffstat (limited to 'examples')
-rw-r--r--examples/web/Makefile8
-rw-r--r--examples/web/models/models_rlgl_solar_system.c2
-rw-r--r--examples/web/models/models_waving_cubes.c2
-rw-r--r--examples/web/models/models_yaw_pitch_roll.c146
-rw-r--r--examples/web/models/models_yaw_pitch_roll.databin653060 -> 828760 bytes
-rw-r--r--examples/web/models/models_yaw_pitch_roll.js2
-rw-r--r--examples/web/models/models_yaw_pitch_roll.pngbin0 -> 146882 bytes
-rw-r--r--examples/web/models/models_yaw_pitch_roll.wasmbin231381 -> 225040 bytes
-rw-r--r--examples/web/models/resources/angle_gauge.pngbin10205 -> 0 bytes
-rw-r--r--examples/web/models/resources/background.pngbin4408 -> 0 bytes
-rw-r--r--examples/web/models/resources/pitch.pngbin17370 -> 0 bytes
-rw-r--r--examples/web/models/resources/plane.obj10700
-rw-r--r--examples/web/models/resources/plane.pngbin1782 -> 0 bytes
-rw-r--r--examples/web/models/resources/plane/LICENSE9
-rw-r--r--examples/web/models/resources/plane/plane.binbin0 -> 196176 bytes
-rw-r--r--examples/web/models/resources/plane/plane.gltf327
-rw-r--r--examples/web/models/resources/plane/plane_diffuse.pngbin0 -> 823493 bytes
-rw-r--r--examples/web/models/resources/plane_diffuse.pngbin301650 -> 0 bytes
-rw-r--r--examples/web/shaders/shaders_basic_lighting.c2
-rw-r--r--examples/web/shaders/shaders_custom_uniform.c2
-rw-r--r--examples/web/shaders/shaders_fog.c2
-rw-r--r--examples/web/shaders/shaders_model_shader.c2
-rw-r--r--examples/web/shaders/shaders_rlgl_mesh_instanced.c2
-rw-r--r--examples/web/shaders/shaders_simple_mask.c2
24 files changed, 377 insertions, 10831 deletions
diff --git a/examples/web/Makefile b/examples/web/Makefile
index 3d65747..5cc56b9 100644
--- a/examples/web/Makefile
+++ b/examples/web/Makefile
@@ -891,12 +891,8 @@ models/models_skybox: models/models_skybox.c
# compile [models] example - models yaw pitch roll
models/models_yaw_pitch_roll: models/models_yaw_pitch_roll.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -s TOTAL_MEMORY=67108864 \
- --preload-file models/resources/plane.obj@resources/plane.obj \
- --preload-file models/resources/plane_diffuse.png@resources/plane_diffuse.png \
- --preload-file models/resources/plane.png@resources/plane.png \
- --preload-file models/resources/pitch.png@resources/pitch.png \
- --preload-file models/resources/background.png@resources/background.png \
- --preload-file models/resources/angle_gauge.png@resources/angle_gauge.png
+ --preload-file models/resources/plane/plane.gltf@resources/plane/plane.gltf \
+ --preload-file models/resources/plane/plane_diffuse.png@resources/plane/plane_diffuse.png
# compile [models] example - heightmap loading
models/models_heightmap: models/models_heightmap.c
diff --git a/examples/web/models/models_rlgl_solar_system.c b/examples/web/models/models_rlgl_solar_system.c
index 8157e07..2217a6e 100644
--- a/examples/web/models/models_rlgl_solar_system.c
+++ b/examples/web/models/models_rlgl_solar_system.c
@@ -62,7 +62,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
SetCameraMode(camera, CAMERA_FREE);
diff --git a/examples/web/models/models_waving_cubes.c b/examples/web/models/models_waving_cubes.c
index a076a5b..067046d 100644
--- a/examples/web/models/models_waving_cubes.c
+++ b/examples/web/models/models_waving_cubes.c
@@ -52,7 +52,7 @@ int main()
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 70.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
diff --git a/examples/web/models/models_yaw_pitch_roll.c b/examples/web/models/models_yaw_pitch_roll.c
index 1c5dd98..f085927 100644
--- a/examples/web/models/models_yaw_pitch_roll.c
+++ b/examples/web/models/models_yaw_pitch_roll.c
@@ -27,12 +27,6 @@ const int screenHeight = 450;
// Define our custom camera to look into our 3d world
Camera camera = { 0 };
-Texture2D texAngleGauge = { 0 };
-Texture2D texBackground = { 0 };
-Texture2D texPitch = { 0 };
-Texture2D texPlane = { 0 };
-
-RenderTexture2D framebuffer = { 0 };
Model model = { 0 };
float pitch = 0.0f;
@@ -44,9 +38,6 @@ float yaw = 0.0f;
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
-// Draw angle gauge controls
-void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color);
-
//----------------------------------------------------------------------------------
// Program Main Entry Point
//----------------------------------------------------------------------------------
@@ -56,24 +47,14 @@ int main(void)
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [models] example - plane rotations (yaw, pitch, roll)");
- texAngleGauge = LoadTexture("resources/angle_gauge.png");
- texBackground = LoadTexture("resources/background.png");
- texPitch = LoadTexture("resources/pitch.png");
- texPlane = LoadTexture("resources/plane.png");
-
- framebuffer = LoadRenderTexture(192, 192);
-
- // Model loading
- model = LoadModel("resources/plane.obj"); // Load OBJ model
- model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture
-
- GenTextureMipmaps(&model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture);
-
- camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective
- camera.target = (Vector3){ 0.0f, 12.0f, 0.0f }; // Camera looking at point
+ camera.position = (Vector3){ 0.0f, 50.0f, -120.0f };// Camera position perspective
+ camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 30.0f; // Camera field-of-view Y
- camera.type = CAMERA_PERSPECTIVE; // Camera type
+ camera.projection = CAMERA_PERSPECTIVE; // Camera type
+
+ // Model loading
+ model = LoadModel("resources/plane/plane.gltf"); // Load OBJ model
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 60, 1);
@@ -90,18 +71,9 @@ int main(void)
// De-Initialization
//--------------------------------------------------------------------------------------
+ UnloadModel(model); // Unload all loaded data
- // Unload all loaded data
- UnloadModel(model);
-
- UnloadRenderTexture(framebuffer);
-
- UnloadTexture(texAngleGauge);
- UnloadTexture(texBackground);
- UnloadTexture(texPitch);
- UnloadTexture(texPlane);
-
- CloseWindow(); // Close window and OpenGL context
+ CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
@@ -113,14 +85,14 @@ int main(void)
void UpdateDrawFrame(void)
{
// Update
- //----------------------------------------------------------------------------------
- // Plane roll (x-axis) controls
- if (IsKeyDown(KEY_LEFT)) roll += 1.0f;
- else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f;
+ //----------------------------------------------------------------------------------
+ // Plane pitch (x-axis) controls
+ if (IsKeyDown(KEY_DOWN)) pitch += 0.6f;
+ else if (IsKeyDown(KEY_UP)) pitch -= 0.6f;
else
{
- if (roll > 0.0f) roll -= 0.5f;
- else if (roll < 0.0f) roll += 0.5f;
+ if (pitch > 0.3f) pitch -= 0.3f;
+ else if (pitch < -0.3f) pitch += 0.3f;
}
// Plane yaw (y-axis) controls
@@ -132,28 +104,17 @@ void UpdateDrawFrame(void)
else if (yaw < 0.0f) yaw += 0.5f;
}
- // Plane pitch (z-axis) controls
- if (IsKeyDown(KEY_DOWN)) pitch += 0.6f;
- else if (IsKeyDown(KEY_UP)) pitch -= 0.6f;
+ // Plane roll (z-axis) controls
+ if (IsKeyDown(KEY_LEFT)) roll += 1.0f;
+ else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f;
else
{
- if (pitch > 0.3f) pitch -= 0.3f;
- else if (pitch < -0.3f) pitch += 0.3f;
+ if (roll > 0.0f) roll -= 0.5f;
+ else if (roll < 0.0f) roll += 0.5f;
}
- // Wraps the phase of an angle to fit between -180 and +180 degrees
- int pitchOffset = pitch;
- while (pitchOffset > 180) pitchOffset -= 360;
- while (pitchOffset < -180) pitchOffset += 360;
- pitchOffset *= 10;
-
- Matrix transform = MatrixIdentity();
-
- transform = MatrixMultiply(transform, MatrixRotateZ(DEG2RAD*roll));
- transform = MatrixMultiply(transform, MatrixRotateX(DEG2RAD*pitch));
- transform = MatrixMultiply(transform, MatrixRotateY(DEG2RAD*yaw));
-
- model.transform = transform;
+ // Tranformation matrix for rotations
+ model.transform = MatrixRotateXYZ((Vector3){DEG2RAD*pitch,DEG2RAD*yaw,DEG2RAD*roll});
//----------------------------------------------------------------------------------
// Draw
@@ -162,70 +123,23 @@ void UpdateDrawFrame(void)
ClearBackground(RAYWHITE);
- // Draw framebuffer texture (Ahrs Display)
- int centerX = framebuffer.texture.width/2;
- int centerY = framebuffer.texture.height/2;
- float scaleFactor = 0.5f;
-
- BeginTextureMode(framebuffer);
-
- BeginBlendMode(BLEND_ALPHA);
-
- DrawTexturePro(texBackground, (Rectangle){0,0,texBackground.width, texBackground.height},
- (Rectangle){ centerX, centerY, texBackground.width*scaleFactor, texBackground.height*scaleFactor},
- (Vector2){texBackground.width/2*scaleFactor, texBackground.height/2*scaleFactor + pitchOffset*scaleFactor}, roll, WHITE);
-
- DrawTexturePro(texPitch, (Rectangle){ 0, 0, texPitch.width, texPitch.height },
- (Rectangle){ centerX, centerY, texPitch.width*scaleFactor, texPitch.height*scaleFactor },
- (Vector2){ texPitch.width/2*scaleFactor, texPitch.height/2*scaleFactor + pitchOffset*scaleFactor }, roll, WHITE);
-
- DrawTexturePro(texPlane, (Rectangle){0,0,texPlane.width, texPlane.height },
- (Rectangle){ centerX, centerY, texPlane.width*scaleFactor, texPlane.height*scaleFactor },
- (Vector2){texPlane.width/2*scaleFactor, texPlane.height/2*scaleFactor }, 0, WHITE);
-
- EndBlendMode();
-
- EndTextureMode();
-
// Draw 3D model (recomended to draw 3D always before 2D)
BeginMode3D(camera);
- DrawModel(model, (Vector3){ 0, 6.0f, 0 }, 1.0f, WHITE); // Draw 3d model with texture
+ DrawModel(model, (Vector3){ 0.0f, 0.0f, 15.0f }, 0.25f, WHITE); // Draw 3d model with texture
DrawGrid(10, 10.0f);
EndMode3D();
+
+ // Draw controls info
+ DrawRectangle(30, 370, 260, 70, Fade(GREEN, 0.5f));
+ DrawRectangleLines(30, 370, 260, 70, Fade(DARKGREEN, 0.5f));
+ DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 380, 10, DARKGRAY);
+ DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 400, 10, DARKGRAY);
+ DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 420, 10, DARKGRAY);
- // Draw 2D GUI stuff
- DrawAngleGauge(texAngleGauge, 80, 70, roll, "roll", RED);
- DrawAngleGauge(texAngleGauge, 190, 70, pitch, "pitch", GREEN);
- DrawAngleGauge(texAngleGauge, 300, 70, yaw, "yaw", SKYBLUE);
-
- DrawRectangle(30, 360, 260, 70, Fade(SKYBLUE, 0.5f));
- DrawRectangleLines(30, 360, 260, 70, Fade(DARKBLUE, 0.5f));
- DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 370, 10, DARKGRAY);
- DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 390, 10, DARKGRAY);
- DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 410, 10, DARKGRAY);
-
- // Draw framebuffer texture
- DrawTextureRec(framebuffer.texture, (Rectangle){ 0, 0, framebuffer.texture.width, -framebuffer.texture.height },
- (Vector2){ screenWidth - framebuffer.texture.width - 20, 20 }, Fade(WHITE, 0.8f));
-
- DrawRectangleLines(screenWidth - framebuffer.texture.width - 20, 20, framebuffer.texture.width, framebuffer.texture.height, DARKGRAY);
+ DrawText("(c) WWI Plane Model created by GiaHanLam", screenWidth - 240, screenHeight - 20, 10, DARKGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
-
-// Draw angle gauge controls
-void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color)
-{
- Rectangle srcRec = { 0, 0, angleGauge.width, angleGauge.height };
- Rectangle dstRec = { x, y, angleGauge.width, angleGauge.height };
- Vector2 origin = { angleGauge.width/2, angleGauge.height/2};
- int textSize = 20;
-
- DrawTexturePro(angleGauge, srcRec, dstRec, origin, angle, color);
-
- DrawText(TextFormat("%5.1f", angle), x - MeasureText(TextFormat("%5.1f", angle), textSize) / 2, y + 10, textSize, DARKGRAY);
- DrawText(title, x - MeasureText(title, textSize) / 2, y + 60, textSize, DARKGRAY);
-} \ No newline at end of file
diff --git a/examples/web/models/models_yaw_pitch_roll.data b/examples/web/models/models_yaw_pitch_roll.data
index 62b3a66..103fd11 100644
--- a/examples/web/models/models_yaw_pitch_roll.data
+++ b/examples/web/models/models_yaw_pitch_roll.data
Binary files differ
diff --git a/examples/web/models/models_yaw_pitch_roll.js b/examples/web/models/models_yaw_pitch_roll.js
index 5aadc53..66d2c56 100644
--- a/examples/web/models/models_yaw_pitch_roll.js
+++ b/examples/web/models/models_yaw_pitch_roll.js
@@ -1 +1 @@
-var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_yaw_pitch_roll.data";var REMOTE_PACKAGE_BASE="models_yaw_pitch_roll.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_yaw_pitch_roll.data")}Module["addRunDependency"]("datafile_models/models_yaw_pitch_roll.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/plane.obj","start":0,"end":317645,"audio":0},{"filename":"/resources/plane_diffuse.png","start":317645,"end":619295,"audio":0},{"filename":"/resources/plane.png","start":619295,"end":621077,"audio":0},{"filename":"/resources/pitch.png","start":621077,"end":638447,"audio":0},{"filename":"/resources/background.png","start":638447,"end":642855,"audio":0},{"filename":"/resources/angle_gauge.png","start":642855,"end":653060,"audio":0}],"remote_package_size":653060,"package_uuid":"8fc8541b-a83c-4934-8b23-9e7bf7723ea0"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_yaw_pitch_roll.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ne"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["qe"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendEquation(x0){GLctx["blendEquation"](x0)}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ya":___sys_chdir,"P":___sys_fcntl64,"Xa":___sys_getcwd,"_a":___sys_ioctl,"$a":___sys_open,"ya":_emscripten_exit_pointerlock,"Z":_emscripten_get_element_css_size,"ge":_emscripten_get_gamepad_status,"he":_emscripten_get_num_gamepads,"Md":_emscripten_glActiveTexture,"Ld":_emscripten_glAttachShader,"ae":_emscripten_glBeginQueryEXT,"Kd":_emscripten_glBindAttribLocation,"Jd":_emscripten_glBindBuffer,"Id":_emscripten_glBindFramebuffer,"Hd":_emscripten_glBindRenderbuffer,"Gd":_emscripten_glBindTexture,"Ud":_emscripten_glBindVertexArrayOES,"Fd":_emscripten_glBlendColor,"Ed":_emscripten_glBlendEquation,"Dd":_emscripten_glBlendEquationSeparate,"Cd":_emscripten_glBlendFunc,"Bd":_emscripten_glBlendFuncSeparate,"Ad":_emscripten_glBufferData,"zd":_emscripten_glBufferSubData,"yd":_emscripten_glCheckFramebufferStatus,"xd":_emscripten_glClear,"wd":_emscripten_glClearColor,"vd":_emscripten_glClearDepthf,"ud":_emscripten_glClearStencil,"td":_emscripten_glColorMask,"sd":_emscripten_glCompileShader,"rd":_emscripten_glCompressedTexImage2D,"qd":_emscripten_glCompressedTexSubImage2D,"pd":_emscripten_glCopyTexImage2D,"od":_emscripten_glCopyTexSubImage2D,"nd":_emscripten_glCreateProgram,"md":_emscripten_glCreateShader,"ld":_emscripten_glCullFace,"kd":_emscripten_glDeleteBuffers,"jd":_emscripten_glDeleteFramebuffers,"id":_emscripten_glDeleteProgram,"ce":_emscripten_glDeleteQueriesEXT,"hd":_emscripten_glDeleteRenderbuffers,"gd":_emscripten_glDeleteShader,"fd":_emscripten_glDeleteTextures,"Td":_emscripten_glDeleteVertexArraysOES,"ed":_emscripten_glDepthFunc,"dd":_emscripten_glDepthMask,"cd":_emscripten_glDepthRangef,"bd":_emscripten_glDetachShader,"ad":_emscripten_glDisable,"$c":_emscripten_glDisableVertexAttribArray,"_c":_emscripten_glDrawArrays,"Pd":_emscripten_glDrawArraysInstancedANGLE,"Qd":_emscripten_glDrawBuffersWEBGL,"Zc":_emscripten_glDrawElements,"Od":_emscripten_glDrawElementsInstancedANGLE,"Yc":_emscripten_glEnable,"Xc":_emscripten_glEnableVertexAttribArray,"$d":_emscripten_glEndQueryEXT,"Wc":_emscripten_glFinish,"Vc":_emscripten_glFlush,"Uc":_emscripten_glFramebufferRenderbuffer,"Tc":_emscripten_glFramebufferTexture2D,"Sc":_emscripten_glFrontFace,"Rc":_emscripten_glGenBuffers,"Oc":_emscripten_glGenFramebuffers,"de":_emscripten_glGenQueriesEXT,"Nc":_emscripten_glGenRenderbuffers,"Mc":_emscripten_glGenTextures,"Sd":_emscripten_glGenVertexArraysOES,"Qc":_emscripten_glGenerateMipmap,"Lc":_emscripten_glGetActiveAttrib,"Kc":_emscripten_glGetActiveUniform,"Jc":_emscripten_glGetAttachedShaders,"Ic":_emscripten_glGetAttribLocation,"Hc":_emscripten_glGetBooleanv,"Gc":_emscripten_glGetBufferParameteriv,"Fc":_emscripten_glGetError,"Ec":_emscripten_glGetFloatv,"Dc":_emscripten_glGetFramebufferAttachmentParameteriv,"Cc":_emscripten_glGetIntegerv,"Ac":_emscripten_glGetProgramInfoLog,"Bc":_emscripten_glGetProgramiv,"Wd":_emscripten_glGetQueryObjecti64vEXT,"Yd":_emscripten_glGetQueryObjectivEXT,"Vd":_emscripten_glGetQueryObjectui64vEXT,"Xd":_emscripten_glGetQueryObjectuivEXT,"Zd":_emscripten_glGetQueryivEXT,"zc":_emscripten_glGetRenderbufferParameteriv,"xc":_emscripten_glGetShaderInfoLog,"wc":_emscripten_glGetShaderPrecisionFormat,"vc":_emscripten_glGetShaderSource,"yc":_emscripten_glGetShaderiv,"tc":_emscripten_glGetString,"sc":_emscripten_glGetTexParameterfv,"rc":_emscripten_glGetTexParameteriv,"oc":_emscripten_glGetUniformLocation,"qc":_emscripten_glGetUniformfv,"pc":_emscripten_glGetUniformiv,"lc":_emscripten_glGetVertexAttribPointerv,"nc":_emscripten_glGetVertexAttribfv,"mc":_emscripten_glGetVertexAttribiv,"kc":_emscripten_glHint,"ic":_emscripten_glIsBuffer,"hc":_emscripten_glIsEnabled,"gc":_emscripten_glIsFramebuffer,"fc":_emscripten_glIsProgram,"be":_emscripten_glIsQueryEXT,"ec":_emscripten_glIsRenderbuffer,"dc":_emscripten_glIsShader,"cc":_emscripten_glIsTexture,"Rd":_emscripten_glIsVertexArrayOES,"bc":_emscripten_glLineWidth,"ac":_emscripten_glLinkProgram,"$b":_emscripten_glPixelStorei,"_b":_emscripten_glPolygonOffset,"_d":_emscripten_glQueryCounterEXT,"Zb":_emscripten_glReadPixels,"Yb":_emscripten_glReleaseShaderCompiler,"Xb":_emscripten_glRenderbufferStorage,"Wb":_emscripten_glSampleCoverage,"Vb":_emscripten_glScissor,"Ub":_emscripten_glShaderBinary,"Tb":_emscripten_glShaderSource,"Sb":_emscripten_glStencilFunc,"Rb":_emscripten_glStencilFuncSeparate,"Qb":_emscripten_glStencilMask,"Pb":_emscripten_glStencilMaskSeparate,"Ob":_emscripten_glStencilOp,"Nb":_emscripten_glStencilOpSeparate,"Mb":_emscripten_glTexImage2D,"Lb":_emscripten_glTexParameterf,"Kb":_emscripten_glTexParameterfv,"Jb":_emscripten_glTexParameteri,"Ib":_emscripten_glTexParameteriv,"Hb":_emscripten_glTexSubImage2D,"Gb":_emscripten_glUniform1f,"Fb":_emscripten_glUniform1fv,"Eb":_emscripten_glUniform1i,"Db":_emscripten_glUniform1iv,"Cb":_emscripten_glUniform2f,"Bb":_emscripten_glUniform2fv,"Ab":_emscripten_glUniform2i,"zb":_emscripten_glUniform2iv,"yb":_emscripten_glUniform3f,"xb":_emscripten_glUniform3fv,"vb":_emscripten_glUniform3i,"ub":_emscripten_glUniform3iv,"tb":_emscripten_glUniform4f,"sb":_emscripten_glUniform4fv,"rb":_emscripten_glUniform4i,"qb":_emscripten_glUniform4iv,"pb":_emscripten_glUniformMatrix2fv,"ob":_emscripten_glUniformMatrix3fv,"nb":_emscripten_glUniformMatrix4fv,"mb":_emscripten_glUseProgram,"lb":_emscripten_glValidateProgram,"kb":_emscripten_glVertexAttrib1f,"jb":_emscripten_glVertexAttrib1fv,"ib":_emscripten_glVertexAttrib2f,"hb":_emscripten_glVertexAttrib2fv,"gb":_emscripten_glVertexAttrib3f,"fb":_emscripten_glVertexAttrib3fv,"eb":_emscripten_glVertexAttrib4f,"db":_emscripten_glVertexAttrib4fv,"Nd":_emscripten_glVertexAttribDivisorANGLE,"cb":_emscripten_glVertexAttribPointer,"ab":_emscripten_glViewport,"Ta":_emscripten_memcpy_big,"Ua":_emscripten_resize_heap,"Y":_emscripten_run_script,"ie":_emscripten_sample_gamepad_data,"va":_emscripten_set_click_callback_on_thread,"xa":_emscripten_set_fullscreenchange_callback_on_thread,"qa":_emscripten_set_gamepadconnected_callback_on_thread,"pa":_emscripten_set_gamepaddisconnected_callback_on_thread,"wa":_emscripten_set_keydown_callback_on_thread,"me":_emscripten_set_main_loop,"ra":_emscripten_set_touchcancel_callback_on_thread,"ta":_emscripten_set_touchend_callback_on_thread,"sa":_emscripten_set_touchmove_callback_on_thread,"ua":_emscripten_set_touchstart_callback_on_thread,"Wa":_emscripten_thread_sleep,"ee":_exit,"Q":_fd_close,"Za":_fd_read,"Sa":_fd_seek,"O":_fd_write,"r":_glActiveTexture,"E":_glAttachShader,"l":_glBindAttribLocation,"b":_glBindBuffer,"k":_glBindFramebuffer,"H":_glBindRenderbuffer,"e":_glBindTexture,"za":_glBlendEquation,"R":_glBlendFunc,"f":_glBufferData,"y":_glBufferSubData,"La":_glCheckFramebufferStatus,"S":_glClear,"T":_glClearColor,"Ra":_glClearDepthf,"Ea":_glCompileShader,"Pa":_glCompressedTexImage2D,"Ca":_glCreateProgram,"Ga":_glCreateShader,"bb":_glCullFace,"o":_glDeleteBuffers,"jc":_glDeleteFramebuffers,"I":_glDeleteProgram,"uc":_glDeleteRenderbuffers,"J":_glDeleteShader,"L":_glDeleteTextures,"wb":_glDepthFunc,"K":_glDetachShader,"V":_glDisable,"j":_glDisableVertexAttribArray,"X":_glDrawArrays,"W":_glDrawElements,"z":_glEnable,"c":_glEnableVertexAttribArray,"v":_glFramebufferRenderbuffer,"q":_glFramebufferTexture2D,"Va":_glFrontFace,"g":_glGenBuffers,"Ma":_glGenFramebuffers,"Oa":_glGenRenderbuffers,"N":_glGenTextures,"Ka":_glGenerateMipmap,"x":_glGetAttribLocation,"Pc":_glGetFloatv,"U":_glGetFramebufferAttachmentParameteriv,"Aa":_glGetProgramInfoLog,"G":_glGetProgramiv,"Da":_glGetShaderInfoLog,"F":_glGetShaderiv,"p":_glGetString,"w":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ha":_glReadPixels,"Na":_glRenderbufferStorage,"Fa":_glShaderSource,"M":_glTexImage2D,"i":_glTexParameteri,"B":_glUniform1i,"s":_glUniform4f,"u":_glUniformMatrix4fv,"m":_glUseProgram,"Ia":_glVertexAttrib2f,"Ja":_glVertexAttrib3f,"t":_glVertexAttrib4f,"d":_glVertexAttribPointer,"le":_glViewport,"C":_glfwCreateWindow,"ma":_glfwDefaultWindowHints,"ke":_glfwDestroyWindow,"D":_glfwGetPrimaryMonitor,"n":_glfwGetTime,"la":_glfwGetVideoModes,"na":_glfwInit,"aa":_glfwMakeContextCurrent,"fa":_glfwSetCharCallback,"ba":_glfwSetCursorEnterCallback,"da":_glfwSetCursorPosCallback,"ha":_glfwSetDropCallback,"oa":_glfwSetErrorCallback,"ga":_glfwSetKeyCallback,"ea":_glfwSetMouseButtonCallback,"ca":_glfwSetScrollCallback,"ia":_glfwSetWindowFocusCallback,"ja":_glfwSetWindowIconifyCallback,"fe":_glfwSetWindowShouldClose,"ka":_glfwSetWindowSizeCallback,"je":_glfwSwapBuffers,"$":_glfwSwapInterval,"A":_glfwTerminate,"h":_glfwWindowHint,"_":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["oe"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["pe"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["re"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["se"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["te"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ue"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
+var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_yaw_pitch_roll.data";var REMOTE_PACKAGE_BASE="models_yaw_pitch_roll.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","plane",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_yaw_pitch_roll.data")}Module["addRunDependency"]("datafile_models/models_yaw_pitch_roll.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/plane/plane.gltf","start":0,"end":5267,"audio":0},{"filename":"/resources/plane/plane_diffuse.png","start":5267,"end":828760,"audio":0}],"remote_package_size":828760,"package_uuid":"4fc7af9d-3f17-4850-ac4f-5ba6b2ae50cf"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_yaw_pitch_roll.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ae"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["de"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ta":___sys_chdir,"K":___sys_fcntl64,"Sa":___sys_getcwd,"Va":___sys_ioctl,"Xa":___sys_open,"Aa":_emscripten_exit_pointerlock,"$":_emscripten_get_element_css_size,"W":_emscripten_get_gamepad_status,"X":_emscripten_get_num_gamepads,"Jd":_emscripten_glActiveTexture,"Id":_emscripten_glAttachShader,"Zd":_emscripten_glBeginQueryEXT,"Hd":_emscripten_glBindAttribLocation,"Gd":_emscripten_glBindBuffer,"Fd":_emscripten_glBindFramebuffer,"Ed":_emscripten_glBindRenderbuffer,"Dd":_emscripten_glBindTexture,"Rd":_emscripten_glBindVertexArrayOES,"Cd":_emscripten_glBlendColor,"Bd":_emscripten_glBlendEquation,"Ad":_emscripten_glBlendEquationSeparate,"zd":_emscripten_glBlendFunc,"yd":_emscripten_glBlendFuncSeparate,"xd":_emscripten_glBufferData,"wd":_emscripten_glBufferSubData,"vd":_emscripten_glCheckFramebufferStatus,"ud":_emscripten_glClear,"td":_emscripten_glClearColor,"sd":_emscripten_glClearDepthf,"rd":_emscripten_glClearStencil,"qd":_emscripten_glColorMask,"pd":_emscripten_glCompileShader,"od":_emscripten_glCompressedTexImage2D,"nd":_emscripten_glCompressedTexSubImage2D,"md":_emscripten_glCopyTexImage2D,"ld":_emscripten_glCopyTexSubImage2D,"kd":_emscripten_glCreateProgram,"jd":_emscripten_glCreateShader,"id":_emscripten_glCullFace,"hd":_emscripten_glDeleteBuffers,"gd":_emscripten_glDeleteFramebuffers,"fd":_emscripten_glDeleteProgram,"S":_emscripten_glDeleteQueriesEXT,"ed":_emscripten_glDeleteRenderbuffers,"dd":_emscripten_glDeleteShader,"cd":_emscripten_glDeleteTextures,"Qd":_emscripten_glDeleteVertexArraysOES,"bd":_emscripten_glDepthFunc,"ad":_emscripten_glDepthMask,"$c":_emscripten_glDepthRangef,"_c":_emscripten_glDetachShader,"Zc":_emscripten_glDisable,"Yc":_emscripten_glDisableVertexAttribArray,"Xc":_emscripten_glDrawArrays,"Md":_emscripten_glDrawArraysInstancedANGLE,"Nd":_emscripten_glDrawBuffersWEBGL,"Wc":_emscripten_glDrawElements,"Ld":_emscripten_glDrawElementsInstancedANGLE,"Vc":_emscripten_glEnable,"Uc":_emscripten_glEnableVertexAttribArray,"Yd":_emscripten_glEndQueryEXT,"Tc":_emscripten_glFinish,"Sc":_emscripten_glFlush,"Rc":_emscripten_glFramebufferRenderbuffer,"Qc":_emscripten_glFramebufferTexture2D,"Pc":_emscripten_glFrontFace,"Oc":_emscripten_glGenBuffers,"Mc":_emscripten_glGenFramebuffers,"T":_emscripten_glGenQueriesEXT,"Lc":_emscripten_glGenRenderbuffers,"Kc":_emscripten_glGenTextures,"Pd":_emscripten_glGenVertexArraysOES,"Nc":_emscripten_glGenerateMipmap,"Ic":_emscripten_glGetActiveAttrib,"Hc":_emscripten_glGetActiveUniform,"Gc":_emscripten_glGetAttachedShaders,"Fc":_emscripten_glGetAttribLocation,"Ec":_emscripten_glGetBooleanv,"Dc":_emscripten_glGetBufferParameteriv,"Cc":_emscripten_glGetError,"Bc":_emscripten_glGetFloatv,"Ac":_emscripten_glGetFramebufferAttachmentParameteriv,"zc":_emscripten_glGetIntegerv,"xc":_emscripten_glGetProgramInfoLog,"yc":_emscripten_glGetProgramiv,"Td":_emscripten_glGetQueryObjecti64vEXT,"Vd":_emscripten_glGetQueryObjectivEXT,"Sd":_emscripten_glGetQueryObjectui64vEXT,"Ud":_emscripten_glGetQueryObjectuivEXT,"Wd":_emscripten_glGetQueryivEXT,"wc":_emscripten_glGetRenderbufferParameteriv,"uc":_emscripten_glGetShaderInfoLog,"tc":_emscripten_glGetShaderPrecisionFormat,"sc":_emscripten_glGetShaderSource,"vc":_emscripten_glGetShaderiv,"rc":_emscripten_glGetString,"qc":_emscripten_glGetTexParameterfv,"pc":_emscripten_glGetTexParameteriv,"mc":_emscripten_glGetUniformLocation,"oc":_emscripten_glGetUniformfv,"nc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"lc":_emscripten_glGetVertexAttribfv,"kc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"R":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Od":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"$b":_emscripten_glLinkProgram,"_b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"Xd":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Kb":_emscripten_glStencilOpSeparate,"Jb":_emscripten_glTexImage2D,"Ib":_emscripten_glTexParameterf,"Hb":_emscripten_glTexParameterfv,"Gb":_emscripten_glTexParameteri,"Fb":_emscripten_glTexParameteriv,"Eb":_emscripten_glTexSubImage2D,"Db":_emscripten_glUniform1f,"Cb":_emscripten_glUniform1fv,"Bb":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"sb":_emscripten_glUniform3i,"rb":_emscripten_glUniform3iv,"qb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"hb":_emscripten_glValidateProgram,"gb":_emscripten_glVertexAttrib1f,"fb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"Kd":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Ya":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Y":_emscripten_sample_gamepad_data,"xa":_emscripten_set_click_callback_on_thread,"za":_emscripten_set_fullscreenchange_callback_on_thread,"sa":_emscripten_set_gamepadconnected_callback_on_thread,"ra":_emscripten_set_gamepaddisconnected_callback_on_thread,"ya":_emscripten_set_keydown_callback_on_thread,"$d":_emscripten_set_main_loop,"ta":_emscripten_set_touchcancel_callback_on_thread,"va":_emscripten_set_touchend_callback_on_thread,"ua":_emscripten_set_touchmove_callback_on_thread,"wa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"U":_exit,"L":_fd_close,"Ua":_fd_read,"Na":_fd_seek,"J":_fd_write,"p":_glActiveTexture,"C":_glAttachShader,"k":_glBindAttribLocation,"b":_glBindBuffer,"i":_glBindTexture,"Lb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"M":_glClear,"N":_glClearColor,"eb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"Ab":_glCullFace,"m":_glDeleteBuffers,"F":_glDeleteProgram,"G":_glDeleteShader,"I":_glDeleteTextures,"Wb":_glDepthFunc,"H":_glDetachShader,"O":_glDisable,"h":_glDisableVertexAttribArray,"Q":_glDrawArrays,"P":_glDrawElements,"w":_glEnable,"c":_glEnableVertexAttribArray,"pb":_glFrontFace,"f":_glGenBuffers,"Oa":_glGenTextures,"u":_glGetAttribLocation,"Jc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"E":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"D":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Wa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"d":_glVertexAttribPointer,"_d":_glViewport,"A":_glfwCreateWindow,"oa":_glfwDefaultWindowHints,"_":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"j":_glfwGetTime,"na":_glfwGetVideoModes,"pa":_glfwInit,"ca":_glfwMakeContextCurrent,"ha":_glfwSetCharCallback,"da":_glfwSetCursorEnterCallback,"fa":_glfwSetCursorPosCallback,"ja":_glfwSetDropCallback,"qa":_glfwSetErrorCallback,"ia":_glfwSetKeyCallback,"ga":_glfwSetMouseButtonCallback,"ea":_glfwSetScrollCallback,"ka":_glfwSetWindowFocusCallback,"la":_glfwSetWindowIconifyCallback,"V":_glfwSetWindowShouldClose,"ma":_glfwSetWindowSizeCallback,"Z":_glfwSwapBuffers,"ba":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"aa":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["be"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ce"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ee"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["fe"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ge"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["he"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();
diff --git a/examples/web/models/models_yaw_pitch_roll.png b/examples/web/models/models_yaw_pitch_roll.png
new file mode 100644
index 0000000..8b36fe3
--- /dev/null
+++ b/examples/web/models/models_yaw_pitch_roll.png
Binary files differ
diff --git a/examples/web/models/models_yaw_pitch_roll.wasm b/examples/web/models/models_yaw_pitch_roll.wasm
index 62dc425..9930ad5 100644
--- a/examples/web/models/models_yaw_pitch_roll.wasm
+++ b/examples/web/models/models_yaw_pitch_roll.wasm
Binary files differ
diff --git a/examples/web/models/resources/angle_gauge.png b/examples/web/models/resources/angle_gauge.png
deleted file mode 100644
index 810097d..0000000
--- a/examples/web/models/resources/angle_gauge.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/background.png b/examples/web/models/resources/background.png
deleted file mode 100644
index 88ece1f..0000000
--- a/examples/web/models/resources/background.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/pitch.png b/examples/web/models/resources/pitch.png
deleted file mode 100644
index 82f89cd..0000000
--- a/examples/web/models/resources/pitch.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/plane.obj b/examples/web/models/resources/plane.obj
deleted file mode 100644
index e9100a4..0000000
--- a/examples/web/models/resources/plane.obj
+++ /dev/null
@@ -1,10700 +0,0 @@
-# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
-# File Created: 23.07.2017 19:55:30
-
-#
-# object P_51_Mustang_Proppeler
-#
-
-v 6.98 -5.85 40.44
-v 7.18 -5.71 40.16
-v 7.46 -5.54 40.90
-v 7.65 -5.40 40.61
-v -1.06 6.70 43.10
-v -0.66 7.22 43.05
-v -2.20 7.04 41.37
-v -1.32 8.19 41.26
-v -0.05 7.42 43.02
-v 0.03 8.62 41.20
-v 0.55 7.21 43.04
-v 1.34 8.17 41.23
-v 0.89 6.69 43.08
-v 2.11 7.01 41.33
-v 0.86 6.04 43.14
-v 2.04 5.59 41.46
-v 0.47 5.52 43.19
-v 1.16 4.45 41.57
-v -0.15 5.33 43.22
-v -0.19 4.02 41.63
-v -0.74 5.53 43.20
-v -1.50 4.47 41.60
-v -1.09 6.06 43.16
-v -2.27 5.62 41.50
-v -0.20 3.16 38.93
-v -1.94 3.76 38.90
-v -2.97 5.30 38.76
-v -2.88 7.20 38.59
-v -1.71 8.72 38.44
-v 0.10 9.29 38.37
-v 1.84 8.70 38.40
-v 2.87 7.15 38.54
-v 2.78 5.26 38.71
-v 1.61 3.73 38.86
-v -0.11 6.40 43.97
-v 2.25 5.68 40.33
-v 0.23 3.72 40.34
-v 7.55 -5.03 41.18
-v 6.53 -5.89 40.11
-v -2.39 6.87 40.27
-v -0.36 8.83 39.88
-v -7.68 17.58 39.26
-v -6.63 18.36 38.02
-v -7.10 18.35 38.37
-v -7.59 18.07 38.89
-v -11.88 -2.05 40.51
-v -12.14 -1.59 39.98
-v -11.39 -2.12 40.84
-v -12.14 -1.14 39.60
-v -2.58 5.85 39.82
-v -0.73 3.87 40.17
-v -0.75 3.90 40.52
-v -2.60 5.87 40.18
-v -11.53 -1.92 41.09
-v -12.28 -0.94 39.85
-v -12.28 -1.40 40.23
-v -12.02 -1.86 40.76
-v 7.74 -4.89 40.89
-v 2.27 5.69 39.97
-v 0.25 3.72 39.99
-v 6.72 -5.74 39.83
-v 12.03 14.07 38.30
-v 12.17 13.89 38.58
-v 12.04 13.60 38.00
-v 12.18 13.42 38.29
-v 11.76 14.57 38.74
-v 11.89 14.39 39.03
-v 11.40 14.47 39.35
-v 11.26 14.65 39.07
-v 0.60 8.66 39.71
-v 0.62 8.66 40.07
-v 2.45 6.68 39.69
-v 2.47 6.67 40.05
-v -7.29 18.19 38.11
-v -6.82 18.20 37.77
-v -7.77 17.91 38.63
-v -7.87 17.42 39.01
-v -2.40 6.84 39.91
-v -0.37 8.80 39.53
-# 79 vertices
-
-vn 0.56 -0.83 -0.03
-vn -0.69 0.31 0.65
-vn -0.42 0.65 0.63
-vn -0.85 0.35 0.40
-vn -0.51 0.77 0.38
-vn 0.01 0.77 0.63
-vn 0.01 0.92 0.38
-vn 0.44 0.62 0.65
-vn 0.55 0.74 0.40
-vn 0.70 0.25 0.66
-vn 0.87 0.27 0.42
-vn 0.70 -0.20 0.68
-vn 0.86 -0.28 0.43
-vn 0.44 -0.56 0.71
-vn 0.53 -0.72 0.45
-vn -0.00 -0.69 0.72
-vn -0.01 -0.88 0.47
-vn -0.45 -0.53 0.72
-vn -0.56 -0.69 0.46
-vn -0.71 -0.14 0.69
-vn -0.88 -0.21 0.43
-vn -0.01 -0.95 0.30
-vn -0.60 -0.75 0.29
-vn -0.94 -0.23 0.27
-vn -0.90 0.36 0.24
-vn -0.54 0.81 0.23
-vn 0.02 0.97 0.23
-vn 0.58 0.78 0.25
-vn 0.92 0.29 0.27
-vn 0.91 -0.30 0.28
-vn 0.57 -0.77 0.30
-vn 0.00 0.07 1.00
-vn -0.01 -0.09 -1.00
-vn -0.05 0.06 1.00
-vn -0.09 0.02 1.00
-vn -0.48 -0.32 0.82
-vn -0.52 -0.35 0.78
-vn -0.53 -0.33 0.78
-vn 0.07 0.13 0.99
-vn 0.11 0.16 0.98
-vn 0.47 0.44 0.76
-vn 0.51 0.47 0.72
-vn 0.52 0.45 0.73
-vn 0.40 -0.58 -0.71
-vn 0.39 -0.54 -0.75
-vn 0.42 -0.57 -0.71
-vn 0.06 -0.19 -0.98
-vn 0.02 -0.15 -0.99
-vn -0.03 0.15 0.99
-vn -0.06 0.19 0.98
-vn -0.39 0.54 0.75
-vn -0.42 0.57 0.71
-vn -0.40 0.58 0.71
-vn 0.84 -0.36 0.40
-vn 0.88 0.46 0.06
-vn 0.88 0.46 0.07
-vn 0.67 0.38 0.64
-vn 0.66 0.38 0.65
-vn -0.70 0.72 -0.02
-vn -0.63 -0.42 -0.65
-vn -0.64 -0.43 -0.64
-vn -0.83 -0.55 -0.07
-vn -0.84 -0.55 -0.06
-vn 0.53 0.33 -0.78
-vn 0.48 0.32 -0.82
-vn 0.52 0.35 -0.78
-vn 0.09 -0.03 -1.00
-vn 0.05 -0.06 -1.00
-vn 0.92 0.21 -0.32
-vn 0.84 0.53 -0.08
-vn 0.38 0.85 0.36
-vn -0.49 0.87 0.03
-vn -0.49 0.87 0.04
-vn -0.34 0.71 0.61
-vn -0.34 0.71 0.62
-vn -0.73 -0.68 0.03
-vn 0.38 -0.68 -0.62
-vn 0.39 -0.69 -0.61
-vn 0.57 -0.82 -0.04
-vn 0.57 -0.82 -0.03
-vn -0.43 0.46 -0.77
-vn -0.42 0.41 -0.81
-vn -0.45 0.45 -0.77
-vn -0.08 0.01 -1.00
-vn -0.04 -0.03 -1.00
-vn 0.05 0.03 1.00
-vn 0.08 -0.00 1.00
-vn 0.42 -0.41 0.81
-vn 0.45 -0.45 0.77
-vn 0.43 -0.46 0.77
-vn -0.29 0.89 -0.35
-vn -0.57 0.82 -0.10
-vn -0.83 0.43 0.35
-vn -0.89 -0.45 0.07
-vn -0.89 -0.45 0.08
-vn -0.69 -0.28 0.67
-vn -0.68 -0.27 0.68
-vn 0.70 -0.72 0.04
-vn 0.65 0.32 -0.69
-vn 0.66 0.32 -0.68
-vn 0.84 0.54 -0.08
-vn 0.84 0.54 -0.07
-vn -0.52 -0.45 -0.73
-vn -0.47 -0.44 -0.77
-vn -0.50 -0.47 -0.72
-vn -0.11 -0.15 -0.98
-vn -0.07 -0.12 -0.99
-vn -0.91 -0.27 -0.32
-vn -0.84 -0.54 -0.06
-vn -0.39 -0.82 0.42
-vn 0.49 -0.87 0.10
-vn 0.49 -0.86 0.11
-vn 0.37 -0.62 0.69
-vn 0.37 -0.62 0.70
-vn 0.73 0.68 -0.00
-vn -0.41 0.59 -0.70
-vn -0.42 0.59 -0.69
-vn -0.57 0.81 -0.11
-vn 0.27 -0.92 -0.28
-# 119 vertex normals
-
-vt 0.04 0.85 0.00
-vt 0.03 0.85 0.00
-vt 0.92 0.13 0.00
-vt 0.92 0.12 0.00
-vt 0.96 0.13 0.00
-vt 0.96 0.11 0.00
-vt 0.96 0.10 0.00
-vt 0.92 0.14 0.00
-vt 0.96 0.14 0.00
-vt 0.92 0.15 0.00
-vt 0.96 0.16 0.00
-vt 0.96 0.17 0.00
-vt 0.96 0.15 0.00
-vt 1.00 0.18 0.00
-vt 1.00 0.16 0.00
-vt 1.00 0.15 0.00
-vt 1.00 0.13 0.00
-vt 1.00 0.11 0.00
-vt 1.00 0.09 0.00
-vt 0.91 0.13 0.00
-vt 0.80 0.95 0.00
-vt 0.81 0.94 0.00
-vt 0.81 0.96 0.00
-vt 0.82 0.95 0.00
-vt 0.82 0.96 0.00
-vt 0.80 0.96 0.00
-vt 0.38 0.65 0.00
-vt 0.37 0.68 0.00
-vt 0.23 0.65 0.00
-vt 0.23 0.67 0.00
-vt 0.23 0.66 0.00
-vt 0.37 0.66 0.00
-vt 0.37 0.67 0.00
-vt 0.35 0.66 0.00
-vt 0.35 0.67 0.00
-vt 0.06 0.85 0.00
-vt 0.05 0.85 0.00
-# 37 texture coords
-
-g P_51_Mustang_Proppeler
-f 1/1/1 2/1/1 3/2/1
-f 4/2/1 3/2/1 2/1/1
-f 5/3/2 6/4/3 7/5/4
-f 8/6/5 7/5/4 6/4/3
-f 6/4/3 9/4/6 8/6/5
-f 10/7/7 8/6/5 9/4/6
-f 9/4/6 11/4/8 10/7/7
-f 12/6/9 10/7/7 11/4/8
-f 11/4/8 13/3/10 12/6/9
-f 14/5/11 12/6/9 13/3/10
-f 13/3/10 15/8/12 14/5/11
-f 16/9/13 14/5/11 15/8/12
-f 15/8/12 17/10/14 16/9/13
-f 18/11/15 16/9/13 17/10/14
-f 17/10/14 19/10/16 18/11/15
-f 20/12/17 18/11/15 19/10/16
-f 19/10/16 21/10/18 20/12/17
-f 22/11/19 20/12/17 21/10/18
-f 21/10/18 23/8/20 22/11/19
-f 24/13/21 22/11/19 23/8/20
-f 20/12/17 22/11/19 25/14/22
-f 26/15/23 25/14/22 22/11/19
-f 22/11/19 24/13/21 26/15/23
-f 27/16/24 26/15/23 24/13/21
-f 23/8/20 5/3/2 24/13/21
-f 7/5/4 24/13/21 5/3/2
-f 24/13/21 7/5/4 27/16/24
-f 28/17/25 27/16/24 7/5/4
-f 7/5/4 8/6/5 28/17/25
-f 29/18/26 28/17/25 8/6/5
-f 8/6/5 10/7/7 29/18/26
-f 30/19/27 29/18/26 10/7/7
-f 10/7/7 12/6/9 30/19/27
-f 31/18/28 30/19/27 12/6/9
-f 12/6/9 14/5/11 31/18/28
-f 32/17/29 31/18/28 14/5/11
-f 14/5/11 16/9/13 32/17/29
-f 33/16/30 32/17/29 16/9/13
-f 16/9/13 18/11/15 33/16/30
-f 34/15/31 33/16/30 18/11/15
-f 18/11/15 20/12/17 34/15/31
-f 25/14/22 34/15/31 20/12/17
-f 35/20/32 21/10/18 19/10/16
-f 35/20/32 23/8/20 21/10/18
-f 35/20/32 5/3/2 23/8/20
-f 35/20/32 6/4/3 5/3/2
-f 35/20/32 9/4/6 6/4/3
-f 35/20/32 11/4/8 9/4/6
-f 35/20/32 13/3/10 11/4/8
-f 35/20/32 15/8/12 13/3/10
-f 35/20/32 17/10/14 15/8/12
-f 35/20/32 19/10/16 17/10/14
-f 31/21/33 32/22/33 30/21/33
-f 32/22/33 28/23/33 30/21/33
-f 34/24/33 28/23/33 32/22/33
-f 26/25/33 28/23/33 34/24/33
-f 25/24/33 26/25/33 34/24/33
-f 30/21/33 28/23/33 29/26/33
-f 27/23/33 28/23/33 26/25/33
-f 36/27/34 37/28/35 38/29/36
-f 37/28/35 39/30/37 38/29/36
-f 39/30/37 1/31/38 38/29/36
-f 1/31/38 3/31/38 38/29/36
-f 40/27/39 41/28/40 42/29/41
-f 41/28/40 43/30/42 42/29/41
-f 43/30/42 44/31/43 42/29/41
-f 44/31/43 45/31/43 42/29/41
-f 46/31/44 47/31/44 48/29/45
-f 47/31/44 49/30/46 48/29/45
-f 49/30/46 50/28/47 48/29/45
-f 50/28/47 51/27/48 48/29/45
-f 52/27/49 53/28/50 54/29/51
-f 53/28/50 55/30/52 54/29/51
-f 55/30/52 56/31/53 54/29/51
-f 56/31/53 57/31/53 54/29/51
-f 3/30/54 4/31/54 38/30/54
-f 58/31/54 38/30/54 4/31/54
-f 59/32/55 36/33/56 58/31/57
-f 38/30/58 58/31/57 36/33/56
-f 60/34/59 37/35/59 59/32/59
-f 36/33/59 59/32/59 37/35/59
-f 61/31/60 39/30/61 60/34/62
-f 39/30/61 37/35/63 60/34/62
-f 4/31/64 2/31/64 58/29/65
-f 2/31/64 61/30/66 58/29/65
-f 61/30/66 60/28/67 58/29/65
-f 60/28/67 59/27/68 58/29/65
-f 62/1/69 63/1/69 64/36/69
-f 65/37/69 64/36/69 63/1/69
-f 66/2/70 67/2/70 62/1/70
-f 63/1/70 62/1/70 67/2/70
-f 67/30/71 66/31/71 68/30/71
-f 69/31/71 68/30/71 66/31/71
-f 70/32/72 71/33/73 69/31/74
-f 68/30/75 69/31/74 71/33/73
-f 72/34/76 73/35/76 70/32/76
-f 71/33/76 70/32/76 73/35/76
-f 64/31/77 65/30/78 72/34/79
-f 65/30/78 73/35/80 72/34/79
-f 66/31/81 62/31/81 69/29/82
-f 62/31/81 64/30/83 69/29/82
-f 64/30/83 72/28/84 69/29/82
-f 72/28/84 70/27/85 69/29/82
-f 71/27/86 73/28/87 68/29/88
-f 73/28/87 65/30/89 68/29/88
-f 65/30/89 63/31/90 68/29/88
-f 63/31/90 67/31/90 68/29/88
-f 74/1/91 44/1/91 75/2/91
-f 43/2/91 75/2/91 44/1/91
-f 76/37/92 45/36/92 74/1/92
-f 44/1/92 74/1/92 45/36/92
-f 45/30/93 76/31/93 42/30/93
-f 77/31/93 42/30/93 76/31/93
-f 78/32/94 40/33/95 77/31/96
-f 42/30/97 77/31/96 40/33/95
-f 79/34/98 41/35/98 78/32/98
-f 40/33/98 78/32/98 41/35/98
-f 75/31/99 43/30/100 79/34/101
-f 43/30/100 41/35/102 79/34/101
-f 76/31/103 74/31/103 77/29/104
-f 74/31/103 75/30/105 77/29/104
-f 75/30/105 79/28/106 77/29/104
-f 79/28/106 78/27/107 77/29/104
-f 47/1/108 56/1/108 49/2/108
-f 55/2/108 49/2/108 56/1/108
-f 46/37/109 57/37/109 47/1/109
-f 56/1/109 47/1/109 57/37/109
-f 57/30/110 46/31/110 54/30/110
-f 48/31/110 54/30/110 46/31/110
-f 51/32/111 52/33/112 48/31/113
-f 54/30/114 48/31/113 52/33/112
-f 50/34/115 53/35/115 51/32/115
-f 52/33/115 51/32/115 53/35/115
-f 49/31/116 55/30/117 50/34/118
-f 55/30/117 53/35/92 50/34/118
-f 33/22/33 34/24/33 32/22/33
-f 2/1/119 1/1/119 61/36/119
-f 39/37/119 61/36/119 1/1/119
-# 138 faces
-
-#
-# object P_51_Mustang_Right_Rockets
-#
-
-v -34.05 -4.42 7.01
-v -33.98 -4.35 7.01
-v -34.09 -4.33 9.68
-v -34.02 -4.26 9.67
-v -35.60 -3.83 7.68
-v -35.21 -3.94 7.69
-v -35.84 -3.60 19.17
-v -36.18 -3.24 19.14
-v -35.88 -3.53 7.66
-v -36.29 -2.75 19.10
-v -36.09 -2.72 20.16
-v -36.01 -3.10 20.20
-v -35.35 -2.67 21.77
-v -35.74 -3.38 20.22
-v -35.37 -3.49 20.23
-v -35.37 -3.74 19.18
-v -34.88 -3.61 19.16
-v -34.81 -3.84 7.67
-v -34.50 -3.54 7.65
-v -34.50 -3.25 19.13
-v -34.37 -3.14 7.61
-v -34.35 -2.76 19.08
-v -34.46 -2.73 7.57
-v -34.46 -2.27 19.04
-v -34.74 -2.43 7.55
-v -34.79 -1.91 19.01
-v -35.13 -2.32 7.54
-v -35.27 -1.77 19.00
-v -35.54 -2.43 7.55
-v -35.76 -1.90 19.01
-v -35.84 -2.72 7.58
-v -36.13 -2.26 19.05
-v -35.97 -3.13 7.62
-v -35.97 -2.33 20.13
-v -35.68 -2.05 20.10
-v -35.30 -1.95 20.08
-v -34.92 -2.06 20.09
-v -34.66 -2.34 20.12
-v -34.58 -2.73 20.15
-v -34.70 -3.11 20.19
-v -34.99 -3.39 20.21
-v -36.27 -1.89 6.80
-v -35.13 -3.10 7.59
-v -36.34 -1.96 6.81
-v -35.20 -3.17 7.60
-v -36.30 -1.80 9.47
-v -36.38 -1.87 9.47
-v -35.16 -3.02 10.26
-v -35.24 -3.08 10.27
-v -33.90 -1.89 9.45
-v -33.97 -1.82 9.45
-v -35.18 -3.09 10.27
-v -35.25 -3.01 10.26
-v -36.43 -4.31 9.70
-v -36.49 -4.24 9.69
-v -33.87 -1.98 6.79
-v -35.15 -3.17 7.60
-v -36.39 -4.40 7.03
-v -36.46 -4.33 7.02
-v -35.21 -3.10 7.59
-v -33.93 -1.90 6.78
-v -31.30 -4.44 6.99
-v -31.23 -4.37 6.98
-v -31.34 -4.35 9.66
-v -31.26 -4.28 9.65
-v -32.85 -3.85 7.66
-v -32.46 -3.96 7.67
-v -33.09 -3.63 19.15
-v -33.43 -3.26 19.12
-v -33.13 -3.55 7.63
-v -33.53 -2.77 19.08
-v -33.34 -2.74 20.14
-v -33.25 -3.12 20.17
-v -32.60 -2.69 21.75
-v -32.99 -3.41 20.20
-v -32.62 -3.51 20.21
-v -32.61 -3.76 19.16
-v -32.12 -3.63 19.14
-v -32.05 -3.86 7.65
-v -31.75 -3.56 7.62
-v -31.75 -3.28 19.11
-v -31.62 -3.16 7.59
-v -31.60 -2.78 19.06
-v -31.71 -2.75 7.55
-v -31.71 -2.29 19.02
-v -31.99 -2.45 7.52
-v -32.04 -1.93 18.99
-v -32.38 -2.34 7.52
-v -32.52 -1.79 18.98
-v -32.78 -2.45 7.53
-v -33.01 -1.92 18.99
-v -33.09 -2.74 7.56
-v -33.38 -2.28 19.03
-v -33.22 -3.15 7.60
-v -33.22 -2.35 20.10
-v -32.93 -2.07 20.08
-v -32.54 -1.97 20.06
-v -32.17 -2.08 20.07
-v -31.91 -2.36 20.09
-v -31.82 -2.75 20.13
-v -31.94 -3.13 20.16
-v -32.23 -3.41 20.19
-v -33.52 -1.91 6.78
-v -32.38 -3.12 7.57
-v -33.59 -1.98 6.78
-v -32.45 -3.19 7.58
-v -33.55 -1.82 9.44
-v -33.63 -1.89 9.45
-v -32.41 -3.04 10.24
-v -32.48 -3.11 10.25
-v -31.15 -1.91 9.43
-v -31.22 -1.84 9.43
-v -32.43 -3.11 10.24
-v -32.49 -3.04 10.24
-v -33.67 -4.33 9.68
-v -33.74 -4.26 9.67
-v -31.12 -2.00 6.77
-v -32.39 -3.19 7.58
-v -33.64 -4.42 7.01
-v -33.70 -4.35 7.00
-v -32.46 -3.12 7.57
-v -31.18 -1.93 6.76
-v -28.67 -4.46 6.97
-v -28.59 -4.39 6.96
-v -28.70 -4.37 9.64
-v -28.63 -4.30 9.63
-v -30.21 -3.87 7.64
-v -29.82 -3.98 7.65
-v -30.45 -3.65 19.13
-v -30.79 -3.28 19.10
-v -30.49 -3.57 7.61
-v -30.90 -2.79 19.06
-v -30.70 -2.76 20.12
-v -30.62 -3.14 20.15
-v -29.96 -2.71 21.73
-v -30.35 -3.43 20.18
-v -29.98 -3.53 20.19
-v -29.98 -3.78 19.14
-v -29.49 -3.65 19.12
-v -29.42 -3.88 7.63
-v -29.11 -3.58 7.60
-v -29.12 -3.30 19.09
-v -28.98 -3.18 7.57
-v -28.96 -2.81 19.04
-v -29.07 -2.77 7.53
-v -29.07 -2.31 19.00
-v -29.35 -2.47 7.50
-v -29.41 -1.95 18.97
-v -29.74 -2.36 7.50
-v -29.88 -1.81 18.96
-v -30.15 -2.47 7.51
-v -30.37 -1.94 18.97
-v -30.45 -2.76 7.54
-v -30.74 -2.30 19.01
-v -30.58 -3.17 7.58
-v -30.58 -2.37 20.08
-v -30.29 -2.09 20.06
-v -29.91 -1.99 20.04
-v -29.53 -2.10 20.05
-v -29.27 -2.38 20.07
-v -29.19 -2.77 20.11
-v -29.31 -3.15 20.14
-v -29.60 -3.43 20.17
-v -30.88 -1.93 6.76
-v -29.74 -3.14 7.55
-v -30.95 -2.00 6.76
-v -29.81 -3.21 7.56
-v -30.92 -1.84 9.42
-v -30.99 -1.91 9.43
-v -29.77 -3.06 10.22
-v -29.85 -3.13 10.22
-v -28.51 -1.93 9.41
-v -28.58 -1.86 9.41
-v -29.79 -3.13 10.22
-v -29.86 -3.06 10.22
-v -31.04 -4.35 9.66
-v -31.10 -4.28 9.65
-v -28.48 -2.02 6.75
-v -29.76 -3.21 7.56
-v -31.00 -4.44 6.99
-v -31.07 -4.37 6.98
-v -29.82 -3.14 7.55
-v -28.54 -1.95 6.74
-# 183 vertices
-
-vn 0.69 -0.72 0.03
-vn -0.52 -0.85 0.01
-vn -0.01 -1.00 0.02
-vn -0.52 -0.85 0.11
-vn -0.89 -0.45 0.10
-vn -0.89 -0.46 -0.01
-vn -0.98 -0.20 0.08
-vn -0.94 -0.18 0.29
-vn -0.85 -0.42 0.32
-vn 0.32 -0.56 0.77
-vn -0.50 -0.79 0.34
-vn -0.01 -0.94 0.35
-vn -0.01 -0.99 0.12
-vn 0.49 -0.86 0.12
-vn 0.50 -0.87 0.02
-vn 0.86 -0.52 0.01
-vn 0.85 -0.51 0.12
-vn 1.00 -0.04 -0.00
-vn 0.99 -0.04 0.10
-vn 0.88 0.47 -0.02
-vn 0.88 0.47 0.08
-vn 0.52 0.85 -0.04
-vn 0.52 0.85 0.07
-vn 0.01 1.00 -0.05
-vn 0.01 1.00 0.06
-vn -0.48 0.87 -0.05
-vn -0.49 0.87 0.05
-vn -0.85 0.53 -0.04
-vn -0.85 0.53 0.06
-vn -0.95 0.29 -0.04
-vn -0.95 0.30 0.07
-vn -0.81 0.52 0.27
-vn -0.91 0.31 0.28
-vn -0.43 0.79 0.44
-vn -0.46 0.85 0.27
-vn 0.01 0.96 0.27
-vn 0.49 0.82 0.29
-vn 0.83 0.46 0.30
-vn 0.95 -0.02 0.32
-vn 0.82 -0.47 0.33
-vn 0.47 -0.81 0.34
-vn -0.01 -0.09 -1.00
-vn 0.25 -0.35 -0.90
-vn -0.02 -0.08 -1.00
-vn -0.27 0.19 -0.94
-vn -0.25 0.35 0.90
-vn 0.01 0.09 1.00
-vn 0.02 0.08 1.00
-vn 0.27 -0.19 0.94
-vn 0.73 0.68 -0.01
-vn 0.27 0.33 0.91
-vn -0.00 0.08 1.00
-vn -0.27 -0.17 0.95
-vn 0.27 0.17 -0.95
-vn 0.00 -0.08 -1.00
-vn -0.27 -0.33 -0.91
-vn -0.69 0.72 -0.03
-vn -0.73 -0.68 0.01
-vn -0.98 -0.21 -0.02
-vn -0.00 -0.09 -1.00
-vn 0.00 0.09 1.00
-# 61 vertex normals
-
-vt 0.71 0.65 0.00
-vt 0.81 0.65 0.00
-vt 0.64 0.57 0.00
-vt 0.64 0.58 0.00
-vt 0.83 0.57 0.00
-vt 0.85 0.57 0.00
-vt 0.89 0.58 0.00
-vt 0.85 0.58 0.00
-vt 0.83 0.58 0.00
-vt 0.64 0.59 0.00
-vt 0.83 0.59 0.00
-vt 0.64 0.60 0.00
-vt 0.83 0.60 0.00
-vt 0.64 0.61 0.00
-vt 0.83 0.61 0.00
-vt 0.85 0.60 0.00
-vt 0.85 0.61 0.00
-vt 0.89 0.60 0.00
-vt 0.85 0.59 0.00
-vt 0.39 0.73 0.00
-vt 0.39 0.74 0.00
-vt 0.39 0.72 0.00
-vt 0.37 0.73 0.00
-vt 0.37 0.72 0.00
-vt 0.38 0.71 0.00
-vt 0.75 0.65 0.00
-vt 0.69 0.65 0.00
-vt 0.98 0.63 0.00
-vt 0.91 0.63 0.00
-vt 0.98 0.66 0.00
-vt 0.91 0.66 0.00
-vt 0.98 0.70 0.00
-vt 0.91 0.70 0.00
-vt 0.37 0.74 0.00
-vt 0.38 0.74 0.00
-# 35 texture coords
-
-g P_51_Mustang_Right_Rockets
-f 80/38/120 81/38/120 82/39/120
-f 83/39/120 82/39/120 81/38/120
-f 84/40/121 85/41/122 86/42/123
-f 86/42/123 87/42/124 84/40/121
-f 88/40/125 84/40/121 87/42/124
-f 87/42/124 89/42/126 88/40/125
-f 89/42/126 87/42/124 90/43/127
-f 91/43/128 90/43/127 87/42/124
-f 90/43/127 91/43/128 92/44/129
-f 91/43/128 93/43/130 92/44/129
-f 93/43/130 94/45/131 92/44/129
-f 94/45/131 93/43/130 95/46/132
-f 95/46/132 96/46/133 94/45/131
-f 96/46/133 95/46/132 97/41/134
-f 97/41/134 98/41/135 96/46/133
-f 99/46/136 96/46/133 98/41/135
-f 98/41/135 100/47/137 99/46/136
-f 101/48/138 99/46/136 100/47/137
-f 100/47/137 102/47/139 101/48/138
-f 103/48/140 101/48/138 102/47/139
-f 87/42/124 86/42/123 91/43/128
-f 93/43/130 91/43/128 86/42/123
-f 86/42/123 95/46/132 93/43/130
-f 95/46/132 86/42/123 85/41/122
-f 85/41/122 97/41/134 95/46/132
-f 102/47/139 104/47/141 103/48/140
-f 105/48/142 103/48/140 104/47/141
-f 104/47/141 106/49/143 105/48/142
-f 107/50/144 105/48/142 106/49/143
-f 106/49/143 108/49/145 107/50/144
-f 109/50/146 107/50/144 108/49/145
-f 108/49/145 110/49/147 109/50/146
-f 111/50/148 109/50/146 110/49/147
-f 110/49/147 112/51/149 111/50/148
-f 89/52/150 111/50/148 112/51/149
-f 111/50/148 89/52/150 113/53/151
-f 90/54/152 113/53/151 89/52/150
-f 113/53/151 90/54/152 92/55/153
-f 114/53/154 113/53/151 92/55/153
-f 115/53/155 114/53/154 92/55/153
-f 114/53/154 115/53/155 109/50/146
-f 107/50/144 109/50/146 115/53/155
-f 115/53/155 116/56/156 107/50/144
-f 116/56/156 115/53/155 92/55/153
-f 105/48/142 107/50/144 116/56/156
-f 116/56/156 117/56/157 105/48/142
-f 103/48/140 105/48/142 117/56/157
-f 117/56/157 118/56/158 103/48/140
-f 101/48/138 103/48/140 118/56/158
-f 118/56/158 119/45/159 101/48/138
-f 99/46/136 101/48/138 119/45/159
-f 119/45/159 120/45/160 99/46/136
-f 96/46/133 99/46/136 120/45/160
-f 120/45/160 94/45/131 96/46/133
-f 94/45/131 120/45/160 92/44/129
-f 120/45/160 119/45/159 92/44/129
-f 119/45/159 118/56/158 92/44/129
-f 118/56/158 117/56/157 92/44/129
-f 117/56/157 116/56/156 92/44/129
-f 102/57/161 100/57/161 104/58/161
-f 100/57/161 97/59/161 104/58/161
-f 97/59/161 112/60/161 104/58/161
-f 84/61/161 112/60/161 97/59/161
-f 88/61/161 112/60/161 84/61/161
-f 98/59/161 97/59/161 100/57/161
-f 85/62/161 84/61/161 97/59/161
-f 121/39/162 122/63/161 123/39/162
-f 124/63/163 123/39/162 122/63/161
-f 124/63/163 122/63/161 80/64/164
-f 81/64/164 80/64/164 122/63/161
-f 125/39/165 126/39/165 127/63/166
-f 128/63/167 127/63/166 126/39/165
-f 127/63/166 128/63/167 83/64/168
-f 82/64/168 83/64/168 128/63/167
-f 121/65/169 125/66/169 122/67/169
-f 127/68/169 122/67/169 125/66/169
-f 122/67/169 127/68/169 81/69/169
-f 83/70/169 81/69/169 127/68/169
-f 129/39/170 130/39/170 131/63/171
-f 132/63/166 131/63/171 130/39/170
-f 131/63/171 132/63/166 133/64/172
-f 134/64/172 133/64/172 132/63/166
-f 135/65/120 129/66/120 136/67/120
-f 131/68/120 136/67/120 129/66/120
-f 136/67/120 131/68/120 137/69/120
-f 133/70/120 137/69/120 131/68/120
-f 137/64/173 138/64/173 136/63/174
-f 139/63/161 136/63/174 138/64/173
-f 139/63/161 140/39/175 136/63/174
-f 135/39/175 136/63/174 140/39/175
-f 138/65/176 134/66/176 139/67/176
-f 132/68/176 139/67/176 134/66/176
-f 139/67/176 132/68/176 140/69/176
-f 130/70/176 140/69/176 132/68/176
-f 80/65/177 82/66/177 124/67/177
-f 128/68/177 124/67/177 82/66/177
-f 124/67/177 128/68/177 123/69/177
-f 126/70/177 123/69/177 128/68/177
-f 121/38/176 123/38/176 125/39/176
-f 126/39/176 125/39/176 123/38/176
-f 138/38/177 137/38/177 134/39/177
-f 133/39/177 134/39/177 137/38/177
-f 135/38/169 140/38/169 129/39/169
-f 130/39/169 129/39/169 140/38/169
-f 109/50/146 111/50/148 114/53/154
-f 113/53/151 114/53/154 111/50/148
-f 112/40/178 88/40/125 89/42/126
-f 110/60/161 108/71/161 112/60/161
-f 112/60/161 108/71/161 104/58/161
-f 104/58/161 108/71/161 106/72/161
-f 141/38/120 142/38/120 143/39/120
-f 144/39/120 143/39/120 142/38/120
-f 145/40/121 146/41/122 147/42/123
-f 147/42/123 148/42/124 145/40/121
-f 149/40/125 145/40/121 148/42/124
-f 148/42/124 150/42/126 149/40/125
-f 150/42/126 148/42/124 151/43/127
-f 152/43/128 151/43/127 148/42/124
-f 151/43/127 152/43/128 153/44/129
-f 152/43/128 154/43/130 153/44/129
-f 154/43/130 155/45/131 153/44/129
-f 155/45/131 154/43/130 156/46/132
-f 156/46/132 157/46/133 155/45/131
-f 157/46/133 156/46/132 158/41/134
-f 158/41/134 159/41/135 157/46/133
-f 160/46/136 157/46/133 159/41/135
-f 159/41/135 161/47/137 160/46/136
-f 162/48/138 160/46/136 161/47/137
-f 161/47/137 163/47/139 162/48/138
-f 164/48/140 162/48/138 163/47/139
-f 148/42/124 147/42/123 152/43/128
-f 154/43/130 152/43/128 147/42/123
-f 147/42/123 156/46/132 154/43/130
-f 156/46/132 147/42/123 146/41/122
-f 146/41/122 158/41/134 156/46/132
-f 163/47/139 165/47/141 164/48/140
-f 166/48/142 164/48/140 165/47/141
-f 165/47/141 167/49/143 166/48/142
-f 168/50/144 166/48/142 167/49/143
-f 167/49/143 169/49/145 168/50/144
-f 170/50/146 168/50/144 169/49/145
-f 169/49/145 171/49/147 170/50/146
-f 172/50/148 170/50/146 171/49/147
-f 171/49/147 173/51/149 172/50/148
-f 150/52/150 172/50/148 173/51/149
-f 172/50/148 150/52/150 174/53/151
-f 151/54/152 174/53/151 150/52/150
-f 174/53/151 151/54/152 153/55/153
-f 175/53/154 174/53/151 153/55/153
-f 176/53/155 175/53/154 153/55/153
-f 175/53/154 176/53/155 170/50/146
-f 168/50/144 170/50/146 176/53/155
-f 176/53/155 177/56/156 168/50/144
-f 177/56/156 176/53/155 153/55/153
-f 166/48/142 168/50/144 177/56/156
-f 177/56/156 178/56/157 166/48/142
-f 164/48/140 166/48/142 178/56/157
-f 178/56/157 179/56/158 164/48/140
-f 162/48/138 164/48/140 179/56/158
-f 179/56/158 180/45/159 162/48/138
-f 160/46/136 162/48/138 180/45/159
-f 180/45/159 181/45/160 160/46/136
-f 157/46/133 160/46/136 181/45/160
-f 181/45/160 155/45/131 157/46/133
-f 155/45/131 181/45/160 153/44/129
-f 181/45/160 180/45/159 153/44/129
-f 180/45/159 179/56/158 153/44/129
-f 179/56/158 178/56/157 153/44/129
-f 178/56/157 177/56/156 153/44/129
-f 163/57/161 161/57/161 165/58/161
-f 161/57/161 158/59/161 165/58/161
-f 158/59/161 173/60/161 165/58/161
-f 145/61/161 173/60/161 158/59/161
-f 149/61/161 173/60/161 145/61/161
-f 159/59/161 158/59/161 161/57/161
-f 146/62/161 145/61/161 158/59/161
-f 182/39/162 183/63/161 184/39/162
-f 185/63/163 184/39/162 183/63/161
-f 185/63/163 183/63/161 141/64/164
-f 142/64/164 141/64/164 183/63/161
-f 186/39/165 187/39/165 188/63/166
-f 189/63/167 188/63/166 187/39/165
-f 188/63/166 189/63/167 144/64/168
-f 143/64/168 144/64/168 189/63/167
-f 182/65/169 186/66/169 183/67/169
-f 188/68/169 183/67/169 186/66/169
-f 183/67/169 188/68/169 142/69/169
-f 144/70/169 142/69/169 188/68/169
-f 190/39/170 191/39/170 192/63/171
-f 193/63/166 192/63/171 191/39/170
-f 192/63/171 193/63/166 194/64/172
-f 195/64/172 194/64/172 193/63/166
-f 196/65/120 190/66/120 197/67/120
-f 192/68/120 197/67/120 190/66/120
-f 197/67/120 192/68/120 198/69/120
-f 194/70/120 198/69/120 192/68/120
-f 198/64/173 199/64/173 197/63/174
-f 200/63/179 197/63/174 199/64/173
-f 200/63/179 201/39/175 197/63/174
-f 196/39/175 197/63/174 201/39/175
-f 199/65/176 195/66/176 200/67/176
-f 193/68/176 200/67/176 195/66/176
-f 200/67/176 193/68/176 201/69/176
-f 191/70/176 201/69/176 193/68/176
-f 141/65/177 143/66/177 185/67/177
-f 189/68/177 185/67/177 143/66/177
-f 185/67/177 189/68/177 184/69/177
-f 187/70/177 184/69/177 189/68/177
-f 182/38/176 184/38/176 186/39/176
-f 187/39/176 186/39/176 184/38/176
-f 199/38/177 198/38/177 195/39/177
-f 194/39/177 195/39/177 198/38/177
-f 196/38/169 201/38/169 190/39/169
-f 191/39/169 190/39/169 201/38/169
-f 170/50/146 172/50/148 175/53/154
-f 174/53/151 175/53/154 172/50/148
-f 173/40/178 149/40/125 150/42/126
-f 171/60/161 169/71/161 173/60/161
-f 173/60/161 169/71/161 165/58/161
-f 165/58/161 169/71/161 167/72/161
-f 202/38/120 203/38/120 204/39/120
-f 205/39/120 204/39/120 203/38/120
-f 206/40/121 207/41/122 208/42/123
-f 208/42/123 209/42/124 206/40/121
-f 210/40/125 206/40/121 209/42/124
-f 209/42/124 211/42/126 210/40/125
-f 211/42/126 209/42/124 212/43/127
-f 213/43/128 212/43/127 209/42/124
-f 212/43/127 213/43/128 214/44/129
-f 213/43/128 215/43/130 214/44/129
-f 215/43/130 216/45/131 214/44/129
-f 216/45/131 215/43/130 217/46/132
-f 217/46/132 218/46/133 216/45/131
-f 218/46/133 217/46/132 219/41/134
-f 219/41/134 220/41/135 218/46/133
-f 221/46/136 218/46/133 220/41/135
-f 220/41/135 222/47/137 221/46/136
-f 223/48/138 221/46/136 222/47/137
-f 222/47/137 224/47/139 223/48/138
-f 225/48/140 223/48/138 224/47/139
-f 209/42/124 208/42/123 213/43/128
-f 215/43/130 213/43/128 208/42/123
-f 208/42/123 217/46/132 215/43/130
-f 217/46/132 208/42/123 207/41/122
-f 207/41/122 219/41/134 217/46/132
-f 224/47/139 226/47/141 225/48/140
-f 227/48/142 225/48/140 226/47/141
-f 226/47/141 228/49/143 227/48/142
-f 229/50/144 227/48/142 228/49/143
-f 228/49/143 230/49/145 229/50/144
-f 231/50/146 229/50/144 230/49/145
-f 230/49/145 232/49/147 231/50/146
-f 233/50/148 231/50/146 232/49/147
-f 232/49/147 234/51/149 233/50/148
-f 211/52/150 233/50/148 234/51/149
-f 233/50/148 211/52/150 235/53/151
-f 212/54/152 235/53/151 211/52/150
-f 235/53/151 212/54/152 214/55/153
-f 236/53/154 235/53/151 214/55/153
-f 237/53/155 236/53/154 214/55/153
-f 236/53/154 237/53/155 231/50/146
-f 229/50/144 231/50/146 237/53/155
-f 237/53/155 238/56/156 229/50/144
-f 238/56/156 237/53/155 214/55/153
-f 227/48/142 229/50/144 238/56/156
-f 238/56/156 239/56/157 227/48/142
-f 225/48/140 227/48/142 239/56/157
-f 239/56/157 240/56/158 225/48/140
-f 223/48/138 225/48/140 240/56/158
-f 240/56/158 241/45/159 223/48/138
-f 221/46/136 223/48/138 241/45/159
-f 241/45/159 242/45/160 221/46/136
-f 218/46/133 221/46/136 242/45/160
-f 242/45/160 216/45/131 218/46/133
-f 216/45/131 242/45/160 214/44/129
-f 242/45/160 241/45/159 214/44/129
-f 241/45/159 240/56/158 214/44/129
-f 240/56/158 239/56/157 214/44/129
-f 239/56/157 238/56/156 214/44/129
-f 224/57/161 222/57/161 226/58/161
-f 222/57/161 219/59/161 226/58/161
-f 219/59/161 234/60/161 226/58/161
-f 206/61/161 234/60/161 219/59/161
-f 210/61/161 234/60/161 206/61/161
-f 220/59/161 219/59/161 222/57/161
-f 207/62/161 206/61/161 219/59/161
-f 243/39/162 244/63/161 245/39/162
-f 246/63/163 245/39/162 244/63/161
-f 246/63/163 244/63/161 202/64/164
-f 203/64/164 202/64/164 244/63/161
-f 247/39/165 248/39/165 249/63/166
-f 250/63/167 249/63/166 248/39/165
-f 249/63/166 250/63/167 205/64/168
-f 204/64/168 205/64/168 250/63/167
-f 243/65/169 247/66/169 244/67/169
-f 249/68/169 244/67/169 247/66/169
-f 244/67/169 249/68/169 203/69/169
-f 205/70/169 203/69/169 249/68/169
-f 251/39/170 252/39/170 253/63/171
-f 254/63/180 253/63/171 252/39/170
-f 253/63/171 254/63/180 255/64/172
-f 256/64/172 255/64/172 254/63/180
-f 257/65/120 251/66/120 258/67/120
-f 253/68/120 258/67/120 251/66/120
-f 258/67/120 253/68/120 259/69/120
-f 255/70/120 259/69/120 253/68/120
-f 259/64/173 260/64/173 258/63/174
-f 261/63/161 258/63/174 260/64/173
-f 261/63/161 262/39/175 258/63/174
-f 257/39/175 258/63/174 262/39/175
-f 260/65/176 256/66/176 261/67/176
-f 254/68/176 261/67/176 256/66/176
-f 261/67/176 254/68/176 262/69/176
-f 252/70/176 262/69/176 254/68/176
-f 202/65/177 204/66/177 246/67/177
-f 250/68/177 246/67/177 204/66/177
-f 246/67/177 250/68/177 245/69/177
-f 248/70/177 245/69/177 250/68/177
-f 243/38/176 245/38/176 247/39/176
-f 248/39/176 247/39/176 245/38/176
-f 260/38/177 259/38/177 256/39/177
-f 255/39/177 256/39/177 259/38/177
-f 257/38/169 262/38/169 251/39/169
-f 252/39/169 251/39/169 262/38/169
-f 231/50/146 233/50/148 236/53/154
-f 235/53/151 236/53/154 233/50/148
-f 234/40/178 210/40/125 211/42/126
-f 232/60/161 230/71/161 234/60/161
-f 234/60/161 230/71/161 226/58/161
-f 226/58/161 230/71/161 228/72/161
-# 330 faces
-
-#
-# object P_51_Mustang_Right_Wing
-#
-
-v -48.14 -0.16 8.05
-v -48.99 -0.03 6.01
-v -48.12 0.14 8.01
-v -29.31 0.19 6.44
-v -37.50 0.25 7.12
-v -30.21 0.47 8.72
-v -37.42 0.46 8.93
-v -44.57 0.16 7.71
-v -44.63 0.35 8.79
-v -47.59 0.24 8.96
-v -44.79 0.51 12.04
-v -47.99 0.25 12.03
-v -45.36 0.48 14.13
-v -48.50 0.36 13.97
-v -48.43 0.22 15.21
-v -49.84 0.07 14.16
-v -49.74 -0.04 15.39
-v -50.25 -0.08 14.12
-v -50.04 -0.09 15.40
-v -49.58 -0.10 16.12
-v -48.28 -0.12 16.74
-v -45.18 0.20 15.46
-v -29.52 0.68 12.85
-v -45.01 -0.15 17.06
-v -37.84 0.31 16.08
-v -37.82 -0.24 17.66
-v -30.95 -0.31 18.28
-v -29.88 0.43 16.64
-v -30.50 0.73 14.92
-v -37.93 0.62 14.50
-v -37.87 0.66 12.48
-v -37.95 -1.08 12.58
-v -38.02 -1.05 14.59
-v -44.85 -0.90 12.10
-v -29.86 -1.33 15.03
-v -37.90 -0.94 16.16
-v -29.38 -1.15 16.73
-v -44.96 -0.79 15.49
-v -48.45 -0.33 15.36
-v -45.08 -0.88 14.18
-v -48.53 -0.34 14.14
-v -48.02 -0.34 12.18
-v -49.75 -0.18 12.22
-v -49.14 -0.12 8.71
-v -47.61 -0.23 9.09
-v -44.67 -0.62 8.83
-v -44.59 -0.38 7.72
-v -37.48 -0.85 9.01
-v -37.54 -0.59 7.18
-v -30.23 -1.03 8.80
-v -29.34 -0.65 6.49
-v -29.61 -1.28 12.96
-v -49.23 0.13 8.56
-v -49.74 0.14 12.03
-v -50.13 -0.08 12.02
-v -49.58 -0.07 8.63
-v -49.75 -0.17 15.42
-v -49.85 -0.23 14.35
-v -29.74 -1.25 16.26
-v -29.78 -2.23 16.37
-v -29.67 -1.06 11.16
-v -29.74 -2.36 12.28
-v -29.92 -2.36 12.29
-v -29.96 -2.23 16.38
-v -29.85 -1.06 11.16
-v -29.92 -1.24 16.26
-v -32.53 -1.18 16.28
-v -32.58 -2.21 16.40
-v -32.35 -1.18 16.27
-v -32.40 -2.21 16.39
-v -32.54 -2.34 12.31
-v -32.36 -2.34 12.30
-v -32.46 -0.98 11.17
-v -32.28 -0.98 11.17
-v -35.27 -1.05 16.29
-v -35.32 -2.19 16.42
-v -35.09 -1.06 16.29
-v -35.15 -2.19 16.42
-v -35.28 -2.32 12.33
-v -35.11 -2.32 12.33
-v -35.21 -0.94 11.19
-v -35.03 -0.95 11.19
-v -29.68 -0.25 3.04
-v -21.55 0.05 5.47
-v -22.30 -1.51 12.76
-v -22.41 -1.49 15.29
-v -22.62 -1.36 17.25
-v -23.33 -0.39 18.94
-v -19.50 -0.44 19.26
-v -19.00 -1.50 17.12
-v -14.13 -0.49 20.28
-v -13.50 -1.56 17.59
-v -14.82 -1.75 15.41
-v -18.80 -1.58 15.14
-v -18.58 -1.57 12.58
-v -22.41 -1.16 8.70
-v -21.59 -0.77 5.53
-v -18.71 -1.36 9.03
-v -18.35 -1.00 6.58
-v -14.07 -1.37 9.24
-v -12.73 -0.99 6.36
-v -18.23 -0.74 5.10
-v -12.47 -0.77 4.38
-v -12.44 -0.05 4.34
-v -18.19 -0.02 5.06
-v -12.67 0.19 6.29
-v -18.29 0.22 6.52
-v -14.04 0.46 9.14
-v -18.63 0.56 8.92
-v -13.44 0.66 12.23
-v -18.47 0.74 12.46
-v -22.34 0.49 8.60
-v -22.20 0.75 12.64
-v -22.31 0.72 15.17
-v -22.53 0.53 17.14
-v -18.91 0.57 17.52
-v -13.40 0.59 18.05
-v -14.35 0.80 15.32
-v -18.69 0.73 15.02
-v -18.32 -0.76 20.39
-v -18.70 -0.53 20.37
-v -18.30 -0.83 18.46
-v -18.68 -0.59 18.44
-v -18.68 -0.07 20.33
-v -18.66 -0.13 18.40
-v -18.28 0.16 20.30
-v -18.26 0.10 18.37
-v -17.89 -0.08 20.32
-v -17.87 -0.14 18.39
-v -17.92 -0.54 20.36
-v -17.90 -0.60 18.43
-v -13.54 -1.60 12.35
-v -19.63 -0.07 20.24
-v -20.01 0.17 20.22
-v -19.65 -0.53 20.28
-v -20.44 -0.52 20.29
-v -20.05 -0.75 20.31
-v -20.41 -0.06 20.25
-v -21.96 -0.75 20.15
-v -22.34 -0.51 20.13
-v -21.94 -0.81 18.22
-v -22.32 -0.57 18.21
-v -22.32 -0.05 20.09
-v -22.30 -0.11 18.16
-v -21.92 0.18 20.07
-v -21.90 0.11 18.14
-v -21.53 -0.06 20.08
-v -21.51 -0.12 18.16
-v -21.56 -0.52 20.13
-v -21.54 -0.58 18.20
-v -26.32 -1.30 15.42
-v -26.39 -2.57 15.66
-v -26.01 -1.30 15.43
-v -26.08 -2.57 15.66
-v -26.38 -2.72 15.16
-v -26.07 -2.72 15.16
-v -25.97 -2.76 11.48
-v -26.29 -2.76 11.48
-v -26.19 -1.32 10.34
-v -25.88 -1.32 10.34
-v -20.03 -0.82 18.38
-v -20.42 -0.58 18.36
-v -20.39 -0.12 18.32
-v -19.99 0.11 18.29
-v -19.61 -0.13 18.31
-v -19.63 -0.59 18.35
-v -24.91 -3.09 9.88
-v -26.21 -2.73 9.87
-v -24.99 -3.07 16.55
-v -26.29 -2.70 16.54
-v -27.54 -3.07 9.90
-v -27.63 -3.05 16.58
-v -28.55 -4.05 9.98
-v -28.64 -4.02 16.65
-v -28.97 -5.38 10.07
-v -29.05 -5.36 16.74
-v -28.68 -6.73 10.15
-v -28.76 -6.70 16.82
-v -27.76 -7.71 10.20
-v -27.85 -7.69 16.87
-v -26.46 -8.08 10.21
-v -26.54 -8.06 16.88
-v -25.13 -7.74 10.18
-v -25.21 -7.71 16.85
-v -24.11 -6.76 10.11
-v -24.20 -6.73 16.78
-v -23.70 -5.42 10.02
-v -23.78 -5.40 16.69
-v -23.99 -4.08 9.93
-v -24.07 -4.06 16.60
-v -28.86 -5.35 18.00
-v -28.59 -6.59 18.07
-v -27.75 -7.50 18.12
-v -26.55 -7.84 18.13
-v -25.32 -7.52 18.10
-v -24.39 -6.62 18.03
-v -24.00 -5.39 17.95
-v -24.27 -4.15 17.87
-v -25.12 -3.24 17.82
-v -26.32 -2.90 17.81
-v -28.10 -6.30 19.61
-v -27.46 -6.99 19.65
-v -27.36 -5.86 20.77
-v -27.47 -5.35 20.74
-v -28.31 -5.35 19.56
-v -27.55 -3.23 17.85
-v -28.48 -4.12 17.91
-v -28.01 -4.41 19.49
-v -27.31 -4.84 20.70
-v -26.47 -5.36 21.07
-v -27.01 -6.24 20.79
-v -26.54 -7.25 19.66
-v -25.60 -7.01 19.63
-v -24.89 -6.32 19.58
-v -24.60 -5.38 19.52
-v -24.80 -4.44 19.46
-v -25.45 -3.74 19.42
-v -26.36 -3.48 19.42
-v -27.30 -3.73 19.44
-v -26.93 -4.47 20.68
-v -26.42 -4.34 20.66
-v -25.92 -4.48 20.67
-v -25.57 -4.86 20.69
-v -25.46 -5.37 20.72
-v -25.62 -5.88 20.75
-v -26.01 -6.25 20.78
-v -26.52 -6.38 20.79
-v -27.02 -4.02 6.72
-v -26.22 -3.82 6.70
-v -25.44 -4.04 6.71
-v -24.89 -4.63 6.74
-v -24.72 -5.43 6.79
-v -24.97 -6.23 6.84
-v -25.57 -6.81 6.89
-v -26.37 -7.02 6.91
-v -27.15 -6.80 6.90
-v -27.70 -6.21 6.87
-v -26.53 -4.91 4.15
-v -26.23 -4.84 4.15
-v -27.87 -5.41 6.82
-v -27.62 -4.61 6.77
-v -26.75 -5.13 4.17
-v -26.26 -5.43 3.93
-v -25.95 -4.92 4.15
-v -25.74 -5.14 4.16
-v -25.68 -5.43 4.18
-v -25.77 -5.73 4.20
-v -25.99 -5.94 4.21
-v -26.29 -6.02 4.22
-v -26.58 -5.94 4.22
-v -26.78 -5.72 4.21
-v -26.85 -5.42 4.19
-# 252 vertices
-
-vn 0.92 -0.09 -0.39
-vn -0.00 0.99 -0.12
-vn -0.01 0.99 -0.11
-vn -0.00 1.00 -0.09
-vn -0.01 1.00 -0.09
-vn -0.03 0.99 -0.17
-vn -0.03 0.99 -0.12
-vn -0.04 1.00 -0.06
-vn -0.04 1.00 -0.02
-vn -0.06 1.00 -0.03
-vn -0.03 1.00 0.09
-vn -0.11 0.99 0.03
-vn -0.09 0.98 0.16
-vn -0.28 0.96 0.07
-vn -0.18 0.98 0.09
-vn -0.34 0.94 0.05
-vn -0.16 0.99 0.06
-vn -0.14 0.98 0.16
-vn -0.04 0.97 0.22
-vn -0.02 0.98 0.21
-vn -0.01 1.00 -0.04
-vn -0.02 0.97 0.22
-vn -0.02 0.96 0.26
-vn -0.02 0.94 0.34
-vn -0.04 0.92 0.38
-vn -0.03 0.96 0.28
-vn -0.02 1.00 0.08
-vn -0.02 0.99 0.10
-vn -0.01 1.00 -0.02
-vn -0.03 -1.00 -0.03
-vn -0.03 -1.00 0.04
-vn -0.09 -0.99 -0.04
-vn -0.03 -1.00 0.05
-vn -0.04 -0.97 0.25
-vn -0.05 -0.90 0.43
-vn -0.05 -0.91 0.42
-vn -0.05 -0.93 0.38
-vn -0.07 -0.97 0.21
-vn -0.11 -0.97 0.22
-vn -0.13 -0.99 0.07
-vn -0.09 -1.00 0.03
-vn -0.12 -0.99 -0.01
-vn -0.13 -0.99 -0.04
-vn -0.09 -1.00 -0.03
-vn -0.06 -1.00 -0.04
-vn -0.11 -0.99 -0.04
-vn -0.08 -1.00 -0.04
-vn -0.07 -0.99 -0.14
-vn -0.05 -0.98 -0.21
-vn -0.03 -0.99 -0.10
-vn -0.03 -0.99 -0.14
-vn -0.02 -0.99 -0.11
-vn -0.02 -0.99 -0.17
-vn -0.02 -1.00 -0.04
-vn -0.28 0.96 -0.07
-vn -0.29 0.96 -0.04
-vn -0.47 0.88 -0.05
-vn -0.51 0.86 -0.09
-vn -0.15 0.99 -0.08
-vn -0.04 1.00 -0.08
-vn -0.09 -0.98 0.16
-vn -0.13 -0.98 0.15
-vn -0.10 -0.98 0.15
-vn -0.24 -0.96 0.12
-vn -0.28 -0.96 0.08
-vn -0.33 -0.94 0.00
-vn -0.37 -0.93 0.04
-vn -0.26 -0.97 -0.03
-vn -0.11 -0.99 0.06
-vn -0.09 -1.00 0.01
-vn 1.00 -0.05 0.01
-vn -1.00 0.05 -0.01
-vn 0.02 0.12 0.99
-vn -0.01 -1.00 0.03
-vn -0.02 -0.64 -0.77
-vn 0.02 0.11 0.99
-vn -0.08 -0.05 -1.00
-vn -0.08 0.09 -0.99
-vn 1.00 0.02 -0.07
-vn -0.08 -0.06 -0.99
-vn -0.08 -0.08 -0.99
-vn -0.08 0.03 -1.00
-vn -0.10 -0.12 -0.99
-vn 0.93 0.01 0.36
-vn 0.93 -0.02 0.37
-vn 0.99 -0.05 -0.15
-vn 0.99 -0.02 -0.17
-vn 0.87 0.29 0.40
-vn 0.99 -0.04 0.12
-vn 0.92 0.27 -0.29
-vn 0.75 0.27 0.61
-vn -0.02 -0.66 -0.75
-vn 0.99 -0.05 -0.10
-vn -0.02 -1.00 -0.06
-vn -0.03 -0.99 -0.11
-vn -0.04 -0.99 -0.11
-vn -0.01 0.99 -0.13
-vn -0.01 1.00 -0.08
-vn -0.92 0.09 0.39
-vn 0.08 0.12 0.99
-vn 0.08 0.06 0.99
-vn -0.12 -0.06 -0.99
-vn -0.03 -1.00 -0.04
-vn -0.03 -1.00 0.03
-vn -0.02 -1.00 0.04
-vn -0.04 -0.96 0.29
-vn -0.04 -0.96 0.28
-vn -0.06 -0.88 0.47
-vn -0.06 -0.90 0.44
-vn -0.04 -0.97 0.23
-vn -0.05 -0.92 0.38
-vn -0.03 -0.96 0.26
-vn -0.02 -1.00 0.03
-vn -0.03 -1.00 0.01
-vn -0.02 -0.99 -0.16
-vn -0.02 -0.99 -0.10
-vn -0.01 -0.99 -0.16
-vn -0.00 -0.99 -0.11
-vn -0.01 -0.99 -0.13
-vn -0.01 -0.99 -0.17
-vn -0.01 0.99 -0.12
-vn -0.00 0.99 -0.16
-vn 0.00 0.99 -0.14
-vn 0.02 1.00 -0.09
-vn 0.01 1.00 -0.10
-vn 0.02 1.00 -0.05
-vn 0.00 1.00 -0.03
-vn -0.00 1.00 -0.10
-vn -0.01 1.00 -0.03
-vn -0.00 1.00 -0.03
-vn -0.01 1.00 0.05
-vn -0.00 1.00 0.08
-vn -0.02 0.96 0.29
-vn -0.03 0.96 0.27
-vn -0.03 0.90 0.44
-vn -0.07 0.88 0.47
-vn -0.04 0.96 0.28
-vn -0.05 0.90 0.43
-vn -0.01 1.00 0.03
-vn -0.88 -0.48 0.01
-vn -0.89 -0.46 0.01
-vn -0.86 0.51 -0.03
-vn -0.84 0.54 -0.03
-vn 0.01 1.00 -0.03
-vn 0.02 1.00 -0.03
-vn 0.89 0.46 -0.01
-vn 0.88 0.48 -0.01
-vn 0.84 -0.54 0.03
-vn 0.86 -0.51 0.03
-vn -0.00 0.99 -0.14
-vn -0.00 0.99 -0.13
-vn -0.00 1.00 -0.08
-vn -0.01 -1.00 -0.06
-vn 0.01 0.09 1.00
-vn -0.00 0.18 0.98
-vn -0.01 -0.96 0.29
-vn -0.01 -1.00 0.01
-vn -0.00 -0.62 -0.78
-vn -0.02 0.92 0.40
-vn -0.05 -0.90 0.44
-vn 1.00 -0.05 0.03
-vn -1.00 0.05 -0.03
-vn 0.99 -0.04 0.13
-vn 0.98 -0.05 -0.17
-vn 0.98 -0.02 -0.19
-vn 0.91 0.01 0.42
-vn 0.90 -0.02 0.43
-vn 0.91 -0.15 0.37
-vn 0.96 -0.03 0.29
-vn 0.94 0.03 -0.33
-vn 0.85 -0.17 -0.50
-vn 0.96 -0.10 0.27
-vn -0.75 -0.27 -0.61
-vn -0.93 0.02 -0.37
-vn -0.93 -0.01 -0.36
-vn -0.99 0.02 0.15
-vn -0.99 0.05 0.16
-vn -0.99 0.04 -0.12
-vn -0.87 -0.29 -0.40
-vn -0.92 -0.27 0.29
-vn 0.52 0.85 0.00
-vn 0.01 1.00 -0.00
-vn -0.48 0.88 -0.01
-vn -0.50 0.87 -0.01
-vn -0.85 0.53 -0.01
-vn -0.86 0.52 -0.01
-vn -1.00 0.03 -0.01
-vn -0.89 -0.46 -0.01
-vn -0.88 -0.47 -0.01
-vn -0.52 -0.85 -0.00
-vn -0.01 -1.00 0.00
-vn 0.50 -0.87 0.01
-vn 0.48 -0.88 0.01
-vn 0.86 -0.52 0.01
-vn 0.85 -0.53 0.01
-vn 1.00 -0.03 0.01
-vn 0.88 0.47 0.01
-vn 0.89 0.46 0.01
-vn -0.99 0.06 0.15
-vn -0.88 -0.44 0.16
-vn -0.97 0.06 0.24
-vn -0.86 -0.44 0.25
-vn -0.52 -0.84 0.17
-vn -0.51 -0.82 0.26
-vn -0.01 -0.99 0.17
-vn -0.01 -0.96 0.26
-vn 0.49 -0.85 0.17
-vn 0.48 -0.84 0.26
-vn 0.85 -0.50 0.17
-vn 0.83 -0.50 0.26
-vn 0.98 -0.02 0.17
-vn 0.96 -0.03 0.26
-vn 0.87 0.47 0.17
-vn 0.85 0.46 0.26
-vn 0.51 0.84 0.17
-vn 0.50 0.83 0.26
-vn 0.02 0.99 0.16
-vn 0.01 0.97 0.25
-vn -0.79 -0.39 0.47
-vn -0.47 -0.74 0.48
-vn -0.55 -0.24 0.80
-vn -0.62 0.08 0.78
-vn -0.89 0.07 0.45
-vn -0.47 0.87 0.15
-vn -0.47 0.85 0.24
-vn -0.83 0.54 0.15
-vn -0.82 0.52 0.23
-vn -0.75 0.49 0.44
-vn -0.53 0.37 0.76
-vn 0.01 0.06 1.00
-vn -0.32 -0.49 0.81
-vn -0.01 -0.88 0.48
-vn 0.45 -0.76 0.47
-vn 0.76 -0.44 0.47
-vn 0.89 -0.01 0.46
-vn 0.78 0.43 0.46
-vn 0.45 0.76 0.46
-vn 0.01 0.89 0.45
-vn -0.43 0.79 0.44
-vn -0.30 0.58 0.76
-vn 0.01 0.65 0.76
-vn 0.32 0.56 0.76
-vn 0.55 0.33 0.77
-vn 0.63 0.02 0.78
-vn 0.54 -0.29 0.79
-vn 0.32 -0.51 0.80
-vn 0.00 -0.59 0.81
-vn -0.48 0.82 -0.32
-vn 0.01 0.95 -0.33
-vn -0.47 0.81 -0.34
-vn 0.01 0.94 -0.35
-vn 0.50 0.80 -0.32
-vn 0.50 0.80 -0.34
-vn 0.85 0.42 -0.31
-vn 0.84 0.42 -0.33
-vn 0.95 -0.07 -0.30
-vn 0.94 -0.06 -0.32
-vn 0.80 -0.52 -0.29
-vn 0.80 -0.51 -0.31
-vn 0.45 -0.84 -0.30
-vn 0.45 -0.83 -0.32
-vn -0.02 -0.95 -0.31
-vn -0.01 -0.95 -0.33
-vn -0.49 -0.81 -0.32
-vn -0.48 -0.81 -0.34
-vn -0.83 -0.46 -0.32
-vn -0.83 -0.45 -0.34
-vn -0.38 0.63 -0.68
-vn 0.00 0.73 -0.69
-vn -0.95 0.01 -0.32
-vn -0.94 0.02 -0.34
-vn -0.82 0.47 -0.32
-vn -0.81 0.48 -0.34
-vn -0.65 0.36 -0.67
-vn -0.01 -0.05 -1.00
-vn 0.39 0.61 -0.68
-vn 0.67 0.31 -0.67
-vn 0.75 -0.07 -0.65
-vn 0.64 -0.43 -0.64
-vn 0.36 -0.68 -0.63
-vn -0.01 -0.77 -0.64
-vn -0.39 -0.66 -0.64
-vn -0.66 -0.38 -0.65
-vn -0.75 -0.00 -0.66
-# 284 vertex normals
-
-vt 0.50 0.03 0.00
-vt 0.49 0.03 0.00
-vt 0.71 0.21 0.00
-vt 0.82 0.22 0.00
-vt 0.73 0.24 0.00
-vt 0.82 0.24 0.00
-vt 0.92 0.23 0.00
-vt 0.92 0.25 0.00
-vt 0.96 0.24 0.00
-vt 0.92 0.29 0.00
-vt 0.96 0.29 0.00
-vt 0.93 0.32 0.00
-vt 0.97 0.32 0.00
-vt 0.97 0.34 0.00
-vt 0.99 0.32 0.00
-vt 0.99 0.34 0.00
-vt 0.98 0.35 0.00
-vt 0.97 0.37 0.00
-vt 0.92 0.35 0.00
-vt 0.72 0.31 0.00
-vt 0.92 0.37 0.00
-vt 0.83 0.36 0.00
-vt 0.83 0.38 0.00
-vt 0.73 0.40 0.00
-vt 0.72 0.37 0.00
-vt 0.73 0.34 0.00
-vt 0.83 0.33 0.00
-vt 0.83 0.30 0.00
-vt 0.12 0.42 0.00
-vt 0.14 0.43 0.00
-vt 0.10 0.50 0.00
-vt 0.16 0.34 0.00
-vt 0.16 0.43 0.00
-vt 0.19 0.34 0.00
-vt 0.20 0.36 0.00
-vt 0.18 0.43 0.00
-vt 0.16 0.51 0.00
-vt 0.14 0.50 0.00
-vt 0.15 0.54 0.00
-vt 0.13 0.54 0.00
-vt 0.12 0.50 0.00
-vt 0.12 0.54 0.00
-vt 0.09 0.53 0.00
-vt 0.09 0.55 0.00
-vt 0.05 0.54 0.00
-vt 0.05 0.52 0.00
-vt 0.04 0.52 0.00
-vt 0.06 0.49 0.00
-vt 0.01 0.53 0.00
-vt 0.04 0.49 0.00
-vt 0.07 0.41 0.00
-vt 0.05 0.41 0.00
-vt 0.08 0.33 0.00
-vt 0.05 0.32 0.00
-vt 0.14 0.33 0.00
-vt 0.98 0.23 0.00
-vt 0.99 0.29 0.00
-vt 0.98 0.19 0.00
-vt 0.96 0.23 0.00
-vt 0.14 0.56 0.00
-vt 0.13 0.56 0.00
-vt 0.11 0.56 0.00
-vt 0.12 0.55 0.00
-vt 0.04 0.54 0.00
-vt 0.77 0.13 0.00
-vt 0.77 0.11 0.00
-vt 0.87 0.13 0.00
-vt 0.85 0.11 0.00
-vt 0.01 0.74 0.00
-vt 0.52 0.02 0.00
-vt 0.65 0.02 0.00
-vt 0.52 0.01 0.00
-vt 0.65 0.01 0.00
-vt 0.03 0.73 0.00
-vt 0.04 0.73 0.00
-vt 0.56 0.01 0.00
-vt 0.49 0.01 0.00
-vt 0.47 0.01 0.00
-vt 0.56 0.02 0.00
-vt 0.19 0.51 0.00
-vt 0.20 0.49 0.00
-vt 0.22 0.51 0.00
-vt 0.21 0.49 0.00
-vt 0.20 0.55 0.00
-vt 0.23 0.54 0.00
-vt 0.24 0.56 0.00
-vt 0.20 0.56 0.00
-vt 0.20 0.58 0.00
-vt 0.23 0.57 0.00
-vt 0.22 0.59 0.00
-vt 0.51 0.02 0.00
-vt 0.51 0.03 0.00
-vt 0.48 0.02 0.00
-vt 0.01 0.32 0.00
-vt 0.72 0.15 0.00
-vt 0.96 0.22 0.00
-vt 0.48 0.03 0.00
-vt 0.48 0.01 0.00
-vt 0.59 0.01 0.00
-vt 0.15 0.26 0.00
-vt 0.18 0.26 0.00
-vt 0.21 0.27 0.00
-vt 0.23 0.28 0.00
-vt 0.24 0.24 0.00
-vt 0.21 0.23 0.00
-vt 0.26 0.18 0.00
-vt 0.23 0.17 0.00
-vt 0.20 0.18 0.00
-vt 0.19 0.22 0.00
-vt 0.15 0.22 0.00
-vt 0.09 0.25 0.00
-vt 0.06 0.24 0.00
-vt 0.11 0.21 0.00
-vt 0.07 0.20 0.00
-vt 0.12 0.16 0.00
-vt 0.08 0.14 0.00
-vt 0.06 0.20 0.00
-vt 0.06 0.14 0.00
-vt 0.49 0.18 0.00
-vt 0.56 0.19 0.00
-vt 0.49 0.21 0.00
-vt 0.57 0.21 0.00
-vt 0.51 0.26 0.00
-vt 0.57 0.25 0.00
-vt 0.50 0.31 0.00
-vt 0.57 0.31 0.00
-vt 0.62 0.24 0.00
-vt 0.62 0.31 0.00
-vt 0.62 0.35 0.00
-vt 0.62 0.38 0.00
-vt 0.63 0.41 0.00
-vt 0.58 0.42 0.00
-vt 0.57 0.39 0.00
-vt 0.51 0.43 0.00
-vt 0.50 0.40 0.00
-vt 0.51 0.36 0.00
-vt 0.57 0.35 0.00
-vt 0.25 0.71 0.00
-vt 0.25 0.70 0.00
-vt 0.39 0.71 0.00
-vt 0.39 0.70 0.00
-vt 0.25 0.69 0.00
-vt 0.39 0.69 0.00
-vt 0.25 0.68 0.00
-vt 0.39 0.68 0.00
-vt 0.61 0.19 0.00
-vt 0.16 0.16 0.00
-vt 0.39 0.72 0.00
-vt 0.38 0.71 0.00
-vt 0.39 0.73 0.00
-vt 0.37 0.73 0.00
-vt 0.37 0.72 0.00
-vt 0.38 0.74 0.00
-vt 0.60 0.01 0.00
-vt 0.59 0.02 0.00
-vt 0.02 0.73 0.00
-vt 0.63 0.02 0.00
-vt 0.60 0.02 0.00
-vt 0.63 0.01 0.00
-vt 0.78 0.11 0.00
-vt 0.21 0.50 0.00
-vt 0.20 0.50 0.00
-vt 0.24 0.54 0.00
-vt 0.23 0.52 0.00
-vt 0.19 0.54 0.00
-vt 0.19 0.52 0.00
-vt 0.19 0.56 0.00
-vt 0.24 0.57 0.00
-vt 0.22 0.49 0.00
-vt 0.20 0.51 0.00
-vt 0.23 0.51 0.00
-vt 0.88 0.10 0.00
-vt 0.88 0.11 0.00
-vt 0.75 0.09 0.00
-vt 0.75 0.10 0.00
-vt 0.88 0.08 0.00
-vt 0.75 0.08 0.00
-vt 0.88 0.06 0.00
-vt 0.75 0.05 0.00
-vt 0.88 0.03 0.00
-vt 0.75 0.03 0.00
-vt 0.88 0.02 0.00
-vt 0.75 0.01 0.00
-vt 0.88 0.01 0.00
-vt 0.75 0.00 0.00
-vt 0.73 0.05 0.00
-vt 0.73 0.03 0.00
-vt 0.73 0.02 0.00
-vt 0.73 0.01 0.00
-vt 0.73 0.08 0.00
-vt 0.73 0.09 0.00
-vt 0.73 0.10 0.00
-vt 0.70 0.03 0.00
-vt 0.70 0.02 0.00
-vt 0.68 0.04 0.00
-vt 0.68 0.05 0.00
-vt 0.70 0.05 0.00
-vt 0.70 0.07 0.00
-vt 0.67 0.06 0.00
-vt 0.67 0.05 0.00
-vt 0.70 0.08 0.00
-vt 0.70 0.09 0.00
-vt 0.67 0.07 0.00
-vt 0.68 0.03 0.00
-vt 0.94 0.08 0.00
-vt 0.94 0.09 0.00
-vt 0.94 0.07 0.00
-vt 0.94 0.06 0.00
-vt 0.94 0.04 0.00
-vt 0.94 0.03 0.00
-vt 0.99 0.07 0.00
-vt 0.99 0.06 0.00
-vt 0.99 0.05 0.00
-# 213 texture coords
-
-g P_51_Mustang_Right_Wing
-f 263/73/181 264/74/181 265/73/181
-f 266/75/182 267/76/183 268/77/184
-f 269/78/185 268/77/184 267/76/183
-f 267/76/183 270/79/186 269/78/185
-f 271/80/187 269/78/185 270/79/186
-f 271/80/187 270/79/186 272/81/188
-f 271/80/187 272/81/188 273/82/189
-f 274/83/190 273/82/189 272/81/188
-f 273/82/189 274/83/190 275/84/191
-f 276/85/192 275/84/191 274/83/190
-f 276/85/192 277/86/193 275/84/191
-f 276/85/192 278/87/194 277/86/193
-f 279/88/195 277/86/193 278/87/194
-f 278/87/194 280/87/196 279/88/195
-f 281/88/197 279/88/195 280/87/196
-f 279/88/195 281/88/197 282/89/198
-f 279/88/195 282/89/198 277/86/193
-f 283/90/199 277/86/193 282/89/198
-f 277/86/193 283/90/199 284/91/200
-f 268/77/184 269/78/185 285/92/201
-f 286/93/202 284/91/200 283/90/199
-f 284/91/200 286/93/202 287/94/203
-f 288/95/204 287/94/203 286/93/202
-f 288/95/204 289/96/205 287/94/203
-f 290/97/206 287/94/203 289/96/205
-f 290/97/206 291/98/207 287/94/203
-f 292/99/208 287/94/203 291/98/207
-f 291/98/207 285/92/201 292/99/208
-f 293/100/209 292/99/208 285/92/201
-f 293/100/209 285/92/201 269/78/185
-f 269/78/185 271/80/187 293/100/209
-f 273/82/189 293/100/209 271/80/187
-f 293/100/209 273/82/189 292/99/208
-f 275/84/191 292/99/208 273/82/189
-f 275/84/191 284/91/200 292/99/208
-f 284/91/200 275/84/191 277/86/193
-f 287/94/203 292/99/208 284/91/200
-f 294/101/210 295/102/211 296/103/212
-f 295/102/211 294/101/210 297/104/213
-f 295/102/211 297/104/213 298/105/214
-f 299/106/214 298/105/214 297/104/213
-f 299/106/214 289/107/215 298/105/214
-f 288/108/216 298/105/214 289/107/215
-f 288/108/216 286/109/217 298/105/214
-f 300/110/218 298/105/214 286/109/217
-f 286/109/217 283/111/219 300/110/218
-f 301/112/220 300/110/218 283/111/219
-f 300/110/218 301/112/220 302/113/221
-f 303/114/222 302/113/221 301/112/220
-f 303/114/222 304/115/223 302/113/221
-f 304/115/223 303/114/222 305/116/224
-f 305/116/224 306/117/225 304/115/223
-f 307/118/226 304/115/223 306/117/225
-f 263/119/227 307/118/226 306/117/225
-f 307/118/226 263/119/227 308/120/228
-f 264/121/225 263/119/227 306/117/225
-f 309/122/229 308/120/228 263/119/227
-f 308/120/228 309/122/229 310/123/230
-f 311/124/231 310/123/230 309/122/229
-f 310/123/230 311/124/231 312/125/232
-f 313/126/233 312/125/232 311/124/231
-f 312/125/232 314/127/234 310/123/230
-f 294/101/210 310/123/230 314/127/234
-f 310/123/230 294/101/210 308/120/228
-f 296/103/212 308/120/228 294/101/210
-f 308/120/228 296/103/212 307/118/226
-f 304/115/223 307/118/226 296/103/212
-f 296/103/212 302/113/221 304/115/223
-f 302/113/221 296/103/212 295/102/211
-f 302/113/221 295/102/211 300/110/218
-f 298/105/214 300/110/218 295/102/211
-f 314/127/234 297/104/213 294/101/210
-f 272/81/188 315/128/235 274/83/190
-f 316/129/236 274/83/190 315/128/235
-f 274/83/190 316/129/236 276/85/192
-f 278/87/194 276/85/192 316/129/236
-f 278/87/194 316/129/236 280/87/196
-f 317/129/237 280/87/196 316/129/236
-f 317/129/237 316/129/236 318/128/238
-f 315/128/235 318/128/238 316/129/236
-f 264/130/239 318/128/238 315/128/235
-f 264/130/239 315/128/235 265/131/240
-f 272/81/188 265/131/240 315/128/235
-f 265/131/240 272/81/188 270/79/186
-f 283/111/241 282/132/242 301/112/243
-f 319/133/244 301/112/243 282/132/242
-f 281/133/245 319/133/244 282/132/242
-f 281/133/245 280/134/246 319/133/244
-f 320/135/247 319/133/244 280/134/246
-f 320/135/247 280/134/246 305/116/248
-f 317/116/248 305/116/248 280/134/246
-f 317/116/248 318/136/223 305/116/248
-f 306/117/223 305/116/248 318/136/223
-f 264/121/223 306/117/223 318/136/223
-f 319/133/249 320/135/250 301/112/220
-f 303/114/222 301/112/220 320/135/250
-f 320/135/250 305/116/224 303/114/222
-f 321/137/251 322/138/251 323/139/251
-f 324/140/251 323/139/251 322/138/251
-f 325/140/252 326/138/252 327/139/252
-f 328/137/252 327/139/252 326/138/252
-f 329/141/253 330/141/253 331/141/253
-f 332/141/253 331/141/253 330/141/253
-f 330/142/254 333/143/254 332/144/254
-f 334/145/254 332/144/254 333/143/254
-f 333/146/255 335/147/255 334/146/255
-f 336/147/255 334/146/255 335/147/255
-f 334/140/251 336/139/251 332/138/251
-f 331/137/251 332/138/251 336/139/251
-f 333/140/252 330/138/252 335/139/252
-f 329/137/252 335/139/252 330/138/252
-f 337/141/256 338/141/256 339/141/256
-f 340/141/256 339/141/256 338/141/256
-f 338/142/254 341/143/254 340/144/254
-f 342/145/254 340/144/254 341/143/254
-f 341/146/255 343/147/255 342/146/255
-f 344/147/255 342/146/255 343/147/255
-f 342/140/251 344/139/251 340/138/251
-f 339/137/251 340/138/251 344/139/251
-f 341/140/252 338/138/252 343/139/252
-f 337/137/252 343/139/252 338/138/252
-f 267/144/257 266/148/257 270/149/257
-f 270/149/258 266/148/259 265/150/258
-f 313/151/260 311/142/260 266/148/260
-f 266/148/261 311/142/261 265/150/261
-f 311/142/262 309/149/262 265/150/262
-f 309/149/263 263/150/263 265/150/263
-f 312/152/264 313/153/264 268/154/264
-f 266/155/265 268/154/265 313/153/265
-f 314/156/266 312/152/266 285/157/266
-f 268/154/267 285/157/267 312/152/267
-f 291/158/268 297/159/268 285/157/268
-f 314/156/269 285/157/269 297/159/269
-f 299/160/270 297/159/270 290/161/270
-f 291/158/270 290/161/270 297/159/270
-f 289/162/271 299/160/271 290/161/271
-f 328/141/253 326/141/253 321/141/253
-f 322/141/253 321/141/253 326/141/253
-f 326/142/254 325/143/254 322/144/254
-f 324/145/254 322/144/254 325/143/254
-f 325/146/272 327/147/272 324/146/272
-f 323/147/272 324/146/272 327/147/272
-f 266/163/273 313/164/273 345/165/273
-f 264/121/274 345/166/275 263/119/274
-f 313/126/276 263/119/274 345/166/275
-f 345/167/277 264/130/185 266/75/277
-f 265/168/278 266/75/277 264/130/185
-f 264/73/279 263/169/279 265/169/279
-f 263/143/280 313/165/280 265/145/280
-f 266/170/281 265/145/281 313/165/281
-f 266/148/282 346/171/282 313/151/282
-f 347/172/283 348/173/284 314/127/234
-f 297/104/285 314/127/234 348/173/284
-f 297/104/285 348/173/284 299/106/286
-f 349/174/287 299/106/286 348/173/284
-f 349/174/287 350/175/288 299/106/286
-f 350/175/288 349/174/287 351/176/289
-f 352/177/290 351/176/289 349/174/287
-f 351/176/289 352/177/290 353/178/291
-f 354/179/292 353/178/291 352/177/290
-f 354/179/292 352/177/290 355/180/293
-f 356/181/294 355/180/293 352/177/290
-f 356/181/294 357/182/234 355/180/293
-f 357/182/234 356/181/294 347/172/283
-f 347/172/283 358/183/230 357/182/234
-f 347/172/283 314/127/234 358/183/230
-f 312/125/232 358/183/230 314/127/234
-f 312/125/232 313/126/295 358/183/230
-f 359/184/231 358/183/230 313/126/295
-f 349/174/287 348/173/284 352/177/290
-f 356/181/294 352/177/290 348/173/284
-f 348/173/284 347/172/283 356/181/294
-f 358/183/230 359/184/231 360/185/296
-f 361/186/297 360/185/296 359/184/231
-f 360/185/296 361/186/297 362/187/298
-f 363/188/299 362/187/298 361/186/297
-f 361/186/297 364/189/300 363/188/299
-f 365/190/232 363/188/299 364/189/300
-f 364/189/300 361/186/297 359/184/231
-f 366/191/301 367/192/302 368/193/182
-f 369/194/303 368/193/182 367/192/302
-f 368/193/182 369/194/303 370/195/304
-f 371/196/305 370/195/304 369/194/303
-f 370/195/304 371/196/305 372/197/306
-f 373/198/307 372/197/306 371/196/305
-f 371/196/305 374/199/308 373/198/307
-f 375/200/309 373/198/307 374/199/308
-f 375/200/309 374/199/308 285/92/310
-f 375/200/309 285/92/310 376/201/311
-f 291/98/312 376/201/311 285/92/310
-f 291/98/312 290/97/313 376/201/311
-f 377/202/314 376/201/311 290/97/313
-f 377/202/314 290/97/313 350/203/315
-f 350/203/315 351/204/316 377/202/314
-f 378/205/317 377/202/314 351/204/316
-f 351/204/316 353/206/318 378/205/317
-f 379/207/314 378/205/317 353/206/318
-f 372/197/306 373/198/307 380/208/319
-f 379/207/314 380/208/319 378/205/317
-f 381/209/319 378/205/317 380/208/319
-f 381/209/319 380/208/319 373/198/307
-f 373/198/307 375/200/309 381/209/319
-f 376/201/311 381/209/319 375/200/309
-f 381/209/319 376/201/311 378/205/317
-f 377/202/314 378/205/317 376/201/311
-f 382/210/293 383/211/320 384/212/254
-f 385/213/321 384/212/254 383/211/320
-f 383/211/320 386/214/322 385/213/321
-f 387/215/323 385/213/321 386/214/322
-f 386/214/322 388/216/324 387/215/323
-f 389/217/325 387/215/323 388/216/324
-f 388/216/324 390/214/326 389/217/325
-f 391/215/327 389/217/325 390/214/326
-f 390/214/326 392/211/328 391/215/327
-f 393/213/329 391/215/327 392/211/328
-f 392/211/328 382/210/293 393/213/329
-f 384/212/254 393/213/329 382/210/293
-f 367/192/302 346/218/330 369/194/303
-f 369/194/303 346/218/330 371/196/305
-f 374/199/308 371/196/305 346/218/330
-f 346/218/330 266/75/331 374/199/308
-f 268/77/332 374/199/308 266/75/331
-f 268/77/332 285/92/310 374/199/308
-f 362/187/298 394/219/333 360/185/296
-f 357/182/234 360/185/296 394/219/333
-f 360/185/296 357/182/234 358/183/230
-f 394/219/333 355/180/293 357/182/234
-f 390/220/334 388/221/334 392/222/334
-f 388/221/334 383/223/334 392/222/334
-f 386/224/334 383/223/334 388/221/334
-f 392/222/334 383/223/334 382/225/334
-f 395/220/334 396/221/334 397/222/334
-f 396/221/334 398/223/334 397/222/334
-f 397/222/334 398/223/334 399/225/334
-f 400/224/334 398/223/334 396/221/334
-f 401/210/293 402/211/320 403/212/254
-f 404/213/321 403/212/254 402/211/320
-f 402/211/320 405/214/322 404/213/321
-f 406/215/323 404/213/321 405/214/322
-f 405/214/322 407/216/324 406/215/323
-f 408/217/325 406/215/323 407/216/324
-f 407/216/324 409/214/326 408/217/325
-f 410/215/327 408/217/325 409/214/326
-f 409/214/326 411/211/328 410/215/327
-f 412/213/329 410/215/327 411/211/328
-f 411/211/328 401/210/293 412/213/329
-f 403/212/254 412/213/329 401/210/293
-f 409/220/334 407/221/334 411/222/334
-f 407/221/334 402/223/334 411/222/334
-f 405/224/334 402/223/334 407/221/334
-f 411/222/334 402/223/334 401/225/334
-f 367/226/282 359/227/282 346/171/282
-f 346/171/282 359/227/282 313/151/282
-f 413/141/335 414/141/335 415/141/335
-f 416/141/335 415/141/335 414/141/335
-f 414/228/336 417/228/336 416/228/336
-f 418/228/336 416/228/336 417/228/336
-f 419/147/337 418/228/337 420/147/337
-f 417/228/337 420/147/337 418/228/337
-f 420/146/338 421/147/338 419/146/338
-f 422/147/338 419/146/338 421/147/338
-f 289/96/339 350/203/315 290/97/313
-f 289/107/340 299/106/286 350/175/288
-f 365/229/282 364/230/282 366/231/282
-f 367/226/282 366/231/282 364/230/282
-f 364/230/282 359/227/282 367/226/282
-f 415/137/341 416/138/341 422/139/341
-f 422/139/341 418/232/341 419/140/341
-f 416/138/341 418/232/341 422/139/341
-f 413/137/342 421/139/342 414/138/342
-f 421/139/342 420/140/342 414/138/342
-f 414/138/342 420/140/342 417/232/342
-f 399/210/293 398/211/320 423/212/254
-f 424/213/321 423/212/254 398/211/320
-f 398/211/320 400/214/322 424/213/321
-f 425/215/323 424/213/321 400/214/322
-f 400/214/322 396/216/324 425/215/323
-f 426/217/325 425/215/323 396/216/324
-f 396/216/324 395/214/326 426/217/325
-f 427/215/327 426/217/325 395/214/326
-f 395/214/326 397/211/328 427/215/327
-f 428/213/329 427/215/327 397/211/328
-f 397/211/328 399/210/293 428/213/329
-f 423/212/254 428/213/329 399/210/293
-f 363/154/343 365/233/343 368/152/343
-f 366/234/269 368/152/269 365/233/269
-f 394/235/344 362/236/344 372/237/344
-f 370/238/345 372/237/345 362/236/345
-f 362/236/346 363/154/346 370/238/346
-f 368/152/347 370/238/347 363/154/347
-f 355/158/348 394/235/348 380/239/348
-f 372/237/349 380/239/349 394/235/349
-f 379/160/350 354/240/350 380/239/350
-f 355/158/351 380/239/351 354/240/351
-f 353/162/352 354/240/352 379/160/352
-f 290/160/353 299/240/353 289/162/353
-f 266/153/354 313/241/354 268/242/354
-f 312/243/355 268/242/355 313/241/355
-f 312/243/356 314/235/356 268/242/356
-f 285/156/357 268/242/357 314/235/357
-f 314/235/358 297/158/358 285/156/358
-f 291/159/359 285/156/359 297/158/359
-f 291/159/360 297/158/360 290/160/360
-f 299/240/360 290/160/360 297/158/360
-f 429/244/361 430/245/362 431/246/361
-f 432/247/362 431/246/361 430/245/362
-f 430/245/362 433/244/363 432/247/362
-f 434/246/364 432/247/362 433/244/363
-f 433/244/363 435/248/365 434/246/364
-f 436/249/366 434/246/364 435/248/365
-f 435/248/365 437/250/252 436/249/366
-f 438/251/367 436/249/366 437/250/252
-f 437/250/252 439/252/368 438/251/367
-f 440/253/369 438/251/367 439/252/368
-f 439/252/368 441/254/370 440/253/369
-f 442/255/370 440/253/369 441/254/370
-f 441/254/370 443/256/371 442/255/370
-f 444/257/371 442/255/370 443/256/371
-f 443/256/371 445/254/372 444/257/371
-f 446/255/373 444/257/371 445/254/372
-f 445/254/372 447/252/374 446/255/373
-f 448/253/375 446/255/373 447/252/374
-f 447/252/374 449/250/376 448/253/375
-f 450/251/251 448/253/375 449/250/376
-f 449/250/376 451/248/377 450/251/251
-f 452/249/378 450/251/251 451/248/377
-f 451/248/377 429/244/361 452/249/378
-f 431/246/361 452/249/378 429/244/361
-f 438/251/379 440/253/380 453/258/381
-f 454/259/382 453/258/381 440/253/380
-f 440/253/380 442/255/383 454/259/382
-f 455/260/384 454/259/382 442/255/383
-f 442/255/383 444/257/385 455/260/384
-f 456/261/386 455/260/384 444/257/385
-f 444/257/385 446/255/387 456/261/386
-f 457/260/388 456/261/386 446/255/387
-f 446/255/387 448/253/389 457/260/388
-f 458/259/390 457/260/388 448/253/389
-f 448/253/389 450/251/391 458/259/390
-f 459/258/392 458/259/390 450/251/391
-f 450/251/391 452/249/393 459/258/392
-f 460/262/394 459/258/392 452/249/393
-f 452/249/393 431/246/395 460/262/394
-f 461/263/396 460/262/394 431/246/395
-f 431/246/395 432/247/397 461/263/396
-f 462/264/398 461/263/396 432/247/397
-f 454/259/382 455/260/384 463/265/399
-f 455/260/384 456/261/386 464/266/400
-f 464/266/400 463/265/399 455/260/384
-f 463/265/399 464/266/400 465/267/401
-f 465/267/401 466/268/402 463/265/399
-f 467/269/403 463/265/399 466/268/402
-f 463/265/399 467/269/403 454/259/382
-f 453/258/381 454/259/382 467/269/403
-f 432/247/397 434/246/404 462/264/398
-f 468/263/405 462/264/398 434/246/404
-f 434/246/404 436/249/406 468/263/405
-f 469/262/407 468/263/405 436/249/406
-f 436/249/406 438/251/379 469/262/407
-f 453/258/381 469/262/407 438/251/379
-f 469/262/407 453/258/381 470/270/408
-f 467/269/403 470/270/408 453/258/381
-f 470/270/408 467/269/403 471/271/409
-f 466/268/402 471/271/409 467/269/403
-f 472/272/410 471/271/409 466/268/402
-f 472/272/410 466/268/402 465/267/401
-f 472/272/410 465/267/401 473/267/411
-f 473/267/411 465/267/401 464/266/400
-f 464/266/400 474/266/412 473/267/411
-f 474/266/412 464/266/400 456/261/386
-f 456/261/386 457/260/388 474/266/412
-f 475/266/413 474/266/412 457/260/388
-f 457/260/388 458/259/390 475/266/413
-f 476/265/414 475/266/413 458/259/390
-f 458/259/390 459/258/392 476/265/414
-f 477/269/415 476/265/414 459/258/392
-f 459/258/392 460/262/394 477/269/415
-f 478/270/416 477/269/415 460/262/394
-f 460/262/394 461/263/396 478/270/416
-f 479/273/417 478/270/416 461/263/396
-f 461/263/396 462/264/398 479/273/417
-f 480/274/418 479/273/417 462/264/398
-f 462/264/398 468/263/405 480/274/418
-f 481/273/419 480/274/418 468/263/405
-f 468/263/405 469/262/407 481/273/419
-f 470/270/408 481/273/419 469/262/407
-f 481/273/419 470/270/408 482/275/420
-f 471/271/409 482/275/420 470/270/408
-f 472/272/410 482/275/420 471/271/409
-f 472/272/410 483/275/421 482/275/420
-f 480/274/418 481/273/419 483/275/421
-f 482/275/420 483/275/421 481/273/419
-f 472/272/410 484/275/422 483/275/421
-f 483/275/421 484/275/422 480/274/418
-f 479/273/417 480/274/418 484/275/422
-f 484/275/422 485/271/423 479/273/417
-f 478/270/416 479/273/417 485/271/423
-f 485/271/423 486/268/424 478/270/416
-f 477/269/415 478/270/416 486/268/424
-f 486/268/424 487/267/425 477/269/415
-f 476/265/414 477/269/415 487/267/425
-f 487/267/425 488/267/426 476/265/414
-f 475/266/413 476/265/414 488/267/426
-f 488/267/426 489/276/427 475/266/413
-f 474/266/412 475/266/413 489/276/427
-f 489/276/427 473/267/411 474/266/412
-f 472/272/410 473/267/411 489/276/427
-f 472/272/410 489/276/427 488/267/426
-f 472/272/410 488/267/426 487/267/425
-f 472/272/410 487/267/425 486/268/424
-f 472/272/410 486/268/424 485/271/423
-f 472/272/410 485/271/423 484/275/422
-f 433/244/428 430/245/429 490/277/430
-f 491/278/431 490/277/430 430/245/429
-f 430/245/429 429/244/432 491/278/431
-f 492/277/433 491/278/431 429/244/432
-f 429/244/432 451/248/434 492/277/433
-f 493/279/435 492/277/433 451/248/434
-f 451/248/434 449/250/436 493/279/435
-f 494/280/437 493/279/435 449/250/436
-f 449/250/436 447/252/438 494/280/437
-f 495/281/439 494/280/437 447/252/438
-f 447/252/438 445/254/440 495/281/439
-f 496/282/441 495/281/439 445/254/440
-f 445/254/440 443/256/442 496/282/441
-f 497/282/443 496/282/441 443/256/442
-f 443/256/442 441/254/444 497/282/443
-f 498/282/445 497/282/443 441/254/444
-f 441/254/444 439/252/446 498/282/445
-f 499/281/447 498/282/445 439/252/446
-f 490/277/430 491/278/431 500/283/448
-f 501/283/449 500/283/448 491/278/431
-f 491/278/431 492/277/433 501/283/449
-f 439/252/446 437/250/450 499/281/447
-f 502/280/451 499/281/447 437/250/450
-f 437/250/450 435/248/452 502/280/451
-f 503/279/453 502/280/451 435/248/452
-f 435/248/452 433/244/428 503/279/453
-f 490/277/430 503/279/453 433/244/428
-f 503/279/453 490/277/430 504/284/454
-f 500/283/448 504/284/454 490/277/430
-f 504/284/454 500/283/448 505/284/455
-f 500/283/448 501/283/449 505/284/455
-f 501/283/449 506/283/456 505/284/455
-f 506/283/456 501/283/449 492/277/433
-f 492/277/433 493/279/435 506/283/456
-f 507/284/457 506/283/456 493/279/435
-f 493/279/435 494/280/437 507/284/457
-f 508/284/458 507/284/457 494/280/437
-f 494/280/437 495/281/439 508/284/458
-f 509/285/459 508/284/458 495/281/439
-f 495/281/439 496/282/441 509/285/459
-f 510/285/460 509/285/459 496/282/441
-f 496/282/441 497/282/443 510/285/460
-f 511/285/461 510/285/460 497/282/443
-f 497/282/443 498/282/445 511/285/461
-f 512/285/462 511/285/461 498/282/445
-f 498/282/445 499/281/447 512/285/462
-f 513/285/463 512/285/462 499/281/447
-f 499/281/447 502/280/451 513/285/463
-f 514/284/464 513/285/463 502/280/451
-f 502/280/451 503/279/453 514/284/464
-f 504/284/454 514/284/464 503/279/453
-f 514/284/464 504/284/454 505/284/455
-f 513/285/463 514/284/464 505/284/455
-f 512/285/462 513/285/463 505/284/455
-f 511/285/461 512/285/462 505/284/455
-f 510/285/460 511/285/461 505/284/455
-f 509/285/459 510/285/460 505/284/455
-f 508/284/458 509/285/459 505/284/455
-f 507/284/457 508/284/458 505/284/455
-f 506/283/456 507/284/457 505/284/455
-# 472 faces
-
-#
-# object P_51_Mustang_Right_Landing_Wheel
-#
-
-v -21.65 -7.03 18.48
-v -20.12 -7.12 18.43
-v -21.65 -7.03 18.62
-v -20.12 -7.12 18.57
-v -20.72 -9.30 17.99
-v -20.96 -9.30 18.00
-v -20.29 -0.52 17.44
-v -20.54 -0.52 17.45
-v -21.12 -9.30 18.19
-v -20.70 -0.51 17.64
-v -21.11 -9.30 18.43
-v -20.69 -0.51 17.88
-v -20.93 -9.30 18.59
-v -20.51 -0.51 18.04
-v -20.69 -9.30 18.58
-v -20.27 -0.52 18.03
-v -20.53 -9.30 18.39
-v -20.10 -0.52 17.84
-v -20.54 -9.30 18.15
-v -20.11 -0.52 17.60
-v -20.33 -12.95 18.23
-v -20.20 -10.30 18.07
-v -20.11 -12.93 18.22
-v -19.87 -10.28 18.05
-v -20.30 -9.53 18.02
-v -20.07 -9.01 17.98
-v -20.64 -9.29 18.02
-v -20.61 -8.74 17.98
-v -20.32 -12.95 18.73
-v -20.01 -12.93 18.71
-v -20.20 -10.30 18.56
-v -19.86 -10.28 18.55
-v -20.30 -9.53 18.52
-v -20.07 -9.01 18.48
-v -20.63 -9.29 18.51
-v -20.60 -8.73 18.48
-v -21.23 -1.10 17.16
-v -22.09 -3.52 17.35
-v -21.15 -1.12 18.27
-v -24.19 -9.64 18.88
-v -24.42 -9.57 15.50
-v -24.22 -9.64 15.49
-v -21.89 -3.59 17.34
-v -23.98 -9.71 18.87
-v -20.95 -1.19 18.26
-v -21.02 -1.16 17.16
-v -21.65 -6.86 18.47
-v -21.64 -6.86 18.61
-v -20.11 -6.80 18.41
-v -20.11 -6.80 18.55
-v -20.12 -6.80 17.67
-v -20.13 -7.12 17.69
-v -21.65 -6.86 17.72
-v -21.66 -7.04 17.74
-v -21.66 -7.04 17.88
-v -20.13 -7.12 17.83
-v -21.65 -6.86 17.87
-v -20.11 -6.80 17.81
-v -20.14 -11.43 20.48
-v -20.18 -12.67 20.94
-v -20.12 -10.55 19.48
-v -20.30 -15.29 18.74
-v -20.31 -15.01 17.47
-v -20.27 -14.90 19.94
-v -20.15 -10.67 17.01
-v -20.12 -10.27 18.21
-v -20.23 -13.94 20.74
-v -20.89 -10.51 16.93
-v -20.86 -10.09 18.22
-v -20.86 -10.40 19.58
-v -20.88 -11.34 20.66
-v -20.92 -12.66 21.15
-v -20.97 -14.03 20.94
-v -21.02 -15.05 20.07
-v -21.05 -15.47 18.78
-v -21.06 -15.17 17.42
-v -20.29 -14.13 16.47
-v -21.04 -14.23 16.35
-v -20.25 -12.89 16.01
-v -20.99 -12.90 15.85
-v -20.20 -11.62 16.21
-v -20.94 -11.54 16.07
-v -21.69 -11.63 16.26
-v -21.64 -10.67 17.07
-v -21.61 -10.28 18.27
-v -21.61 -10.56 19.54
-v -21.63 -11.44 20.54
-v -21.67 -12.68 21.00
-v -21.72 -13.94 20.80
-v -21.76 -14.90 19.99
-v -21.79 -15.29 18.79
-v -21.80 -15.01 17.52
-v -21.78 -14.14 16.52
-v -21.74 -12.90 16.06
-# 94 vertices
-
-vn -0.05 -1.00 0.00
-vn 0.32 -0.07 -0.95
-vn -0.45 -0.03 -0.89
-vn 0.33 -0.07 -0.94
-vn -0.43 -0.04 -0.90
-vn -0.95 0.03 -0.32
-vn -0.94 0.02 -0.35
-vn -0.90 0.07 0.44
-vn -0.90 0.07 0.42
-vn -0.33 0.07 0.94
-vn -0.32 0.07 0.95
-vn 0.43 0.04 0.90
-vn 0.45 0.03 0.89
-vn 0.94 -0.02 0.35
-vn 0.95 -0.03 0.32
-vn 0.90 -0.07 -0.42
-vn 0.90 -0.07 -0.44
-vn -0.03 -0.06 -1.00
-vn 0.03 0.06 1.00
-vn -0.01 -1.00 0.00
-vn 0.01 1.00 -0.00
-vn -0.94 0.34 0.07
-vn 0.94 -0.34 -0.07
-vn -1.00 0.05 0.01
-vn -0.04 1.00 -0.00
-vn 1.00 -0.05 -0.01
-vn 0.46 0.89 -0.01
-vn 0.99 0.16 -0.01
-vn 0.97 -0.10 -0.20
-vn 1.00 -0.06 -0.04
-vn 0.98 -0.10 -0.18
-vn 1.00 -0.06 -0.01
-vn 0.07 -1.00 0.00
-vn 0.06 -1.00 -0.00
-vn 0.05 -1.00 -0.01
-vn -0.99 -0.13 0.01
-vn -0.59 -0.81 0.01
-vn 0.32 0.95 -0.00
-vn 0.06 0.05 1.00
-vn -0.32 -0.95 0.00
-vn 0.05 0.27 -0.96
-vn -0.06 -0.05 -1.00
-vn 1.00 -0.04 -0.01
-vn 0.22 0.81 -0.55
-vn -0.02 0.83 -0.56
-vn 0.24 0.97 -0.05
-vn -0.00 1.00 -0.05
-vn 0.25 0.87 0.44
-vn 0.01 0.89 0.45
-vn 0.26 0.55 0.79
-vn 0.03 0.57 0.82
-vn 0.27 0.10 0.96
-vn 0.03 0.10 0.99
-vn 0.27 -0.40 0.87
-vn 0.03 -0.42 0.91
-vn 0.26 -0.80 0.53
-vn 0.02 -0.83 0.56
-vn 0.24 -0.97 0.04
-vn 0.00 -1.00 0.05
-vn 0.22 -0.87 -0.45
-vn -0.01 -0.89 -0.45
-vn 0.20 -0.55 -0.81
-vn -0.03 -0.57 -0.82
-vn 0.20 -0.10 -0.97
-vn -0.03 -0.10 -0.99
-vn 0.21 0.40 -0.89
-vn -0.03 0.42 -0.91
-vn -0.27 0.40 -0.87
-vn -0.26 0.80 -0.53
-vn -0.24 0.97 -0.04
-vn -0.22 0.87 0.45
-vn -0.20 0.55 0.81
-vn -0.20 0.10 0.97
-vn -0.21 -0.40 0.89
-vn -0.22 -0.81 0.55
-vn -0.24 -0.97 0.05
-vn -0.25 -0.87 -0.44
-vn -0.26 -0.55 -0.79
-vn -0.27 -0.10 -0.96
-vn -1.00 0.04 0.01
-# 80 vertex normals
-
-vt 0.07 0.76 0.00
-vt 0.30 0.92 0.00
-vt 0.09 0.92 0.00
-vt 0.30 0.93 0.00
-vt 0.09 0.93 0.00
-vt 0.30 0.94 0.00
-vt 0.09 0.94 0.00
-vt 0.44 0.70 0.00
-vt 0.44 0.73 0.00
-vt 0.44 0.74 0.00
-vt 0.43 0.74 0.00
-vt 0.43 0.75 0.00
-vt 0.32 0.98 0.00
-vt 0.31 0.98 0.00
-vt 0.33 0.98 0.00
-vt 0.33 0.99 0.00
-vt 0.32 1.00 0.00
-vt 0.33 1.00 0.00
-vt 0.47 0.08 0.00
-vt 0.53 0.08 0.00
-vt 0.47 0.11 0.00
-vt 0.67 0.11 0.00
-vt 0.66 0.03 0.00
-vt 0.61 0.03 0.00
-vt 0.47 0.00 0.00
-vt 0.66 0.00 0.00
-vt 0.08 0.75 0.00
-vt 0.09 0.75 0.00
-vt 0.07 0.75 0.00
-vt 0.04 0.84 0.00
-vt 0.04 0.85 0.00
-vt 0.03 0.84 0.00
-vt 0.03 0.85 0.00
-vt 0.08 0.76 0.00
-vt 0.09 0.74 0.00
-vt 0.43 0.73 0.00
-vt 0.42 0.73 0.00
-vt 0.42 0.74 0.00
-vt 0.43 0.72 0.00
-vt 0.42 0.72 0.00
-vt 0.46 0.72 0.00
-vt 0.46 0.73 0.00
-vt 0.45 0.73 0.00
-vt 0.03 0.68 0.00
-vt 0.05 0.68 0.00
-vt 0.16 0.67 0.00
-vt 0.03 0.67 0.00
-vt 0.08 0.67 0.00
-vt 0.08 0.68 0.00
-vt 0.07 0.67 0.00
-vt 0.07 0.66 0.00
-vt 0.16 0.66 0.00
-vt 0.03 0.66 0.00
-vt 0.31 0.99 0.00
-vt 0.85 0.94 0.00
-vt 0.85 0.96 0.00
-vt 0.84 0.93 0.00
-vt 0.80 0.99 0.00
-vt 0.78 0.98 0.00
-vt 0.82 0.99 0.00
-vt 0.80 0.92 0.00
-vt 0.82 0.92 0.00
-vt 0.84 0.98 0.00
-vt 0.32 0.78 0.00
-vt 0.32 0.76 0.00
-vt 0.34 0.78 0.00
-vt 0.34 0.76 0.00
-vt 0.36 0.78 0.00
-vt 0.36 0.76 0.00
-vt 0.38 0.78 0.00
-vt 0.38 0.76 0.00
-vt 0.39 0.78 0.00
-vt 0.39 0.76 0.00
-vt 0.31 0.78 0.00
-vt 0.31 0.76 0.00
-vt 0.29 0.78 0.00
-vt 0.29 0.76 0.00
-vt 0.31 0.75 0.00
-vt 0.32 0.75 0.00
-vt 0.34 0.75 0.00
-vt 0.36 0.75 0.00
-vt 0.38 0.75 0.00
-vt 0.39 0.75 0.00
-vt 0.29 0.75 0.00
-vt 0.78 0.96 0.00
-vt 0.78 0.94 0.00
-vt 0.79 0.93 0.00
-# 87 texture coords
-
-g P_51_Mustang_Right_Landing_Wheel
-f 515/286/465 516/286/465 517/286/465
-f 518/286/465 517/286/465 516/286/465
-f 519/287/466 520/287/467 521/288/468
-f 522/288/469 521/288/468 520/287/467
-f 520/287/467 523/289/470 522/288/469
-f 524/290/471 522/288/469 523/289/470
-f 523/289/470 525/291/472 524/290/471
-f 526/292/473 524/290/471 525/291/472
-f 525/291/472 527/291/474 526/292/473
-f 528/292/475 526/292/473 527/291/474
-f 527/291/474 529/291/476 528/292/475
-f 530/292/477 528/292/475 529/291/476
-f 529/291/476 531/291/478 530/292/477
-f 532/292/479 530/292/477 531/291/478
-f 531/291/478 533/289/480 532/292/479
-f 534/290/481 532/292/479 533/289/480
-f 533/289/480 519/287/466 534/290/481
-f 521/288/468 534/290/481 519/287/466
-f 535/293/482 536/294/482 537/293/482
-f 537/293/482 536/294/482 538/294/482
-f 536/294/482 539/295/482 538/294/482
-f 538/294/482 539/295/482 540/295/482
-f 540/295/482 539/295/482 541/296/482
-f 542/297/482 540/295/482 541/296/482
-f 543/293/483 544/293/483 545/294/483
-f 544/293/483 546/294/483 545/294/483
-f 545/294/483 546/294/483 547/295/483
-f 546/294/483 548/295/483 547/295/483
-f 547/295/483 548/295/483 549/296/483
-f 548/295/483 550/297/483 549/296/483
-f 533/298/484 531/299/484 519/300/484
-f 519/300/484 531/299/484 523/301/484
-f 531/299/484 527/302/484 523/301/484
-f 523/301/484 527/302/484 525/303/484
-f 520/300/484 519/300/484 523/301/484
-f 530/303/485 532/301/485 528/302/485
-f 532/301/485 521/300/485 528/302/485
-f 521/300/485 524/299/485 528/302/485
-f 522/298/485 524/299/485 521/300/485
-f 534/300/485 521/300/485 532/301/485
-f 551/304/486 552/305/486 553/306/486
-f 552/305/486 554/307/486 553/306/486
-f 555/308/486 554/307/486 552/305/486
-f 556/304/487 557/309/487 558/310/487
-f 558/310/487 557/309/487 559/311/487
-f 557/309/487 560/308/487 559/311/487
-f 561/312/488 515/312/488 562/312/488
-f 517/312/488 562/312/488 515/312/488
-f 563/313/489 561/312/489 564/313/489
-f 562/312/489 564/313/489 561/312/489
-f 516/314/490 563/314/490 518/314/490
-f 564/314/490 518/314/490 563/314/490
-f 565/315/482 566/316/482 567/317/482
-f 568/318/482 567/317/482 566/316/482
-f 569/316/483 570/318/483 571/315/483
-f 572/317/483 571/315/483 570/318/483
-f 568/319/465 566/286/465 569/312/465
-f 570/314/465 569/312/465 566/286/465
-f 567/313/488 568/313/488 571/313/488
-f 569/313/488 571/313/488 568/313/488
-f 565/312/489 567/312/489 572/312/489
-f 571/312/489 572/312/489 567/312/489
-f 566/320/490 565/320/490 570/320/490
-f 572/320/490 570/320/490 565/320/490
-f 540/321/491 542/322/491 548/296/491
-f 550/323/491 548/296/491 542/322/491
-f 538/324/492 540/325/492 546/321/492
-f 548/322/492 546/321/492 540/325/492
-f 537/326/493 538/324/494 544/327/495
-f 546/321/496 544/327/495 538/324/494
-f 535/296/497 537/321/498 543/296/499
-f 544/321/499 543/296/499 537/321/498
-f 536/328/488 535/322/488 545/328/488
-f 543/322/488 545/328/488 535/322/488
-f 539/327/500 536/328/500 547/327/500
-f 545/328/500 547/327/500 536/328/500
-f 541/296/501 539/296/501 549/323/501
-f 547/323/501 549/323/501 539/296/501
-f 559/329/502 560/330/502 553/329/502
-f 551/330/502 553/329/502 560/330/502
-f 553/331/503 554/332/503 559/331/503
-f 558/332/503 559/331/503 554/332/503
-f 554/333/504 555/332/504 558/334/504
-f 556/329/504 558/334/504 555/332/504
-f 557/335/505 556/331/505 552/336/505
-f 555/337/505 552/336/505 556/331/505
-f 552/336/506 551/338/506 557/335/506
-f 560/332/506 557/335/506 551/338/506
-f 528/302/485 524/299/485 526/339/485
-f 563/315/482 516/316/482 561/317/482
-f 515/318/482 561/317/482 516/316/482
-f 517/316/483 518/318/483 562/315/483
-f 564/317/483 562/315/483 518/318/483
-f 529/339/484 527/302/484 531/299/484
-f 573/340/507 574/341/507 575/342/507
-f 576/343/507 577/344/507 578/345/507
-f 577/344/507 574/341/507 578/345/507
-f 579/346/507 574/341/507 577/344/507
-f 575/342/507 574/341/507 579/346/507
-f 580/347/507 575/342/507 579/346/507
-f 578/345/507 574/341/507 581/348/507
-f 579/349/508 582/350/509 580/351/510
-f 583/352/511 580/351/510 582/350/509
-f 580/351/510 583/352/511 575/353/512
-f 584/354/513 575/353/512 583/352/511
-f 575/353/512 584/354/513 573/355/514
-f 585/356/515 573/355/514 584/354/513
-f 573/355/514 585/356/515 574/357/516
-f 586/358/517 574/357/516 585/356/515
-f 574/357/516 586/358/517 581/355/518
-f 587/356/519 581/355/518 586/358/517
-f 581/355/518 587/356/519 578/353/520
-f 588/354/521 578/353/520 587/356/519
-f 578/353/520 588/354/521 576/351/522
-f 589/352/523 576/351/522 588/354/521
-f 576/351/522 589/352/523 577/349/524
-f 590/350/525 577/349/524 589/352/523
-f 577/349/524 590/350/525 591/359/526
-f 592/360/527 591/359/526 590/350/525
-f 591/359/526 592/360/527 593/361/528
-f 594/362/529 593/361/528 592/360/527
-f 593/361/528 594/362/529 595/359/530
-f 596/360/531 595/359/530 594/362/529
-f 595/359/530 596/360/531 579/349/508
-f 582/350/509 579/349/508 596/360/531
-f 596/360/531 597/363/532 582/350/509
-f 598/364/533 582/350/509 597/363/532
-f 582/350/509 598/364/533 583/352/511
-f 599/365/534 583/352/511 598/364/533
-f 583/352/511 599/365/534 584/354/513
-f 600/366/535 584/354/513 599/365/534
-f 584/354/513 600/366/535 585/356/515
-f 601/367/536 585/356/515 600/366/535
-f 585/356/515 601/367/536 586/358/517
-f 602/368/537 586/358/517 601/367/536
-f 586/358/517 602/368/537 587/356/519
-f 603/367/538 587/356/519 602/368/537
-f 587/356/519 603/367/538 588/354/521
-f 604/366/539 588/354/521 603/367/538
-f 588/354/521 604/366/539 589/352/523
-f 605/365/540 589/352/523 604/366/539
-f 589/352/523 605/365/540 590/350/525
-f 606/364/541 590/350/525 605/365/540
-f 590/350/525 606/364/541 592/360/527
-f 607/363/542 592/360/527 606/364/541
-f 592/360/527 607/363/542 594/362/529
-f 608/369/543 594/362/529 607/363/542
-f 594/362/529 608/369/543 596/360/531
-f 597/363/532 596/360/531 608/369/543
-f 604/344/544 603/370/544 605/343/544
-f 605/343/544 603/370/544 607/348/544
-f 607/348/544 603/370/544 599/347/544
-f 597/340/544 607/348/544 599/347/544
-f 598/342/544 597/340/544 599/347/544
-f 608/341/544 607/348/544 597/340/544
-f 606/345/544 605/343/544 607/348/544
-f 591/370/507 593/371/507 577/344/507
-f 593/371/507 579/346/507 577/344/507
-f 595/372/507 579/346/507 593/371/507
-f 600/346/544 599/347/544 601/372/544
-f 599/347/544 603/370/544 601/372/544
-f 601/372/544 603/370/544 602/371/544
-# 162 faces
-
-#
-# object P_51_Mustang_Hull
-#
-
-v -2.18 8.58 9.73
-v -2.30 8.86 6.02
-v -2.39 8.59 9.73
-v -3.01 6.76 9.95
-v -3.00 7.11 6.05
-v -2.52 8.87 6.26
-v -3.01 7.30 3.85
-v -2.47 9.05 4.06
-v -2.46 9.23 1.97
-v -2.94 7.47 1.76
-v -2.64 7.71 -0.97
-v -2.18 9.48 -0.86
-v -1.61 9.68 -3.39
-v -2.16 7.97 -4.05
-v -1.03 9.75 -4.33
-v -1.12 8.59 -5.66
-v 0.11 9.80 -4.96
-v -0.16 8.78 -6.15
-v 0.64 8.86 -6.31
-v 0.67 9.81 -5.10
-v 1.22 9.79 -4.97
-v 1.42 8.77 -6.17
-v 2.36 8.56 -5.69
-v 2.34 9.73 -4.36
-v 3.35 7.92 -4.07
-v 2.94 9.65 -3.40
-v 3.68 7.66 -1.02
-v 3.37 9.43 -0.91
-v 3.56 9.19 1.92
-v 3.88 7.42 1.70
-v 3.89 7.24 3.80
-v 3.50 9.01 4.01
-v 3.48 8.82 6.21
-v 3.80 7.05 6.00
-v 3.24 8.55 9.69
-v 3.68 6.70 9.89
-v 3.42 6.70 9.89
-v 3.02 8.54 9.69
-v 3.54 7.05 5.77
-v 3.25 8.81 5.98
-v 3.62 7.24 3.66
-v 3.27 9.00 3.86
-v 3.32 9.19 1.84
-v 3.62 7.42 1.64
-v 3.43 7.66 -0.98
-v 3.15 9.44 -0.88
-v 2.76 9.66 -3.28
-v 3.14 7.93 -3.92
-v 2.21 9.73 -4.21
-v 2.21 8.57 -5.48
-v 1.17 9.80 -4.74
-v 1.35 8.78 -5.89
-v 0.63 8.87 -6.03
-v 0.66 9.82 -4.87
-v 0.14 9.81 -4.73
-v -0.11 8.79 -5.88
-v -1.00 8.60 -5.46
-v -0.91 9.76 -4.19
-v -1.97 7.97 -3.90
-v -1.45 9.69 -3.27
-v -2.41 7.71 -0.94
-v -1.97 9.47 -0.84
-v -2.23 9.23 1.89
-v -2.68 7.47 1.69
-v -2.76 7.29 3.71
-v -2.25 9.05 3.90
-v -2.75 7.10 5.82
-v -2.76 6.75 9.94
-v -2.84 6.73 10.23
-v -0.81 12.12 9.64
-v -3.12 6.71 10.24
-v -1.01 12.45 9.62
-v 2.05 12.10 9.61
-v 2.28 12.42 9.59
-v 3.57 6.66 10.17
-v 3.86 6.66 10.17
-v 3.58 6.71 9.84
-v 2.05 12.09 9.29
-v -0.81 12.12 9.32
-v -2.83 6.78 9.90
-v 3.86 6.71 9.84
-v 2.28 12.42 9.26
-v -1.00 12.44 9.30
-v -3.12 6.76 9.90
-v 4.66 -1.79 -1.03
-v 4.25 -0.21 1.79
-v 5.11 -0.16 2.78
-v -3.87 -3.05 -1.87
-v -4.48 -1.72 -0.95
-v -3.60 -2.34 -4.87
-v -3.65 -3.03 1.13
-v -3.68 -1.87 2.11
-v -2.89 -2.82 3.93
-v -2.58 -1.80 4.33
-v -1.34 -1.85 5.56
-v -1.63 -3.21 5.62
-v -0.01 -1.92 6.45
-v -0.09 -3.54 6.63
-v 1.51 -3.23 5.59
-v 1.35 -1.87 5.53
-v 2.85 -2.86 3.87
-v 2.62 -1.84 4.28
-v 3.78 -1.93 2.04
-v 3.66 -3.09 1.06
-v 3.95 -3.11 -1.94
-v 3.82 -2.40 -4.94
-v 3.26 -4.73 -4.88
-v 3.54 -4.03 -1.52
-v 3.30 -4.95 -1.65
-v 2.58 -5.40 -4.82
-v 3.39 -3.91 1.68
-v 2.74 -3.53 4.26
-v 2.35 -3.57 6.63
-v 3.21 -4.15 4.04
-v 3.01 -4.04 6.65
-v 3.11 -5.17 4.28
-v 2.84 -5.09 6.73
-v 2.20 -5.93 4.14
-v 1.97 -5.61 6.76
-v -0.20 -5.90 6.80
-v 3.21 -5.14 1.70
-v 2.63 -5.80 -1.55
-v 2.42 -5.98 1.71
-v -2.81 -5.76 -1.50
-v -3.47 -4.44 -1.52
-v -2.64 -5.36 -4.77
-v -3.41 -5.09 1.76
-v -2.70 -5.94 1.75
-v -3.37 -5.12 4.34
-v -2.53 -5.90 4.18
-v -3.16 -5.04 6.79
-v -2.34 -5.58 6.80
-v -0.18 -6.23 2.91
-v 1.26 -6.32 1.56
-v 1.15 -6.28 -1.34
-v 1.38 -5.76 -5.00
-v 2.45 -4.83 -8.13
-v -3.37 -4.10 4.10
-v -3.47 -3.86 1.74
-v -2.85 -3.49 4.32
-v -3.10 -2.40 -8.95
-v -2.97 -3.71 -8.45
-v -3.25 -4.68 -4.82
-v -2.52 -3.54 6.68
-v -3.23 -3.99 6.71
-v 2.64 7.92 -7.83
-v 0.66 8.54 -8.04
-v 1.70 8.81 -6.12
-v 0.68 8.16 -10.79
-v -1.38 7.95 -7.79
-v -1.27 7.48 -10.79
-v -1.94 6.54 -10.08
-v -1.76 6.04 -15.12
-v -2.35 4.01 -14.71
-v -2.68 4.18 -10.15
-v -2.65 0.18 -14.70
-v -3.13 0.11 -9.48
-v -2.51 -1.75 -14.35
-v -2.17 -2.56 -13.63
-v -2.37 -4.79 -8.08
-v 0.70 7.68 -15.64
-v -0.96 7.14 -15.33
-v 3.16 -3.76 -8.51
-v 2.57 -2.60 -13.68
-v 0.19 -2.88 -13.74
-v 0.33 -0.98 -18.94
-v -1.92 -1.05 -18.81
-v -2.26 -0.55 -18.26
-v -2.16 1.12 -18.78
-v -1.95 3.55 -18.87
-v -1.41 5.63 -19.24
-v -0.63 6.76 -19.48
-v -1.82 0.96 -23.00
-v -1.73 -0.34 -22.73
-v 0.33 -2.07 -22.55
-v 2.58 -1.08 -18.86
-v 3.00 -1.79 -14.41
-v 3.43 -2.45 -9.01
-v 3.70 0.06 -9.54
-v 3.90 0.33 -5.99
-v 3.73 5.02 -6.62
-v 3.92 4.94 -3.00
-v 3.27 7.20 -5.88
-v 3.38 7.92 -4.06
-v 2.45 8.56 -5.59
-v -1.49 3.34 -25.54
-v -1.66 1.28 -25.54
-v -1.68 3.36 -23.04
-v -1.44 -0.13 -25.65
-v 0.43 -0.87 -25.61
-v 2.56 -0.37 -22.78
-v 2.94 -0.59 -18.32
-v 3.33 0.13 -14.76
-v 3.65 4.13 -10.21
-v 3.13 6.50 -10.13
-v 2.56 7.45 -10.83
-v 3.39 3.96 -14.77
-v 3.02 1.08 -18.84
-v -1.36 0.20 -28.16
-v 0.48 -0.62 -27.84
-v 2.38 -0.16 -25.69
-v 2.79 0.93 -23.05
-v 3.03 3.51 -18.93
-v 3.01 6.01 -15.17
-v 2.31 7.11 -15.36
-v 2.69 5.60 -19.28
-v 2.87 3.33 -23.10
-v 2.72 1.24 -25.59
-v 2.39 0.17 -28.20
-v 0.56 -0.18 -32.31
-v -1.02 0.49 -32.48
-v -1.45 1.45 -28.24
-v -1.11 1.83 -32.23
-v -1.22 3.44 -28.23
-v -0.97 3.60 -32.20
-v -0.54 0.61 -36.78
-v -0.65 1.57 -37.11
-v -0.39 0.69 -37.86
-v -0.54 1.56 -37.94
-v -0.40 3.34 -38.12
-v -0.52 3.41 -37.33
-v -0.81 4.47 -34.00
-v -0.80 3.33 -33.98
-v -1.08 4.53 -32.20
-v -1.18 4.91 -28.36
-v -1.43 5.01 -25.55
-v -1.39 5.21 -23.17
-v -1.29 5.80 -25.86
-v -0.82 5.27 -34.30
-v -1.17 5.60 -32.19
-v -0.67 5.70 -35.24
-v -1.25 5.89 -30.06
-v -0.71 6.30 -31.82
-v -1.23 6.04 -28.10
-v -0.11 6.62 -25.95
-v -0.61 6.31 -23.30
-v -0.34 5.20 -38.31
-v 0.09 7.37 -36.51
-v 0.29 7.13 -38.50
-v 0.20 8.38 -37.33
-v 0.34 8.23 -38.61
-v 0.86 15.56 -39.24
-v 0.26 8.62 -35.31
-v 0.18 7.65 -34.16
-v 0.30 8.02 -31.06
-v 0.74 7.30 -20.27
-v 2.04 6.74 -19.51
-v 1.68 6.61 -25.97
-v 2.08 6.29 -23.33
-v 2.78 5.77 -25.91
-v 2.84 4.97 -25.60
-v 2.67 4.88 -28.41
-v 2.57 3.42 -28.27
-v 2.44 3.57 -32.24
-v 2.41 1.80 -32.27
-v 2.28 1.75 -33.92
-v 2.14 0.64 -33.77
-v 1.86 0.59 -36.81
-v 0.59 -0.02 -33.73
-v 0.65 0.31 -37.01
-v 2.30 3.31 -34.01
-v 2.63 4.50 -32.24
-v 2.42 4.44 -34.04
-v 2.83 5.57 -32.24
-v 1.89 16.66 -36.52
-v 1.85 15.87 -36.07
-v 1.97 16.49 -38.45
-v 1.95 15.68 -38.16
-v 1.92 15.55 -39.26
-v 1.73 8.61 -35.34
-v 1.85 8.37 -37.37
-v 1.68 7.64 -34.19
-v 1.83 7.36 -36.54
-v 2.41 6.27 -31.86
-v 2.42 5.67 -35.28
-v 2.88 5.86 -30.11
-v 2.51 5.25 -34.34
-v 2.12 3.39 -37.36
-v 2.07 1.55 -37.14
-v 2.81 6.01 -28.14
-v 1.48 8.01 -31.09
-v 0.89 8.76 -29.21
-v 1.54 8.93 -32.66
-v 0.96 9.49 -30.87
-v 1.34 15.98 -35.15
-v 0.84 15.88 -36.04
-v 0.90 16.67 -36.50
-v 0.87 16.50 -38.43
-v 0.81 15.69 -38.13
-v 0.92 16.38 -39.42
-v 0.38 8.94 -32.64
-v 0.96 17.20 -36.78
-v 1.38 16.76 -35.70
-v 1.06 16.91 -39.48
-v 1.94 16.37 -39.44
-v 1.94 16.37 -39.43
-v 1.94 16.28 -39.43
-v 1.85 16.90 -39.49
-v 1.89 17.19 -36.80
-v 1.41 17.28 -36.06
-v 1.45 17.57 -37.12
-v 1.48 17.32 -39.52
-v 1.44 17.63 -36.65
-v 1.99 1.54 -37.97
-v 1.75 0.67 -37.88
-v 2.02 3.32 -38.14
-v 2.14 5.18 -38.33
-v 1.69 7.13 -38.52
-v 1.75 8.22 -38.63
-v 0.67 0.46 -37.85
-v 3.86 7.51 0.69
-v 3.95 4.68 1.12
-v 3.90 7.06 5.85
-v 3.95 4.60 6.04
-v 3.79 6.68 10.01
-v 3.87 4.45 9.55
-v 3.70 6.44 11.84
-v 3.81 3.46 11.93
-v 3.68 6.42 15.10
-v 3.73 4.91 15.20
-v 3.73 5.37 19.12
-v 3.69 2.76 19.65
-v 3.60 2.71 23.29
-v 3.53 0.63 23.15
-v 3.34 0.90 26.42
-v 3.07 -0.41 26.45
-v 2.86 1.14 31.85
-v 1.48 -0.38 32.12
-v 3.83 2.01 9.53
-v 3.89 1.66 6.29
-v 4.03 1.15 1.42
-v 4.05 0.52 -2.36
-v 4.15 -0.95 -1.80
-v 4.21 0.67 6.43
-v 4.10 1.18 9.55
-v 4.11 1.23 12.19
-v 3.73 2.28 15.62
-v 0.99 0.57 36.00
-v -0.28 -0.63 32.46
-v -0.28 0.36 36.21
-v -1.53 0.59 36.02
-v -2.00 -0.36 32.15
-v -3.23 1.19 31.90
-v -3.45 -0.36 26.51
-v -3.60 0.95 26.49
-v -3.73 0.69 23.22
-v -3.61 2.76 23.36
-v -3.60 2.82 19.72
-v -3.38 5.42 19.19
-v -3.33 4.97 15.27
-v -3.14 6.47 15.16
-v -3.46 3.51 12.00
-v -3.08 6.49 11.90
-v -3.37 4.51 9.62
-v -3.10 6.74 10.07
-v -2.61 -1.47 26.73
-v -0.26 -1.79 26.94
-v -3.76 -0.41 24.24
-v -3.32 -1.40 24.00
-v -2.16 -1.98 24.36
-v -0.25 -2.12 24.38
-v 2.12 -1.51 26.69
-v 2.91 -1.45 23.95
-v 3.44 -0.47 24.18
-v 1.68 -2.00 24.32
-v -3.35 4.66 6.11
-v -3.06 7.12 5.92
-v -3.22 4.74 1.19
-v -2.85 7.57 0.76
-v -3.06 5.00 -2.93
-v -2.21 7.96 -4.00
-v -2.13 7.24 -5.83
-v -1.19 8.59 -5.55
-v -0.40 8.83 -6.10
-v 0.66 8.89 -6.31
-v -2.77 5.07 -6.56
-v -3.39 0.39 -5.92
-v -3.61 0.58 -2.29
-v -3.64 1.21 1.49
-v -3.57 1.72 6.36
-v -3.56 2.07 9.60
-v -3.87 -0.89 -1.73
-v -3.99 -0.15 1.87
-v -3.99 0.73 6.51
-v -3.91 1.24 9.63
-v -3.98 1.29 12.27
-v -3.58 2.34 15.69
-v 3.48 8.59 10.06
-v 3.42 7.85 11.79
-v 3.40 7.97 12.78
-v 3.48 7.69 15.11
-v 3.72 6.84 18.67
-v 3.66 5.67 23.35
-v 3.50 2.82 26.85
-v 3.33 3.01 31.94
-v 2.17 1.58 35.93
-v 2.97 3.24 35.96
-v 1.87 2.09 38.21
-v 2.20 3.58 38.12
-v 3.30 5.02 36.17
-v 0.83 1.30 38.26
-v 2.01 3.59 38.71
-v 2.70 5.55 38.59
-v 3.26 6.60 35.87
-v 2.69 6.79 38.51
-v 2.56 8.39 35.96
-v 2.08 8.17 38.43
-v 2.14 8.94 35.78
-v 1.33 8.81 38.39
-v 1.17 9.51 35.68
-v 0.66 9.21 38.36
-v 0.16 9.58 35.68
-v 0.11 9.29 38.36
-v -0.45 9.22 38.37
-v -0.86 9.52 35.70
-v -1.16 8.83 38.41
-v -1.88 8.97 35.82
-v -1.96 8.20 38.46
-v -2.36 8.43 36.01
-v -0.94 9.87 31.34
-v -0.99 10.19 26.34
-v 0.31 10.34 26.77
-v 0.24 10.10 31.35
-v 1.40 9.85 31.31
-v 2.43 9.42 31.16
-v 2.98 8.72 31.28
-v 3.55 6.98 31.31
-v 3.30 9.02 26.28
-v 2.49 9.75 26.24
-v 2.79 9.81 22.99
-v 1.60 10.17 26.31
-v 1.80 10.21 23.30
-v 2.05 10.21 20.89
-v 0.35 10.44 23.69
-v 0.39 10.50 21.00
-v 0.42 10.41 17.76
-v 0.46 10.45 15.10
-v -1.03 10.08 15.41
-v -3.29 7.11 21.42
-v -3.28 7.11 23.77
-v -2.82 8.99 21.40
-v -2.82 8.71 18.17
-v -2.21 9.52 17.94
-v -2.03 9.13 15.29
-v -2.22 8.81 13.72
-v -1.24 9.98 14.02
-v 0.48 10.47 13.79
-v 1.91 10.06 15.38
-v 2.10 10.07 18.02
-v 2.87 9.77 21.15
-v 3.35 9.04 23.40
-v 3.64 6.98 26.77
-v -3.23 6.90 18.74
-v -3.39 5.73 23.42
-v -2.82 7.74 15.17
-v -2.65 8.02 12.84
-v -3.59 2.87 26.92
-v -2.66 7.90 11.85
-v -2.61 8.64 10.12
-v -2.70 6.83 38.56
-v -3.20 6.62 35.03
-v -2.83 5.59 38.64
-v -3.42 5.07 36.23
-v -2.33 3.62 38.75
-v -2.50 3.62 38.16
-v -3.25 3.29 36.02
-v -2.32 2.13 38.25
-v -2.60 1.62 35.98
-v -1.35 1.32 38.28
-v -3.53 3.06 32.00
-v -3.56 5.54 26.97
-v -3.59 4.96 32.12
-v -3.34 7.04 26.84
-v -2.77 9.09 23.46
-v -2.17 9.81 21.20
-v -1.29 10.09 18.05
-v -1.30 10.23 20.93
-v -1.11 10.24 23.32
-v -2.80 9.06 26.34
-v -2.13 9.85 23.04
-v -1.92 9.78 26.28
-v -2.63 8.76 31.33
-v -3.37 7.03 31.38
-v -2.01 9.46 31.20
-v 3.57 4.91 32.06
-v 3.72 5.49 26.90
-v 3.66 7.05 23.70
-v 3.73 7.06 21.36
-v 3.44 8.94 21.34
-v 3.50 8.66 18.11
-v 2.97 9.48 17.90
-v 2.82 9.09 15.25
-v 3.02 8.77 13.67
-v 2.14 9.95 13.99
-v -8.03 6.05 -27.42
-v -4.52 6.07 -27.32
-v -8.03 5.97 -28.86
-v -11.48 5.96 -28.73
-v -11.12 5.68 -31.09
-v -13.81 5.66 -30.77
-v -14.13 5.91 -28.57
-v -15.24 5.49 -30.33
-v -15.27 5.57 -28.02
-v -14.18 5.73 -27.39
-v -11.49 6.01 -27.59
-v -11.64 5.76 -26.95
-v -8.48 5.76 -26.64
-v -5.05 5.77 -26.30
-v -2.22 5.77 -26.09
-v -1.90 6.05 -27.63
-v -1.72 5.88 -29.69
-v -4.26 5.97 -29.14
-v -4.42 5.63 -31.75
-v -7.79 5.68 -31.43
-v -1.74 5.55 -32.08
-v 4.34 6.11 32.28
-v 4.06 6.10 32.66
-v 4.63 6.10 32.53
-v 4.17 6.09 33.03
-v 4.75 5.76 32.68
-v 4.21 5.75 33.23
-v 4.60 5.42 32.56
-v 4.14 5.41 33.05
-v 4.31 5.43 32.30
-v 4.02 5.42 32.69
-v 4.19 5.77 32.16
-v 3.98 5.77 32.49
-v 3.79 5.77 32.46
-v 3.80 6.10 32.64
-v 3.78 6.10 33.03
-v 3.75 5.75 33.24
-v 3.74 5.42 33.06
-v 3.76 5.42 32.67
-v 13.07 5.77 -29.01
-v 12.75 5.49 -31.56
-v 9.62 5.83 -29.06
-v 9.43 5.54 -31.80
-v 5.87 5.90 -29.25
-v 6.06 5.54 -32.00
-v 3.33 5.84 -29.75
-v 3.46 6.01 -27.69
-v 3.72 5.73 -26.16
-v 6.08 5.99 -27.44
-v 6.55 5.68 -26.43
-v 9.59 5.91 -27.62
-v 9.99 5.62 -26.85
-v 13.05 5.81 -27.87
-v 13.16 5.56 -27.23
-v 15.71 5.50 -27.73
-v 15.71 5.68 -28.91
-v 3.39 5.51 -32.16
-v 16.80 5.32 -28.38
-v 16.83 5.24 -30.69
-v 15.57 5.42 -31.45
-v 16.72 5.01 -33.40
-v 15.72 4.99 -33.73
-v 2.75 5.18 -23.22
-v 2.74 3.31 -25.59
-v 2.61 1.41 -28.29
-v 2.21 0.46 -32.52
-v -0.90 0.66 -33.74
-v -0.94 1.77 -33.88
-v -3.75 5.44 34.55
-v -3.73 5.78 34.73
-v -4.14 5.45 34.56
-v -4.02 5.45 34.19
-v -4.29 5.46 33.81
-v -4.13 5.81 33.67
-v -3.94 5.80 33.99
-v -4.26 6.14 33.78
-v -3.98 6.13 34.16
-v -4.55 6.14 34.05
-v -4.11 6.13 34.53
-v -4.72 5.80 34.19
-v -4.19 5.78 34.73
-v -4.59 5.46 34.07
-v -3.71 6.12 34.53
-v -3.72 6.13 34.14
-v -3.74 5.80 33.96
-v -3.76 5.45 34.16
-v -4.87 -0.09 2.87
-v -4.96 0.33 6.76
-v -4.97 0.69 9.85
-v -4.97 0.81 12.34
-v -4.02 1.40 15.81
-v -5.09 0.90 16.22
-v -4.95 0.55 19.82
-v -3.90 1.32 19.99
-v -4.83 0.16 22.21
-v -4.59 -0.55 23.22
-v 5.14 0.25 6.67
-v 6.54 -0.19 3.45
-v 6.70 0.02 6.36
-v 5.11 0.61 9.76
-v 6.75 0.38 9.22
-v 5.06 0.73 12.25
-v 6.64 0.56 12.08
-v 5.08 0.82 16.12
-v 6.67 0.70 16.38
-v 6.69 0.53 18.92
-v 4.83 0.58 19.72
-v 5.76 -0.33 22.01
-v 4.60 0.08 22.12
-v 4.27 -0.62 23.14
-v 6.08 -0.69 22.43
-v 8.22 -0.70 21.64
-v -2.94 -4.05 6.84
-v -2.50 -4.14 5.16
-v -2.29 -3.64 6.81
-v -1.95 -3.79 5.13
-v -0.10 -3.68 6.76
-v 2.10 -3.67 6.76
-v 1.79 -3.82 5.09
-v 2.71 -4.09 6.78
-v 2.31 -4.18 5.11
-v -2.69 8.37 10.10
-v -1.01 12.37 9.64
-v -2.40 8.38 10.10
-v -0.82 12.04 9.66
-v 2.27 12.34 9.61
-v 2.05 12.02 9.63
-v 3.51 8.33 10.04
-v 3.22 8.33 10.04
-v 3.84 1.26 19.92
-v 4.07 1.34 15.73
-v -4.70 -0.90 3.35
-v -4.70 -1.20 6.48
-v -6.30 -0.85 3.61
-v -6.56 -1.14 6.50
-v -12.47 -0.77 4.38
-v -12.73 -0.99 6.36
-v -6.67 -1.53 9.41
-v -14.07 -1.37 9.24
-v -6.52 -1.75 12.40
-v -13.54 -1.60 12.35
-v -6.88 -1.99 14.90
-v -14.82 -1.75 15.41
-v -7.22 -1.67 18.64
-v -4.86 -2.15 14.61
-v -4.82 -1.75 19.27
-v -3.62 -2.25 14.45
-v -3.44 -1.80 19.64
-v -1.88 -2.40 14.58
-v -1.67 -2.00 20.13
-v -0.19 -2.16 20.12
-v -3.22 -1.95 12.03
-v -4.78 -1.81 12.13
-v -4.74 -1.59 9.42
-v -2.95 -1.72 9.49
-v -1.52 -2.01 12.24
-v -0.12 -2.14 14.54
-v 1.61 -2.42 14.55
-v 1.30 -2.02 20.10
-v 3.10 -1.85 19.57
-v 3.08 -1.79 21.12
-v 4.47 -1.76 20.56
-v 3.43 -1.11 22.63
-v -0.09 -2.11 12.44
-v -2.90 -1.39 6.33
-v -1.41 -1.87 9.61
-v -0.05 -1.96 9.46
-v 1.31 -1.89 9.58
-v 1.35 -2.03 12.21
-v -1.47 -1.58 6.59
-v 1.48 -1.60 6.57
-v 4.85 -0.98 3.26
-v 6.45 -0.95 3.49
-v 4.75 -1.28 6.39
-v 6.61 -1.24 6.37
-v 4.68 -1.66 9.33
-v 6.61 -1.63 9.28
-v 4.63 -1.88 12.04
-v 6.36 -1.85 12.28
-v 4.61 -2.22 14.52
-v 6.63 -2.09 14.77
-v 6.91 -1.78 18.50
-v 4.50 -1.82 19.18
-v 7.17 -1.73 19.64
-v 3.37 -2.30 14.39
-v 3.06 -1.99 11.97
-v 2.87 -1.77 9.44
-v 2.93 -1.44 6.28
-v -0.21 -2.18 21.60
-v 1.16 -2.18 21.93
-v -13.50 -1.56 17.59
-v -7.50 -1.61 19.78
-v -4.83 -1.69 20.65
-v -3.45 -1.74 21.19
-v -1.59 -2.16 21.95
-v -3.78 -1.05 22.70
-v -14.13 -0.49 20.28
-v -8.50 -0.57 21.80
-v -6.38 -0.59 22.55
-v -6.57 0.66 12.21
-v -6.69 0.77 16.50
-v -13.44 0.66 12.23
-v -14.35 0.80 15.32
-v -6.79 0.64 19.05
-v -13.40 0.59 18.05
-v -6.02 -0.24 22.12
-v -14.04 0.46 9.14
-v -6.62 0.48 9.35
-v -6.54 0.12 6.49
-v -6.32 -0.09 3.57
-v -12.44 -0.05 4.34
-v -12.67 0.19 6.29
-v -2.87 -5.00 6.90
-v -2.45 -4.96 5.21
-v 2.56 -5.05 6.85
-v 2.18 -4.99 5.17
-v 1.76 -5.52 6.88
-v 1.50 -5.39 5.19
-v -0.19 -5.70 6.91
-v -2.13 -5.49 6.92
-v -1.81 -5.37 5.22
-v -3.14 5.42 35.50
-v -3.77 5.43 35.52
-v -3.16 5.24 35.02
-v -3.79 5.24 35.05
-v -3.34 5.42 26.54
-v -3.97 5.42 26.57
-v -3.34 5.62 26.05
-v -3.97 5.63 26.08
-v -3.93 6.43 26.05
-v -3.91 6.61 26.52
-v -3.30 6.42 26.02
-v -3.28 6.61 26.49
-v -3.73 6.43 35.00
-v -3.10 6.43 34.97
-v -3.73 6.23 35.49
-v -3.10 6.22 35.46
-v -3.88 5.93 27.60
-v -3.87 6.28 27.39
-v -4.34 5.93 27.59
-v -4.29 5.60 27.42
-v -4.74 5.61 26.94
-v -4.44 5.61 26.67
-v -4.17 5.60 27.05
-v -4.28 5.96 26.53
-v -4.09 5.95 26.85
-v -4.41 6.30 26.65
-v -4.13 6.29 27.02
-v -4.70 6.29 26.91
-v -4.26 6.28 27.39
-v -4.87 5.95 27.05
-v -3.87 6.28 27.00
-v -3.89 5.95 26.82
-v -3.91 5.60 27.03
-v -3.90 5.59 27.42
-v -1.21 9.64 14.41
-v -0.71 12.35 9.95
-v -1.44 9.65 14.42
-v -1.02 12.35 9.90
-v -1.45 9.34 14.15
-v -1.00 12.00 9.77
-v -1.22 9.34 14.15
-v -0.69 12.00 9.83
-v 2.22 12.32 9.86
-v 1.90 12.33 9.92
-v 2.27 9.62 14.38
-v 2.04 9.62 14.38
-v 2.17 11.98 9.74
-v 2.26 9.31 14.12
-v 1.85 11.98 9.80
-v 2.03 9.31 14.12
-v 0.81 -4.99 -22.81
-v -0.46 -4.98 -22.79
-v 0.82 -4.71 -23.17
-v -0.44 -4.70 -23.15
-v 0.89 -3.01 -22.29
-v -0.38 -3.00 -22.28
-v 0.96 -1.67 -22.95
-v -0.30 -1.66 -22.94
-v 0.96 -1.54 -22.03
-v -0.31 -1.53 -22.02
-v 0.89 -2.88 -21.51
-v -0.38 -2.87 -21.49
-v -1.47 -5.74 -4.97
-v -1.38 -6.26 -1.31
-v -1.57 -6.30 1.58
-v -0.12 -6.30 -1.26
-v -0.03 -5.59 -5.78
-v 0.03 -5.10 -8.16
-v 3.48 5.22 -27.47
-v 3.30 5.03 -29.46
-v 3.33 4.89 -32.33
-v 5.82 5.02 -29.12
-v 6.03 4.88 -32.03
-v 9.40 4.92 -31.81
-v 9.58 5.05 -28.94
-v 12.73 4.96 -31.49
-v 13.03 5.07 -28.91
-v 15.50 5.01 -31.28
-v 15.68 5.13 -28.83
-v 13.02 5.21 -27.78
-v 6.03 5.22 -27.32
-v 9.54 5.21 -27.51
-v -0.26 1.32 38.26
-v -15.08 5.26 -33.04
-v -14.07 5.22 -33.39
-v -14.09 5.21 -32.45
-v -13.95 5.24 -30.69
-v -14.16 5.36 -28.49
-v -11.51 5.26 -28.63
-v -11.52 5.40 -27.50
-v -8.05 5.35 -27.31
-v -4.55 5.31 -27.20
-v -1.99 5.26 -27.41
-v -1.77 5.07 -29.40
-v -1.73 4.93 -32.15
-v -4.31 5.09 -29.00
-v -8.06 5.19 -28.74
-v -4.44 4.96 -31.91
-v -7.82 5.05 -31.65
-v -11.33 5.14 -31.30
-v -1.04 1.63 37.01
-v 0.59 1.62 36.99
-v -1.77 2.24 36.99
-v -1.91 3.36 36.92
-v 1.37 2.21 36.96
-v 1.61 3.33 36.89
-v 2.64 -0.09 1.94
-v 2.34 6.46 -0.67
-v -2.37 -0.05 1.99
-v -1.39 6.49 -0.64
-v 2.56 -0.95 10.54
-v -2.59 -0.91 10.59
-v 2.52 4.84 11.25
-v -2.03 4.88 11.29
-v 2.59 6.63 11.43
-v -1.94 6.67 11.48
-v 0.49 10.12 11.77
-v 2.05 9.05 11.64
-v -1.17 9.07 11.67
-v 1.94 3.49 38.22
-v -2.26 3.52 38.26
-v -2.09 2.18 38.33
-v -1.23 1.46 38.36
-v 0.72 1.45 38.34
-v 1.65 2.15 38.30
-v -3.85 5.90 29.03
-v -3.83 6.25 28.83
-v -4.31 5.90 29.03
-v -4.26 5.57 28.86
-v -4.71 5.58 28.37
-v -4.41 5.58 28.11
-v -4.14 5.57 28.49
-v -4.25 5.93 27.97
-v -4.06 5.92 28.29
-v -4.38 6.27 28.08
-v -4.10 6.26 28.46
-v -4.67 6.26 28.35
-v -4.23 6.25 28.83
-v -4.84 5.92 28.49
-v -3.84 6.25 28.44
-v -3.86 5.92 28.26
-v -3.88 5.57 28.46
-v -3.87 5.56 28.85
-v -3.82 5.87 30.47
-v -3.80 6.22 30.26
-v -4.28 5.87 30.46
-v -4.23 5.54 30.29
-v -4.68 5.55 29.81
-v -4.38 5.55 29.54
-v -4.10 5.54 29.92
-v -4.22 5.90 29.40
-v -4.03 5.89 29.72
-v -4.35 6.24 29.52
-v -4.07 6.23 29.89
-v -4.64 6.23 29.78
-v -4.20 6.22 30.26
-v -4.80 5.89 29.92
-v -3.81 6.22 29.87
-v -3.83 5.89 29.69
-v -3.85 5.54 29.90
-v -3.84 5.53 30.29
-v -3.79 5.84 31.87
-v -3.78 6.19 31.66
-v -4.25 5.84 31.87
-v -4.20 5.51 31.69
-v -4.65 5.52 31.21
-v -4.35 5.52 30.95
-v -4.08 5.51 31.32
-v -4.19 5.87 30.80
-v -4.00 5.86 31.12
-v -4.32 6.21 30.92
-v -4.04 6.20 31.30
-v -4.61 6.20 31.18
-v -4.17 6.19 31.67
-v -4.78 5.86 31.33
-v -3.78 6.19 31.27
-v -3.80 5.86 31.09
-v -3.82 5.51 31.30
-v -3.81 5.50 31.69
-v -3.76 5.81 33.31
-v -3.74 6.16 33.10
-v -4.22 5.81 33.31
-v -4.17 5.48 33.13
-v -4.62 5.49 32.65
-v -4.32 5.49 32.38
-v -4.05 5.48 32.76
-v -4.16 5.84 32.24
-v -3.97 5.83 32.56
-v -4.29 6.17 32.36
-v -4.01 6.16 32.73
-v -4.58 6.17 32.62
-v -4.14 6.16 33.11
-v -4.75 5.83 32.77
-v -3.75 6.16 32.71
-v -3.77 5.83 32.53
-v -3.79 5.48 32.74
-v -3.78 5.47 33.13
-v 4.13 5.56 26.00
-v 4.09 5.36 26.49
-v 3.50 5.57 25.99
-v 3.46 5.36 26.48
-v 3.69 5.18 34.98
-v 3.06 5.19 34.96
-v 3.67 5.37 35.45
-v 3.04 5.37 35.44
-v 3.08 6.18 35.41
-v 3.71 6.17 35.42
-v 3.11 6.38 34.92
-v 3.74 6.38 34.93
-v 3.52 6.56 26.43
-v 4.15 6.55 26.45
-v 3.53 6.37 25.96
-v 4.16 6.37 25.97
-v 4.02 5.53 27.34
-v 4.41 5.53 27.34
-v 4.03 5.87 27.52
-v 4.49 5.87 27.51
-v 4.05 6.21 27.31
-v 4.45 6.21 27.31
-v 4.07 6.22 26.92
-v 4.33 6.22 26.94
-v 4.06 5.89 26.74
-v 4.26 5.88 26.77
-v 4.04 5.54 26.95
-v 4.30 5.54 26.97
-v 4.59 5.54 26.59
-v 4.87 5.54 26.85
-v 5.03 5.87 26.96
-v 4.90 6.22 26.82
-v 4.62 6.23 26.56
-v 4.46 5.89 26.45
-v 3.95 5.50 28.78
-v 4.34 5.50 28.78
-v 3.96 5.84 28.96
-v 4.42 5.84 28.95
-v 3.98 6.19 28.75
-v 4.38 6.18 28.75
-v 4.00 6.19 28.36
-v 4.26 6.19 28.38
-v 4.00 5.86 28.18
-v 4.19 5.85 28.21
-v 3.97 5.51 28.39
-v 4.23 5.51 28.41
-v 4.52 5.52 28.03
-v 4.80 5.51 28.28
-v 4.96 5.84 28.40
-v 4.83 6.19 28.26
-v 4.55 6.20 28.00
-v 4.39 5.86 27.88
-v 3.88 5.47 30.21
-v 4.27 5.47 30.21
-v 3.89 5.81 30.39
-v 4.35 5.81 30.38
-v 3.91 6.16 30.19
-v 4.31 6.15 30.18
-v 3.93 6.16 29.80
-v 4.19 6.16 29.81
-v 3.93 5.83 29.62
-v 4.12 5.82 29.64
-v 3.90 5.48 29.82
-v 4.16 5.48 29.84
-v 4.45 5.49 29.46
-v 4.73 5.48 29.72
-v 4.89 5.81 29.83
-v 4.77 6.16 29.69
-v 4.48 6.17 29.43
-v 4.32 5.83 29.32
-v 3.81 5.45 31.62
-v 4.21 5.44 31.61
-v 3.82 5.78 31.80
-v 4.28 5.78 31.79
-v 3.85 6.13 31.59
-v 4.24 6.12 31.59
-v 3.87 6.13 31.20
-v 4.12 6.13 31.22
-v 3.86 5.80 31.02
-v 4.05 5.80 31.05
-v 3.83 5.45 31.23
-v 4.09 5.45 31.25
-v 4.38 5.46 30.86
-v 4.67 5.45 31.12
-v 4.82 5.79 31.24
-v 4.70 6.13 31.09
-v 4.41 6.14 30.84
-v 4.26 5.80 30.72
-v 3.68 5.39 34.48
-v 4.07 5.38 34.48
-v 3.68 5.72 34.66
-v 4.14 5.72 34.65
-v 3.71 6.07 34.46
-v 4.10 6.06 34.45
-v 3.73 6.08 34.07
-v 3.99 6.07 34.08
-v 3.72 5.74 33.89
-v 3.91 5.74 33.91
-v 3.69 5.39 34.09
-v 3.95 5.39 34.11
-v 4.24 5.40 33.73
-v 4.53 5.39 33.99
-v 4.69 5.73 34.10
-v 4.56 6.07 33.96
-v 4.28 6.08 33.70
-v 4.12 5.74 33.59
-v 2.00 9.86 13.69
-v 0.48 10.50 13.49
-v 2.82 8.80 13.37
-v 3.16 8.00 12.53
-v 3.18 7.88 11.58
-v 3.25 8.63 9.91
-v 3.52 6.72 9.87
-v 3.62 7.10 5.87
-v 3.59 7.56 0.92
-v 3.15 7.97 -3.64
-v 2.31 8.62 -5.12
-v 1.61 8.87 -5.63
-v 0.65 8.95 -5.81
-v -0.32 8.88 -5.61
-v -1.05 8.64 -5.08
-v -1.99 8.01 -3.59
-v -2.58 7.61 0.98
-v -2.78 7.15 5.93
-v -2.82 6.77 9.93
-v -2.37 8.67 9.96
-v -2.41 7.93 11.63
-v -2.41 8.05 12.58
-v -2.01 8.84 13.42
-v -1.11 9.89 13.72
-v 2.65 -0.56 6.70
-v -2.55 -0.52 6.75
-v -2.25 3.17 2.89
-v 2.75 3.13 2.84
-v -1.08 9.58 0.57
-v 2.23 9.55 0.54
-v -2.17 3.24 6.44
-v 2.58 3.21 6.40
-v -2.27 0.09 6.82
-v 2.37 0.05 6.77
-v -1.09 9.25 -0.17
-v 2.22 9.22 -0.20
-v -1.96 -0.05 1.55
-v 2.19 -0.09 1.51
-v 3.50 8.34 10.37
-v 2.27 12.35 9.94
-v -1.02 12.37 9.97
-v -2.69 8.38 10.43
-v 3.22 8.34 10.37
-v 2.04 12.02 9.96
-v -0.82 12.04 9.99
-v -2.41 8.39 10.42
-v 1.01 7.38 -18.16
-v 1.12 12.77 -18.66
-v 0.72 7.40 -17.87
-v 0.98 12.78 -18.51
-v 0.43 7.39 -18.16
-v 0.84 12.77 -18.65
-v 0.72 7.38 -18.45
-v 0.98 12.77 -18.80
-v 15.64 4.97 -32.81
-# 1073 vertices
-
-vn 0.05 1.00 0.07
-vn -0.95 0.32 0.03
-vn -0.95 0.31 0.03
-vn -0.96 0.27 0.04
-vn -0.96 0.28 0.01
-vn -0.96 0.29 0.01
-vn -0.96 0.27 -0.04
-vn -0.96 0.27 -0.05
-vn -0.95 0.28 -0.12
-vn -0.96 0.26 -0.14
-vn -0.88 0.37 -0.28
-vn -0.88 0.40 -0.26
-vn -0.66 0.56 -0.49
-vn -0.59 0.64 -0.49
-vn -0.29 0.75 -0.59
-vn -0.31 0.76 -0.57
-vn 0.00 0.78 -0.62
-vn 0.00 0.79 -0.62
-vn 0.30 0.74 -0.60
-vn 0.32 0.75 -0.58
-vn 0.60 0.62 -0.50
-vn 0.69 0.52 -0.50
-vn 0.91 0.34 -0.25
-vn 0.91 0.30 -0.27
-vn 0.98 0.19 -0.09
-vn 0.98 0.18 -0.10
-vn 0.98 0.19 -0.01
-vn 0.98 0.18 -0.02
-vn 0.98 0.19 0.03
-vn 0.98 0.21 0.04
-vn 0.98 0.18 0.06
-vn 0.97 0.22 0.06
-vn 0.97 0.24 0.05
-vn -0.97 -0.22 -0.05
-vn -0.98 -0.20 -0.05
-vn -0.98 -0.17 -0.06
-vn -0.98 -0.16 -0.06
-vn -0.98 -0.18 -0.03
-vn -0.98 -0.19 -0.04
-vn -0.99 -0.17 0.01
-vn -0.99 -0.17 0.02
-vn -0.98 -0.18 0.08
-vn -0.98 -0.16 0.10
-vn -0.92 -0.28 0.27
-vn -0.92 -0.31 0.24
-vn -0.69 -0.51 0.51
-vn -0.62 -0.60 0.51
-vn -0.30 -0.73 0.62
-vn -0.33 -0.73 0.60
-vn -0.00 -0.77 0.64
-vn -0.00 -0.78 0.63
-vn 0.29 -0.74 0.61
-vn 0.32 -0.74 0.59
-vn 0.60 -0.62 0.50
-vn 0.67 -0.55 0.50
-vn 0.89 -0.38 0.25
-vn 0.89 -0.35 0.28
-vn 0.96 -0.26 0.11
-vn 0.96 -0.25 0.13
-vn 0.97 -0.26 0.04
-vn 0.97 -0.25 0.04
-vn 0.96 -0.26 -0.01
-vn 0.96 -0.28 -0.01
-vn 0.97 -0.25 -0.03
-vn 0.96 -0.29 -0.03
-vn 0.95 -0.30 -0.02
-vn 0.01 0.11 0.99
-vn 0.03 0.08 1.00
-vn 0.01 0.10 0.99
-vn -0.01 0.08 1.00
-vn -0.96 -0.28 -0.06
-vn -0.62 -0.79 -0.00
-vn -0.59 -0.81 -0.00
-vn 0.59 -0.81 0.01
-vn 0.54 -0.84 0.01
-vn 0.93 -0.36 -0.03
-vn 0.93 -0.36 -0.04
-vn -0.01 -0.10 -0.99
-vn 0.01 -0.08 -1.00
-vn -0.03 -0.08 -1.00
-vn 0.01 1.00 0.09
-vn -0.07 0.99 0.07
-vn -0.01 1.00 0.08
-vn -0.01 1.00 0.09
-vn 0.10 0.99 0.09
-vn 0.25 0.97 0.08
-vn -0.11 0.99 0.08
-vn 0.08 0.99 0.08
-vn -0.03 1.00 0.07
-vn -0.75 0.66 0.05
-vn 0.13 0.99 0.09
-vn 0.20 0.98 0.09
-vn -0.03 1.00 0.08
-vn -0.03 1.00 0.09
-vn 0.05 1.00 0.08
-vn 0.03 1.00 0.05
-vn 0.05 1.00 -0.03
-vn 0.08 0.99 -0.08
-vn 0.06 1.00 0.01
-vn 0.08 1.00 0.03
-vn 0.06 1.00 0.05
-vn -0.01 1.00 0.05
-vn -0.05 1.00 0.04
-vn -0.07 1.00 0.03
-vn -0.04 1.00 0.01
-vn -0.07 0.99 -0.09
-vn -0.04 1.00 -0.03
-vn -0.05 -0.95 -0.32
-vn -0.21 -0.95 -0.25
-vn -0.32 -0.93 -0.19
-vn -0.19 -0.98 -0.10
-vn -0.26 -0.93 0.26
-vn -0.13 -0.99 0.03
-vn 0.11 -0.99 0.04
-vn 0.21 -0.95 -0.25
-vn 0.31 -0.94 -0.16
-vn 0.18 -0.98 -0.08
-vn 0.25 -0.93 0.28
-vn 0.03 -0.95 -0.32
-vn 0.08 -0.99 -0.08
-vn -0.50 -0.86 -0.08
-vn -0.04 -1.00 -0.09
-vn -0.09 -0.99 -0.09
-vn -0.18 -0.98 -0.09
-vn -0.01 -1.00 -0.09
-vn -0.04 -0.99 -0.09
-vn 0.02 -1.00 -0.08
-vn -0.03 -1.00 -0.09
-vn 0.47 -0.88 -0.06
-vn -0.09 -0.99 -0.08
-vn -0.14 -0.99 -0.08
-vn -0.00 -1.00 -0.09
-vn 0.02 -1.00 -0.09
-vn 0.07 -0.99 -0.08
-vn 0.96 0.27 0.06
-vn 0.60 0.80 0.00
-vn 0.62 0.78 0.00
-vn -0.55 0.84 -0.01
-vn -0.59 0.81 -0.01
-vn -0.94 0.35 0.03
-vn -0.94 0.35 0.04
-vn 0.41 0.82 -0.40
-vn -0.95 -0.30 -0.05
-vn -1.00 0.04 -0.08
-vn -0.99 -0.05 -0.12
-vn -0.96 -0.21 0.16
-vn -0.94 -0.19 0.29
-vn -0.89 0.08 0.45
-vn -0.78 -0.00 0.62
-vn -0.65 0.14 0.75
-vn -0.63 0.51 0.59
-vn 0.02 0.13 0.99
-vn -0.01 0.11 0.99
-vn 0.65 0.46 0.61
-vn 0.66 0.08 0.75
-vn 0.89 -0.00 0.46
-vn 0.78 -0.07 0.62
-vn 0.91 -0.27 0.30
-vn 0.94 -0.30 0.18
-vn 1.00 -0.03 -0.06
-vn 0.92 -0.40 -0.02
-vn 0.99 -0.14 -0.10
-vn 0.86 -0.51 -0.10
-vn 0.95 -0.32 0.04
-vn 0.89 -0.45 -0.02
-vn 0.52 -0.85 -0.13
-vn 0.98 -0.12 0.13
-vn 0.84 0.44 0.32
-vn 0.51 0.86 0.05
-vn 0.96 0.25 0.09
-vn 0.91 0.41 0.06
-vn 0.88 -0.46 0.08
-vn 0.82 -0.55 0.13
-vn 0.38 -0.92 0.10
-vn 0.32 -0.94 0.14
-vn -0.01 -0.99 0.11
-vn 0.90 -0.43 0.03
-vn 0.56 -0.82 -0.06
-vn 0.52 -0.86 0.02
-vn -0.65 -0.76 -0.09
-vn -0.94 -0.35 -0.03
-vn -0.56 -0.82 -0.13
-vn -0.93 -0.36 0.00
-vn -0.55 -0.84 0.00
-vn -0.92 -0.40 0.06
-vn -0.41 -0.91 0.09
-vn -0.86 -0.50 0.12
-vn -0.35 -0.93 0.14
-vn -0.01 -1.00 0.08
-vn 0.13 -0.99 0.03
-vn 0.15 -0.99 -0.08
-vn 0.13 -0.98 -0.17
-vn 0.47 -0.84 -0.26
-vn -0.94 0.33 0.07
-vn -0.99 -0.03 0.11
-vn -0.81 0.51 0.29
-vn -0.99 -0.10 -0.13
-vn -0.92 -0.35 -0.19
-vn -0.89 -0.45 -0.10
-vn -0.48 0.87 0.03
-vn -0.89 0.46 0.04
-vn 0.66 0.74 -0.13
-vn 0.01 0.98 -0.20
-vn 0.46 0.85 -0.26
-vn 0.01 0.99 -0.13
-vn -0.62 0.77 -0.14
-vn -0.62 0.77 -0.12
-vn -0.91 0.41 -0.10
-vn -0.90 0.42 -0.10
-vn -0.98 0.17 -0.09
-vn -0.98 0.19 -0.08
-vn -1.00 -0.00 -0.09
-vn -1.00 0.03 -0.09
-vn -0.94 -0.31 -0.14
-vn -0.56 -0.78 -0.29
-vn -0.50 -0.82 -0.28
-vn 0.01 0.99 -0.10
-vn -0.60 0.79 -0.11
-vn 0.89 -0.42 -0.16
-vn 0.52 -0.81 -0.27
-vn -0.01 -0.93 -0.36
-vn -0.01 -1.00 0.00
-vn -0.58 -0.81 -0.14
-vn -0.97 -0.19 -0.14
-vn -0.99 0.05 -0.10
-vn -0.98 0.16 -0.09
-vn -0.91 0.40 -0.09
-vn -0.63 0.77 -0.09
-vn -1.00 -0.02 -0.08
-vn -0.87 -0.47 -0.16
-vn -0.02 -0.99 -0.17
-vn 0.54 -0.83 -0.11
-vn 0.91 -0.39 -0.12
-vn 0.98 -0.19 -0.11
-vn 1.00 -0.06 -0.06
-vn 1.00 -0.02 -0.06
-vn 0.99 0.13 -0.06
-vn 1.00 0.08 -0.05
-vn 0.91 0.39 -0.13
-vn 0.96 0.25 -0.14
-vn -0.99 0.07 -0.07
-vn -1.00 -0.03 -0.07
-vn -0.99 0.11 -0.06
-vn -0.77 -0.62 -0.11
-vn -0.01 -0.99 -0.17
-vn 0.83 -0.54 -0.13
-vn 0.95 -0.28 -0.11
-vn 0.99 -0.09 -0.07
-vn 0.99 0.10 -0.06
-vn 0.94 0.34 -0.08
-vn 0.66 0.74 -0.11
-vn 0.99 0.08 -0.07
-vn 1.00 -0.04 -0.08
-vn -0.81 -0.58 -0.11
-vn -0.01 -0.99 -0.11
-vn 0.74 -0.67 -0.08
-vn 0.99 -0.11 -0.05
-vn 1.00 0.07 -0.07
-vn 0.93 0.35 -0.09
-vn 0.63 0.77 -0.10
-vn 0.94 0.32 -0.07
-vn 1.00 0.02 -0.03
-vn 0.99 -0.12 -0.04
-vn 0.78 -0.63 -0.08
-vn -0.01 -0.99 -0.10
-vn -0.81 -0.57 -0.12
-vn -1.00 0.01 -0.08
-vn -1.00 0.02 -0.09
-vn -0.99 0.07 -0.08
-vn -1.00 -0.02 -0.07
-vn -0.75 -0.65 -0.12
-vn -0.99 -0.05 -0.11
-vn -0.72 -0.67 -0.16
-vn -0.99 -0.06 -0.13
-vn -0.99 0.05 -0.13
-vn -0.98 0.14 -0.14
-vn -0.99 -0.03 -0.13
-vn -0.99 0.03 -0.10
-vn -0.99 -0.09 -0.09
-vn -1.00 0.02 -0.07
-vn -0.99 0.15 0.00
-vn -0.93 0.36 -0.04
-vn -0.84 0.53 0.04
-vn -0.98 -0.05 -0.18
-vn -0.91 0.39 -0.13
-vn -0.97 0.20 -0.11
-vn -0.71 0.70 -0.06
-vn -0.80 0.60 -0.04
-vn -0.49 0.87 0.01
-vn -0.72 0.69 0.04
-vn -0.70 0.71 -0.03
-vn -0.98 0.16 -0.12
-vn -0.97 0.22 -0.07
-vn -1.00 0.07 -0.05
-vn -0.99 0.05 -0.11
-vn -0.99 0.10 0.02
-vn -0.95 0.32 0.00
-vn -0.94 0.32 0.07
-vn -0.00 1.00 -0.06
-vn 0.67 0.73 -0.07
-vn 0.75 0.65 0.06
-vn 0.84 0.55 -0.03
-vn 0.88 0.48 0.07
-vn 1.00 0.06 0.03
-vn 1.00 -0.07 -0.05
-vn 1.00 -0.03 -0.05
-vn 0.99 -0.11 -0.04
-vn 1.00 -0.07 -0.06
-vn 0.99 -0.08 -0.07
-vn 0.80 -0.59 -0.09
-vn 0.71 -0.70 -0.10
-vn -0.01 -0.99 -0.12
-vn 1.00 -0.06 -0.07
-vn 0.98 -0.18 -0.06
-vn 0.99 -0.13 -0.09
-vn 0.94 0.33 -0.11
-vn 0.96 0.13 0.26
-vn 0.96 0.11 0.26
-vn 0.99 0.13 0.01
-vn 1.00 -0.03 0.02
-vn 1.00 -0.03 -0.01
-vn 1.00 0.01 0.06
-vn 1.00 -0.02 -0.02
-vn 0.97 0.25 0.04
-vn 0.99 0.14 -0.03
-vn 0.83 0.55 -0.02
-vn 0.98 0.16 -0.09
-vn 0.75 0.66 -0.04
-vn 0.99 -0.11 -0.11
-vn 0.99 -0.05 -0.09
-vn 0.99 -0.14 -0.08
-vn 0.52 0.85 0.02
-vn 0.96 0.26 0.10
-vn 0.02 0.97 0.22
-vn 0.99 0.08 0.14
-vn 0.03 0.82 0.57
-vn 0.01 0.55 0.84
-vn -0.95 0.20 0.23
-vn -0.95 0.22 0.24
-vn -0.98 0.19 -0.06
-vn -1.00 0.07 -0.02
-vn -0.63 0.76 -0.13
-vn -0.98 0.18 0.11
-vn -0.98 0.17 -0.08
-vn -0.83 0.53 0.15
-vn 0.01 0.57 0.82
-vn -0.86 0.50 -0.08
-vn 1.00 -0.03 -0.02
-vn 1.00 0.03 -0.03
-vn 0.90 0.44 -0.05
-vn 0.87 0.46 0.16
-vn -0.06 0.74 0.67
-vn -0.06 1.00 0.01
-vn 0.04 0.99 -0.10
-vn -1.00 0.05 -0.02
-vn 0.98 -0.15 -0.10
-vn 0.70 -0.71 -0.13
-vn 0.99 -0.05 -0.13
-vn 0.99 0.08 -0.11
-vn 0.99 0.08 -0.08
-vn 1.00 0.06 -0.02
-vn 1.00 0.03 -0.00
-vn 1.00 0.02 0.01
-vn 1.00 0.01 0.02
-vn 1.00 0.08 0.06
-vn 1.00 0.01 0.03
-vn 0.99 0.11 0.03
-vn 1.00 0.07 0.02
-vn 1.00 0.09 -0.00
-vn 1.00 -0.00 0.01
-vn 1.00 0.03 0.03
-vn 1.00 -0.03 0.03
-vn 1.00 -0.03 0.07
-vn 0.99 -0.14 0.07
-vn 0.89 -0.42 0.16
-vn 0.88 -0.44 0.17
-vn 0.49 -0.84 0.25
-vn 0.98 0.17 -0.05
-vn 0.99 0.14 -0.00
-vn 1.00 0.08 -0.01
-vn 1.00 0.03 -0.04
-vn 0.97 0.21 -0.13
-vn 0.98 0.19 -0.04
-vn 0.95 0.30 -0.03
-vn 0.96 0.27 -0.05
-vn 0.99 0.15 0.03
-vn 0.99 0.17 0.02
-vn 0.50 -0.83 0.25
-vn -0.01 -0.97 0.24
-vn -0.01 -0.97 0.26
-vn -0.53 -0.81 0.25
-vn -0.52 -0.82 0.24
-vn -0.92 -0.37 0.15
-vn -0.93 -0.35 0.14
-vn -1.00 -0.05 0.05
-vn -1.00 0.07 0.05
-vn -1.00 0.06 0.01
-vn -0.99 0.13 0.00
-vn -1.00 0.09 -0.02
-vn -0.99 0.11 -0.02
-vn -0.98 0.18 -0.03
-vn -0.99 0.16 -0.01
-vn -0.98 0.20 0.00
-vn -0.99 0.10 0.00
-vn -0.98 0.17 0.03
-vn -0.51 -0.84 0.20
-vn -0.01 -0.99 0.17
-vn -0.98 -0.10 0.14
-vn -0.73 -0.67 0.14
-vn -0.27 -0.95 0.15
-vn -0.01 -0.99 0.16
-vn 0.47 -0.86 0.20
-vn 0.69 -0.71 0.15
-vn 0.97 -0.18 0.16
-vn 0.25 -0.96 0.16
-vn -0.99 0.10 -0.01
-vn -0.99 0.12 -0.01
-vn -0.99 0.12 -0.03
-vn -0.99 0.15 -0.05
-vn -0.98 0.17 -0.07
-vn -0.93 0.33 -0.16
-vn -0.88 0.46 -0.15
-vn -0.66 0.56 -0.50
-vn -0.43 0.86 -0.26
-vn -0.97 0.22 -0.08
-vn -0.99 0.12 -0.06
-vn -0.98 0.17 -0.03
-vn -0.97 0.22 -0.02
-vn -0.96 0.25 -0.07
-vn -0.95 0.29 -0.15
-vn -0.96 0.28 -0.06
-vn -0.92 0.38 -0.05
-vn -0.94 0.35 -0.08
-vn -0.97 0.24 0.00
-vn -0.97 0.25 -0.00
-vn 0.98 0.16 0.10
-vn 0.98 0.19 0.05
-vn 0.97 0.25 -0.00
-vn 0.96 0.28 -0.03
-vn 1.00 0.06 -0.01
-vn 1.00 -0.02 0.01
-vn 0.99 -0.09 0.04
-vn 0.98 -0.20 0.08
-vn 0.78 -0.59 0.20
-vn 0.94 -0.29 0.20
-vn 0.79 -0.54 0.29
-vn 0.91 -0.25 0.32
-vn 0.98 -0.09 0.19
-vn 0.61 -0.75 0.26
-vn 0.91 -0.31 0.29
-vn 0.96 -0.12 0.25
-vn 0.97 0.19 0.14
-vn 0.96 0.21 0.20
-vn 0.85 0.50 0.16
-vn 0.78 0.58 0.22
-vn 0.63 0.76 0.15
-vn 0.56 0.80 0.21
-vn 0.30 0.94 0.13
-vn 0.30 0.94 0.15
-vn 0.01 0.99 0.12
-vn 0.01 0.99 0.11
-vn -0.28 0.95 0.14
-vn -0.28 0.95 0.12
-vn -0.52 0.83 0.19
-vn -0.60 0.79 0.13
-vn -0.75 0.63 0.20
-vn -0.83 0.54 0.13
-vn -0.28 0.96 0.08
-vn -0.27 0.96 0.04
-vn 0.01 1.00 0.05
-vn 0.01 1.00 0.07
-vn 0.31 0.95 0.09
-vn 0.61 0.79 0.09
-vn 0.87 0.48 0.09
-vn 0.98 0.16 0.06
-vn 0.87 0.48 0.05
-vn 0.55 0.83 0.07
-vn 0.61 0.79 0.03
-vn 0.29 0.96 0.05
-vn 0.28 0.96 0.03
-vn 0.33 0.95 -0.01
-vn 0.01 1.00 0.02
-vn 0.01 1.00 -0.01
-vn 0.01 1.00 -0.02
-vn -0.46 0.89 -0.04
-vn -0.99 0.14 -0.02
-vn -0.98 0.17 -0.01
-vn -0.90 0.44 -0.02
-vn -0.91 0.41 -0.08
-vn -0.69 0.72 -0.09
-vn -0.77 0.63 -0.10
-vn -0.84 0.54 0.01
-vn -0.58 0.82 0.03
-vn 0.49 0.87 -0.03
-vn 0.39 0.92 -0.04
-vn 0.67 0.75 -0.01
-vn 0.92 0.39 0.02
-vn 0.99 0.11 0.02
-vn -0.99 0.15 -0.04
-vn -0.93 0.36 -0.06
-vn -0.94 0.34 -0.02
-vn -1.00 0.00 0.01
-vn -0.96 0.27 0.02
-vn -0.97 0.24 0.08
-vn -0.95 0.28 0.14
-vn -0.95 0.29 0.09
-vn -0.98 -0.02 0.21
-vn -0.98 0.04 0.17
-vn -0.93 -0.23 0.27
-vn -0.94 -0.17 0.31
-vn -0.96 -0.21 0.18
-vn -0.83 -0.48 0.28
-vn -0.82 -0.54 0.19
-vn -0.64 -0.72 0.26
-vn -0.99 -0.11 0.06
-vn -1.00 0.08 -0.01
-vn -1.00 0.04 0.03
-vn -0.98 0.20 -0.01
-vn -0.89 0.46 -0.00
-vn -0.63 0.78 -0.03
-vn -0.36 0.93 -0.05
-vn -0.30 0.95 -0.02
-vn -0.26 0.97 0.03
-vn -0.84 0.54 0.03
-vn -0.58 0.82 0.02
-vn -0.52 0.85 0.05
-vn -0.84 0.54 0.07
-vn -0.97 0.25 0.04
-vn -0.57 0.82 0.07
-vn 1.00 -0.06 0.05
-vn 1.00 0.08 0.01
-vn 1.00 0.05 0.01
-vn 0.93 0.37 0.01
-vn 0.94 0.34 -0.06
-vn 0.73 0.68 -0.07
-vn 0.81 0.58 -0.08
-vn 0.88 0.47 0.03
-vn 0.62 0.78 0.04
-vn -0.02 0.99 0.14
-vn -0.01 0.99 0.11
-vn -0.01 1.00 -0.08
-vn -0.02 1.00 -0.08
-vn -0.02 0.99 -0.12
-vn -0.09 0.99 -0.12
-vn -0.15 0.99 0.00
-vn -0.18 0.98 -0.10
-vn -0.14 0.98 0.16
-vn -0.04 0.99 0.16
-vn -0.05 0.93 0.35
-vn -0.03 0.94 0.33
-vn -0.02 0.96 0.28
-vn -0.02 0.98 0.18
-vn 0.02 1.00 0.05
-vn -0.03 0.99 0.15
-vn -0.01 1.00 -0.02
-vn -0.08 0.99 -0.09
-vn -0.03 0.99 -0.10
-vn 0.00 1.00 -0.09
-vn -0.01 0.99 -0.12
-vn 0.01 0.99 -0.14
-vn -0.43 0.85 -0.29
-vn -0.14 0.94 -0.32
-vn 0.37 0.86 0.35
-vn 0.25 0.81 0.54
-vn 0.72 0.00 0.70
-vn 0.39 0.00 0.92
-vn 0.37 -0.86 0.35
-vn 0.24 -0.81 0.53
-vn -0.43 -0.84 -0.34
-vn -0.15 -0.93 -0.34
-vn -0.83 0.06 -0.55
-vn -0.44 -0.00 -0.90
-vn 0.13 -0.05 -0.99
-vn 0.04 0.86 -0.51
-vn 0.01 0.85 0.52
-vn 0.02 0.02 1.00
-vn -0.00 -0.86 0.51
-vn 0.04 -0.86 -0.51
-vn 0.03 1.00 -0.08
-vn 0.03 0.99 -0.11
-vn 0.02 1.00 -0.08
-vn 0.02 0.99 -0.11
-vn 0.01 1.00 -0.09
-vn 0.00 0.99 -0.13
-vn -0.00 1.00 0.05
-vn 0.09 0.99 -0.08
-vn 0.02 1.00 -0.02
-vn 0.04 0.99 0.15
-vn 0.04 0.98 0.18
-vn 0.02 0.99 0.11
-vn 0.04 0.96 0.28
-vn 0.04 0.99 0.14
-vn 0.05 0.94 0.33
-vn 0.06 0.98 0.16
-vn 0.08 0.93 0.36
-vn 0.16 0.97 0.17
-vn 0.17 0.99 0.01
-vn -0.01 0.99 -0.14
-vn 0.22 0.97 -0.09
-vn 0.12 0.99 -0.11
-vn 0.08 0.98 -0.15
-vn 0.04 0.98 -0.18
-vn 0.96 0.28 -0.02
-vn 1.00 -0.02 -0.04
-vn 1.00 -0.08 -0.05
-vn 0.78 -0.62 -0.10
-vn -0.84 -0.54 -0.12
-vn -0.99 0.01 -0.10
-vn 0.00 -0.86 0.51
-vn -0.00 0.04 1.00
-vn -0.26 -0.80 0.54
-vn 0.13 -0.94 -0.32
-vn 0.40 -0.86 -0.32
-vn 0.84 -0.02 -0.54
-vn 0.43 -0.04 -0.90
-vn 0.47 0.83 -0.30
-vn 0.15 0.93 -0.33
-vn -0.34 0.87 0.34
-vn -0.21 0.82 0.53
-vn -0.72 0.04 0.69
-vn -0.38 0.03 0.92
-vn -0.39 -0.85 0.35
-vn 0.01 0.87 0.50
-vn -0.04 0.86 -0.51
-vn -0.15 -0.02 -0.99
-vn -0.06 -0.85 -0.53
-vn -0.14 0.97 -0.18
-vn -0.17 0.97 -0.18
-vn -0.39 0.91 -0.13
-vn -0.41 0.90 -0.12
-vn -0.46 0.88 -0.07
-vn -0.47 0.88 -0.06
-vn -0.44 0.90 -0.04
-vn -0.44 0.90 0.01
-vn -0.41 0.91 0.05
-vn -0.58 0.81 0.10
-vn -0.59 0.80 0.11
-vn -0.63 0.72 0.30
-vn -0.67 0.62 0.41
-vn -0.71 0.49 0.51
-vn -0.71 0.49 0.50
-vn 0.07 0.99 -0.11
-vn 0.12 0.99 -0.10
-vn 0.08 0.99 -0.10
-vn 0.12 0.99 -0.08
-vn 0.11 0.99 -0.10
-vn 0.11 0.99 -0.04
-vn 0.10 0.99 -0.04
-vn 0.07 1.00 0.01
-vn 0.07 1.00 0.02
-vn 0.11 0.98 0.18
-vn 0.15 0.96 0.22
-vn 0.25 0.87 0.42
-vn 0.34 0.83 0.44
-vn 0.29 0.76 0.58
-vn 0.21 0.82 0.53
-vn 0.19 0.92 0.36
-vn 0.53 -0.83 0.18
-vn 0.31 -0.94 0.15
-vn 0.24 -0.96 0.13
-vn -0.00 -1.00 0.08
-vn -0.33 -0.93 0.14
-vn -0.27 -0.95 0.14
-vn -0.56 -0.81 0.18
-vn -0.97 0.22 0.05
-vn -0.91 0.42 0.01
-vn -0.01 -0.11 -0.99
-vn 0.99 0.13 0.07
-vn 0.94 0.34 0.03
-vn 0.73 0.43 0.53
-vn 0.70 0.56 0.44
-vn 0.65 0.69 0.32
-vn 0.58 0.80 0.14
-vn 0.57 0.81 0.13
-vn 0.46 0.89 0.02
-vn 0.44 0.90 0.05
-vn 0.46 0.89 -0.03
-vn 0.47 0.88 -0.03
-vn 0.50 0.87 -0.06
-vn 0.49 0.87 -0.06
-vn 0.44 0.89 -0.11
-vn 0.41 0.90 -0.12
-vn 0.19 0.97 -0.17
-vn 0.16 0.97 -0.18
-vn -0.67 0.00 -0.74
-vn 0.67 -0.06 -0.74
-vn -0.05 -0.99 -0.10
-vn -0.06 -0.99 -0.11
-vn -0.04 -0.99 -0.10
-vn -0.03 -0.99 -0.12
-vn -0.02 -0.99 -0.11
-vn -0.02 -0.99 -0.13
-vn -0.03 -0.99 -0.10
-vn -0.02 -0.99 -0.10
-vn -0.03 -1.00 -0.07
-vn -0.05 -1.00 -0.01
-vn -0.03 -1.00 0.02
-vn -0.04 -1.00 0.07
-vn -0.08 -1.00 -0.02
-vn -0.05 -1.00 0.07
-vn -0.08 -1.00 -0.03
-vn -0.09 -0.99 0.06
-vn 0.02 -1.00 -0.04
-vn -0.12 -0.99 0.01
-vn -0.01 -1.00 0.02
-vn -0.06 -0.99 -0.12
-vn -0.07 -0.99 -0.11
-vn -0.05 -0.99 -0.11
-vn -0.08 -0.99 -0.10
-vn -0.01 -1.00 -0.05
-vn -0.03 -1.00 -0.05
-vn 0.11 -0.99 0.02
-vn 0.07 -1.00 0.06
-vn 0.19 -0.97 0.14
-vn 0.10 -0.97 0.22
-vn 0.53 -0.80 0.29
-vn -0.01 -1.00 -0.03
-vn -0.11 -0.99 -0.10
-vn -0.08 -0.99 -0.07
-vn 0.07 -1.00 -0.07
-vn 0.01 -1.00 -0.09
-vn -0.18 -0.98 0.08
-vn -0.88 -0.16 0.45
-vn -0.86 -0.25 0.44
-vn -0.24 -0.94 0.22
-vn -0.01 -0.97 0.23
-vn 0.23 -0.95 0.22
-vn 0.16 -0.98 0.08
-vn 0.83 -0.32 0.45
-vn 0.86 -0.24 0.45
-vn 0.03 -1.00 -0.09
-vn 0.03 -0.99 -0.10
-vn 0.04 -0.99 -0.11
-vn 0.02 -0.99 -0.12
-vn 0.03 -0.99 -0.11
-vn 0.02 -0.99 -0.11
-vn 0.05 -0.99 -0.11
-vn 0.04 -0.99 -0.10
-vn 0.06 -1.00 -0.02
-vn 0.07 -1.00 -0.00
-vn 0.04 -1.00 0.07
-vn 0.09 -0.97 0.23
-vn 0.07 -1.00 -0.03
-vn 0.06 -0.99 -0.10
-vn 0.09 -0.99 -0.10
-vn -0.01 -1.00 -0.02
-vn 0.13 -0.99 0.00
-vn 0.61 -0.78 0.12
-vn 0.66 -0.70 0.29
-vn 0.23 -0.89 0.39
-vn 0.14 -0.91 0.40
-vn 0.14 -0.91 0.39
-vn -0.07 -0.98 0.20
-vn -0.10 -0.97 0.23
-vn -0.11 -0.97 0.22
-vn -0.21 -0.97 0.13
-vn -0.14 -0.99 0.00
-vn -0.01 -1.00 0.05
-vn 0.25 -0.97 0.02
-vn -0.56 -0.78 0.28
-vn -0.11 -0.93 0.35
-vn -0.14 -0.91 0.39
-vn -0.14 -0.90 0.40
-vn -0.25 -0.89 0.39
-vn -0.69 -0.67 0.28
-vn -0.66 -0.75 0.11
-vn -0.27 -0.96 0.01
-vn -0.08 -0.99 -0.09
-vn -0.18 -0.98 0.03
-vn -0.01 -1.00 -0.07
-vn -0.01 -1.00 -0.01
-vn 0.16 -0.99 0.03
-vn 0.06 -0.99 -0.09
-vn -0.11 -0.99 -0.09
-vn -0.46 -0.88 0.13
-vn -0.19 -0.98 0.07
-vn -0.46 -0.87 0.18
-vn 0.44 -0.88 0.19
-vn 0.18 -0.98 0.08
-vn 0.43 -0.89 0.14
-vn 0.09 -0.99 -0.09
-vn -0.09 0.99 -0.04
-vn -0.04 1.00 -0.04
-vn 0.00 1.00 -0.05
-vn -0.00 1.00 0.01
-vn -0.03 0.98 0.17
-vn -0.06 0.97 0.23
-vn -0.21 0.89 0.42
-vn -0.20 0.84 0.51
-vn -0.27 0.78 0.57
-vn -0.32 0.86 0.40
-vn -0.09 0.97 0.21
-vn -0.10 0.91 0.41
-vn -0.15 0.87 0.46
-vn -0.00 1.00 -0.08
-vn -0.04 0.99 -0.09
-vn -0.10 0.99 -0.08
-vn -0.05 0.99 -0.10
-vn -0.10 0.99 -0.10
-vn -0.04 1.00 -0.09
-vn -0.05 0.99 -0.11
-vn 0.01 0.99 -0.11
-vn 0.97 0.08 0.25
-vn -0.51 0.85 0.14
-vn -0.32 0.94 0.12
-vn -0.26 0.96 0.14
-vn 0.06 0.97 0.23
-vn 0.32 0.93 0.16
-vn 0.26 0.96 0.12
-vn 0.54 0.83 0.16
-vn -0.96 0.17 0.22
-vn 0.01 -0.93 0.36
-vn 0.00 -0.98 0.17
-vn 0.00 -0.98 0.18
-vn -0.02 -0.98 -0.21
-vn -0.02 -0.98 -0.20
-vn -0.02 -0.92 -0.39
-vn -0.01 0.93 -0.36
-vn -0.00 0.98 -0.17
-vn -0.00 0.98 -0.18
-vn 0.02 0.98 0.21
-vn 0.02 0.98 0.20
-vn 0.02 0.92 0.39
-vn 0.04 0.04 1.00
-vn -1.00 0.05 0.02
-vn -0.04 -0.04 -1.00
-vn -0.08 0.86 0.51
-vn 0.01 0.86 0.52
-vn -1.00 0.08 -0.05
-vn -0.99 -0.02 -0.11
-vn -0.99 -0.02 -0.12
-vn -0.01 -0.85 -0.52
-vn 0.08 -0.85 -0.52
-vn 0.09 -0.85 -0.52
-vn 0.99 -0.09 0.07
-vn 0.99 0.01 0.12
-vn 0.99 0.02 0.12
-vn 0.11 0.85 0.51
-vn 0.02 0.85 0.52
-vn 0.99 -0.11 -0.09
-vn -0.11 -0.85 -0.52
-vn -0.02 -0.85 -0.52
-vn -0.99 0.11 0.10
-vn -1.00 0.01 0.04
-vn -1.00 0.00 0.04
-vn -0.01 -0.10 -1.00
-vn -0.01 -0.79 -0.61
-vn -0.00 0.46 -0.89
-vn -0.01 -0.44 -0.90
-vn 0.01 0.36 0.93
-vn 0.00 -0.53 0.85
-vn -1.00 0.05 -0.01
-vn 1.00 -0.05 0.01
-vn -0.16 -0.97 -0.18
-vn -0.17 -0.98 -0.08
-vn -0.14 -0.99 0.02
-vn -0.01 -1.00 -0.08
-vn -0.01 -0.98 -0.21
-vn -0.01 -0.96 -0.29
-vn 0.01 0.95 0.30
-vn 0.74 -0.64 0.19
-vn 0.81 -0.47 -0.35
-vn 0.04 -0.94 0.35
-vn 0.03 -0.97 0.25
-vn 0.02 -0.93 0.37
-vn 0.27 -0.96 0.13
-vn 0.19 -0.98 0.08
-vn 0.48 -0.88 0.05
-vn 0.25 -0.97 0.05
-vn -0.00 -1.00 0.05
-vn 0.01 -1.00 0.05
-vn 0.01 -1.00 0.08
-vn 0.01 -1.00 0.04
-vn 0.08 -0.98 0.15
-vn 0.15 -0.99 0.04
-vn 0.10 -0.98 0.16
-vn 0.07 -0.94 0.34
-vn 0.04 -0.94 0.34
-vn 0.07 -0.85 0.53
-vn 0.01 -0.96 0.28
-vn 0.02 -0.95 0.31
-vn 0.04 -0.86 0.50
-vn 0.03 -0.89 0.45
-vn 0.14 0.98 -0.13
-vn -0.22 -0.92 0.32
-vn -0.01 -0.94 0.35
-vn -0.07 -0.92 0.39
-vn -0.00 -0.91 0.42
-vn 0.06 -0.92 0.39
-vn 0.21 -0.93 0.32
-vn 0.42 -0.10 -0.90
-vn 0.13 -0.53 -0.83
-vn -0.14 0.03 -0.99
-vn 0.17 0.25 -0.95
-vn -0.00 0.06 1.00
-vn 0.00 0.07 1.00
-vn 0.02 0.06 1.00
-vn 0.01 0.07 1.00
-vn -0.08 -1.00 0.03
-vn -0.04 -1.00 -0.02
-vn -0.10 -0.99 0.04
-vn -0.17 -0.99 0.04
-vn -0.12 -0.99 0.04
-vn -0.10 -0.98 0.15
-vn -0.03 -1.00 0.08
-vn -0.05 -0.94 0.34
-vn -0.03 -0.95 0.31
-vn -0.04 -0.86 0.50
-vn -0.03 -0.89 0.45
-vn -0.02 -0.96 0.28
-vn -0.03 -0.93 0.37
-vn -0.04 -0.97 0.25
-vn -0.05 -0.94 0.35
-vn -0.29 -0.95 0.12
-vn -0.20 -0.98 0.07
-vn -0.50 -0.86 0.04
-vn -0.29 -0.96 0.04
-vn -0.02 -1.00 0.08
-vn -0.02 -1.00 0.05
-vn -0.02 -1.00 0.04
-vn -0.07 -0.85 0.53
-vn -0.08 -0.94 0.34
-vn -0.11 -0.98 0.16
-vn -0.06 0.99 -0.14
-vn -0.02 0.99 -0.16
-vn -0.39 0.83 -0.40
-vn -0.84 -0.40 -0.38
-vn -0.78 -0.60 0.17
-vn -0.13 0.98 -0.14
-vn 0.01 0.05 1.00
-vn 0.01 0.06 1.00
-vn -0.12 -0.06 -0.99
-vn -0.15 -0.52 -0.84
-vn -0.43 -0.06 -0.90
-vn -0.19 -0.01 -0.98
-vn 0.00 0.12 -0.99
-vn 0.01 0.37 0.93
-vn -0.01 0.12 -0.99
-vn -0.01 0.10 -0.99
-vn -0.01 0.11 -0.99
-vn -0.01 0.09 -1.00
-vn 0.27 0.23 0.93
-vn 0.19 0.41 0.89
-vn 0.34 -0.13 0.93
-vn -0.16 0.43 0.89
-vn -0.25 0.25 0.93
-vn -0.31 -0.16 0.94
-vn -0.33 -0.11 0.94
-vn -0.11 -0.42 0.90
-vn -0.17 -0.38 0.91
-vn 0.12 -0.44 0.89
-vn 0.01 -0.61 0.79
-vn 0.17 -0.39 0.90
-vn 0.32 -0.19 0.93
-vn -0.95 0.22 0.21
-vn -0.01 -0.99 0.12
-vn 0.96 0.13 0.24
-vn -0.59 0.79 0.16
-vn -0.31 0.94 0.15
-vn -0.30 0.94 0.15
-vn 0.35 0.92 0.16
-vn 0.63 0.76 0.18
-vn 0.02 0.69 0.72
-vn 0.22 0.53 0.82
-vn -0.07 0.70 0.71
-vn -0.20 0.55 0.81
-vn -0.32 0.28 0.91
-vn -0.34 0.21 0.92
-vn -0.33 -0.24 0.91
-vn -0.35 -0.12 0.93
-vn -0.14 -0.63 0.77
-vn -0.24 -0.49 0.84
-vn -0.01 -0.48 0.88
-vn 0.16 -0.61 0.78
-vn 0.25 -0.50 0.83
-vn 0.34 -0.27 0.90
-vn 0.36 -0.14 0.92
-vn 0.34 0.25 0.91
-vn 0.35 0.19 0.92
-vn 0.09 0.71 0.70
-vn 0.00 -0.92 -0.39
-vn -0.00 -0.98 -0.21
-vn -0.00 -0.98 -0.20
-vn -0.01 -0.98 0.17
-vn -0.01 -0.98 0.18
-vn -0.02 -0.93 0.36
-vn -0.00 0.92 0.39
-vn 0.00 0.98 0.21
-vn 0.00 0.98 0.20
-vn 0.01 0.98 -0.17
-vn 0.01 0.98 -0.18
-vn 0.02 0.93 -0.36
-vn -0.03 0.04 1.00
-vn 1.00 -0.05 0.05
-vn 0.03 -0.04 -1.00
-vn 0.31 0.87 -0.39
-vn 0.37 0.92 0.09
-vn 0.68 0.61 -0.41
-vn 0.63 0.62 -0.46
-vn 0.55 0.72 -0.42
-vn 0.64 0.67 -0.37
-vn 0.24 0.96 -0.12
-vn 0.26 0.96 -0.12
-vn -0.11 0.92 0.39
-vn -0.23 0.89 0.39
-vn 0.47 0.10 -0.88
-vn 0.54 0.10 -0.84
-vn 0.16 0.98 0.09
-vn 0.08 0.99 0.10
-vn 0.24 0.97 0.08
-vn 0.31 0.95 0.05
-vn 0.23 0.97 0.07
-vn 0.51 0.86 0.06
-vn 0.45 0.88 0.13
-vn 0.34 0.94 -0.05
-vn 0.34 0.94 -0.00
-vn 0.10 0.99 -0.11
-vn 0.10 0.99 -0.09
-vn -0.08 0.99 -0.10
-vn -0.09 0.99 -0.11
-vn -0.34 0.94 -0.05
-vn -0.40 0.91 0.10
-vn -0.50 0.87 0.05
-vn -0.21 0.98 0.05
-vn -0.30 0.95 0.04
-vn -0.14 0.99 0.08
-vn -0.23 0.97 0.08
-vn -0.07 0.99 0.09
-vn -0.14 0.99 0.09
-vn -0.54 0.16 -0.83
-vn -0.47 0.13 -0.87
-vn 0.24 0.89 0.39
-vn 0.14 0.90 0.41
-vn -0.24 0.96 -0.12
-vn -0.23 0.97 -0.12
-vn -0.59 0.72 -0.36
-vn -0.54 0.73 -0.43
-vn -0.62 0.64 -0.46
-vn -0.64 0.66 -0.40
-vn -0.26 0.96 0.09
-vn -0.38 0.83 -0.41
-vn 0.40 0.85 -0.33
-vn 0.55 0.82 -0.18
-vn 0.74 0.63 -0.24
-vn -0.23 0.66 -0.71
-vn 0.90 0.23 -0.37
-vn -0.90 0.43 -0.07
-vn -0.98 0.21 0.05
-vn 0.02 0.10 -0.99
-vn -0.38 -0.03 -0.92
-vn -0.92 0.04 -0.38
-vn -0.99 0.13 0.02
-vn -0.99 0.13 0.01
-vn -0.83 0.17 0.53
-vn 0.10 0.89 0.44
-vn 0.02 0.90 0.44
-vn 0.03 0.90 0.44
-vn -0.00 0.90 0.43
-vn 0.00 0.90 0.43
-vn 0.01 0.90 0.44
-vn -0.07 0.90 0.44
-vn 0.78 0.61 0.15
-vn 1.00 0.04 0.04
-vn 1.00 0.03 0.04
-vn 1.00 0.03 0.01
-vn 0.74 -0.16 -0.65
-vn 0.85 -0.02 -0.52
-vn 0.93 0.33 0.17
-vn 0.95 -0.02 -0.30
-vn 0.93 0.36 -0.05
-vn -0.72 0.64 -0.26
-vn -0.71 0.28 -0.65
-vn -0.70 0.67 -0.25
-vn -0.38 0.91 -0.20
-vn -0.50 0.81 -0.31
-vn 0.01 0.99 0.10
-vn 0.01 1.00 0.10
-vn 0.01 0.34 0.94
-vn 0.01 0.12 0.99
-vn 0.00 0.91 -0.41
-vn -0.99 0.16 -0.06
-vn -0.99 0.14 -0.10
-vn -0.96 0.04 -0.28
-vn -0.96 0.04 -0.29
-vn 0.96 -0.05 -0.27
-vn 1.00 0.05 -0.08
-vn 0.96 -0.05 -0.26
-vn 1.00 0.07 -0.04
-vn -0.01 -0.18 -0.98
-vn 0.83 0.10 0.55
-vn -0.74 0.66 0.13
-vn 0.94 -0.32 -0.07
-vn 0.83 -0.56 0.01
-vn -0.09 -0.40 -0.91
-vn -0.12 0.12 -0.99
-vn -0.07 -0.68 -0.73
-vn -0.07 0.27 -0.96
-vn 0.02 1.00 -0.09
-vn -0.12 0.53 -0.84
-vn -0.10 -0.26 -0.96
-vn -0.12 -0.15 -0.98
-vn 0.05 -0.53 -0.85
-vn 0.03 -0.38 -0.93
-vn 0.03 -0.98 -0.21
-vn 0.09 -0.09 -0.99
-vn 0.07 0.04 -1.00
-vn 0.08 0.14 -0.99
-vn 0.05 0.26 -0.96
-vn -0.99 0.12 -0.09
-vn 0.96 0.29 0.00
-vn 0.58 0.81 0.00
-vn 0.61 0.79 0.00
-vn -0.53 0.85 -0.01
-vn -0.57 0.82 -0.01
-vn -0.92 0.38 -0.02
-vn -0.95 -0.30 -0.00
-vn -0.61 -0.80 -0.00
-vn -0.58 -0.82 -0.00
-vn 0.57 -0.82 0.01
-vn 0.52 -0.85 0.01
-vn 0.92 -0.40 0.02
-vn 0.99 -0.12 -0.07
-vn 1.00 -0.07 -0.01
-vn 1.00 -0.08 -0.01
-vn 0.99 -0.11 0.07
-vn 1.00 -0.07 0.04
-vn 1.00 -0.01 -0.00
-vn 0.98 -0.13 -0.12
-vn 1.00 0.03 -0.08
-vn 0.88 0.04 -0.48
-vn 0.96 0.13 -0.23
-vn -0.96 0.10 -0.27
-vn -0.99 0.04 -0.13
-vn -0.99 0.04 -0.12
-vn -0.91 0.02 -0.42
-vn -0.90 -0.01 -0.43
-vn -0.99 0.02 0.17
-vn -0.98 0.06 0.19
-vn -0.96 0.03 -0.29
-vn -0.91 0.15 -0.37
-vn -0.85 0.17 0.50
-vn -0.94 -0.03 0.33
-vn 0.71 0.05 0.71
-vn -0.02 0.12 0.99
-vn 0.02 0.12 0.99
-vn -0.70 0.12 0.70
-vn -0.71 -0.01 -0.71
-vn -0.02 -0.06 -1.00
-vn 0.02 -0.06 -1.00
-vn 0.71 -0.08 -0.70
-vn 0.01 1.00 -0.03
-vn 0.03 -1.00 -0.02
-vn 0.06 -1.00 0.04
-vn 0.08 -1.00 0.04
-# 1154 vertex normals
-
-vt 0.41 0.82 0.00
-vt 0.39 0.82 0.00
-vt 0.42 0.80 0.00
-vt 0.39 0.80 0.00
-vt 0.37 0.80 0.00
-vt 0.37 0.82 0.00
-vt 0.35 0.82 0.00
-vt 0.35 0.80 0.00
-vt 0.33 0.80 0.00
-vt 0.33 0.81 0.00
-vt 0.31 0.81 0.00
-vt 0.30 0.80 0.00
-vt 0.30 0.81 0.00
-vt 0.29 0.80 0.00
-vt 0.29 0.81 0.00
-vt 0.28 0.80 0.00
-vt 0.34 0.81 0.00
-vt 0.30 0.82 0.00
-vt 0.34 0.82 0.00
-vt 0.39 0.81 0.00
-vt 0.43 0.81 0.00
-vt 0.43 0.82 0.00
-vt 0.98 0.38 0.00
-vt 0.98 0.42 0.00
-vt 0.97 0.44 0.00
-vt 0.50 0.74 0.00
-vt 0.49 0.75 0.00
-vt 0.54 0.75 0.00
-vt 0.47 0.74 0.00
-vt 0.45 0.75 0.00
-vt 0.43 0.74 0.00
-vt 0.43 0.75 0.00
-vt 0.41 0.75 0.00
-vt 0.41 0.74 0.00
-vt 0.40 0.75 0.00
-vt 0.40 0.74 0.00
-vt 0.42 0.75 0.00
-vt 0.46 0.74 0.00
-vt 0.54 0.72 0.00
-vt 0.50 0.73 0.00
-vt 0.50 0.72 0.00
-vt 0.54 0.71 0.00
-vt 0.46 0.73 0.00
-vt 0.43 0.73 0.00
-vt 0.40 0.73 0.00
-vt 0.43 0.72 0.00
-vt 0.40 0.72 0.00
-vt 0.43 0.71 0.00
-vt 0.40 0.71 0.00
-vt 0.43 0.70 0.00
-vt 0.40 0.70 0.00
-vt 0.40 0.69 0.00
-vt 0.46 0.71 0.00
-vt 0.50 0.71 0.00
-vt 0.46 0.70 0.00
-vt 0.45 0.69 0.00
-vt 0.46 0.69 0.00
-vt 0.50 0.70 0.00
-vt 0.54 0.70 0.00
-vt 0.58 0.71 0.00
-vt 0.59 0.75 0.00
-vt 0.58 0.73 0.00
-vt 0.56 0.88 0.00
-vt 0.56 0.91 0.00
-vt 0.54 0.89 0.00
-vt 0.60 0.90 0.00
-vt 0.60 0.88 0.00
-vt 0.59 0.86 0.00
-vt 0.65 0.85 0.00
-vt 0.65 0.83 0.00
-vt 0.59 0.83 0.00
-vt 0.65 0.78 0.00
-vt 0.59 0.78 0.00
-vt 0.65 0.76 0.00
-vt 0.64 0.75 0.00
-vt 0.65 0.90 0.00
-vt 0.65 0.88 0.00
-vt 0.64 0.74 0.00
-vt 0.70 0.75 0.00
-vt 0.70 0.76 0.00
-vt 0.70 0.77 0.00
-vt 0.70 0.79 0.00
-vt 0.70 0.82 0.00
-vt 0.70 0.85 0.00
-vt 0.70 0.87 0.00
-vt 0.75 0.79 0.00
-vt 0.75 0.78 0.00
-vt 0.75 0.75 0.00
-vt 0.58 0.75 0.00
-vt 0.55 0.78 0.00
-vt 0.55 0.84 0.00
-vt 0.50 0.83 0.00
-vt 0.54 0.86 0.00
-vt 0.51 0.87 0.00
-vt 0.53 0.88 0.00
-vt 0.78 0.82 0.00
-vt 0.78 0.80 0.00
-vt 0.75 0.82 0.00
-vt 0.78 0.78 0.00
-vt 0.78 0.76 0.00
-vt 0.69 0.77 0.00
-vt 0.81 0.79 0.00
-vt 0.81 0.77 0.00
-vt 0.86 0.78 0.00
-vt 0.86 0.79 0.00
-vt 0.81 0.80 0.00
-vt 0.86 0.81 0.00
-vt 0.81 0.83 0.00
-vt 0.86 0.83 0.00
-vt 0.92 0.80 0.00
-vt 0.92 0.81 0.00
-vt 0.93 0.80 0.00
-vt 0.93 0.81 0.00
-vt 0.93 0.83 0.00
-vt 0.92 0.83 0.00
-vt 0.88 0.84 0.00
-vt 0.88 0.83 0.00
-vt 0.86 0.84 0.00
-vt 0.81 0.84 0.00
-vt 0.78 0.84 0.00
-vt 0.75 0.85 0.00
-vt 0.78 0.85 0.00
-vt 0.88 0.85 0.00
-vt 0.86 0.85 0.00
-vt 0.89 0.86 0.00
-vt 0.83 0.86 0.00
-vt 0.85 0.86 0.00
-vt 0.81 0.86 0.00
-vt 0.78 0.86 0.00
-vt 0.75 0.86 0.00
-vt 0.93 0.85 0.00
-vt 0.91 0.88 0.00
-vt 0.93 0.87 0.00
-vt 0.91 0.89 0.00
-vt 0.93 0.89 0.00
-vt 0.93 0.97 0.00
-vt 0.89 0.89 0.00
-vt 0.88 0.88 0.00
-vt 0.84 0.88 0.00
-vt 0.71 0.90 0.00
-vt 0.88 0.81 0.00
-vt 0.88 0.80 0.00
-vt 0.88 0.78 0.00
-vt 0.92 0.78 0.00
-vt 0.89 0.99 0.00
-vt 0.89 0.98 0.00
-vt 0.92 0.98 0.00
-vt 0.82 0.90 0.00
-vt 0.86 0.89 0.00
-vt 0.83 0.91 0.00
-vt 0.88 0.98 0.00
-vt 0.93 0.98 0.00
-vt 0.90 0.99 0.00
-vt 0.93 0.99 0.00
-vt 0.90 1.00 0.00
-vt 0.93 1.00 0.00
-vt 0.93 0.79 0.00
-vt 0.46 0.86 0.00
-vt 0.46 0.83 0.00
-vt 0.40 0.86 0.00
-vt 0.40 0.83 0.00
-vt 0.35 0.85 0.00
-vt 0.32 0.85 0.00
-vt 0.29 0.85 0.00
-vt 0.29 0.83 0.00
-vt 0.24 0.83 0.00
-vt 0.23 0.80 0.00
-vt 0.19 0.80 0.00
-vt 0.20 0.77 0.00
-vt 0.16 0.78 0.00
-vt 0.16 0.76 0.00
-vt 0.09 0.78 0.00
-vt 0.09 0.75 0.00
-vt 0.36 0.80 0.00
-vt 0.40 0.79 0.00
-vt 0.46 0.79 0.00
-vt 0.50 0.78 0.00
-vt 0.50 0.76 0.00
-vt 0.45 0.77 0.00
-vt 0.40 0.78 0.00
-vt 0.36 0.79 0.00
-vt 0.33 0.78 0.00
-vt 0.04 0.76 0.00
-vt 0.09 0.74 0.00
-vt 0.04 0.74 0.00
-vt 0.24 0.80 0.00
-vt 0.33 0.85 0.00
-vt 0.36 0.82 0.00
-vt 0.16 0.74 0.00
-vt 0.15 0.73 0.00
-vt 0.19 0.76 0.00
-vt 0.19 0.74 0.00
-vt 0.18 0.73 0.00
-vt 0.18 0.76 0.00
-vt 0.18 0.74 0.00
-vt 0.51 0.83 0.00
-vt 0.54 0.92 0.00
-vt 0.34 0.87 0.00
-vt 0.32 0.86 0.00
-vt 0.31 0.86 0.00
-vt 0.28 0.86 0.00
-vt 0.24 0.85 0.00
-vt 0.19 0.83 0.00
-vt 0.15 0.80 0.00
-vt 0.09 0.80 0.00
-vt 0.04 0.78 0.00
-vt 0.04 0.80 0.00
-vt 0.01 0.78 0.00
-vt 0.01 0.80 0.00
-vt 0.03 0.82 0.00
-vt 0.01 0.77 0.00
-vt 0.00 0.83 0.00
-vt 0.04 0.84 0.00
-vt 0.00 0.84 0.00
-vt 0.03 0.86 0.00
-vt 0.00 0.86 0.00
-vt 0.03 0.88 0.00
-vt 0.00 0.87 0.00
-vt 0.04 0.89 0.00
-vt 0.00 0.89 0.00
-vt 0.04 0.91 0.00
-vt 0.00 0.90 0.00
-vt 0.04 0.88 0.00
-vt 0.09 0.89 0.00
-vt 0.15 0.90 0.00
-vt 0.14 0.91 0.00
-vt 0.09 0.91 0.00
-vt 0.09 0.88 0.00
-vt 0.09 0.87 0.00
-vt 0.09 0.85 0.00
-vt 0.15 0.87 0.00
-vt 0.15 0.89 0.00
-vt 0.19 0.89 0.00
-vt 0.18 0.90 0.00
-vt 0.21 0.90 0.00
-vt 0.18 0.92 0.00
-vt 0.21 0.92 0.00
-vt 0.25 0.92 0.00
-vt 0.28 0.92 0.00
-vt 0.28 0.90 0.00
-vt 0.21 0.85 0.00
-vt 0.18 0.85 0.00
-vt 0.21 0.87 0.00
-vt 0.25 0.87 0.00
-vt 0.25 0.88 0.00
-vt 0.28 0.88 0.00
-vt 0.30 0.87 0.00
-vt 0.30 0.90 0.00
-vt 0.30 0.92 0.00
-vt 0.25 0.90 0.00
-vt 0.21 0.89 0.00
-vt 0.18 0.87 0.00
-vt 0.14 0.85 0.00
-vt 0.29 0.86 0.00
-vt 0.05 0.84 0.00
-vt 0.01 0.83 0.00
-vt 0.15 0.83 0.00
-vt 0.08 0.82 0.00
-vt 0.15 0.85 0.00
-vt 0.14 0.83 0.00
-vt 0.35 0.31 0.00
-vt 0.35 0.37 0.00
-vt 0.33 0.31 0.00
-vt 0.33 0.26 0.00
-vt 0.29 0.27 0.00
-vt 0.29 0.23 0.00
-vt 0.33 0.22 0.00
-vt 0.30 0.21 0.00
-vt 0.34 0.20 0.00
-vt 0.35 0.22 0.00
-vt 0.34 0.26 0.00
-vt 0.35 0.26 0.00
-vt 0.36 0.31 0.00
-vt 0.36 0.36 0.00
-vt 0.37 0.40 0.00
-vt 0.35 0.41 0.00
-vt 0.37 0.42 0.00
-vt 0.34 0.42 0.00
-vt 0.31 0.42 0.00
-vt 0.32 0.41 0.00
-vt 0.32 0.37 0.00
-vt 0.28 0.37 0.00
-vt 0.29 0.32 0.00
-vt 0.28 0.41 0.00
-vt 0.69 0.72 0.00
-vt 0.71 0.73 0.00
-vt 0.70 0.71 0.00
-vt 0.72 0.73 0.00
-vt 0.71 0.70 0.00
-vt 0.73 0.73 0.00
-vt 0.69 0.73 0.00
-vt 0.70 0.73 0.00
-vt 0.70 0.74 0.00
-vt 0.71 0.74 0.00
-vt 0.72 0.74 0.00
-vt 0.73 0.74 0.00
-vt 0.33 0.58 0.00
-vt 0.29 0.57 0.00
-vt 0.33 0.52 0.00
-vt 0.29 0.52 0.00
-vt 0.32 0.47 0.00
-vt 0.28 0.47 0.00
-vt 0.32 0.43 0.00
-vt 0.35 0.43 0.00
-vt 0.37 0.44 0.00
-vt 0.35 0.47 0.00
-vt 0.37 0.48 0.00
-vt 0.35 0.52 0.00
-vt 0.36 0.53 0.00
-vt 0.35 0.58 0.00
-vt 0.36 0.58 0.00
-vt 0.35 0.62 0.00
-vt 0.33 0.62 0.00
-vt 0.28 0.43 0.00
-vt 0.34 0.63 0.00
-vt 0.31 0.63 0.00
-vt 0.29 0.61 0.00
-vt 0.26 0.63 0.00
-vt 0.26 0.62 0.00
-vt 0.38 0.14 0.00
-vt 0.39 0.16 0.00
-vt 0.38 0.22 0.00
-vt 0.39 0.22 0.00
-vt 0.37 0.27 0.00
-vt 0.39 0.27 0.00
-vt 0.38 0.31 0.00
-vt 0.39 0.31 0.00
-vt 0.38 0.37 0.00
-vt 0.39 0.37 0.00
-vt 0.39 0.43 0.00
-vt 0.39 0.47 0.00
-vt 0.37 0.49 0.00
-vt 0.38 0.49 0.00
-vt 0.37 0.50 0.00
-vt 0.97 0.50 0.00
-vt 0.95 0.45 0.00
-vt 0.95 0.50 0.00
-vt 0.97 0.56 0.00
-vt 0.95 0.55 0.00
-vt 0.97 0.60 0.00
-vt 0.95 0.59 0.00
-vt 0.97 0.66 0.00
-vt 0.95 0.66 0.00
-vt 0.95 0.70 0.00
-vt 0.98 0.72 0.00
-vt 0.96 0.75 0.00
-vt 0.98 0.76 0.00
-vt 0.98 0.77 0.00
-vt 0.96 0.76 0.00
-vt 0.93 0.75 0.00
-vt 0.47 0.73 0.00
-vt 0.46 0.75 0.00
-vt 0.44 0.73 0.00
-vt 0.42 0.73 0.00
-vt 0.41 0.73 0.00
-vt 0.23 0.78 0.00
-vt 0.28 0.78 0.00
-vt 0.29 0.82 0.00
-vt 0.45 0.82 0.00
-vt 1.00 0.79 0.00
-vt 1.00 0.77 0.00
-vt 0.99 0.72 0.00
-vt 0.99 0.65 0.00
-vt 0.99 0.60 0.00
-vt 0.99 0.55 0.00
-vt 0.99 0.50 0.00
-vt 0.67 0.71 0.00
-vt 0.68 0.72 0.00
-vt 0.66 0.71 0.00
-vt 0.66 0.74 0.00
-vt 0.67 0.74 0.00
-vt 0.65 0.72 0.00
-vt 0.06 0.05 0.00
-vt 0.10 0.06 0.00
-vt 0.06 0.07 0.00
-vt 0.10 0.08 0.00
-vt 0.06 0.14 0.00
-vt 0.08 0.14 0.00
-vt 0.13 0.08 0.00
-vt 0.12 0.16 0.00
-vt 0.17 0.09 0.00
-vt 0.16 0.16 0.00
-vt 0.20 0.09 0.00
-vt 0.20 0.18 0.00
-vt 0.25 0.11 0.00
-vt 0.20 0.07 0.00
-vt 0.27 0.08 0.00
-vt 0.20 0.06 0.00
-vt 0.27 0.07 0.00
-vt 0.21 0.04 0.00
-vt 0.28 0.05 0.00
-vt 0.28 0.03 0.00
-vt 0.17 0.05 0.00
-vt 0.17 0.07 0.00
-vt 0.14 0.06 0.00
-vt 0.14 0.04 0.00
-vt 0.18 0.03 0.00
-vt 0.21 0.02 0.00
-vt 0.29 0.07 0.00
-vt 0.28 0.09 0.00
-vt 0.31 0.08 0.00
-vt 0.18 0.02 0.00
-vt 0.10 0.04 0.00
-vt 0.15 0.03 0.00
-vt 0.15 0.01 0.00
-vt 0.11 0.02 0.00
-vt 0.04 0.04 0.00
-vt 0.07 0.03 0.00
-vt 0.09 0.02 0.00
-vt 0.11 0.01 0.00
-vt 0.20 0.10 0.00
-vt 0.27 0.11 0.00
-vt 0.30 0.04 0.00
-vt 0.31 0.05 0.00
-vt 0.33 0.08 0.00
-vt 0.32 0.09 0.00
-vt 0.31 0.11 0.00
-vt 0.29 0.13 0.00
-vt 0.23 0.17 0.00
-vt 0.28 0.08 0.00
-vt 0.34 0.04 0.00
-vt 0.34 0.06 0.00
-vt 0.26 0.18 0.00
-vt 0.33 0.07 0.00
-vt 0.41 0.31 0.00
-vt 0.41 0.38 0.00
-vt 0.50 0.31 0.00
-vt 0.51 0.36 0.00
-vt 0.41 0.42 0.00
-vt 0.50 0.40 0.00
-vt 0.40 0.47 0.00
-vt 0.41 0.47 0.00
-vt 0.51 0.43 0.00
-vt 0.43 0.46 0.00
-vt 0.51 0.26 0.00
-vt 0.41 0.26 0.00
-vt 0.41 0.21 0.00
-vt 0.41 0.17 0.00
-vt 0.49 0.18 0.00
-vt 0.49 0.21 0.00
-vt 0.45 0.73 0.00
-vt 0.44 0.75 0.00
-vt 0.09 1.00 0.00
-vt 0.09 0.98 0.00
-vt 0.10 1.00 0.00
-vt 0.10 0.98 0.00
-vt 0.27 1.00 0.00
-vt 0.27 0.98 0.00
-vt 0.28 1.00 0.00
-vt 0.28 0.98 0.00
-vt 0.28 0.96 0.00
-vt 0.27 0.96 0.00
-vt 0.28 0.94 0.00
-vt 0.27 0.94 0.00
-vt 0.10 0.96 0.00
-vt 0.10 0.94 0.00
-vt 0.09 0.96 0.00
-vt 0.09 0.94 0.00
-vt 0.15 0.96 0.00
-vt 0.15 0.95 0.00
-vt 0.13 0.96 0.00
-vt 0.13 0.95 0.00
-vt 0.45 0.81 0.00
-vt 0.36 0.81 0.00
-vt 0.41 0.81 0.00
-vt 0.42 0.82 0.00
-vt 0.42 0.81 0.00
-vt 0.44 0.81 0.00
-vt 0.48 0.76 0.00
-vt 0.44 0.70 0.00
-vt 0.45 0.70 0.00
-vt 0.50 0.68 0.00
-vt 0.55 0.69 0.00
-vt 0.58 0.70 0.00
-vt 0.49 0.04 0.00
-vt 0.47 0.04 0.00
-vt 0.48 0.03 0.00
-vt 0.47 0.03 0.00
-vt 0.01 0.72 0.00
-vt 0.02 0.70 0.00
-vt 0.02 0.72 0.00
-vt 0.01 0.68 0.00
-vt 0.02 0.67 0.00
-vt 0.01 0.62 0.00
-vt 0.02 0.62 0.00
-vt 0.06 0.67 0.00
-vt 0.06 0.63 0.00
-vt 0.11 0.63 0.00
-vt 0.11 0.67 0.00
-vt 0.16 0.64 0.00
-vt 0.16 0.67 0.00
-vt 0.20 0.64 0.00
-vt 0.20 0.68 0.00
-vt 0.22 0.65 0.00
-vt 0.22 0.68 0.00
-vt 0.20 0.69 0.00
-vt 0.16 0.69 0.00
-vt 0.17 0.70 0.00
-vt 0.06 0.70 0.00
-vt 0.11 0.70 0.00
-vt 0.12 0.71 0.00
-vt 0.07 0.71 0.00
-vt 0.28 0.42 0.00
-vt 0.01 0.75 0.00
-vt 0.48 0.02 0.00
-vt 0.47 0.02 0.00
-vt 0.01 0.63 0.00
-vt 0.08 0.91 0.00
-vt 0.05 1.00 0.00
-vt 0.07 0.99 0.00
-vt 0.06 1.00 0.00
-vt 0.08 0.98 0.00
-vt 0.04 1.00 0.00
-vt 0.03 0.99 0.00
-vt 0.00 0.96 0.00
-vt 0.01 0.91 0.00
-vt 0.00 0.94 0.00
-vt 0.01 0.98 0.00
-vt 0.22 0.61 0.00
-vt 0.20 0.60 0.00
-vt 0.20 0.62 0.00
-vt 0.16 0.68 0.00
-vt 0.16 0.63 0.00
-vt 0.26 0.21 0.00
-vt 0.25 0.22 0.00
-vt 0.38 0.09 0.00
-vt 0.44 0.82 0.00
-vt 0.93 0.78 0.00
-vt 0.94 0.78 0.00
-vt 0.49 0.05 0.00
-vt 0.49 0.06 0.00
-vt 0.48 0.04 0.00
-vt 0.47 0.06 0.00
-vt 0.23 0.73 0.00
-vt 0.27 0.73 0.00
-vt 0.21 0.74 0.00
-vt 0.29 0.74 0.00
-vt 0.29 0.77 0.00
-vt 0.63 0.01 0.00
-vt 0.66 0.01 0.00
-vt 0.63 0.02 0.00
-vt 0.66 0.02 0.00
-vt 0.90 0.76 0.00
-vt 0.90 0.75 0.00
-vt 0.89 0.76 0.00
-vt 0.89 0.74 0.00
-vt 0.84 0.74 0.00
-vt 0.83 0.76 0.00
-vt 0.84 0.76 0.00
-vt 0.83 0.75 0.00
-vt 0.68 0.90 0.00
-vt 0.61 0.96 0.00
-vt 0.67 0.96 0.00
-vt 0.61 0.97 0.00
-vt 0.67 0.97 0.00
-vt 0.64 1.00 0.00
-vt 0.62 0.99 0.00
-vt 0.66 0.99 0.00
-vt 0.93 0.77 0.00
-vt 0.94 0.77 0.00
-vt 0.36 0.87 0.00
-vt 0.37 0.87 0.00
-vt 0.38 0.87 0.00
-vt 0.53 0.97 0.00
-vt 0.53 0.96 0.00
-vt 0.55 0.97 0.00
-vt 0.52 0.96 0.00
-vt 0.53 0.95 0.00
-vt 0.59 0.99 0.00
-vt 0.59 0.96 0.00
-vt 0.59 0.98 0.00
-vt 0.60 0.97 0.00
-vt 0.59 0.97 0.00
-vt 0.59 0.93 0.00
-vt 0.56 0.97 0.00
-vt 0.57 0.93 0.00
-vt 0.54 0.97 0.00
-vt 0.54 0.93 0.00
-vt 0.52 0.93 0.00
-vt 0.52 0.94 0.00
-vt 0.53 0.98 0.00
-vt 0.55 0.98 0.00
-vt 0.56 0.98 0.00
-vt 0.56 0.94 0.00
-vt 0.57 0.96 0.00
-vt 0.51 0.93 0.00
-vt 0.58 0.97 0.00
-vt 0.58 0.96 0.00
-vt 0.58 0.95 0.00
-vt 0.57 0.97 0.00
-vt 0.47 0.75 0.00
-vt 0.40 0.01 0.00
-vt 0.40 0.07 0.00
-vt 0.46 0.02 0.00
-vt 0.46 0.06 0.00
-vt 0.38 0.01 0.00
-vt 0.38 0.07 0.00
-vt 0.35 0.02 0.00
-vt 0.35 0.06 0.00
-vt 0.46 0.03 0.00
-vt 0.46 0.04 0.00
-vt 0.41 0.03 0.00
-vt 0.39 0.05 0.00
-vt 0.39 0.07 0.00
-vt 0.39 0.02 0.00
-vt 0.58 0.93 0.00
-vt 0.52 0.03 0.00
-vt 0.49 0.03 0.00
-vt 0.57 0.01 0.00
-vt 0.62 0.01 0.00
-vt 0.52 0.01 0.00
-vt 0.62 0.02 0.00
-vt 0.57 0.02 0.00
-vt 0.51 0.02 0.00
-vt 0.48 0.01 0.00
-vt 0.52 0.02 0.00
-vt 0.62 0.03 0.00
-vt 0.57 0.03 0.00
-vt 0.51 0.04 0.00
-vt 0.21 0.51 0.00
-vt 0.19 0.51 0.00
-vt 0.20 0.49 0.00
-vt 0.19 0.49 0.00
-vt 0.22 0.52 0.00
-vt 0.20 0.52 0.00
-vt 0.20 0.54 0.00
-vt 0.23 0.54 0.00
-vt 0.24 0.56 0.00
-vt 0.21 0.55 0.00
-vt 0.24 0.57 0.00
-vt 0.22 0.57 0.00
-vt 0.24 0.59 0.00
-vt 0.22 0.58 0.00
-vt 0.20 0.58 0.00
-vt 0.22 0.59 0.00
-vt 0.21 0.49 0.00
-vt 0.21 0.50 0.00
-vt 0.19 0.50 0.00
-vt 0.19 0.52 0.00
-vt 0.19 0.54 0.00
-vt 0.19 0.56 0.00
-vt 0.48 0.73 0.00
-# 642 texture coords
-
-g P_51_Mustang_Hull
-f 609/373/545 610/374/545 611/373/545
-f 612/375/546 611/373/547 613/376/548
-f 614/374/548 613/376/548 611/373/547
-f 613/376/548 614/374/548 615/377/549
-f 616/378/550 615/377/549 614/374/548
-f 616/378/550 617/379/551 615/377/549
-f 618/380/552 615/377/549 617/379/551
-f 618/380/552 617/379/551 619/381/553
-f 620/382/554 619/381/553 617/379/551
-f 620/382/554 621/383/555 619/381/553
-f 622/384/556 619/381/553 621/383/555
-f 621/383/555 623/385/557 622/384/556
-f 624/386/558 622/384/556 623/385/557
-f 623/385/557 625/387/559 624/386/558
-f 626/388/560 624/386/558 625/387/559
-f 626/388/560 625/387/559 627/388/561
-f 628/387/562 627/388/561 625/387/559
-f 628/387/562 629/387/563 627/388/561
-f 630/388/564 627/388/561 629/387/563
-f 630/388/564 629/387/563 631/386/565
-f 632/385/566 631/386/565 629/387/563
-f 631/386/565 632/385/566 633/384/567
-f 634/383/568 633/384/567 632/385/566
-f 633/384/567 634/383/568 635/381/569
-f 636/382/570 635/381/569 634/383/568
-f 636/382/570 637/379/571 635/381/569
-f 638/380/572 635/381/569 637/379/571
-f 638/380/572 637/379/571 639/377/573
-f 640/378/574 639/377/573 637/379/571
-f 640/378/574 641/374/575 639/377/573
-f 642/376/575 639/377/573 641/374/575
-f 641/374/575 643/373/576 642/376/575
-f 644/375/577 642/376/575 643/373/576
-f 645/375/578 646/373/579 647/376/580
-f 648/374/581 647/376/580 646/373/579
-f 647/376/580 648/374/581 649/377/582
-f 650/378/583 649/377/582 648/374/581
-f 650/378/583 651/379/584 649/377/582
-f 652/380/585 649/377/582 651/379/584
-f 652/380/585 651/379/584 653/381/586
-f 654/382/587 653/381/586 651/379/584
-f 654/382/587 655/383/588 653/381/586
-f 656/384/589 653/381/586 655/383/588
-f 655/383/588 657/385/590 656/384/589
-f 658/386/591 656/384/589 657/385/590
-f 657/385/590 659/387/592 658/386/591
-f 660/388/593 658/386/591 659/387/592
-f 660/388/593 659/387/592 661/388/594
-f 662/387/595 661/388/594 659/387/592
-f 662/387/595 663/387/596 661/388/594
-f 664/388/597 661/388/594 663/387/596
-f 664/388/597 663/387/596 665/386/598
-f 666/385/599 665/386/598 663/387/596
-f 665/386/598 666/385/599 667/384/600
-f 668/383/601 667/384/600 666/385/599
-f 667/384/600 668/383/601 669/381/602
-f 670/382/603 669/381/602 668/383/601
-f 670/382/603 671/379/604 669/381/602
-f 672/380/605 669/381/602 671/379/604
-f 672/380/605 671/379/604 673/377/606
-f 674/378/607 673/377/606 671/379/604
-f 674/378/607 610/374/608 673/377/606
-f 675/376/608 673/377/606 610/374/608
-f 610/374/608 609/373/609 675/376/608
-f 676/375/610 675/376/608 609/373/609
-f 677/385/611 678/389/612 679/390/613
-f 680/391/612 679/390/613 678/389/612
-f 678/389/612 681/392/614 680/391/612
-f 682/374/614 680/391/612 681/392/614
-f 681/392/614 683/393/613 682/374/614
-f 684/394/613 682/374/614 683/393/613
-f 683/394/615 681/374/616 685/393/615
-f 686/392/617 685/393/615 681/374/616
-f 681/374/616 678/391/618 686/392/617
-f 687/389/619 686/392/617 678/391/618
-f 678/391/618 677/390/620 687/389/619
-f 688/385/621 687/389/619 677/390/620
-f 685/394/622 686/374/623 689/393/622
-f 690/392/623 689/393/622 686/374/623
-f 686/374/623 687/391/624 690/392/623
-f 691/389/624 690/392/623 687/391/624
-f 687/391/624 688/390/622 691/389/624
-f 692/385/622 691/389/624 688/390/622
-f 674/378/625 671/379/625 610/374/625
-f 668/383/626 621/383/626 670/382/626
-f 621/383/627 620/382/627 670/382/627
-f 670/382/628 620/382/628 671/379/628
-f 617/379/625 616/378/625 620/382/625
-f 620/382/629 616/378/629 671/379/629
-f 671/379/629 616/378/629 610/374/629
-f 610/374/630 616/378/630 611/373/630
-f 616/378/631 614/374/631 611/373/631
-f 655/383/632 654/382/632 634/383/632
-f 650/378/625 648/374/625 651/379/625
-f 646/373/633 643/373/633 648/374/633
-f 648/374/634 643/373/634 651/379/634
-f 641/374/635 640/378/635 643/373/635
-f 640/378/636 637/379/636 643/373/636
-f 643/373/637 637/379/637 651/379/637
-f 651/379/638 637/379/638 654/382/638
-f 654/382/639 637/379/639 634/383/639
-f 637/379/625 636/382/625 634/383/625
-f 629/387/640 628/387/640 632/385/640
-f 662/387/641 659/387/641 628/387/641
-f 628/387/642 659/387/642 632/385/642
-f 659/387/643 657/385/643 632/385/643
-f 632/385/644 657/385/644 634/383/644
-f 657/385/645 655/383/645 634/383/645
-f 625/387/646 623/385/646 628/387/646
-f 621/383/647 668/383/647 623/385/647
-f 668/383/648 666/385/648 623/385/648
-f 666/385/649 663/387/649 623/385/649
-f 623/385/650 663/387/650 628/387/650
-f 628/387/651 663/387/651 662/387/651
-f 630/388/652 631/386/652 627/388/652
-f 633/384/653 656/384/653 631/386/653
-f 656/384/654 658/386/654 631/386/654
-f 658/386/655 660/388/655 631/386/655
-f 631/386/656 660/388/656 627/388/656
-f 627/388/657 660/388/657 661/388/657
-f 661/388/658 664/388/658 627/388/658
-f 667/384/659 622/384/659 665/386/659
-f 622/384/660 624/386/660 665/386/660
-f 665/386/661 624/386/661 664/388/661
-f 664/388/662 624/386/662 627/388/662
-f 624/386/663 626/388/663 627/388/663
-f 667/384/664 669/381/664 622/384/664
-f 675/376/665 676/375/665 673/377/665
-f 612/375/666 613/376/666 676/375/666
-f 676/375/667 613/376/667 673/377/667
-f 673/377/668 613/376/668 672/380/668
-f 615/377/669 618/380/669 613/376/669
-f 613/376/666 618/380/666 672/380/666
-f 672/380/670 618/380/670 669/381/670
-f 669/381/671 618/380/671 622/384/671
-f 618/380/672 619/381/672 622/384/672
-f 647/376/673 649/377/673 645/375/673
-f 656/384/674 633/384/674 653/381/674
-f 653/381/675 633/384/675 652/380/675
-f 635/381/676 638/380/676 633/384/676
-f 633/384/677 638/380/677 652/380/677
-f 652/380/677 638/380/677 649/377/677
-f 639/377/669 642/376/669 638/380/669
-f 638/380/678 642/376/678 649/377/678
-f 649/377/678 642/376/678 645/375/678
-f 642/376/677 644/375/677 645/375/677
-f 689/394/679 690/374/680 684/393/679
-f 682/392/681 684/393/679 690/374/680
-f 690/374/680 691/391/682 682/392/681
-f 680/389/683 682/392/681 691/391/682
-f 691/391/682 692/390/684 680/389/683
-f 679/385/685 680/389/683 692/390/684
-f 693/395/686 694/396/686 695/397/686
-f 696/398/687 697/399/688 698/400/689
-f 696/398/687 699/401/690 697/399/688
-f 700/402/691 697/399/688 699/401/690
-f 699/401/690 701/403/692 700/402/691
-f 702/404/693 700/402/691 701/403/692
-f 702/404/693 701/403/692 703/405/694
-f 704/406/695 703/405/694 701/403/692
-f 703/405/694 704/406/695 705/407/696
-f 706/408/697 705/407/696 704/406/695
-f 706/408/697 707/406/698 705/407/696
-f 708/405/699 705/407/696 707/406/698
-f 707/406/698 709/403/700 708/405/699
-f 710/409/701 708/405/699 709/403/700
-f 710/409/701 709/403/700 711/402/702
-f 712/410/703 711/402/702 709/403/700
-f 711/402/702 712/410/703 693/399/704
-f 713/398/705 693/399/704 712/410/703
-f 693/399/704 713/398/705 714/400/706
-f 715/411/707 713/398/705 716/412/708
-f 713/398/705 712/410/703 716/412/708
-f 715/411/707 717/413/709 718/414/710
-f 715/411/707 716/412/708 717/413/709
-f 716/412/708 719/415/711 717/413/709
-f 719/415/711 716/412/708 712/410/703
-f 712/410/703 709/403/700 719/415/711
-f 720/416/712 719/415/711 709/403/700
-f 707/406/698 720/416/712 709/403/700
-f 707/406/698 721/417/713 720/416/712
-f 720/416/712 721/417/713 722/418/714
-f 723/419/715 722/418/714 721/417/713
-f 722/418/714 723/419/715 724/420/716
-f 725/421/717 724/420/716 723/419/715
-f 724/420/716 725/421/717 726/422/718
-f 727/423/719 726/422/718 725/421/717
-f 727/423/719 728/424/720 726/422/718
-f 720/416/712 722/418/714 719/415/711
-f 719/415/711 722/418/714 729/425/721
-f 729/425/721 717/413/709 719/415/711
-f 717/413/709 729/425/721 730/426/722
-f 730/426/722 718/414/710 717/413/709
-f 724/420/716 729/425/721 722/418/714
-f 729/425/721 724/420/716 731/427/723
-f 731/427/723 730/426/722 729/425/721
-f 726/422/718 731/427/723 724/420/716
-f 732/426/724 733/413/725 734/414/726
-f 733/413/725 732/426/724 735/425/727
-f 736/427/728 735/425/727 732/426/724
-f 735/425/727 736/427/728 737/420/729
-f 738/422/730 737/420/729 736/427/728
-f 737/420/729 738/422/730 739/421/731
-f 740/423/732 739/421/731 738/422/730
-f 740/423/732 738/422/730 728/424/720
-f 741/428/733 728/424/720 738/422/730
-f 741/428/733 726/422/718 728/424/720
-f 741/428/733 742/429/734 726/422/718
-f 731/427/723 726/422/718 742/429/734
-f 742/429/734 743/430/735 731/427/723
-f 730/426/722 731/427/723 743/430/735
-f 743/430/735 744/431/736 730/426/722
-f 718/414/710 730/426/722 744/431/736
-f 718/414/710 744/431/736 745/432/737
-f 718/414/710 745/432/737 715/411/707
-f 737/420/729 746/418/738 735/425/727
-f 735/425/727 747/415/739 733/413/725
-f 747/415/739 735/425/727 746/418/738
-f 746/418/738 748/416/740 747/415/739
-f 749/433/741 750/434/742 698/400/689
-f 751/411/743 698/400/689 750/434/742
-f 751/411/743 696/398/687 698/400/689
-f 696/398/687 751/411/743 733/413/725
-f 696/398/687 733/413/725 699/401/690
-f 747/415/739 699/401/690 733/413/725
-f 699/401/690 747/415/739 701/403/692
-f 748/416/740 701/403/692 747/415/739
-f 748/416/740 704/406/695 701/403/692
-f 752/417/744 704/406/695 748/416/740
-f 748/416/740 746/418/738 752/417/744
-f 753/419/745 752/417/744 746/418/738
-f 746/418/738 737/420/729 753/419/745
-f 739/421/731 753/419/745 737/420/729
-f 754/435/746 755/436/747 756/437/748
-f 755/436/747 754/435/746 757/438/749
-f 755/436/747 757/438/749 758/435/750
-f 759/439/751 758/435/750 757/438/749
-f 759/439/751 760/440/752 758/435/750
-f 760/440/752 759/439/751 761/441/753
-f 761/441/753 762/442/754 760/440/752
-f 763/443/755 760/440/752 762/442/754
-f 762/442/754 764/444/756 763/443/755
-f 765/445/757 763/443/755 764/444/756
-f 764/444/756 766/446/758 765/445/757
-f 749/433/741 765/445/757 766/446/758
-f 766/446/758 767/447/759 749/433/741
-f 750/434/742 749/433/741 767/447/759
-f 768/432/760 750/434/742 767/447/759
-f 750/434/742 768/432/760 751/411/743
-f 734/414/726 751/411/743 768/432/760
-f 751/411/743 734/414/726 733/413/725
-f 769/448/761 770/449/762 757/438/749
-f 759/439/751 757/438/749 770/449/762
-f 770/449/762 761/441/753 759/439/751
-f 713/398/705 715/411/707 714/400/706
-f 715/411/707 771/434/763 714/400/706
-f 771/434/763 715/411/707 745/432/737
-f 771/434/763 745/432/737 772/447/764
-f 772/447/764 745/432/737 773/450/765
-f 773/450/765 774/451/766 772/447/764
-f 773/450/765 767/447/759 774/451/766
-f 775/452/767 774/451/766 767/447/759
-f 767/447/759 766/446/758 775/452/767
-f 776/453/768 775/452/767 766/446/758
-f 766/446/758 764/444/756 776/453/768
-f 777/454/769 776/453/768 764/444/756
-f 764/444/756 762/442/754 777/454/769
-f 778/455/770 777/454/769 762/442/754
-f 762/442/754 761/441/753 778/455/770
-f 779/456/771 778/455/770 761/441/753
-f 761/441/753 770/449/762 779/456/771
-f 780/457/772 779/456/771 770/449/762
-f 781/458/773 782/459/774 777/454/769
-f 776/453/768 777/454/769 782/459/774
-f 776/453/768 782/459/774 775/452/767
-f 783/460/775 775/452/767 782/459/774
-f 775/452/767 783/460/775 774/451/766
-f 783/460/775 784/452/776 774/451/766
-f 784/452/776 772/447/764 774/451/766
-f 772/447/764 784/452/776 785/446/777
-f 785/446/777 786/461/778 772/447/764
-f 786/461/778 785/446/777 787/445/779
-f 787/445/779 788/462/780 786/461/778
-f 788/462/780 787/445/779 789/463/781
-f 789/463/781 790/464/782 788/462/780
-f 789/463/781 791/465/783 790/464/782
-f 792/466/784 790/464/782 791/465/783
-f 792/466/784 791/465/783 793/467/566
-f 793/467/566 791/465/783 756/437/748
-f 754/435/746 756/437/748 791/465/783
-f 794/468/785 795/469/786 796/470/787
-f 781/458/773 796/470/787 795/469/786
-f 795/469/786 797/471/788 781/458/773
-f 782/459/774 781/458/773 797/471/788
-f 797/471/788 798/472/789 782/459/774
-f 783/460/775 782/459/774 798/472/789
-f 783/460/775 798/472/789 799/459/790
-f 783/460/775 799/459/790 784/452/776
-f 800/473/791 784/452/776 799/459/790
-f 800/473/791 785/446/777 784/452/776
-f 785/446/777 800/473/791 801/444/792
-f 801/444/792 787/445/779 785/446/777
-f 787/445/779 801/444/792 802/443/793
-f 802/443/793 789/463/781 787/445/779
-f 802/443/793 803/440/794 789/463/781
-f 791/465/783 789/463/781 803/440/794
-f 791/465/783 803/440/794 754/435/746
-f 804/439/795 754/435/746 803/440/794
-f 802/443/793 805/442/796 803/440/794
-f 805/442/796 802/443/793 801/444/792
-f 801/444/792 806/454/797 805/442/796
-f 806/454/797 801/444/792 800/473/791
-f 800/473/791 799/459/790 806/454/797
-f 797/471/788 795/469/786 807/474/798
-f 807/474/798 808/475/799 797/471/788
-f 798/472/789 797/471/788 808/475/799
-f 798/472/789 808/475/799 809/471/800
-f 809/471/800 799/459/790 798/472/789
-f 799/459/790 809/471/800 810/458/801
-f 810/458/801 806/454/797 799/459/790
-f 806/454/797 810/458/801 811/455/802
-f 811/455/802 805/442/796 806/454/797
-f 805/442/796 811/455/802 812/441/803
-f 812/441/803 803/440/794 805/442/796
-f 803/440/794 812/441/803 804/439/795
-f 813/449/804 804/439/795 812/441/803
-f 812/441/803 814/456/805 813/449/804
-f 814/456/805 812/441/803 811/455/802
-f 811/455/802 815/470/806 814/456/805
-f 815/470/806 811/455/802 810/458/801
-f 810/458/801 816/469/807 815/470/806
-f 816/469/807 810/458/801 809/471/800
-f 809/471/800 817/474/808 816/469/807
-f 817/474/808 809/471/800 808/475/799
-f 808/475/799 818/476/809 817/474/808
-f 808/475/799 807/474/798 818/476/809
-f 819/477/810 818/476/809 807/474/798
-f 807/474/798 820/478/811 819/477/810
-f 821/479/812 819/477/810 820/478/811
-f 820/478/811 822/480/813 821/479/812
-f 823/481/814 821/479/812 822/480/813
-f 822/480/813 820/478/811 794/468/785
-f 795/469/786 794/468/785 820/478/811
-f 820/478/811 807/474/798 795/469/786
-f 824/482/815 825/483/816 826/484/817
-f 827/485/818 826/484/817 825/483/816
-f 827/485/818 825/483/816 828/486/819
-f 829/487/820 828/486/819 825/483/816
-f 829/487/820 830/488/821 828/486/819
-f 829/487/820 831/489/822 830/488/821
-f 830/488/821 831/489/822 832/490/823
-f 823/481/814 832/490/823 831/489/822
-f 832/490/823 823/481/814 833/491/824
-f 822/480/813 833/491/824 823/481/814
-f 833/491/824 822/480/813 834/492/825
-f 794/468/785 834/492/825 822/480/813
-f 834/492/825 794/468/785 835/493/826
-f 796/470/787 835/493/826 794/468/785
-f 835/493/826 796/470/787 779/456/771
-f 778/455/770 779/456/771 796/470/787
-f 796/470/787 781/458/773 778/455/770
-f 777/454/769 778/455/770 781/458/773
-f 836/494/827 833/491/824 834/492/825
-f 837/495/828 830/488/821 838/496/829
-f 837/495/828 838/496/829 839/497/830
-f 838/496/829 840/498/831 839/497/830
-f 840/498/831 841/499/832 839/497/830
-f 840/498/831 842/500/833 841/499/832
-f 842/500/833 843/501/834 841/499/832
-f 836/494/827 843/501/834 842/500/833
-f 836/494/827 844/502/835 843/501/834
-f 836/494/827 834/492/825 844/502/835
-f 835/493/826 844/502/835 834/492/825
-f 844/502/835 835/493/826 780/457/772
-f 779/456/771 780/457/772 835/493/826
-f 832/490/823 838/496/829 830/488/821
-f 837/495/828 839/497/830 830/488/821
-f 830/488/821 839/497/830 828/486/819
-f 839/497/830 845/503/836 828/486/819
-f 839/497/830 846/504/837 845/503/836
-f 847/505/836 845/503/836 846/504/837
-f 846/504/837 848/506/838 847/505/836
-f 849/507/839 847/505/836 848/506/838
-f 850/508/838 849/507/839 848/506/838
-f 848/506/838 851/509/840 850/508/838
-f 851/509/840 848/506/838 852/510/841
-f 852/510/841 853/511/842 851/509/840
-f 853/511/842 852/510/841 843/501/834
-f 841/499/832 843/501/834 852/510/841
-f 852/510/841 846/504/837 841/499/832
-f 839/497/830 841/499/832 846/504/837
-f 846/504/837 852/510/841 848/506/838
-f 770/449/762 769/448/761 780/457/772
-f 854/512/843 780/457/772 769/448/761
-f 854/512/843 769/448/761 855/457/844
-f 854/512/843 855/457/844 856/501/845
-f 857/502/846 856/501/845 855/457/844
-f 857/502/846 858/494/847 856/501/845
-f 858/494/847 857/502/846 859/492/848
-f 860/491/849 858/494/847 859/492/848
-f 860/491/849 859/492/848 861/480/850
-f 861/480/850 862/481/851 860/491/849
-f 862/481/851 861/480/850 863/479/852
-f 863/479/852 864/513/853 862/481/851
-f 864/513/853 863/479/852 865/514/854
-f 865/514/854 866/482/855 864/513/853
-f 865/514/854 867/515/669 866/482/855
-f 868/516/856 866/482/855 867/515/669
-f 868/516/856 867/515/669 824/482/815
-f 824/482/815 826/484/817 868/516/856
-f 869/489/857 862/481/851 864/513/853
-f 862/481/851 869/489/857 870/490/858
-f 870/490/858 860/491/849 862/481/851
-f 871/488/859 870/490/858 869/489/857
-f 870/490/858 871/488/859 872/496/860
-f 873/517/861 874/518/862 875/519/863
-f 876/519/864 875/519/863 874/518/862
-f 877/508/865 875/519/863 876/519/864
-f 876/519/864 878/509/866 877/508/865
-f 879/506/867 877/508/865 878/509/866
-f 878/509/866 880/510/868 879/506/867
-f 881/504/869 879/506/867 880/510/868
-f 880/510/868 882/499/870 881/504/869
-f 883/497/871 881/504/869 882/499/870
-f 882/499/870 884/498/872 883/497/871
-f 884/498/872 872/496/860 883/497/871
-f 872/496/860 885/495/873 883/497/871
-f 885/495/873 872/496/860 871/488/859
-f 885/495/873 871/488/859 886/487/874
-f 869/489/857 886/487/874 871/488/859
-f 886/487/874 869/489/857 887/483/875
-f 864/513/853 887/483/875 869/489/857
-f 887/483/875 864/513/853 866/482/855
-f 888/500/876 884/498/872 882/499/870
-f 858/494/847 888/500/876 856/501/845
-f 856/501/845 888/500/876 882/499/870
-f 882/499/870 880/510/868 856/501/845
-f 889/511/877 856/501/845 880/510/868
-f 880/510/868 878/509/866 889/511/877
-f 854/512/843 856/501/845 890/520/878
-f 889/511/877 890/520/878 856/501/845
-f 889/511/877 891/521/879 890/520/878
-f 891/521/879 889/511/877 878/509/866
-f 878/509/866 876/519/864 891/521/879
-f 874/518/862 891/521/879 876/519/864
-f 891/521/879 874/518/862 892/522/880
-f 893/523/881 892/522/880 874/518/862
-f 893/523/881 894/518/882 892/522/880
-f 894/518/882 893/523/881 895/517/883
-f 895/517/883 896/519/884 894/518/882
-f 897/519/885 894/518/882 896/519/884
-f 896/519/884 898/524/886 897/519/885
-f 892/522/880 890/520/878 891/521/879
-f 892/522/880 899/521/887 890/520/878
-f 899/521/887 892/522/880 894/518/882
-f 894/518/882 897/519/885 899/521/887
-f 780/457/772 854/512/843 844/502/835
-f 843/501/834 844/502/835 854/512/843
-f 854/512/843 890/520/878 843/501/834
-f 853/511/842 843/501/834 890/520/878
-f 853/511/842 890/520/878 899/521/887
-f 899/521/887 851/509/840 853/511/842
-f 851/509/840 899/521/887 897/519/885
-f 897/519/885 850/508/838 851/509/840
-f 850/508/838 897/519/885 898/524/886
-f 898/524/886 849/507/839 850/508/838
-f 898/524/888 849/507/839 898/524/886
-f 898/524/886 896/519/884 898/524/888
-f 898/524/888 896/519/884 900/525/889
-f 900/525/889 896/519/884 895/517/883
-f 895/517/883 901/517/890 900/525/889
-f 901/517/890 895/517/883 893/523/881
-f 901/517/890 893/523/881 873/517/861
-f 874/518/862 873/517/861 893/523/881
-f 902/526/891 898/524/888 900/525/889
-f 903/524/892 904/524/893 905/524/892
-f 905/524/892 904/524/893 877/508/865
-f 904/524/893 875/519/863 877/508/865
-f 904/524/893 906/526/894 875/519/863
-f 875/519/863 906/526/894 873/517/861
-f 906/526/894 907/525/895 873/517/861
-f 873/517/861 907/525/895 901/517/890
-f 908/517/896 901/517/890 907/525/895
-f 908/517/896 900/525/889 901/517/890
-f 900/525/889 908/517/896 909/527/897
-f 900/525/889 909/527/897 902/526/891
-f 910/528/898 902/526/891 909/527/897
-f 910/528/898 909/527/897 906/526/894
-f 907/525/895 906/526/894 909/527/897
-f 907/525/895 909/527/897 908/517/896
-f 909/527/897 908/517/896 911/527/899
-f 912/485/900 887/483/875 913/484/901
-f 887/483/875 912/485/900 886/487/874
-f 914/486/902 886/487/874 912/485/900
-f 914/486/902 915/503/903 886/487/874
-f 915/503/903 885/495/873 886/487/874
-f 883/497/871 885/495/873 915/503/903
-f 883/497/871 915/503/903 881/504/869
-f 916/505/904 881/504/869 915/503/903
-f 881/504/869 916/505/904 879/506/867
-f 917/507/797 879/506/867 916/505/904
-f 879/506/867 917/507/797 877/508/865
-f 905/524/892 877/508/865 917/507/797
-f 866/482/855 913/484/901 887/483/875
-f 866/482/855 868/516/856 913/484/901
-f 918/529/789 913/484/901 868/516/856
-f 918/529/789 868/516/856 826/484/817
-f 792/466/784 919/530/905 790/464/782
-f 920/531/906 790/464/782 919/530/905
-f 919/530/905 921/532/907 920/531/906
-f 922/533/908 920/531/906 921/532/907
-f 921/532/907 923/534/909 922/533/908
-f 924/379/910 922/533/908 923/534/909
-f 923/534/909 925/535/911 924/379/910
-f 926/382/912 924/379/910 925/535/911
-f 925/535/911 927/536/913 926/382/912
-f 928/537/907 926/382/912 927/536/913
-f 928/537/907 927/536/913 929/538/914
-f 929/538/914 930/539/915 928/537/907
-f 930/539/915 929/538/914 931/540/916
-f 931/540/916 932/541/917 930/539/915
-f 932/541/917 931/540/916 933/542/918
-f 933/542/918 934/543/919 932/541/917
-f 933/542/918 935/544/920 934/543/919
-f 936/545/921 934/543/919 935/544/920
-f 926/382/912 937/546/922 924/379/910
-f 937/546/922 938/547/923 924/379/910
-f 922/533/908 924/379/910 938/547/923
-f 938/547/923 939/548/924 922/533/908
-f 920/531/906 922/533/908 939/548/924
-f 939/548/924 940/549/925 920/531/906
-f 790/464/782 920/531/906 940/549/925
-f 940/549/925 788/462/780 790/464/782
-f 771/434/763 772/447/764 786/461/778
-f 786/461/778 714/400/706 771/434/763
-f 714/400/706 786/461/778 788/462/780
-f 788/462/780 940/549/925 714/400/706
-f 941/550/926 714/400/706 940/549/925
-f 940/549/925 939/548/924 941/550/926
-f 694/551/927 941/550/926 939/548/924
-f 939/548/924 938/547/923 694/551/927
-f 942/552/928 694/551/927 938/547/923
-f 938/547/923 937/546/922 942/552/928
-f 943/553/929 942/552/928 937/546/922
-f 937/546/922 926/382/912 943/553/929
-f 944/554/930 943/553/929 926/382/912
-f 926/382/912 945/388/931 944/554/930
-f 945/388/931 926/382/912 928/537/907
-f 945/388/931 928/537/907 930/539/915
-f 694/551/927 693/399/704 941/550/926
-f 941/550/926 693/399/704 714/400/706
-f 936/545/921 935/544/920 946/555/932
-f 936/545/921 946/555/932 947/556/933
-f 948/557/934 947/556/933 946/555/932
-f 948/557/934 949/555/935 947/556/933
-f 950/545/936 947/556/933 949/555/935
-f 950/545/936 949/555/935 951/544/937
-f 950/545/936 951/544/937 952/543/938
-f 953/542/939 952/543/938 951/544/937
-f 953/542/939 954/541/940 952/543/938
-f 954/541/940 953/542/939 955/540/941
-f 955/540/941 956/558/942 954/541/940
-f 956/558/942 955/540/941 957/538/943
-f 957/538/943 958/537/944 956/558/942
-f 958/537/944 957/538/943 959/536/945
-f 958/537/944 959/536/945 960/382/946
-f 961/559/947 960/382/946 959/536/945
-f 960/382/946 961/559/947 962/560/948
-f 963/534/949 962/560/948 961/559/947
-f 947/556/933 964/561/950 965/562/951
-f 947/556/933 950/545/936 964/561/950
-f 952/543/938 964/561/950 950/545/936
-f 966/563/952 952/543/938 954/541/940
-f 966/563/952 967/564/953 952/543/938
-f 964/561/950 952/543/938 967/564/953
-f 968/564/954 964/561/950 967/564/953
-f 968/564/954 969/565/955 964/561/950
-f 965/562/951 964/561/950 969/565/955
-f 965/562/951 969/565/955 970/561/956
-f 970/561/956 947/556/933 965/562/951
-f 947/556/933 970/561/956 936/545/921
-f 934/543/919 936/545/921 970/561/956
-f 970/561/956 971/564/957 934/543/919
-f 972/566/958 934/543/919 971/564/957
-f 972/566/958 932/541/917 934/543/919
-f 970/561/956 973/567/959 971/564/957
-f 973/567/959 970/561/956 969/565/955
-f 962/560/948 963/534/949 974/533/960
-f 975/532/961 974/533/960 963/534/949
-f 974/533/960 975/532/961 976/531/962
-f 977/530/963 976/531/962 975/532/961
-f 976/531/962 977/530/963 978/568/964
-f 979/466/965 978/568/964 977/530/963
-f 979/466/965 980/465/966 978/568/964
-f 980/465/966 979/466/965 981/467/967
-f 981/467/967 982/437/968 980/465/966
-f 758/435/750 980/465/966 982/437/968
-f 758/435/750 982/437/968 755/436/747
-f 983/569/747 755/436/747 982/437/968
-f 983/569/747 756/437/748 755/436/747
-f 984/463/969 978/568/964 980/465/966
-f 984/463/969 985/462/813 978/568/964
-f 986/549/970 978/568/964 985/462/813
-f 978/568/964 986/549/970 976/531/962
-f 987/548/971 976/531/962 986/549/970
-f 976/531/962 987/548/971 974/533/960
-f 988/547/972 974/533/960 987/548/971
-f 974/533/960 988/547/972 962/560/948
-f 989/546/973 962/560/948 988/547/972
-f 989/546/973 960/382/946 962/560/948
-f 980/465/966 758/435/750 760/440/752
-f 980/465/966 760/440/752 984/463/969
-f 763/443/755 984/463/969 760/440/752
-f 763/443/755 765/445/757 984/463/969
-f 985/462/813 984/463/969 765/445/757
-f 765/445/757 749/433/741 985/462/813
-f 698/400/689 985/462/813 749/433/741
-f 985/462/813 698/400/689 986/549/970
-f 990/550/974 986/549/970 698/400/689
-f 986/549/970 990/550/974 987/548/971
-f 991/551/975 987/548/971 990/550/974
-f 987/548/971 991/551/975 988/547/972
-f 992/552/976 988/547/972 991/551/975
-f 988/547/972 992/552/976 989/546/973
-f 993/553/977 989/546/973 992/552/976
-f 989/546/973 993/553/977 960/382/946
-f 994/554/978 960/382/946 993/553/977
-f 960/382/946 994/554/978 995/388/979
-f 697/399/688 990/550/974 698/400/689
-f 697/399/688 991/551/975 990/550/974
-f 996/570/980 997/571/981 923/534/909
-f 925/535/911 923/534/909 997/571/981
-f 925/535/911 997/571/981 998/572/982
-f 999/573/983 925/535/911 998/572/982
-f 927/536/913 925/535/911 999/573/983
-f 927/536/913 999/573/983 1000/574/984
-f 1000/574/984 929/538/914 927/536/913
-f 1000/574/984 1001/575/985 929/538/914
-f 1001/575/985 931/540/916 929/538/914
-f 931/540/916 1001/575/985 1002/576/986
-f 1002/576/986 933/542/918 931/540/916
-f 933/542/918 1002/576/986 935/544/920
-f 1003/577/987 935/544/920 1002/576/986
-f 935/544/920 1003/577/987 1004/578/988
-f 1005/579/989 1004/578/988 1003/577/987
-f 1004/578/988 1005/579/989 1006/580/990
-f 1007/581/991 1006/580/990 1005/579/989
-f 1008/582/992 1007/581/991 1005/579/989
-f 1006/580/990 1009/583/993 1004/578/988
-f 946/555/932 1004/578/988 1009/583/993
-f 1004/578/988 946/555/932 935/544/920
-f 1010/581/994 1007/581/991 1008/582/992
-f 1011/584/995 1010/581/994 1008/582/992
-f 1008/582/992 1012/585/996 1011/584/995
-f 1013/586/997 1011/584/995 1012/585/996
-f 1012/585/996 1014/587/998 1013/586/997
-f 1015/588/999 1013/586/997 1014/587/998
-f 1014/587/998 1016/589/1000 1015/588/999
-f 1017/590/1001 1015/588/999 1016/589/1000
-f 1016/589/1000 1018/591/1002 1017/590/1001
-f 1019/592/1003 1017/590/1001 1018/591/1002
-f 1018/591/1002 1020/593/1004 1019/592/1003
-f 1021/594/1005 1019/592/1003 1020/593/1004
-f 1021/594/1005 1020/593/1004 1022/592/1006
-f 1023/591/1007 1022/592/1006 1020/593/1004
-f 1022/592/1006 1023/591/1007 1024/590/1008
-f 1025/595/1009 1024/590/1008 1023/591/1007
-f 1024/590/1008 1025/595/1009 1026/588/1010
-f 1027/587/1011 1026/588/1010 1025/595/1009
-f 1023/591/1007 1028/596/1012 1025/595/1009
-f 1029/597/1013 1028/596/1012 1030/598/1014
-f 1031/599/1015 1030/598/1014 1028/596/1012
-f 1028/596/1012 1023/591/1007 1031/599/1015
-f 1020/593/1004 1031/599/1015 1023/591/1007
-f 1020/593/1004 1018/591/1002 1031/599/1015
-f 1032/596/1016 1031/599/1015 1018/591/1002
-f 1018/591/1002 1016/589/1000 1032/596/1016
-f 1033/600/1017 1032/596/1016 1016/589/1000
-f 1016/589/1000 1014/587/998 1033/600/1017
-f 1034/601/1018 1033/600/1017 1014/587/998
-f 1014/587/998 1012/585/996 1034/601/1018
-f 1035/602/1019 1034/601/1018 1012/585/996
-f 1012/585/996 1008/582/992 1035/602/1019
-f 1034/601/1018 1035/602/1019 1036/603/1020
-f 1033/600/1017 1034/601/1018 1037/604/1021
-f 1036/603/1020 1037/604/1021 1034/601/1018
-f 1037/604/1021 1036/603/1020 1038/605/1022
-f 1032/596/1016 1033/600/1017 1039/597/1023
-f 1037/604/1021 1039/597/1023 1033/600/1017
-f 1039/597/1023 1037/604/1021 1040/606/1024
-f 1038/605/1022 1040/606/1024 1037/604/1021
-f 1040/606/1024 1038/605/1022 1041/607/1025
-f 1031/599/1015 1032/596/1016 1030/598/1014
-f 1039/597/1023 1030/598/1014 1032/596/1016
-f 1030/598/1014 1039/597/1023 1042/608/1026
-f 1040/606/1024 1042/608/1026 1039/597/1023
-f 1042/608/1026 1040/606/1024 1043/609/1027
-f 1041/607/1025 1043/609/1027 1040/606/1024
-f 1043/609/1027 1041/607/1025 1044/610/1028
-f 1045/611/1026 1046/612/1029 1044/610/1028
-f 1047/613/1030 1048/614/1031 1049/615/1032
-f 1049/615/1032 1050/616/1033 1047/613/1030
-f 1050/616/1033 1049/615/1032 1051/617/1034
-f 1051/617/1034 1052/618/1035 1050/616/1033
-f 1052/618/1035 1051/617/1034 1046/612/1029
-f 1052/618/1035 1046/612/1029 1053/619/1036
-f 1054/620/1037 1053/619/1036 1046/612/1029
-f 1054/620/1037 1046/612/1029 1055/621/1027
-f 1045/611/1026 1055/621/1027 1046/612/1029
-f 1045/611/1026 1056/612/1038 1055/621/1027
-f 1045/611/1026 1044/610/1028 1056/612/1038
-f 1057/622/1039 1056/612/1038 1044/610/1028
-f 1057/622/1039 1044/610/1028 1041/607/1025
-f 1041/607/1025 1058/623/1040 1057/622/1039
-f 1058/623/1040 1041/607/1025 1038/605/1022
-f 1038/605/1022 1059/624/1041 1058/623/1040
-f 1059/624/1041 1038/605/1022 1036/603/1020
-f 1036/603/1020 1060/625/1042 1059/624/1041
-f 1047/613/1030 1061/574/1043 1062/575/885
-f 1061/574/1043 1047/613/1030 1050/616/1033
-f 1050/616/1033 1063/626/1044 1061/574/1043
-f 1063/626/1044 1050/616/1033 1052/618/1035
-f 1063/626/1044 1052/618/1035 1064/572/1045
-f 1053/619/1036 1064/572/1045 1052/618/1035
-f 953/542/939 951/544/937 1065/576/1046
-f 1065/576/1046 955/540/941 953/542/939
-f 955/540/941 1065/576/1046 1062/575/885
-f 1062/575/885 957/538/943 955/540/941
-f 1062/575/885 1061/574/1043 957/538/943
-f 1061/574/1043 959/536/945 957/538/943
-f 959/536/945 1061/574/1043 1063/626/1044
-f 959/536/945 1063/626/1044 961/559/947
-f 961/559/947 1063/626/1044 1064/572/1045
-f 1066/571/1047 961/559/947 1064/572/1045
-f 961/559/947 1066/571/1047 963/534/949
-f 1067/570/1048 963/534/949 1066/571/1047
-f 1026/588/1010 1027/587/1011 1068/586/1049
-f 1069/627/1050 1068/586/1049 1027/587/1011
-f 1068/586/1049 1069/627/1050 1070/628/1051
-f 1071/582/1052 1070/628/1051 1069/627/1050
-f 1070/628/1051 1071/582/1052 1072/581/1053
-f 1072/581/1053 1071/582/1052 1073/581/1054
-f 1073/581/1054 1071/582/1052 1074/579/1055
-f 1073/581/1054 1074/579/1055 1075/580/1056
-f 1076/578/1057 1075/580/1056 1074/579/1055
-f 1075/580/1056 1076/578/1057 1077/583/1058
-f 949/555/935 1077/583/1058 1076/578/1057
-f 1076/578/1057 951/544/937 949/555/935
-f 951/544/937 1076/578/1057 1078/577/1059
-f 1078/577/1059 1065/576/1046 951/544/937
-f 1065/576/1046 1078/577/1059 1079/629/1060
-f 1079/629/1060 1062/575/885 1065/576/1046
-f 1062/575/885 1079/629/1060 1048/614/1031
-f 1048/614/1031 1047/613/1030 1062/575/885
-f 1074/579/1055 1078/577/1059 1076/578/1057
-f 1078/577/1059 1074/579/1055 1080/630/1061
-f 1080/630/1061 1079/629/1060 1078/577/1059
-f 1079/629/1060 1080/630/1061 1081/631/1062
-f 1081/631/1062 1048/614/1031 1079/629/1060
-f 1081/631/1062 1082/624/1063 1048/614/1031
-f 1082/624/1063 1049/615/1032 1048/614/1031
-f 1049/615/1032 1082/624/1063 1083/623/1064
-f 1083/623/1064 1051/617/1034 1049/615/1032
-f 1051/617/1034 1083/623/1064 1084/622/1065
-f 1084/622/1065 1046/612/1029 1051/617/1034
-f 1084/622/1065 1044/610/1028 1046/612/1029
-f 1084/622/1065 1085/607/1066 1044/610/1028
-f 1043/609/1027 1044/610/1028 1085/607/1066
-f 1085/607/1066 1086/606/1067 1043/609/1027
-f 1042/608/1026 1043/609/1027 1086/606/1067
-f 1086/606/1067 1029/597/1013 1042/608/1026
-f 1030/598/1014 1042/608/1026 1029/597/1013
-f 1087/603/1068 1082/624/1063 1081/631/1062
-f 1088/605/1069 1083/623/1064 1082/624/1063
-f 1082/624/1063 1087/603/1068 1088/605/1069
-f 1089/604/1070 1088/605/1069 1087/603/1068
-f 1087/603/1068 1090/601/1071 1089/604/1070
-f 1090/601/1071 1087/603/1068 1091/602/1072
-f 1091/602/1072 1087/603/1068 1081/631/1062
-f 1091/602/1072 1081/631/1062 1080/630/1061
-f 1092/600/1073 1089/604/1070 1090/601/1071
-f 1085/607/1066 1084/622/1065 1083/623/1064
-f 1083/623/1064 1088/605/1069 1085/607/1066
-f 1086/606/1067 1085/607/1066 1088/605/1069
-f 1088/605/1069 1089/604/1070 1086/606/1067
-f 1029/597/1013 1086/606/1067 1089/604/1070
-f 1089/604/1070 1092/600/1073 1029/597/1013
-f 1028/596/1012 1029/597/1013 1092/600/1073
-f 1092/600/1073 1025/595/1009 1028/596/1012
-f 1025/595/1009 1092/600/1073 1027/587/1011
-f 1090/601/1071 1027/587/1011 1092/600/1073
-f 1027/587/1011 1090/601/1071 1069/627/1050
-f 1091/602/1072 1069/627/1050 1090/601/1071
-f 1069/627/1050 1091/602/1072 1071/582/1052
-f 1080/630/1061 1071/582/1052 1091/602/1072
-f 1071/582/1052 1080/630/1061 1074/579/1055
-f 1035/602/1019 1060/625/1042 1036/603/1020
-f 1035/602/1019 1093/630/1074 1060/625/1042
-f 1093/630/1074 1035/602/1019 1008/582/992
-f 1008/582/992 1005/579/989 1093/630/1074
-f 1003/577/987 1093/630/1074 1005/579/989
-f 1093/630/1074 1003/577/987 1094/632/985
-f 1002/576/986 1094/632/985 1003/577/987
-f 1094/632/985 1002/576/986 1001/575/985
-f 1001/575/985 1095/614/1075 1094/632/985
-f 1095/614/1075 1001/575/985 1096/613/1076
-f 1096/613/1076 1097/615/1077 1095/614/1075
-f 1097/615/1077 1096/613/1076 1098/616/1078
-f 1098/616/1078 1099/617/1079 1097/615/1077
-f 1099/617/1079 1098/616/1078 1100/618/1080
-f 1100/618/1080 1056/612/1038 1099/617/1079
-f 1100/618/1080 1101/619/1081 1056/612/1038
-f 1102/620/1082 1056/612/1038 1101/619/1081
-f 1102/620/1082 1055/621/1027 1056/612/1038
-f 1094/632/985 1060/625/1042 1093/630/1074
-f 1060/625/1042 1094/632/985 1095/614/1075
-f 1059/624/1041 1060/625/1042 1095/614/1075
-f 1059/624/1041 1095/614/1075 1097/615/1077
-f 1097/615/1077 1058/623/1040 1059/624/1041
-f 1058/623/1040 1097/615/1077 1099/617/1079
-f 1099/617/1079 1057/622/1039 1058/623/1040
-f 1057/622/1039 1099/617/1079 1056/612/1038
-f 1103/633/1083 1104/634/1084 1105/635/1085
-f 1105/635/1085 1106/636/1086 1103/633/1083
-f 1106/636/1086 1105/635/1085 1107/637/1087
-f 1107/637/1087 1108/638/1088 1106/636/1086
-f 1109/639/1089 1106/636/1086 1108/638/1088
-f 1108/638/1088 1110/640/1090 1109/639/1089
-f 1111/641/1013 1109/639/1089 1110/640/1090
-f 1111/641/1013 1112/642/1091 1109/639/1089
-f 1112/642/1091 1113/643/1092 1109/639/1089
-f 1112/642/1091 1114/644/1093 1113/643/1092
-f 1114/644/1093 1115/645/1094 1113/643/1092
-f 1103/633/1083 1113/643/1092 1115/645/1094
-f 1115/645/1094 1116/646/1095 1103/633/1083
-f 1104/634/1084 1103/633/1083 1116/646/1095
-f 1116/646/1095 1117/647/1096 1104/634/1084
-f 1118/648/1097 1104/634/1084 1117/647/1096
-f 1117/647/1096 836/649/1098 1118/648/1097
-f 842/650/1099 1118/648/1097 836/649/1098
-f 1113/643/1092 1103/633/1083 1106/636/1086
-f 1106/636/1086 1109/639/1089 1113/643/1092
-f 842/650/1099 840/651/1100 1118/648/1097
-f 1119/652/1101 1118/648/1097 840/651/1100
-f 1119/652/1101 1120/653/1102 1118/648/1097
-f 1120/653/1102 1119/652/1101 1121/654/749
-f 1121/654/749 1122/655/1103 1120/653/1102
-f 1105/635/1085 1120/653/1102 1122/655/1103
-f 1122/655/1103 1107/637/1087 1105/635/1085
-f 1123/656/1104 1121/654/749 1119/652/1101
-f 1124/657/1105 1125/658/1106 1126/659/1107
-f 1127/660/1108 1126/659/1107 1125/658/1106
-f 1126/659/1107 1127/660/1108 1128/661/1109
-f 1129/662/1110 1128/661/1109 1127/660/1108
-f 1128/661/1109 1129/662/1110 1130/659/1111
-f 1131/660/1112 1130/659/1111 1129/662/1110
-f 1130/659/1111 1131/660/1112 1132/657/1113
-f 1133/658/1114 1132/657/1113 1131/660/1112
-f 1132/657/1113 1133/658/1114 1134/663/1115
-f 1135/664/1116 1134/663/1115 1133/658/1114
-f 1134/663/1115 1135/664/1116 1124/657/1105
-f 1125/658/1106 1124/657/1105 1135/664/1116
-f 1135/664/1116 1136/665/1117 1125/658/1106
-f 1137/666/1118 1125/658/1106 1136/665/1117
-f 1125/658/1106 1137/666/1118 1127/660/1108
-f 1138/667/1119 1127/660/1108 1137/666/1118
-f 1127/660/1108 1138/667/1119 1129/662/1110
-f 1139/668/1120 1129/662/1110 1138/667/1119
-f 1129/662/1110 1139/668/1120 1131/660/1112
-f 1140/667/1121 1131/660/1112 1139/668/1120
-f 1131/660/1112 1140/667/1121 1133/658/1114
-f 1141/666/1122 1133/658/1114 1140/667/1121
-f 1133/658/1114 1141/666/1122 1135/664/1116
-f 1136/665/1117 1135/664/1116 1141/666/1122
-f 1142/669/1123 1143/670/1124 1144/671/1125
-f 1145/672/1126 1144/671/1125 1143/670/1124
-f 1144/671/1125 1145/672/1126 1146/673/1127
-f 1147/674/1128 1146/673/1127 1145/672/1126
-f 1146/673/1127 1147/674/1128 1148/675/898
-f 1148/675/898 1149/676/1129 1146/673/1127
-f 1148/675/898 884/651/1130 1149/676/1129
-f 888/650/1131 1149/676/1129 884/651/1130
-f 888/650/1131 858/649/1132 1149/676/1129
-f 1150/677/1133 1149/676/1129 858/649/1132
-f 1149/676/1129 1150/677/1133 1151/678/1134
-f 1152/679/1135 1151/678/1134 1150/677/1133
-f 1151/678/1134 1152/679/1135 1153/680/1136
-f 1154/681/1137 1153/680/1136 1152/679/1135
-f 1153/680/1136 1154/681/1137 1155/682/1138
-f 1156/683/1139 1155/682/1138 1154/681/1137
-f 1156/683/1139 1157/684/1140 1155/682/1138
-f 1157/684/1140 1158/685/1141 1155/682/1138
-f 1159/686/1142 1148/675/898 1147/674/1128
-f 1157/684/1140 1160/687/1023 1158/685/1141
-f 1160/687/1023 1161/688/1143 1158/685/1141
-f 1162/689/1144 1158/685/1141 1161/688/1143
-f 1161/688/1143 1163/690/1145 1162/689/1144
-f 1164/691/1146 1162/689/1144 1163/690/1145
-f 1151/678/1134 1146/673/1127 1149/676/1129
-f 1146/673/1127 1151/678/1134 1144/671/1125
-f 1153/680/1136 1144/671/1125 1151/678/1134
-f 1144/671/1125 1153/680/1136 1142/669/1123
-f 1155/682/1138 1142/669/1123 1153/680/1136
-f 1142/669/1123 1155/682/1138 1158/685/1141
-f 1158/685/1141 1162/689/1144 1142/669/1123
-f 1143/670/1124 1142/669/1123 1162/689/1144
-f 804/439/795 757/438/749 754/435/746
-f 804/439/795 813/449/804 757/438/749
-f 769/448/761 757/438/749 813/449/804
-f 813/449/804 855/457/844 769/448/761
-f 855/457/844 813/449/804 814/456/805
-f 814/456/805 1165/493/1147 855/457/844
-f 1165/493/1147 814/456/805 815/470/806
-f 815/470/806 1166/468/1148 1165/493/1147
-f 1166/468/1148 815/470/806 816/469/807
-f 816/469/807 1167/478/1149 1166/468/1148
-f 1167/478/1149 816/469/807 817/474/808
-f 817/474/808 1168/477/1150 1167/478/1149
-f 1168/477/1150 817/474/808 818/476/809
-f 818/476/809 867/515/669 1168/477/1150
-f 818/476/809 819/477/810 867/515/669
-f 1169/514/1151 867/515/669 819/477/810
-f 819/477/810 821/479/812 1169/514/1151
-f 1170/513/1152 1169/514/1151 821/479/812
-f 1169/514/1151 824/482/815 867/515/669
-f 1169/514/1151 1170/513/1152 824/482/815
-f 825/483/816 824/482/815 1170/513/1152
-f 821/479/812 823/481/814 1170/513/1152
-f 831/489/822 1170/513/1152 823/481/814
-f 1170/513/1152 831/489/822 825/483/816
-f 829/487/820 825/483/816 831/489/822
-f 1171/667/1153 1172/668/1154 1173/660/1155
-f 1173/660/1155 1174/658/1156 1171/667/1153
-f 1174/658/1156 1173/660/1155 1175/657/1157
-f 1175/657/1157 1176/663/1158 1174/658/1156
-f 1177/664/1159 1174/658/1156 1176/663/1158
-f 1176/663/1158 1178/657/1160 1177/664/1159
-f 1179/658/1161 1177/664/1159 1178/657/1160
-f 1178/657/1160 1180/659/1162 1179/658/1161
-f 1181/660/1163 1179/658/1161 1180/659/1162
-f 1180/659/1162 1182/661/1164 1181/660/1163
-f 1183/662/1165 1181/660/1163 1182/661/1164
-f 1182/661/1164 1184/659/1166 1183/662/1165
-f 1173/660/1155 1183/662/1165 1184/659/1166
-f 1184/659/1166 1175/657/1157 1173/660/1155
-f 1183/662/1165 1173/660/1155 1172/668/1154
-f 1172/668/1154 1185/667/1167 1183/662/1165
-f 1181/660/1163 1183/662/1165 1185/667/1167
-f 1185/667/1167 1186/666/1168 1181/660/1163
-f 1179/658/1161 1181/660/1163 1186/666/1168
-f 1186/666/1168 1187/665/1169 1179/658/1161
-f 1177/664/1159 1179/658/1161 1187/665/1169
-f 1187/665/1169 1188/666/1170 1177/664/1159
-f 1174/658/1156 1177/664/1159 1188/666/1170
-f 1188/666/1170 1171/667/1153 1174/658/1156
-f 991/692/1171 1189/693/1172 992/694/1173
-f 1190/695/1174 992/694/1173 1189/693/1172
-f 992/694/1173 1190/695/1174 993/696/1175
-f 1191/697/1176 993/696/1175 1190/695/1174
-f 993/696/1175 1191/697/1176 994/698/1177
-f 1192/699/1177 994/698/1177 1191/697/1176
-f 994/698/1177 1192/699/1177 1193/700/1178
-f 1194/701/1179 1193/700/1178 1192/699/1177
-f 1194/701/1179 1195/702/1180 1193/700/1178
-f 1196/677/1181 1193/700/1178 1195/702/1180
-f 1195/702/1180 1197/703/1182 1196/677/1181
-f 954/704/1183 1196/677/1181 1197/703/1182
-f 1197/703/1182 1198/705/1184 954/704/1183
-f 966/706/1185 954/704/1183 1198/705/1184
-f 695/397/1186 1199/707/1187 1200/708/1188
-f 1201/709/1187 1200/708/1188 1199/707/1187
-f 1199/707/1187 1202/710/1189 1201/709/1187
-f 1203/711/1190 1201/709/1187 1202/710/1189
-f 1202/710/1189 1204/712/1191 1203/711/1190
-f 1205/713/1192 1203/711/1190 1204/712/1191
-f 1204/712/1191 1206/714/1193 1205/713/1192
-f 1207/715/1194 1205/713/1192 1206/714/1193
-f 1207/715/1194 1206/714/1193 1208/716/1195
-f 1209/717/1196 1208/716/1195 1206/714/1193
-f 1208/716/1195 1209/717/1196 1210/718/1197
-f 1211/719/1198 1210/718/1197 1209/717/1196
-f 1211/719/1198 1212/720/1199 1210/718/1197
-f 1213/721/1200 1210/718/1197 1212/720/1199
-f 1213/721/1200 1214/722/1201 1210/718/1197
-f 1208/716/1195 1210/718/1197 1214/722/1201
-f 1215/723/1202 1216/724/1202 1217/415/1203
-f 1218/724/1204 1217/415/1203 1216/724/1202
-f 1217/415/1203 1218/724/1204 1219/725/1205
-f 1219/725/1205 1218/724/1204 1220/726/1206
-f 1218/724/1204 1221/409/1207 1220/726/1206
-f 1220/726/1206 1221/409/1207 1222/727/1208
-f 1223/405/1208 1222/727/1208 1221/409/1207
-f 960/382/946 995/388/979 958/537/944
-f 995/388/979 956/558/942 958/537/944
-f 956/558/942 995/388/979 1196/728/1209
-f 1196/728/1209 954/541/940 956/558/942
-f 1193/729/1210 995/388/979 994/554/978
-f 1193/729/1210 1196/728/1209 995/388/979
-f 1224/730/1211 1225/391/624 1226/730/1211
-f 1227/391/624 1226/730/1211 1225/391/624
-f 1225/391/624 1228/374/623 1227/391/624
-f 1229/374/623 1227/391/624 1228/374/623
-f 1228/374/623 1230/731/1211 1229/374/623
-f 1231/731/1211 1229/374/623 1230/731/1211
-f 1232/728/1212 930/539/915 932/541/917
-f 930/539/915 1232/728/1212 945/388/931
-f 1233/729/1213 945/388/931 1232/728/1212
-f 1233/729/1213 944/554/930 945/388/931
-f 972/732/1214 1212/720/1214 932/733/1215
-f 1211/719/1216 932/733/1215 1212/720/1214
-f 932/733/1215 1211/719/1216 1232/734/1217
-f 1209/717/1218 1232/734/1217 1211/719/1216
-f 1232/734/1217 1209/717/1218 1233/735/1219
-f 1206/714/1220 1233/735/1219 1209/717/1218
-f 1206/714/1220 1204/712/1221 1233/735/1219
-f 944/736/1222 1233/735/1219 1204/712/1221
-f 1204/712/1221 1202/710/1223 944/736/1222
-f 943/737/1224 944/736/1222 1202/710/1223
-f 1202/710/1223 1199/707/1225 943/737/1224
-f 942/738/1226 943/737/1224 1199/707/1225
-f 1199/707/1225 695/397/1227 942/738/1226
-f 694/396/1228 942/738/1226 695/397/1227
-f 1096/613/1076 1001/575/985 1000/574/984
-f 1000/574/984 1098/616/1078 1096/613/1076
-f 1098/616/1078 1000/574/984 999/573/983
-f 999/573/983 1100/618/1080 1098/616/1078
-f 999/573/983 998/572/982 1100/618/1080
-f 1101/619/1081 1100/618/1080 998/572/982
-f 1178/739/1229 1176/740/1229 1180/741/1229
-f 1176/740/1229 1184/742/1229 1180/741/1229
-f 1175/743/1229 1184/742/1229 1176/740/1229
-f 1180/741/1229 1184/742/1229 1182/744/1229
-f 1132/743/1230 1134/740/1230 1130/742/1230
-f 1134/740/1230 1126/741/1230 1130/742/1230
-f 1124/739/1230 1126/741/1230 1134/740/1230
-f 1130/742/1230 1126/741/1230 1128/744/1230
-f 857/502/846 855/457/844 1165/493/1147
-f 1165/493/1147 859/492/848 857/502/846
-f 859/492/848 1165/493/1147 1166/468/1148
-f 1166/468/1148 861/480/850 859/492/848
-f 861/480/850 1166/468/1148 1167/478/1149
-f 1167/478/1149 863/479/852 861/480/850
-f 863/479/852 1167/478/1149 1168/477/1150
-f 1168/477/1150 865/514/854 863/479/852
-f 865/514/854 1168/477/1150 867/515/669
-f 1234/745/1231 1235/746/1232 1236/747/1233
-f 1237/748/1234 1236/747/1233 1235/746/1232
-f 1236/747/1233 1237/748/1234 1238/749/1235
-f 1239/750/1236 1238/749/1235 1237/748/1234
-f 1237/748/1234 1240/751/1237 1239/750/1236
-f 1241/752/1238 1239/750/1236 1240/751/1237
-f 1240/751/1237 1242/753/670 1241/752/1238
-f 1243/754/1239 1241/752/1238 1242/753/670
-f 1242/753/670 1244/755/1240 1243/754/1239
-f 1245/756/1241 1243/754/1239 1244/755/1240
-f 1244/755/1240 1246/757/1242 1245/756/1241
-f 1244/755/1240 1247/758/1243 1246/757/1242
-f 1248/759/1244 1246/757/1242 1247/758/1243
-f 1247/758/1243 1249/760/1245 1248/759/1244
-f 1250/761/1246 1248/759/1244 1249/760/1245
-f 1249/760/1245 1251/762/1247 1250/761/1246
-f 1252/763/1248 1250/761/1246 1251/762/1247
-f 1252/763/1248 1251/762/1247 1253/764/1249
-f 1249/760/1245 1254/765/1250 1251/762/1247
-f 1247/758/1243 1255/766/1251 1249/760/1245
-f 1254/765/1250 1249/760/1245 1255/766/1251
-f 1255/766/1251 1256/767/1252 1254/765/1250
-f 1244/755/1240 1242/753/670 1247/758/1243
-f 1255/766/1251 1247/758/1243 1242/753/670
-f 1242/753/670 1240/751/1237 1255/766/1251
-f 1256/767/1252 1255/766/1251 1240/751/1237
-f 1240/751/1237 1237/748/1234 1256/767/1252
-f 1235/746/1232 1256/767/1252 1237/748/1234
-f 1256/767/1252 1235/746/1232 1257/768/1253
-f 1257/768/1253 1254/765/1250 1256/767/1252
-f 1254/765/1250 1257/768/1253 1258/769/672
-f 1258/769/672 1251/762/1247 1254/765/1250
-f 1251/762/1247 1258/769/672 1259/770/1254
-f 1259/770/1254 1253/764/1249 1251/762/1247
-f 1259/770/1254 1260/762/1255 1253/764/1249
-f 1261/763/1256 1253/764/1249 1260/762/1255
-f 1261/763/1256 1260/762/1255 1262/761/1257
-f 1262/761/1257 1263/771/1258 1261/763/1256
-f 1263/771/1258 1262/761/1257 1264/772/1259
-f 1264/772/1259 1265/773/1260 1263/771/1258
-f 1266/774/1261 1259/770/1254 1258/769/672
-f 1267/775/1262 1257/768/1253 1235/746/1232
-f 1257/768/1253 1267/775/1262 1268/776/1263
-f 1268/776/1263 1258/769/672 1257/768/1253
-f 1258/769/672 1268/776/1263 1266/774/1261
-f 1269/777/1254 1266/774/1261 1268/776/1263
-f 1269/777/1254 1270/776/1264 1266/774/1261
-f 1271/769/1265 1266/774/1261 1270/776/1264
-f 1266/774/1261 1271/769/1265 1259/770/1254
-f 1260/762/1255 1259/770/1254 1271/769/1265
-f 1272/778/1266 1268/776/1263 1267/775/1262
-f 700/779/1267 702/780/1268 1272/778/1266
-f 703/781/1269 1272/778/1266 702/780/1268
-f 703/781/1269 705/782/1270 1272/778/1266
-f 705/782/1270 708/781/1271 1273/778/1272
-f 708/781/1271 710/780/1273 1273/778/1272
-f 711/779/1274 1273/778/1272 710/780/1273
-f 1274/745/1275 1275/747/1276 1276/746/1277
-f 1277/748/1278 1276/746/1277 1275/747/1276
-f 1276/746/1277 1277/748/1278 1278/767/1279
-f 1279/751/1280 1278/767/1279 1277/748/1278
-f 1278/767/1279 1279/751/1280 1280/766/1281
-f 1281/753/1282 1280/766/1281 1279/751/1280
-f 1280/766/1281 1281/753/1282 1282/758/1283
-f 1283/783/1284 1282/758/1283 1281/753/1282
-f 1283/783/1284 1284/757/1285 1282/758/1283
-f 1285/759/1285 1282/758/1283 1284/757/1285
-f 1284/757/1285 1286/784/1286 1285/759/1285
-f 1264/772/1259 1285/759/1285 1286/784/1286
-f 1285/759/1285 1264/772/1259 1262/761/1257
-f 1262/761/1257 1287/760/1287 1285/759/1285
-f 1287/760/1287 1262/761/1257 1260/762/1255
-f 1287/760/1287 1260/762/1255 1288/765/1277
-f 1271/769/1265 1288/765/1277 1260/762/1255
-f 1288/765/1277 1271/769/1265 1289/768/1288
-f 1270/776/1264 1289/768/1288 1271/769/1265
-f 1289/768/1288 1270/776/1264 1290/775/1289
-f 1273/778/1272 1290/775/1289 1270/776/1264
-f 1290/775/1289 1276/746/1277 1289/768/1288
-f 1278/767/1279 1289/768/1288 1276/746/1277
-f 1289/768/1288 1278/767/1279 1288/765/1277
-f 1280/766/1281 1288/765/1277 1278/767/1279
-f 1288/765/1277 1280/766/1281 1287/760/1287
-f 1282/758/1283 1287/760/1287 1280/766/1281
-f 1282/758/1283 1285/759/1285 1287/760/1287
-f 1253/764/1249 1291/785/1290 1252/763/1248
-f 1253/764/1249 1261/763/1256 1291/785/1290
-f 1292/786/1291 1291/785/1290 1261/763/1256
-f 1292/786/1291 1261/763/1256 1263/771/1258
-f 1292/786/1291 1263/771/1258 971/787/1292
-f 1265/773/1260 971/787/1292 1263/771/1258
-f 971/787/1292 1265/773/1260 972/787/1293
-f 1212/788/1294 972/787/1293 1265/773/1260
-f 1264/772/1259 1212/788/1294 1265/773/1260
-f 1212/788/1294 1264/772/1259 1213/789/1295
-f 1264/772/1259 1286/784/1286 1213/789/1295
-f 1214/790/1296 1213/789/1295 1286/784/1286
-f 1293/791/1297 1245/756/1241 1246/757/1242
-f 1293/791/1297 1246/757/1242 1294/784/1298
-f 1246/757/1242 1248/759/1244 1294/784/1298
-f 1295/792/1299 1294/784/1298 1248/759/1244
-f 1248/759/1244 1250/761/1246 1295/792/1299
-f 1296/771/1300 1295/792/1299 1250/761/1246
-f 1250/761/1246 1252/763/1248 1296/771/1300
-f 1297/786/1301 1296/771/1300 1252/763/1248
-f 1297/786/1301 1252/763/1248 1291/785/1290
-f 1291/785/1290 969/793/1302 1297/786/1301
-f 1291/785/1290 1292/786/1291 969/793/1302
-f 973/794/1303 969/793/1302 1292/786/1291
-f 1292/786/1291 971/787/1292 973/794/1303
-f 1298/773/1304 1295/792/1299 1296/771/1300
-f 1299/795/1305 1293/791/1297 1300/790/1306
-f 1294/784/1298 1300/790/1306 1293/791/1297
-f 1300/790/1306 1294/784/1298 1301/789/1307
-f 1295/792/1299 1301/789/1307 1294/784/1298
-f 1295/792/1299 1198/788/1308 1301/789/1307
-f 1198/788/1308 1295/792/1299 1298/773/1304
-f 1198/788/1308 1298/773/1304 966/787/1309
-f 967/796/1310 966/787/1309 1298/773/1304
-f 1298/773/1304 1296/771/1300 967/796/1310
-f 1297/786/1301 967/796/1310 1296/771/1300
-f 967/796/1310 1297/786/1301 968/794/1311
-f 968/794/1311 1297/786/1301 969/793/1302
-f 1268/776/1312 1272/778/1313 1269/777/1314
-f 705/782/1315 1269/777/1314 1272/778/1313
-f 705/782/1315 1273/778/1316 1269/777/1314
-f 1270/776/1317 1269/777/1314 1273/778/1316
-f 1235/746/1318 1234/745/1319 1267/775/1320
-f 700/779/1321 1267/775/1320 1234/745/1319
-f 700/779/1321 1272/778/1313 1267/775/1320
-f 1273/778/1316 711/779/1322 1290/775/1323
-f 711/779/1322 1274/745/1324 1290/775/1323
-f 1276/746/1325 1290/775/1323 1274/745/1324
-f 1120/653/1102 1105/635/1085 1104/634/1084
-f 1104/634/1084 1118/648/1097 1120/653/1102
-f 1192/699/1326 1302/797/1327 1194/701/897
-f 1303/798/649 1194/701/897 1302/797/1327
-f 1302/797/1327 1304/799/1328 1303/798/649
-f 1305/800/1329 1303/798/649 1304/799/1328
-f 1303/798/649 1305/800/1329 1306/801/1330
-f 1307/802/1331 1306/801/1330 1305/800/1329
-f 1306/801/1330 1307/802/1331 1308/803/1332
-f 1308/803/1332 1307/802/1331 1301/804/1333
-f 1301/804/1333 1198/705/1334 1308/803/1332
-f 1197/703/1335 1308/803/1332 1198/705/1334
-f 1197/703/1335 1195/702/1336 1308/803/1332
-f 1306/801/1330 1308/803/1332 1195/702/1336
-f 1195/702/1336 1194/701/897 1306/801/1330
-f 1303/798/649 1306/801/1330 1194/701/897
-f 1299/805/1337 1300/806/1338 1307/802/1331
-f 1307/802/1331 1300/806/1338 1301/804/1333
-f 1304/799/1328 1302/797/1327 1309/807/1339
-f 1310/808/1340 1309/807/1339 1302/797/1327
-f 1302/797/1327 1192/699/1326 1310/808/1340
-f 1191/697/1341 1310/808/1340 1192/699/1326
-f 1310/808/1340 1191/697/1341 1311/809/1342
-f 1190/695/1343 1311/809/1342 1191/697/1341
-f 1311/809/1342 1190/695/1343 1312/810/1344
-f 1189/693/1345 1312/810/1344 1190/695/1343
-f 1312/810/1344 1313/811/1346 1311/809/1342
-f 1314/812/1346 1311/809/1342 1313/811/1346
-f 1311/809/1342 1314/812/1346 1310/808/1340
-f 1309/807/1339 1310/808/1340 1314/812/1346
-f 1315/813/1347 1316/402/1347 1215/725/1347
-f 1216/814/1347 1215/725/1347 1316/402/1347
-f 1317/723/1348 1318/724/1348 1319/415/1349
-f 1320/724/1350 1319/415/1349 1318/724/1348
-f 1319/415/1349 1320/724/1350 1321/725/1351
-f 1321/725/1351 1320/724/1350 1322/726/1352
-f 1320/724/1350 1323/409/1353 1322/726/1352
-f 1322/726/1352 1323/409/1353 1315/727/1354
-f 1316/405/1354 1315/727/1354 1323/409/1353
-f 1222/404/1355 1223/416/1355 1317/814/1355
-f 1318/725/1355 1317/814/1355 1223/416/1355
-f 1324/815/1356 1325/816/1356 1326/817/1357
-f 1327/818/1358 1326/817/1357 1325/816/1356
-f 1326/817/1357 1327/818/1358 1328/819/1359
-f 1329/820/1360 1328/819/1359 1327/818/1358
-f 1328/819/1359 1329/820/1360 1330/821/1361
-f 1331/822/1361 1330/821/1361 1329/820/1360
-f 1332/823/1362 1333/824/1363 1334/825/1362
-f 1335/826/1364 1334/825/1362 1333/824/1363
-f 1333/824/1363 1336/827/1365 1335/826/1364
-f 1337/828/1366 1335/826/1364 1336/827/1365
-f 1336/827/1365 1338/829/1367 1337/828/1366
-f 1339/830/1367 1337/828/1366 1338/829/1367
-f 1339/831/1368 1338/832/1368 1324/833/1368
-f 1325/834/1368 1324/833/1368 1338/832/1368
-f 1338/829/1369 1336/827/1369 1325/816/1369
-f 1327/818/1369 1325/816/1369 1336/827/1369
-f 1336/827/1369 1333/824/1369 1327/818/1369
-f 1329/820/1369 1327/818/1369 1333/824/1369
-f 1333/824/1369 1332/823/1369 1329/820/1369
-f 1331/822/1369 1329/820/1369 1332/823/1369
-f 1332/832/1370 1334/831/1370 1331/834/1370
-f 1330/833/1370 1331/834/1370 1334/831/1370
-f 1340/668/1154 1341/667/1167 1342/662/1165
-f 1342/662/1165 1343/660/1155 1340/668/1154
-f 1343/660/1155 1342/662/1165 1344/659/1166
-f 1344/659/1166 1345/657/1157 1343/660/1155
-f 1346/658/1156 1343/660/1155 1345/657/1157
-f 1345/657/1157 1347/663/1158 1346/658/1156
-f 1348/664/1159 1346/658/1156 1347/663/1158
-f 1347/663/1158 1349/657/1160 1348/664/1159
-f 1350/658/1161 1348/664/1159 1349/657/1160
-f 1349/657/1160 1351/659/1162 1350/658/1161
-f 1352/660/1163 1350/658/1161 1351/659/1162
-f 1351/659/1162 1353/661/1164 1352/660/1163
-f 1342/662/1165 1352/660/1163 1353/661/1164
-f 1353/661/1164 1344/659/1166 1342/662/1165
-f 1352/660/1163 1342/662/1165 1341/667/1167
-f 1341/667/1167 1354/666/1168 1352/660/1163
-f 1350/658/1161 1352/660/1163 1354/666/1168
-f 1354/666/1168 1355/665/1169 1350/658/1161
-f 1348/664/1159 1350/658/1161 1355/665/1169
-f 1355/665/1169 1356/666/1170 1348/664/1159
-f 1346/658/1156 1348/664/1159 1356/666/1170
-f 1356/666/1170 1357/667/1153 1346/658/1156
-f 1343/660/1155 1346/658/1156 1357/667/1153
-f 1357/667/1153 1340/668/1154 1343/660/1155
-f 1349/739/1229 1347/740/1229 1351/741/1229
-f 1347/740/1229 1344/742/1229 1351/741/1229
-f 1345/743/1229 1344/742/1229 1347/740/1229
-f 1351/741/1229 1344/742/1229 1353/744/1229
-f 1358/731/1119 1359/374/1371 1360/835/1372
-f 1361/392/1371 1360/835/1372 1359/374/1371
-f 1360/731/1373 1361/374/1374 1362/835/838
-f 1363/392/1375 1362/835/838 1361/374/1374
-f 1362/731/1376 1363/374/1377 1364/835/1376
-f 1365/392/1378 1364/835/1376 1363/374/1377
-f 1364/731/1379 1365/374/1380 1358/835/1379
-f 1359/392/1381 1358/835/1379 1365/374/1380
-f 1366/392/1382 1367/374/1382 1368/835/1383
-f 1369/731/1119 1368/835/1383 1367/374/1382
-f 1370/392/1384 1366/374/1384 1371/835/867
-f 1368/731/867 1371/835/867 1366/374/1384
-f 1372/392/1385 1370/374/1385 1373/835/1386
-f 1371/731/1376 1373/835/1386 1370/374/1385
-f 1367/392/1387 1372/374/1387 1369/835/1388
-f 1373/731/1389 1369/835/1388 1372/374/1387
-f 904/836/1390 917/837/1390 906/836/1390
-f 917/837/1390 898/836/1390 906/836/1390
-f 898/836/1390 902/836/1390 906/836/1390
-f 906/836/1390 902/836/1390 910/836/1390
-f 918/835/1390 826/731/1390 913/835/1390
-f 913/835/1390 826/731/1390 914/393/1390
-f 914/393/1390 826/731/1390 845/838/1390
-f 916/837/1390 914/393/1390 845/838/1390
-f 847/837/1390 916/837/1390 845/838/1390
-f 916/837/1390 847/837/1390 917/837/1390
-f 847/837/1390 898/836/1390 917/837/1390
-f 849/837/1390 898/836/1390 847/837/1390
-f 915/839/1390 914/393/1390 916/837/1390
-f 912/840/1390 913/835/1390 914/393/1390
-f 1374/550/1391 1375/841/1391 1376/550/1391
-f 1377/841/1391 1376/550/1391 1375/841/1391
-f 1376/415/1392 1377/724/1392 1378/416/1392
-f 1379/404/1392 1378/416/1392 1377/724/1392
-f 1378/416/1393 1379/404/1393 1380/727/1393
-f 1381/405/1393 1380/727/1393 1379/404/1393
-f 1382/415/1394 1383/724/1394 1384/725/1394
-f 1385/814/1394 1384/725/1394 1383/724/1394
-f 1384/725/1395 1385/814/1395 1374/727/1395
-f 1375/405/1395 1374/727/1395 1385/814/1395
-f 1377/842/1396 1375/842/1396 1379/726/1396
-f 1385/727/1396 1379/726/1396 1375/842/1396
-f 1385/727/1396 1383/405/1396 1379/726/1396
-f 1381/404/1396 1379/726/1396 1383/405/1396
-f 1380/404/1397 1382/405/1397 1378/726/1397
-f 1384/727/1397 1378/726/1397 1382/405/1397
-f 1384/727/1397 1374/842/1397 1378/726/1397
-f 1376/843/1397 1378/726/1397 1374/842/1397
-f 734/414/726 1386/431/1398 732/426/724
-f 1387/430/1399 732/426/724 1386/431/1398
-f 732/426/724 1387/430/1399 736/427/728
-f 1388/429/1400 736/427/728 1387/430/1399
-f 736/427/728 1388/429/1400 738/422/730
-f 741/428/733 738/422/730 1388/429/1400
-f 741/428/733 1388/429/1400 1389/844/1401
-f 741/428/733 1389/844/1401 742/429/734
-f 743/430/735 742/429/734 1389/844/1401
-f 1389/844/1401 1390/845/1402 743/430/735
-f 744/431/736 743/430/735 1390/845/1402
-f 744/431/736 1390/845/1402 745/432/737
-f 1391/846/1403 745/432/737 1390/845/1402
-f 1391/846/1403 773/450/765 745/432/737
-f 1391/846/1403 768/432/760 773/450/765
-f 767/447/759 773/450/765 768/432/760
-f 1387/430/1399 1389/844/1401 1388/429/1400
-f 1389/844/1401 1387/430/1399 1390/845/1402
-f 1386/431/1398 1390/845/1402 1387/430/1399
-f 1386/431/1398 768/432/760 1390/845/1402
-f 1386/431/1398 734/414/726 768/432/760
-f 1391/846/1403 1390/845/1402 768/432/760
-f 706/408/1404 721/417/1404 707/406/1404
-f 752/417/1404 706/408/1404 704/406/1404
-f 693/847/1405 695/848/1405 711/849/1405
-f 1274/850/1406 711/849/1406 695/848/1406
-f 858/851/1407 1392/852/1408 1150/853/1409
-f 858/851/1407 860/854/1410 1392/852/1408
-f 1393/855/1411 1392/852/1408 860/854/1410
-f 860/854/1410 870/856/1412 1393/855/1411
-f 1394/857/1413 1393/855/1411 870/856/1412
-f 1393/855/1411 1394/857/1413 1395/858/1205
-f 1396/859/1414 1395/858/1205 1394/857/1413
-f 1396/859/1414 1397/860/1415 1395/858/1205
-f 1398/861/1416 1395/858/1205 1397/860/1415
-f 1397/860/1415 1399/862/1417 1398/861/1416
-f 1400/863/1416 1398/861/1416 1399/862/1417
-f 1399/862/1417 1401/864/658 1400/863/1416
-f 1402/865/1418 1400/863/1416 1401/864/658
-f 1401/864/658 1161/866/1419 1402/865/1418
-f 1160/867/1420 1402/865/1418 1161/866/1419
-f 1402/865/1418 1160/867/1420 1157/868/1421
-f 1157/868/1421 1403/869/1422 1402/865/1418
-f 1403/869/1422 1157/868/1421 1156/870/1423
-f 1395/858/1205 1398/861/1416 1404/871/1424
-f 1405/872/1425 1404/871/1424 1398/861/1416
-f 1398/861/1416 1400/863/1416 1405/872/1425
-f 1403/869/1422 1405/872/1425 1400/863/1416
-f 1400/863/1416 1402/865/1418 1403/869/1422
-f 1156/870/1423 1154/873/1426 1403/869/1422
-f 1405/872/1425 1403/869/1422 1154/873/1426
-f 1154/873/1426 1152/874/1427 1405/872/1425
-f 1404/871/1424 1405/872/1425 1152/874/1427
-f 1152/874/1427 1150/853/1409 1404/871/1424
-f 1392/852/1408 1404/871/1424 1150/853/1409
-f 1404/871/1424 1392/852/1408 1395/858/1205
-f 1393/855/1411 1395/858/1205 1392/852/1408
-f 884/651/1428 1148/675/1428 872/875/1428
-f 1159/686/1428 872/875/1428 1148/675/1428
-f 949/555/1429 948/557/1430 1077/583/1431
-f 1406/876/1432 1077/583/1431 948/557/1430
-f 1406/876/1432 948/557/1430 1009/583/1433
-f 946/555/1434 1009/583/1433 948/557/1430
-f 1200/877/1435 1275/877/1435 695/878/1435
-f 1274/878/1436 695/878/1436 1275/877/1436
-f 870/856/1437 872/879/1437 1394/857/1437
-f 1159/857/1438 1394/857/1438 872/879/1438
-f 1011/830/1439 1013/829/1439 1010/880/1439
-f 1013/829/1439 1021/881/1439 1010/880/1439
-f 1017/882/1439 1021/881/1439 1013/829/1439
-f 1019/883/1439 1021/881/1439 1017/882/1439
-f 1015/884/1440 1017/882/1440 1013/829/1440
-f 1022/885/1441 1024/886/1441 1021/881/1441
-f 1024/886/1441 1068/887/1441 1021/881/1441
-f 1068/887/1441 1072/888/1441 1021/881/1441
-f 1070/889/1441 1072/888/1441 1068/887/1441
-f 1026/890/1441 1068/887/1441 1024/886/1441
-f 1021/881/1442 1072/888/1442 1010/880/1442
-f 1407/891/1443 1408/892/1444 1409/893/1445
-f 1407/891/1443 1409/893/1445 1110/866/1446
-f 1410/864/1447 1110/866/1446 1409/893/1445
-f 1410/864/1447 1411/865/1448 1110/866/1446
-f 1411/865/1448 1410/864/1447 1412/894/1449
-f 1412/894/1449 1413/869/1450 1411/865/1448
-f 1413/869/1450 1412/894/1449 1414/872/1451
-f 1414/872/1451 1115/873/1452 1413/869/1450
-f 1115/873/1452 1414/872/1451 1116/874/1453
-f 1415/871/1454 1116/874/1453 1414/872/1451
-f 1116/874/1453 1415/871/1454 1117/853/1455
-f 1416/852/1456 1117/853/1455 1415/871/1454
-f 1416/852/1456 836/851/1457 1117/853/1455
-f 836/851/1457 1416/852/1456 833/854/1458
-f 1417/855/1459 833/854/1458 1416/852/1456
-f 833/854/1458 1417/855/1459 832/856/1460
-f 1418/857/1461 832/856/1460 1417/855/1459
-f 1417/855/1459 1419/858/733 1418/857/1461
-f 1420/861/1462 1414/872/1451 1412/894/1449
-f 1414/872/1451 1420/861/1462 1415/871/1454
-f 1419/858/733 1415/871/1454 1420/861/1462
-f 1415/871/1454 1419/858/733 1416/852/1456
-f 1417/855/1459 1416/852/1456 1419/858/733
-f 1421/859/1302 1418/857/1461 1419/858/733
-f 1421/859/1302 1419/858/733 1422/860/1463
-f 1420/861/1462 1422/860/1463 1419/858/733
-f 1422/860/1463 1420/861/1462 1423/895/1464
-f 1412/894/1449 1423/895/1464 1420/861/1462
-f 1423/895/1464 1412/894/1449 1410/864/1447
-f 1114/870/1465 1413/869/1450 1115/873/1452
-f 1112/868/1466 1413/869/1450 1114/870/1465
-f 1112/868/1466 1411/865/1448 1413/869/1450
-f 1111/867/1467 1411/865/1448 1112/868/1466
-f 1111/867/1467 1110/866/1446 1411/865/1448
-f 1110/640/1090 1108/638/1088 1407/896/1468
-f 1408/897/1469 1407/896/1468 1108/638/1088
-f 991/692/1470 697/898/1470 1189/693/1470
-f 845/838/1390 826/731/1390 828/394/1390
-f 826/731/1390 827/899/1390 828/394/1390
-f 1007/900/766 1010/900/766 1073/901/766
-f 1072/901/766 1073/901/766 1010/900/766
-f 1234/902/1471 1189/903/1471 700/904/1471
-f 697/905/1472 700/904/1472 1189/903/1472
-f 1123/656/1473 1119/652/1473 838/875/1473
-f 840/651/1473 838/875/1473 1119/652/1473
-f 1424/906/1474 1425/907/1474 1426/908/1474
-f 1426/908/1475 1425/907/1475 1427/541/1475
-f 1425/907/1474 1428/909/1474 1427/541/1474
-f 1428/909/1475 1429/910/1475 1427/541/1475
-f 1313/911/1476 1312/912/1476 1238/913/1476
-f 1236/914/1476 1238/913/1476 1312/912/1476
-f 1234/914/1477 1236/914/1477 1189/912/1477
-f 1312/912/1478 1189/912/1478 1236/914/1478
-f 838/879/1479 832/856/1479 1123/857/1479
-f 1418/857/1480 1123/857/1480 832/856/1480
-f 1216/915/1442 1316/916/1442 1218/917/1442
-f 1323/918/1474 1320/919/1474 1316/916/1474
-f 1316/916/1475 1320/919/1475 1218/917/1475
-f 1223/920/1442 1221/921/1442 1318/922/1442
-f 1318/922/1439 1221/921/1439 1320/919/1439
-f 1320/919/1475 1221/921/1475 1218/917/1475
-f 1430/814/1481 1431/405/1481 1432/725/1481
-f 1433/406/1481 1432/725/1481 1431/405/1481
-f 1434/438/1482 1435/923/1482 1436/924/1482
-f 1437/925/1482 1436/924/1482 1435/923/1482
-f 1438/926/1483 1436/924/1483 1439/927/1483
-f 1437/925/1483 1439/927/1483 1436/924/1483
-f 1440/928/1484 1441/929/1484 1442/930/1484
-f 1441/929/1485 1438/926/1485 1442/930/1485
-f 1442/930/1485 1438/926/1485 1439/927/1485
-f 1007/931/1486 1443/931/1487 1006/931/1488
-f 1443/931/1487 1007/931/1486 1444/932/1489
-f 1073/932/1490 1444/932/1489 1007/931/1486
-f 1444/932/1489 1073/932/1490 1445/901/1491
-f 1075/901/1492 1445/901/1491 1073/932/1490
-f 1445/901/1491 1075/901/1492 1446/901/1493
-f 1077/901/1494 1446/901/1493 1075/901/1492
-f 1447/901/1495 1446/901/1493 1077/901/1494
-f 1406/901/1496 1447/901/1495 1077/901/1494
-f 1009/901/1497 1447/901/1495 1406/901/1496
-f 1447/901/1495 1009/901/1497 1448/931/1498
-f 1006/931/1488 1448/931/1498 1009/901/1497
-f 1448/931/1498 1006/931/1488 1443/931/1487
-f 1443/814/1499 1429/725/1499 1448/724/1499
-f 1428/415/1499 1448/724/1499 1429/725/1499
-f 1444/723/1500 1427/724/1500 1443/727/1500
-f 1429/405/1500 1443/727/1500 1427/724/1500
-f 1445/813/1501 1426/402/1501 1444/416/1501
-f 1427/404/1501 1444/416/1501 1426/402/1501
-f 1448/723/1502 1428/724/1502 1447/813/1503
-f 1425/402/1504 1447/813/1503 1428/724/1502
-f 1447/813/1503 1425/402/1504 1446/726/1505
-f 1424/404/1352 1446/726/1505 1425/402/1504
-f 1446/726/1505 1424/404/1352 1445/727/1506
-f 1426/409/1506 1445/727/1506 1424/404/1352
-f 706/408/1507 1219/417/1507 721/417/1508
-f 1219/417/1507 706/408/1507 1217/417/1509
-f 752/417/1510 1217/417/1509 706/408/1507
-f 1217/417/1509 752/417/1510 1215/419/1511
-f 753/419/1512 1215/419/1511 752/417/1510
-f 1215/419/1511 753/419/1512 1315/421/1513
-f 739/421/1514 1315/421/1513 753/419/1512
-f 1315/421/1513 739/421/1514 1322/423/1515
-f 740/423/1516 1322/423/1515 739/421/1514
-f 1322/423/1515 740/423/1516 1321/423/1517
-f 728/424/1517 1321/423/1517 740/423/1516
-f 1321/423/1517 728/424/1517 1319/423/1518
-f 727/423/1519 1319/423/1518 728/424/1517
-f 1319/423/1518 727/423/1519 1317/421/1520
-f 725/421/1521 1317/421/1520 727/423/1519
-f 1317/421/1520 725/421/1521 1222/419/1522
-f 723/419/1523 1222/419/1522 725/421/1521
-f 1222/419/1522 723/419/1523 1220/417/1524
-f 721/417/1508 1220/417/1524 723/419/1523
-f 1220/417/1524 721/417/1508 1219/417/1507
-f 1449/668/1154 1450/667/1167 1451/662/1165
-f 1451/662/1165 1452/660/1155 1449/668/1154
-f 1452/660/1155 1451/662/1165 1453/659/1166
-f 1453/659/1166 1454/657/1157 1452/660/1155
-f 1455/658/1156 1452/660/1155 1454/657/1157
-f 1454/657/1157 1456/663/1158 1455/658/1156
-f 1457/664/1159 1455/658/1156 1456/663/1158
-f 1456/663/1158 1458/657/1160 1457/664/1159
-f 1459/658/1161 1457/664/1159 1458/657/1160
-f 1458/657/1160 1460/659/1162 1459/658/1161
-f 1461/660/1163 1459/658/1161 1460/659/1162
-f 1460/659/1162 1462/661/1164 1461/660/1163
-f 1451/662/1165 1461/660/1163 1462/661/1164
-f 1462/661/1164 1453/659/1166 1451/662/1165
-f 1461/660/1163 1451/662/1165 1450/667/1167
-f 1450/667/1167 1463/666/1168 1461/660/1163
-f 1459/658/1161 1461/660/1163 1463/666/1168
-f 1463/666/1168 1464/665/1169 1459/658/1161
-f 1457/664/1159 1459/658/1161 1464/665/1169
-f 1464/665/1169 1465/666/1170 1457/664/1159
-f 1455/658/1156 1457/664/1159 1465/666/1170
-f 1465/666/1170 1466/667/1153 1455/658/1156
-f 1452/660/1155 1455/658/1156 1466/667/1153
-f 1466/667/1153 1449/668/1154 1452/660/1155
-f 1458/739/1229 1456/740/1229 1460/741/1229
-f 1456/740/1229 1453/742/1229 1460/741/1229
-f 1454/743/1229 1453/742/1229 1456/740/1229
-f 1460/741/1229 1453/742/1229 1462/744/1229
-f 1467/668/1154 1468/667/1167 1469/662/1165
-f 1469/662/1165 1470/660/1155 1467/668/1154
-f 1470/660/1155 1469/662/1165 1471/659/1166
-f 1471/659/1166 1472/657/1157 1470/660/1155
-f 1473/658/1156 1470/660/1155 1472/657/1157
-f 1472/657/1157 1474/663/1158 1473/658/1156
-f 1475/664/1159 1473/658/1156 1474/663/1158
-f 1474/663/1158 1476/657/1160 1475/664/1159
-f 1477/658/1161 1475/664/1159 1476/657/1160
-f 1476/657/1160 1478/659/1162 1477/658/1161
-f 1479/660/1163 1477/658/1161 1478/659/1162
-f 1478/659/1162 1480/661/1164 1479/660/1163
-f 1469/662/1165 1479/660/1163 1480/661/1164
-f 1480/661/1164 1471/659/1166 1469/662/1165
-f 1479/660/1163 1469/662/1165 1468/667/1167
-f 1468/667/1167 1481/666/1168 1479/660/1163
-f 1477/658/1161 1479/660/1163 1481/666/1168
-f 1481/666/1168 1482/665/1169 1477/658/1161
-f 1475/664/1159 1477/658/1161 1482/665/1169
-f 1482/665/1169 1483/666/1170 1475/664/1159
-f 1473/658/1156 1475/664/1159 1483/666/1170
-f 1483/666/1170 1484/667/1153 1473/658/1156
-f 1470/660/1155 1473/658/1156 1484/667/1153
-f 1484/667/1153 1467/668/1154 1470/660/1155
-f 1476/739/1229 1474/740/1229 1478/741/1229
-f 1474/740/1229 1471/742/1229 1478/741/1229
-f 1472/743/1229 1471/742/1229 1474/740/1229
-f 1478/741/1229 1471/742/1229 1480/744/1229
-f 1485/668/1154 1486/667/1167 1487/662/1165
-f 1487/662/1165 1488/660/1155 1485/668/1154
-f 1488/660/1155 1487/662/1165 1489/659/1166
-f 1489/659/1166 1490/657/1157 1488/660/1155
-f 1491/658/1156 1488/660/1155 1490/657/1157
-f 1490/657/1157 1492/663/1158 1491/658/1156
-f 1493/664/1159 1491/658/1156 1492/663/1158
-f 1492/663/1158 1494/657/1160 1493/664/1159
-f 1495/658/1161 1493/664/1159 1494/657/1160
-f 1494/657/1160 1496/659/1162 1495/658/1161
-f 1497/660/1163 1495/658/1161 1496/659/1162
-f 1496/659/1162 1498/661/1164 1497/660/1163
-f 1487/662/1165 1497/660/1163 1498/661/1164
-f 1498/661/1164 1489/659/1166 1487/662/1165
-f 1497/660/1163 1487/662/1165 1486/667/1167
-f 1486/667/1167 1499/666/1168 1497/660/1163
-f 1495/658/1161 1497/660/1163 1499/666/1168
-f 1499/666/1168 1500/665/1169 1495/658/1161
-f 1493/664/1159 1495/658/1161 1500/665/1169
-f 1500/665/1169 1501/666/1170 1493/664/1159
-f 1491/658/1156 1493/664/1159 1501/666/1170
-f 1501/666/1170 1502/667/1153 1491/658/1156
-f 1488/660/1155 1491/658/1156 1502/667/1153
-f 1502/667/1153 1485/668/1154 1488/660/1155
-f 1494/739/1229 1492/740/1229 1496/741/1229
-f 1492/740/1229 1489/742/1229 1496/741/1229
-f 1490/743/1229 1489/742/1229 1492/740/1229
-f 1496/741/1229 1489/742/1229 1498/744/1229
-f 1503/668/1154 1504/667/1167 1505/662/1165
-f 1505/662/1165 1506/660/1155 1503/668/1154
-f 1506/660/1155 1505/662/1165 1507/659/1166
-f 1507/659/1166 1508/657/1157 1506/660/1155
-f 1509/658/1156 1506/660/1155 1508/657/1157
-f 1508/657/1157 1510/663/1158 1509/658/1156
-f 1511/664/1159 1509/658/1156 1510/663/1158
-f 1510/663/1158 1512/657/1160 1511/664/1159
-f 1513/658/1161 1511/664/1159 1512/657/1160
-f 1512/657/1160 1514/659/1162 1513/658/1161
-f 1515/660/1163 1513/658/1161 1514/659/1162
-f 1514/659/1162 1516/661/1164 1515/660/1163
-f 1505/662/1165 1515/660/1163 1516/661/1164
-f 1516/661/1164 1507/659/1166 1505/662/1165
-f 1515/660/1163 1505/662/1165 1504/667/1167
-f 1504/667/1167 1517/666/1168 1515/660/1163
-f 1513/658/1161 1515/660/1163 1517/666/1168
-f 1517/666/1168 1518/665/1169 1513/658/1161
-f 1511/664/1159 1513/658/1161 1518/665/1169
-f 1518/665/1169 1519/666/1170 1511/664/1159
-f 1509/658/1156 1511/664/1159 1519/666/1170
-f 1519/666/1170 1520/667/1153 1509/658/1156
-f 1506/660/1155 1509/658/1156 1520/667/1153
-f 1520/667/1153 1503/668/1154 1506/660/1155
-f 1512/739/1229 1510/740/1229 1514/741/1229
-f 1510/740/1229 1507/742/1229 1514/741/1229
-f 1508/743/1229 1507/742/1229 1510/740/1229
-f 1514/741/1229 1507/742/1229 1516/744/1229
-f 1521/822/1525 1522/820/1526 1523/821/1525
-f 1524/819/1527 1523/821/1525 1522/820/1526
-f 1522/820/1526 1525/818/1528 1524/819/1527
-f 1526/817/1529 1524/819/1527 1525/818/1528
-f 1525/818/1528 1527/816/1530 1526/817/1529
-f 1528/815/1530 1526/817/1529 1527/816/1530
-f 1529/830/1531 1530/829/1531 1531/828/1532
-f 1532/827/1533 1531/828/1532 1530/829/1531
-f 1531/828/1532 1532/827/1533 1533/826/1534
-f 1534/824/1535 1533/826/1534 1532/827/1533
-f 1533/826/1534 1534/824/1535 1535/825/1536
-f 1536/823/1536 1535/825/1536 1534/824/1535
-f 1527/833/1537 1530/831/1537 1528/834/1537
-f 1529/832/1537 1528/834/1537 1530/831/1537
-f 1521/822/1538 1536/823/1538 1522/820/1538
-f 1534/824/1538 1522/820/1538 1536/823/1538
-f 1522/820/1538 1534/824/1538 1525/818/1538
-f 1532/827/1538 1525/818/1538 1534/824/1538
-f 1525/818/1538 1532/827/1538 1527/816/1538
-f 1530/829/1538 1527/816/1538 1532/827/1538
-f 1523/834/1539 1535/832/1539 1521/833/1539
-f 1536/831/1539 1521/833/1539 1535/832/1539
-f 1537/667/1121 1538/660/1112 1539/668/1120
-f 1540/662/1110 1539/668/1120 1538/660/1112
-f 1539/668/1120 1540/662/1110 1541/667/1119
-f 1542/660/1108 1541/667/1119 1540/662/1110
-f 1541/667/1119 1542/660/1108 1543/666/1118
-f 1544/658/1106 1543/666/1118 1542/660/1108
-f 1543/666/1118 1544/658/1106 1545/665/1117
-f 1546/664/1116 1545/665/1117 1544/658/1106
-f 1545/665/1117 1546/664/1116 1547/666/1122
-f 1548/658/1114 1547/666/1122 1546/664/1116
-f 1547/666/1122 1548/658/1114 1537/667/1121
-f 1538/660/1112 1537/667/1121 1548/658/1114
-f 1548/658/1114 1549/657/1113 1538/660/1112
-f 1550/659/1111 1538/660/1112 1549/657/1113
-f 1538/660/1112 1550/659/1111 1540/662/1110
-f 1551/661/1109 1540/662/1110 1550/659/1111
-f 1540/662/1110 1551/661/1109 1542/660/1108
-f 1552/659/1107 1542/660/1108 1551/661/1109
-f 1542/660/1108 1552/659/1107 1544/658/1106
-f 1553/657/1105 1544/658/1106 1552/659/1107
-f 1544/658/1106 1553/657/1105 1546/664/1116
-f 1554/663/1115 1546/664/1116 1553/657/1105
-f 1546/664/1116 1554/663/1115 1548/658/1114
-f 1549/657/1113 1548/658/1114 1554/663/1115
-f 1549/743/1230 1554/740/1230 1550/742/1230
-f 1554/740/1230 1552/741/1230 1550/742/1230
-f 1553/739/1230 1552/741/1230 1554/740/1230
-f 1550/742/1230 1552/741/1230 1551/744/1230
-f 1555/667/1121 1556/660/1112 1557/668/1120
-f 1558/662/1110 1557/668/1120 1556/660/1112
-f 1557/668/1120 1558/662/1110 1559/667/1119
-f 1560/660/1108 1559/667/1119 1558/662/1110
-f 1559/667/1119 1560/660/1108 1561/666/1118
-f 1562/658/1106 1561/666/1118 1560/660/1108
-f 1561/666/1118 1562/658/1106 1563/665/1117
-f 1564/664/1116 1563/665/1117 1562/658/1106
-f 1563/665/1117 1564/664/1116 1565/666/1122
-f 1566/658/1114 1565/666/1122 1564/664/1116
-f 1565/666/1122 1566/658/1114 1555/667/1121
-f 1556/660/1112 1555/667/1121 1566/658/1114
-f 1566/658/1114 1567/657/1113 1556/660/1112
-f 1568/659/1111 1556/660/1112 1567/657/1113
-f 1556/660/1112 1568/659/1111 1558/662/1110
-f 1569/661/1109 1558/662/1110 1568/659/1111
-f 1558/662/1110 1569/661/1109 1560/660/1108
-f 1570/659/1107 1560/660/1108 1569/661/1109
-f 1560/660/1108 1570/659/1107 1562/658/1106
-f 1571/657/1105 1562/658/1106 1570/659/1107
-f 1562/658/1106 1571/657/1105 1564/664/1116
-f 1572/663/1115 1564/664/1116 1571/657/1105
-f 1564/664/1116 1572/663/1115 1566/658/1114
-f 1567/657/1113 1566/658/1114 1572/663/1115
-f 1567/743/1230 1572/740/1230 1568/742/1230
-f 1572/740/1230 1570/741/1230 1568/742/1230
-f 1571/739/1230 1570/741/1230 1572/740/1230
-f 1568/742/1230 1570/741/1230 1569/744/1230
-f 1573/667/1121 1574/660/1112 1575/668/1120
-f 1576/662/1110 1575/668/1120 1574/660/1112
-f 1575/668/1120 1576/662/1110 1577/667/1119
-f 1578/660/1108 1577/667/1119 1576/662/1110
-f 1577/667/1119 1578/660/1108 1579/666/1118
-f 1580/658/1106 1579/666/1118 1578/660/1108
-f 1579/666/1118 1580/658/1106 1581/665/1117
-f 1582/664/1116 1581/665/1117 1580/658/1106
-f 1581/665/1117 1582/664/1116 1583/666/1122
-f 1584/658/1114 1583/666/1122 1582/664/1116
-f 1583/666/1122 1584/658/1114 1573/667/1121
-f 1574/660/1112 1573/667/1121 1584/658/1114
-f 1584/658/1114 1585/657/1113 1574/660/1112
-f 1586/659/1111 1574/660/1112 1585/657/1113
-f 1574/660/1112 1586/659/1111 1576/662/1110
-f 1587/661/1109 1576/662/1110 1586/659/1111
-f 1576/662/1110 1587/661/1109 1578/660/1108
-f 1588/659/1107 1578/660/1108 1587/661/1109
-f 1578/660/1108 1588/659/1107 1580/658/1106
-f 1589/657/1105 1580/658/1106 1588/659/1107
-f 1580/658/1106 1589/657/1105 1582/664/1116
-f 1590/663/1115 1582/664/1116 1589/657/1105
-f 1582/664/1116 1590/663/1115 1584/658/1114
-f 1585/657/1113 1584/658/1114 1590/663/1115
-f 1585/743/1230 1590/740/1230 1586/742/1230
-f 1590/740/1230 1588/741/1230 1586/742/1230
-f 1589/739/1230 1588/741/1230 1590/740/1230
-f 1586/742/1230 1588/741/1230 1587/744/1230
-f 1591/667/1121 1592/660/1112 1593/668/1120
-f 1594/662/1110 1593/668/1120 1592/660/1112
-f 1593/668/1120 1594/662/1110 1595/667/1119
-f 1596/660/1108 1595/667/1119 1594/662/1110
-f 1595/667/1119 1596/660/1108 1597/666/1118
-f 1598/658/1106 1597/666/1118 1596/660/1108
-f 1597/666/1118 1598/658/1106 1599/665/1117
-f 1600/664/1116 1599/665/1117 1598/658/1106
-f 1599/665/1117 1600/664/1116 1601/666/1122
-f 1602/658/1114 1601/666/1122 1600/664/1116
-f 1601/666/1122 1602/658/1114 1591/667/1121
-f 1592/660/1112 1591/667/1121 1602/658/1114
-f 1602/658/1114 1603/657/1113 1592/660/1112
-f 1604/659/1111 1592/660/1112 1603/657/1113
-f 1592/660/1112 1604/659/1111 1594/662/1110
-f 1605/661/1109 1594/662/1110 1604/659/1111
-f 1594/662/1110 1605/661/1109 1596/660/1108
-f 1606/659/1107 1596/660/1108 1605/661/1109
-f 1596/660/1108 1606/659/1107 1598/658/1106
-f 1607/657/1105 1598/658/1106 1606/659/1107
-f 1598/658/1106 1607/657/1105 1600/664/1116
-f 1608/663/1115 1600/664/1116 1607/657/1105
-f 1600/664/1116 1608/663/1115 1602/658/1114
-f 1603/657/1113 1602/658/1114 1608/663/1115
-f 1603/743/1230 1608/740/1230 1604/742/1230
-f 1608/740/1230 1606/741/1230 1604/742/1230
-f 1607/739/1230 1606/741/1230 1608/740/1230
-f 1604/742/1230 1606/741/1230 1605/744/1230
-f 1609/667/1121 1610/660/1112 1611/668/1120
-f 1612/662/1110 1611/668/1120 1610/660/1112
-f 1611/668/1120 1612/662/1110 1613/667/1119
-f 1614/660/1108 1613/667/1119 1612/662/1110
-f 1613/667/1119 1614/660/1108 1615/666/1118
-f 1616/658/1106 1615/666/1118 1614/660/1108
-f 1615/666/1118 1616/658/1106 1617/665/1117
-f 1618/664/1116 1617/665/1117 1616/658/1106
-f 1617/665/1117 1618/664/1116 1619/666/1122
-f 1620/658/1114 1619/666/1122 1618/664/1116
-f 1619/666/1122 1620/658/1114 1609/667/1121
-f 1610/660/1112 1609/667/1121 1620/658/1114
-f 1620/658/1114 1621/657/1113 1610/660/1112
-f 1622/659/1111 1610/660/1112 1621/657/1113
-f 1610/660/1112 1622/659/1111 1612/662/1110
-f 1623/661/1109 1612/662/1110 1622/659/1111
-f 1612/662/1110 1623/661/1109 1614/660/1108
-f 1624/659/1107 1614/660/1108 1623/661/1109
-f 1614/660/1108 1624/659/1107 1616/658/1106
-f 1625/657/1105 1616/658/1106 1624/659/1107
-f 1616/658/1106 1625/657/1105 1618/664/1116
-f 1626/663/1115 1618/664/1116 1625/657/1105
-f 1618/664/1116 1626/663/1115 1620/658/1114
-f 1621/657/1113 1620/658/1114 1626/663/1115
-f 1621/743/1230 1626/740/1230 1622/742/1230
-f 1626/740/1230 1624/741/1230 1622/742/1230
-f 1625/739/1230 1624/741/1230 1626/740/1230
-f 1622/742/1230 1624/741/1230 1623/744/1230
-f 1102/620/1540 1627/933/1540 1055/621/1540
-f 1628/933/1541 1055/621/1541 1627/933/1541
-f 1101/619/1542 1629/933/1542 1102/620/1542
-f 1627/933/1543 1102/620/1543 1629/933/1543
-f 998/572/1544 1630/933/1544 1101/619/1544
-f 1629/933/1545 1101/619/1545 1630/933/1545
-f 997/571/1546 1631/933/1546 998/572/1546
-f 1630/933/1547 998/572/1547 1631/933/1547
-f 996/570/1548 1632/934/1548 997/571/1548
-f 1631/933/1549 997/571/1549 1632/934/1549
-f 923/534/1550 1633/934/1550 996/570/1550
-f 1632/934/1551 996/570/1551 1633/934/1551
-f 921/532/1552 1634/934/1552 923/534/1552
-f 1633/934/1553 923/534/1553 1634/934/1553
-f 919/530/1554 1635/935/1554 921/532/1554
-f 1634/934/1552 921/532/1552 1635/935/1552
-f 792/466/1555 1636/935/1555 919/530/1555
-f 1635/935/1556 919/530/1556 1636/935/1556
-f 793/467/1557 1637/935/1557 792/466/1557
-f 1636/935/1558 792/466/1558 1637/935/1558
-f 756/437/1559 1638/935/1559 793/467/1559
-f 1637/935/1560 793/467/1560 1638/935/1560
-f 983/569/1561 1639/935/1561 756/437/1561
-f 1638/935/1562 756/437/1562 1639/935/1562
-f 982/437/1563 1640/935/1563 983/569/1563
-f 1639/935/1564 983/569/1564 1640/935/1564
-f 981/467/1066 1641/935/1066 982/437/1066
-f 1640/935/1565 982/437/1565 1641/935/1565
-f 979/466/1566 1642/935/1566 981/467/1566
-f 1641/935/1567 981/467/1567 1642/935/1567
-f 977/530/1568 1643/935/1568 979/466/1568
-f 1642/935/1569 979/466/1569 1643/935/1569
-f 975/532/1570 1644/934/1570 977/530/1570
-f 1643/935/1571 977/530/1571 1644/934/1571
-f 963/534/1572 1645/934/1572 975/532/1572
-f 1644/934/1573 975/532/1573 1645/934/1573
-f 1067/570/1574 1646/934/1574 963/534/1574
-f 1645/934/1575 963/534/1575 1646/934/1575
-f 1066/571/1576 1647/933/1576 1067/570/1576
-f 1646/934/1577 1067/570/1577 1647/933/1577
-f 1064/572/1578 1648/933/1578 1066/571/1578
-f 1647/933/1579 1066/571/1579 1648/933/1579
-f 1053/619/1580 1649/933/1580 1064/572/1580
-f 1648/933/1581 1064/572/1581 1649/933/1581
-f 1054/620/1582 1650/933/1582 1053/619/1582
-f 1649/933/1583 1053/619/1583 1650/933/1583
-f 1055/621/1584 1628/933/1584 1054/620/1584
-f 1650/933/1585 1054/620/1585 1628/933/1585
-f 1627/936/1586 1441/937/1586 1628/938/1586
-f 1440/938/1587 1628/938/1587 1441/937/1587
-f 1629/937/1588 1441/937/1588 1627/936/1588
-f 1630/939/1589 1438/940/1589 1629/937/1589
-f 1441/937/1590 1629/937/1590 1438/940/1590
-f 1631/939/1591 1438/940/1591 1630/939/1591
-f 1632/941/1592 1436/942/1592 1631/943/1592
-f 1438/944/1593 1631/943/1593 1436/942/1593
-f 1633/945/1594 1434/946/1594 1632/941/1594
-f 1436/942/1595 1632/941/1595 1434/946/1595
-f 1634/947/961 1651/948/961 1633/945/961
-f 1434/946/961 1633/945/961 1651/948/961
-f 1635/949/1596 1430/950/1596 1634/947/1596
-f 1651/948/1597 1634/947/1597 1430/950/1597
-f 1431/951/1598 1430/950/1598 1635/949/1598
-f 1642/939/1599 1433/952/1599 1641/936/1599
-f 1641/936/1600 1433/952/1600 1640/953/1600
-f 1640/953/1601 1433/952/1601 1639/954/1601
-f 1639/954/1602 1433/952/1602 1638/955/1602
-f 1638/955/1603 1433/952/1603 1637/947/1603
-f 1433/952/1604 1431/956/1604 1637/947/1604
-f 1637/947/1605 1431/956/1605 1636/957/1605
-f 1643/958/1606 1433/952/1606 1642/939/1606
-f 1644/947/1607 1652/948/1607 1643/949/1607
-f 1432/950/1608 1643/949/1608 1652/948/1608
-f 1645/959/1609 1435/946/1609 1644/947/1609
-f 1652/948/1609 1644/947/1609 1435/946/1609
-f 1646/941/1610 1437/942/1610 1645/959/1610
-f 1435/946/1611 1645/959/1611 1437/942/1611
-f 1647/943/1612 1439/944/1612 1646/941/1612
-f 1437/942/1613 1646/941/1613 1439/944/1613
-f 1648/960/1614 1439/961/1614 1647/960/1614
-f 1649/960/1615 1442/957/1615 1648/960/1615
-f 1439/961/1616 1648/960/1616 1442/957/1616
-f 1650/962/1617 1442/957/1617 1649/960/1617
-f 1628/938/1618 1440/938/1618 1650/962/1618
-f 1442/957/1619 1650/962/1619 1440/938/1619
-f 1435/723/1620 1434/963/1620 1652/415/1620
-f 1434/963/1620 1651/724/1620 1652/415/1620
-f 1651/724/1621 1430/814/1621 1652/415/1621
-f 1652/415/1621 1430/814/1621 1432/725/1621
-f 1653/964/1622 1654/965/1622 1655/966/1622
-f 1656/967/1622 1655/966/1622 1654/965/1622
-f 1657/968/1028 1658/969/1028 1653/964/1028
-f 1654/965/1028 1653/964/1028 1658/969/1028
-f 1659/970/1623 1660/971/1623 1657/968/1623
-f 1658/969/1623 1657/968/1623 1660/971/1623
-f 1655/966/1624 1656/967/1624 1661/878/1624
-f 1662/905/1624 1661/878/1624 1656/967/1624
-f 1655/972/1625 1661/973/1626 1653/974/1627
-f 1663/975/1628 1653/974/1627 1661/973/1626
-f 1664/975/1629 1662/973/1630 1654/974/1631
-f 1656/972/1632 1654/974/1631 1662/973/1630
-f 1664/976/1633 1663/977/1633 1662/967/1633
-f 1661/966/1633 1662/967/1633 1663/977/1633
-f 1432/950/1634 1433/958/1634 1643/949/1634
-f 1636/957/1635 1431/956/1635 1635/978/1635
-f 1410/979/1636 1409/980/1636 1108/979/1636
-f 1408/850/1637 1108/979/1637 1409/980/1637
-f 1122/981/1638 1121/982/1638 1107/983/1638
-f 1123/912/1639 1418/914/1639 1121/982/1639
-f 1421/984/1640 1422/985/1640 1418/914/1640
-f 1418/914/1641 1422/985/1641 1121/982/1641
-f 1423/986/1642 1410/878/1642 1422/985/1642
-f 1422/985/1643 1410/878/1643 1121/982/1643
-f 1121/982/1644 1410/878/1644 1107/983/1644
-f 1107/983/1645 1410/878/1645 1108/987/1645
-f 1145/985/1646 1143/984/1646 1147/988/1646
-f 1162/914/1647 1401/914/1647 1143/984/1647
-f 1399/989/1648 1397/990/1648 1401/914/1648
-f 1401/914/1649 1397/990/1649 1143/984/1649
-f 1143/984/1650 1397/990/1650 1147/988/1650
-f 1397/990/1651 1394/850/1651 1147/988/1651
-f 1147/988/1652 1394/850/1652 1159/877/1652
-f 1162/849/1653 1164/991/1653 1401/848/1653
-f 1230/731/1654 1228/374/1655 1665/731/1654
-f 1666/374/1656 1665/731/1654 1228/374/1655
-f 1228/374/1655 1225/391/1657 1666/374/1656
-f 1667/391/1658 1666/374/1656 1225/391/1657
-f 1225/391/1657 1224/730/1659 1667/391/1658
-f 1668/730/1659 1667/391/1658 1224/730/1659
-f 1665/731/611 1666/374/614 1669/731/611
-f 1670/374/614 1669/731/611 1666/374/614
-f 1666/374/614 1667/391/612 1670/374/614
-f 1671/391/612 1670/374/614 1667/391/612
-f 1667/391/612 1668/730/611 1671/391/612
-f 1672/730/611 1671/391/612 1668/730/611
-f 1669/731/1660 1670/374/1661 1231/731/1660
-f 1229/374/1662 1231/731/1660 1670/374/1661
-f 1670/374/1661 1671/391/1663 1229/374/1662
-f 1227/391/1664 1229/374/1662 1671/391/1663
-f 1671/391/1663 1672/730/1665 1227/391/1664
-f 1226/730/1665 1227/391/1664 1672/730/1665
-f 1201/992/1149 1277/993/1149 1200/994/1149
-f 1275/995/1666 1200/994/1666 1277/993/1666
-f 1203/996/1667 1279/997/1667 1201/992/1667
-f 1277/993/1668 1201/992/1668 1279/997/1668
-f 1281/998/1669 1279/997/1669 1205/999/1669
-f 1203/996/1670 1205/999/1670 1279/997/1670
-f 1207/1000/1671 1283/1001/1671 1205/999/1671
-f 1281/998/1672 1205/999/1672 1283/1001/1672
-f 1208/1002/913 1284/1003/913 1207/1000/913
-f 1283/1001/1673 1207/1000/1673 1284/1003/1673
-f 1214/1004/1674 1286/1005/1674 1208/1002/1674
-f 1286/1005/1675 1284/1003/1675 1208/1002/1675
-f 1307/1006/1676 1293/1002/1676 1299/1007/1676
-f 1238/1008/1677 1239/1009/1677 1313/994/1677
-f 1314/1010/1678 1313/994/1678 1239/1009/1678
-f 1239/1009/1679 1241/996/1679 1314/1010/1679
-f 1309/1011/1680 1314/1010/1680 1241/996/1680
-f 1241/996/1681 1243/999/1681 1309/1011/1681
-f 1304/1012/1682 1309/1011/1682 1243/999/1682
-f 1304/1012/1683 1243/999/1683 1305/1013/1683
-f 1245/1000/1684 1305/1013/1684 1243/999/1684
-f 1245/1000/1685 1293/1002/1685 1305/1013/1685
-f 1307/1006/1686 1305/1013/1686 1293/1002/1686
-f 1673/417/1687 1674/1014/1687 1675/417/1688
-f 1676/1014/1689 1675/417/1688 1674/1014/1687
-f 1675/417/1688 1676/1014/1689 1677/417/1690
-f 1678/1014/1690 1677/417/1690 1676/1014/1689
-f 1677/417/1691 1678/1014/1691 1679/417/1692
-f 1680/1014/1693 1679/417/1692 1678/1014/1691
-f 1679/417/1692 1680/1014/1693 1673/417/1694
-f 1674/1014/1694 1673/417/1694 1680/1014/1693
-f 1674/726/1695 1680/726/1695 1676/727/1695
-f 1678/727/1695 1676/727/1695 1680/726/1695
-f 1164/892/1696 1163/891/1697 1681/893/1698
-f 1163/891/1697 1161/866/1419 1681/893/1698
-f 1401/864/658 1681/893/1698 1161/866/1419
-# 1961 faces
-
-#
-# object P_51_Mustang_Right_Wing_Flap
-#
-
-v -4.86 -0.53 -0.60
-v -4.41 -0.27 3.38
-v -4.43 -0.76 3.40
-v -29.11 -0.39 3.17
-v -28.77 -0.08 6.47
-v -28.79 -0.68 6.50
-# 6 vertices
-
-vn 0.99 -0.05 -0.11
-vn -0.01 1.00 -0.09
-vn -0.00 1.00 -0.07
-vn -0.00 1.00 -0.06
-vn 0.13 0.05 0.99
-vn 0.13 0.03 0.99
-vn -0.01 -1.00 -0.09
-vn -0.01 -1.00 -0.08
-vn -0.01 -1.00 -0.06
-vn -0.99 0.05 0.10
-# 10 vertex normals
-
-vt 0.29 0.02 0.00
-vt 0.23 0.01 0.00
-vt 0.23 0.02 0.00
-vt 0.71 0.15 0.00
-vt 0.71 0.21 0.00
-vt 0.39 0.10 0.00
-vt 0.38 0.16 0.00
-vt 0.23 0.00 0.00
-vt 0.46 0.00 0.00
-vt 0.46 0.01 0.00
-vt 0.05 0.31 0.00
-vt 0.01 0.31 0.00
-vt 0.06 0.05 0.00
-vt 0.01 0.04 0.00
-vt 0.33 0.02 0.00
-vt 0.28 0.01 0.00
-vt 0.33 0.01 0.00
-# 17 texture coords
-
-g P_51_Mustang_Right_Wing_Flap
-f 1682/1015/1699 1683/1016/1699 1684/1017/1699
-f 1685/1018/1700 1686/1019/1700 1682/1020/1701
-f 1683/1021/1702 1682/1020/1701 1686/1019/1700
-f 1686/1022/1703 1687/1016/1703 1683/1023/1704
-f 1684/1024/1704 1683/1023/1704 1687/1016/1703
-f 1687/1025/1705 1685/1026/1706 1684/1027/1707
-f 1682/1028/1707 1684/1027/1707 1685/1026/1706
-f 1686/1029/1708 1685/1030/1708 1687/1031/1708
-# 8 faces
-
-#
-# object P_51_Mustang_Left_Wing
-#
-
-v 21.73 -0.34 5.07
-v 29.47 -0.26 5.88
-v 29.43 -1.11 5.94
-v 13.89 -0.70 20.02
-v 13.32 0.44 17.79
-v 8.22 -0.70 21.64
-v 6.69 0.53 18.92
-v 13.59 0.59 15.01
-v 6.67 0.70 16.38
-v 13.51 0.45 11.97
-v 6.64 0.56 12.08
-v 12.99 0.26 8.88
-v 6.75 0.38 9.22
-v 12.85 -0.11 6.05
-v 18.46 -0.07 6.17
-v 18.38 -0.30 4.71
-v 18.77 0.27 8.57
-v 22.48 0.10 8.18
-v 18.54 0.45 12.11
-v 22.26 0.41 12.21
-v 18.69 0.44 14.67
-v 22.30 0.37 14.75
-v 19.28 -0.74 18.90
-v 18.83 0.28 17.17
-v 22.46 0.18 16.71
-v 23.13 -0.75 18.50
-v 30.30 -0.03 16.07
-v 30.77 -0.79 17.69
-v 29.80 0.01 8.15
-v 29.00 0.22 12.29
-v 29.20 0.27 14.36
-v 6.63 -2.09 14.77
-v 13.47 -1.97 15.15
-v 6.91 -1.78 18.50
-v 13.40 -1.81 12.10
-v 18.43 -1.86 12.23
-v 18.67 -1.64 8.68
-v 22.40 -1.51 8.27
-v 21.69 -1.11 5.12
-v 29.73 -1.49 8.23
-v 28.90 -1.73 12.40
-v 22.15 -1.85 12.34
-v 22.20 -1.84 14.87
-v 18.58 -1.87 14.79
-v 18.75 -1.79 16.77
-v 13.22 -1.77 17.34
-v 7.17 -1.73 19.64
-v 22.37 -1.71 16.82
-v 30.16 -1.61 16.17
-v 29.10 -1.79 14.47
-v 18.09 -0.19 18.03
-v 18.07 -0.12 19.96
-v 18.47 -0.42 18.05
-v 17.66 -0.35 19.98
-v 17.68 -0.41 18.05
-v 17.64 -0.81 20.03
-v 17.66 -0.87 18.10
-v 18.02 -1.05 20.04
-v 18.04 -1.11 18.11
-v 18.43 -0.82 20.02
-v 18.45 -0.88 18.09
-v 18.45 -0.36 19.98
-v 19.42 -0.43 17.94
-v 19.40 -0.37 19.87
-v 19.82 -0.20 17.92
-v 19.37 -0.83 19.91
-v 19.40 -0.89 17.98
-v 19.76 -1.06 19.93
-v 19.78 -1.12 18.00
-v 20.16 -0.83 19.90
-v 20.18 -0.90 17.98
-v 20.18 -0.37 19.86
-v 20.20 -0.44 17.93
-v 19.80 -0.14 19.84
-v 21.31 -0.91 17.79
-v 21.29 -0.85 19.72
-v 21.33 -0.45 17.75
-v 21.67 -1.08 19.74
-v 21.69 -1.15 17.81
-v 22.07 -0.85 19.71
-v 22.09 -0.92 17.79
-v 22.09 -0.39 19.67
-v 22.12 -0.46 17.74
-v 21.71 -0.16 19.65
-v 21.73 -0.22 17.73
-v 21.31 -0.39 19.68
-v 6.36 -1.85 12.28
-v 12.90 -1.58 8.99
-v 18.40 -1.29 6.24
-v 18.34 -1.03 4.76
-v 12.79 -1.19 6.11
-v 12.60 -0.96 4.14
-v 6.61 -1.24 6.37
-v 6.45 -0.95 3.49
-v 6.61 -1.63 9.28
-v 6.54 -0.19 3.45
-v 12.64 -0.25 4.10
-v 6.70 0.02 6.36
-v 25.72 -2.97 15.17
-v 26.04 -2.97 15.16
-v 25.78 -1.70 14.94
-v 26.10 -1.70 14.93
-v 25.71 -3.12 14.67
-v 26.03 -3.12 14.66
-v 26.02 -3.16 10.99
-v 25.71 -3.16 10.99
-v 25.78 -1.72 9.85
-v 26.09 -1.72 9.85
-v 49.14 -0.79 5.08
-v 48.24 -0.91 6.93
-v 48.25 -0.61 6.89
-v 48.48 -0.39 13.06
-v 45.09 -0.22 13.27
-v 48.37 -0.52 14.30
-v 49.79 -0.70 13.22
-v 49.65 -0.81 14.45
-v 50.18 -0.86 13.17
-v 49.94 -0.86 14.46
-v 49.46 -0.86 15.18
-v 48.14 -0.86 15.82
-v 45.11 -0.50 14.61
-v 44.86 -0.85 16.21
-v 37.77 -0.27 15.37
-v 37.66 -0.83 16.94
-v 37.87 0.03 13.78
-v 37.92 0.07 11.77
-v 37.54 -0.12 8.23
-v 44.74 -0.34 7.95
-v 44.69 -0.53 6.74
-v 47.69 -0.50 8.05
-v 49.33 -0.63 7.63
-v 49.65 -0.83 7.70
-v 49.74 -0.63 11.09
-v 50.12 -0.85 11.07
-v 48.01 -0.49 11.12
-v 44.83 -0.18 11.19
-v 37.83 -1.66 11.86
-v 44.77 -1.59 11.25
-v 37.86 -1.64 13.87
-v 37.71 -1.53 15.44
-v 44.80 -1.48 14.64
-v 48.34 -1.08 14.45
-v 44.94 -1.58 13.33
-v 48.44 -1.09 13.22
-v 47.98 -1.08 11.27
-v 49.72 -0.95 11.28
-v 49.21 -0.88 7.78
-v 47.66 -0.96 8.19
-v 44.69 -1.31 7.98
-v 44.66 -1.07 6.82
-v 37.47 -1.43 8.30
-v 37.60 -1.17 6.48
-v 49.77 -1.00 13.41
-v 49.64 -0.94 14.48
-v 37.65 -0.33 6.41
-v 29.53 -2.84 10.92
-v 29.47 -2.71 15.01
-v 29.60 -1.55 9.80
-v 29.51 -1.73 14.90
-v 29.69 -1.73 14.90
-v 29.64 -2.71 15.01
-v 29.78 -1.55 9.80
-v 29.70 -2.84 10.92
-v 32.08 -2.73 14.99
-v 32.26 -2.73 14.99
-v 32.13 -1.70 14.87
-v 32.31 -1.70 14.87
-v 32.14 -2.86 10.90
-v 32.32 -2.87 10.90
-v 32.22 -1.51 9.77
-v 32.40 -1.51 9.77
-v 34.83 -2.75 14.96
-v 35.01 -2.75 14.96
-v 34.88 -1.62 14.83
-v 35.06 -1.62 14.83
-v 34.89 -2.89 10.87
-v 35.07 -2.89 10.87
-v 34.97 -1.51 9.74
-v 35.15 -1.51 9.74
-v 25.90 -3.10 16.05
-v 25.99 -3.13 9.38
-v 24.57 -3.45 16.08
-v 27.29 -3.50 9.39
-v 27.20 -3.47 16.06
-v 28.21 -4.49 9.44
-v 28.12 -4.46 16.11
-v 28.50 -5.83 9.52
-v 28.41 -5.80 16.19
-v 28.08 -7.16 9.61
-v 28.00 -7.14 16.28
-v 27.07 -8.14 9.68
-v 26.98 -8.11 16.36
-v 25.73 -8.49 9.72
-v 25.65 -8.46 16.39
-v 24.43 -8.12 9.71
-v 24.35 -8.09 16.38
-v 23.51 -7.13 9.66
-v 23.43 -7.10 16.33
-v 23.22 -5.79 9.57
-v 23.14 -5.76 16.24
-v 23.64 -4.45 9.48
-v 23.56 -4.42 16.15
-v 24.65 -3.48 9.41
-v 25.98 -4.22 6.21
-v 25.18 -4.43 6.23
-v 24.57 -5.01 6.27
-v 24.32 -5.81 6.33
-v 24.50 -6.61 6.37
-v 25.04 -7.20 6.41
-v 25.82 -7.42 6.41
-v 26.62 -7.21 6.39
-v 27.23 -6.63 6.35
-v 27.48 -5.83 6.30
-v 25.96 -5.24 3.65
-v 25.66 -5.32 3.66
-v 27.30 -5.03 6.25
-v 26.75 -4.44 6.21
-v 26.25 -5.32 3.65
-v 25.93 -5.83 3.43
-v 25.44 -5.53 3.68
-v 25.35 -5.83 3.70
-v 25.41 -6.12 3.71
-v 25.62 -6.34 3.73
-v 25.90 -6.42 3.73
-v 26.20 -6.35 3.72
-v 26.42 -6.13 3.70
-v 26.52 -5.84 3.68
-v 26.45 -5.54 3.67
-v 23.60 -6.99 17.58
-v 23.33 -5.76 17.50
-v 23.72 -4.53 17.42
-v 24.65 -3.63 17.35
-v 25.88 -3.31 17.32
-v 27.08 -3.65 17.33
-v 27.92 -4.56 17.38
-v 28.19 -5.79 17.46
-v 27.80 -7.03 17.54
-v 26.87 -7.92 17.61
-v 23.89 -5.75 19.06
-v 24.18 -4.81 19.00
-v 24.72 -5.76 20.24
-v 24.83 -6.27 20.28
-v 24.09 -6.70 19.12
-v 25.64 -8.24 17.64
-v 24.44 -7.90 17.63
-v 24.74 -7.39 19.16
-v 25.18 -6.64 20.30
-v 25.72 -5.76 20.57
-v 24.88 -5.25 20.21
-v 24.89 -4.13 18.95
-v 25.83 -3.88 18.92
-v 26.75 -4.14 18.93
-v 27.39 -4.84 18.97
-v 27.60 -5.78 19.03
-v 27.30 -6.72 19.09
-v 26.59 -7.41 19.14
-v 25.65 -7.65 19.16
-v 25.68 -6.78 20.30
-v 26.19 -6.65 20.29
-v 26.57 -6.28 20.26
-v 26.73 -5.77 20.22
-v 26.62 -5.26 20.19
-v 26.27 -4.89 20.17
-v 25.77 -4.74 20.17
-v 25.27 -4.88 20.18
-v 29.89 -0.71 2.47
-# 266 vertices
-
-vn 0.10 -0.07 -0.99
-vn 0.10 0.89 0.44
-vn 0.06 0.97 0.24
-vn 0.09 0.92 0.39
-vn 0.05 0.98 0.21
-vn 0.02 1.00 0.01
-vn 0.02 1.00 0.02
-vn 0.01 1.00 -0.05
-vn 0.02 1.00 -0.05
-vn 0.00 1.00 -0.10
-vn 0.02 1.00 -0.09
-vn 0.01 0.99 -0.10
-vn 0.01 0.99 -0.15
-vn 0.02 0.99 -0.15
-vn 0.02 1.00 -0.10
-vn 0.02 0.99 -0.10
-vn 0.01 1.00 -0.03
-vn 0.02 1.00 -0.03
-vn 0.02 1.00 0.03
-vn 0.03 1.00 0.05
-vn 0.09 0.87 0.48
-vn 0.06 0.96 0.28
-vn 0.05 0.96 0.28
-vn 0.06 0.89 0.44
-vn 0.04 0.95 0.31
-vn 0.05 0.91 0.41
-vn 0.01 0.99 -0.12
-vn 0.01 1.00 -0.09
-vn 0.02 1.00 -0.04
-vn 0.02 1.00 0.08
-vn 0.01 -1.00 -0.01
-vn 0.01 -1.00 0.02
-vn 0.01 -1.00 0.07
-vn -0.00 -1.00 -0.06
-vn 0.01 -1.00 -0.04
-vn 0.00 -0.99 -0.10
-vn 0.02 -0.99 -0.10
-vn 0.01 -0.99 -0.14
-vn 0.00 -0.99 -0.16
-vn 0.00 -0.99 -0.11
-vn 0.01 -1.00 0.03
-vn 0.03 -0.97 0.23
-vn 0.04 -0.98 0.22
-vn 0.08 -0.97 0.23
-vn 0.13 -0.92 0.38
-vn 0.07 -0.93 0.36
-vn 0.05 -0.90 0.44
-vn 0.03 -0.96 0.28
-vn 0.05 -0.88 0.48
-vn 0.03 -0.94 0.33
-vn 0.04 -0.89 0.46
-vn 0.01 -1.00 0.04
-vn 0.88 0.48 -0.01
-vn -0.86 0.51 -0.03
-vn -0.84 0.54 -0.03
-vn -0.88 -0.48 0.01
-vn -0.89 -0.46 0.01
-vn -0.02 -1.00 0.03
-vn -0.01 -1.00 0.03
-vn 0.84 -0.54 0.03
-vn 0.86 -0.51 0.03
-vn 0.89 0.46 -0.01
-vn 0.00 -1.00 -0.09
-vn -0.01 -0.99 -0.10
-vn -0.01 -0.99 -0.16
-vn -0.01 -0.99 -0.17
-vn -0.00 -0.99 -0.13
-vn 0.01 -0.99 -0.12
-vn 0.01 -0.99 -0.10
-vn 0.11 -0.07 -0.99
-vn 0.02 1.00 -0.07
-vn 0.01 0.09 1.00
-vn 0.02 0.18 0.98
-vn 0.00 -0.96 0.29
-vn -0.00 -1.00 0.01
-vn -0.02 -0.62 -0.78
-vn -1.00 0.05 0.00
-vn 1.00 -0.05 -0.00
-vn 0.99 -0.06 -0.14
-vn 0.99 -0.06 -0.10
-vn 0.99 -0.05 -0.10
-vn 0.98 -0.04 0.19
-vn 0.85 -0.11 -0.52
-vn 0.83 -0.07 -0.55
-vn 0.94 -0.10 -0.32
-vn -1.00 0.08 0.01
-vn -1.00 0.07 0.01
-vn -0.99 0.12 0.05
-vn -1.00 0.08 0.06
-vn -1.00 0.01 0.00
-vn -0.98 0.13 0.12
-vn -0.99 0.11 -0.07
-vn -1.00 0.07 -0.04
-vn -0.88 -0.04 0.48
-vn -0.99 -0.11 0.08
-vn -1.00 0.01 0.01
-vn -0.96 -0.13 0.23
-vn -0.90 -0.01 -0.44
-vn 0.13 0.99 0.04
-vn 0.05 0.99 0.10
-vn 0.11 0.98 0.16
-vn 0.30 0.95 0.08
-vn 0.20 0.97 0.10
-vn 0.37 0.93 0.06
-vn 0.18 0.98 0.07
-vn 0.16 0.97 0.17
-vn 0.06 0.97 0.22
-vn 0.04 0.98 0.21
-vn 0.04 0.97 0.23
-vn 0.04 0.96 0.26
-vn 0.04 0.94 0.34
-vn 0.06 0.92 0.40
-vn 0.05 0.97 0.25
-vn 0.04 0.99 0.10
-vn 0.03 1.00 -0.02
-vn 0.02 1.00 -0.08
-vn 0.04 0.99 -0.11
-vn 0.04 0.99 -0.15
-vn 0.06 1.00 -0.05
-vn 0.05 1.00 -0.07
-vn 0.31 0.95 -0.06
-vn 0.17 0.98 -0.07
-vn 0.54 0.84 -0.08
-vn 0.31 0.95 -0.03
-vn 0.50 0.86 -0.04
-vn 0.08 1.00 -0.03
-vn 0.06 1.00 -0.02
-vn 0.01 -1.00 -0.03
-vn 0.08 -1.00 -0.04
-vn 0.02 -1.00 0.04
-vn 0.03 -0.97 0.25
-vn 0.03 -0.97 0.24
-vn 0.05 -0.89 0.45
-vn 0.04 -0.91 0.42
-vn 0.04 -0.93 0.38
-vn 0.06 -0.98 0.21
-vn 0.10 -0.97 0.22
-vn 0.11 -0.99 0.08
-vn 0.08 -1.00 0.03
-vn 0.10 -1.00 -0.01
-vn 0.11 -0.99 -0.03
-vn 0.07 -1.00 -0.03
-vn 0.05 -1.00 -0.03
-vn 0.09 -1.00 -0.03
-vn 0.05 -0.99 -0.13
-vn 0.06 -1.00 -0.04
-vn 0.03 -0.98 -0.20
-vn 0.01 -0.99 -0.11
-vn 0.00 -0.99 -0.17
-vn 0.11 -0.99 -0.04
-vn 0.24 -0.97 -0.02
-vn 0.24 -0.97 -0.03
-vn 0.31 -0.95 0.01
-vn 0.35 -0.94 0.05
-vn 0.22 -0.97 0.13
-vn 0.26 -0.96 0.09
-vn 0.11 -0.98 0.15
-vn 0.08 -0.98 0.15
-vn 0.08 -0.98 0.16
-vn 0.03 0.99 -0.11
-vn 0.02 0.99 -0.12
-vn 0.08 -1.00 0.01
-vn 0.10 -0.99 0.06
-vn -1.00 0.05 -0.02
-vn 1.00 -0.05 0.02
-vn 0.00 0.12 0.99
-vn -0.00 -1.00 0.03
-vn -0.00 -0.64 -0.77
-vn 0.00 0.11 0.99
-vn 0.05 -0.47 -0.88
-vn 0.07 -0.07 -1.00
-vn 0.05 0.63 -0.77
-vn 0.05 -0.19 -0.98
-vn 0.04 -0.08 -1.00
-vn 0.04 -0.11 -0.99
-vn -0.34 -0.94 0.05
-vn -0.19 0.98 -0.09
-vn -0.32 -0.95 0.05
-vn -0.99 0.06 0.14
-vn -1.00 -0.05 0.08
-vn -0.10 0.99 0.04
-vn -0.80 0.60 -0.05
-vn -0.85 0.11 0.52
-vn -0.94 0.10 0.32
-vn -0.00 -0.66 -0.75
-vn 0.01 1.00 -0.00
-vn -0.50 0.87 -0.01
-vn 0.52 0.85 0.00
-vn 0.88 0.47 0.01
-vn 0.89 0.46 0.01
-vn 1.00 -0.03 0.01
-vn 1.00 -0.05 0.01
-vn 0.86 -0.52 0.01
-vn 0.85 -0.53 0.01
-vn 0.50 -0.87 0.01
-vn 0.48 -0.88 0.01
-vn -0.01 -1.00 0.00
-vn -0.52 -0.85 -0.00
-vn -0.89 -0.46 -0.01
-vn -0.88 -0.47 -0.01
-vn -1.00 0.05 -0.01
-vn -1.00 0.03 -0.01
-vn -0.85 0.53 -0.01
-vn -0.86 0.52 -0.01
-vn -0.48 0.88 -0.01
-vn 0.01 0.95 -0.33
-vn 0.01 0.94 -0.35
-vn -0.48 0.82 -0.32
-vn -0.47 0.81 -0.34
-vn -0.82 0.47 -0.32
-vn -0.81 0.48 -0.34
-vn -0.95 0.01 -0.32
-vn -0.94 0.02 -0.34
-vn -0.83 -0.46 -0.32
-vn -0.83 -0.45 -0.34
-vn -0.49 -0.81 -0.32
-vn -0.48 -0.81 -0.34
-vn -0.02 -0.95 -0.31
-vn -0.01 -0.95 -0.33
-vn 0.45 -0.84 -0.30
-vn 0.45 -0.83 -0.32
-vn 0.80 -0.52 -0.29
-vn 0.80 -0.51 -0.31
-vn 0.95 -0.07 -0.30
-vn 0.94 -0.06 -0.32
-vn 0.00 0.73 -0.69
-vn -0.38 0.63 -0.68
-vn 0.85 0.42 -0.31
-vn 0.84 0.42 -0.33
-vn 0.50 0.80 -0.32
-vn 0.50 0.80 -0.34
-vn 0.39 0.61 -0.68
-vn -0.01 -0.05 -1.00
-vn -0.65 0.36 -0.67
-vn -0.75 -0.00 -0.66
-vn -0.66 -0.38 -0.65
-vn -0.39 -0.66 -0.64
-vn -0.01 -0.77 -0.64
-vn 0.36 -0.68 -0.63
-vn 0.64 -0.43 -0.64
-vn 0.75 -0.07 -0.65
-vn 0.67 0.31 -0.67
-vn -0.88 -0.44 0.16
-vn -0.86 -0.44 0.25
-vn -0.99 0.06 0.15
-vn -0.97 0.06 0.24
-vn -0.83 0.54 0.15
-vn -0.82 0.52 0.23
-vn -0.47 0.87 0.15
-vn -0.47 0.85 0.24
-vn 0.02 0.99 0.16
-vn 0.01 0.97 0.25
-vn 0.51 0.84 0.17
-vn 0.50 0.83 0.26
-vn 0.87 0.47 0.17
-vn 0.85 0.46 0.26
-vn 0.98 -0.02 0.17
-vn 0.96 -0.03 0.26
-vn 0.85 -0.50 0.17
-vn 0.83 -0.50 0.26
-vn 0.49 -0.85 0.17
-vn 0.48 -0.84 0.26
-vn -0.89 0.07 0.45
-vn -0.75 0.49 0.44
-vn -0.62 0.08 0.78
-vn -0.55 -0.24 0.80
-vn -0.79 -0.39 0.47
-vn -0.01 -0.99 0.17
-vn -0.01 -0.96 0.26
-vn -0.52 -0.84 0.17
-vn -0.51 -0.82 0.26
-vn -0.47 -0.74 0.48
-vn -0.32 -0.49 0.81
-vn 0.01 0.06 1.00
-vn -0.53 0.37 0.76
-vn -0.43 0.79 0.44
-vn 0.01 0.89 0.45
-vn 0.45 0.76 0.46
-vn 0.78 0.43 0.46
-vn 0.89 -0.01 0.46
-vn 0.76 -0.44 0.47
-vn 0.45 -0.76 0.47
-vn -0.01 -0.88 0.48
-vn 0.00 -0.59 0.81
-vn 0.32 -0.51 0.80
-vn 0.54 -0.29 0.79
-vn 0.63 0.02 0.78
-vn 0.55 0.33 0.77
-vn 0.32 0.56 0.76
-vn 0.01 0.65 0.76
-vn -0.30 0.58 0.76
-vn -0.99 0.04 -0.13
-vn 0.02 0.99 -0.13
-vn 0.03 0.99 -0.13
-vn 0.01 -1.00 -0.07
-vn 0.01 -1.00 -0.06
-vn 0.90 0.01 0.44
-vn -0.05 0.07 1.00
-vn -0.05 0.11 0.99
-# 299 vertex normals
-
-vt 0.55 0.02 0.00
-vt 0.58 0.02 0.00
-vt 0.86 0.72 0.00
-vt 0.86 0.69 0.00
-vt 0.93 0.75 0.00
-vt 0.95 0.70 0.00
-vt 0.86 0.64 0.00
-vt 0.95 0.66 0.00
-vt 0.86 0.59 0.00
-vt 0.95 0.59 0.00
-vt 0.87 0.54 0.00
-vt 0.95 0.55 0.00
-vt 0.87 0.50 0.00
-vt 0.80 0.50 0.00
-vt 0.80 0.48 0.00
-vt 0.75 0.48 0.00
-vt 0.79 0.54 0.00
-vt 0.74 0.54 0.00
-vt 0.79 0.60 0.00
-vt 0.75 0.60 0.00
-vt 0.79 0.64 0.00
-vt 0.74 0.64 0.00
-vt 0.78 0.71 0.00
-vt 0.79 0.68 0.00
-vt 0.74 0.67 0.00
-vt 0.73 0.70 0.00
-vt 0.64 0.67 0.00
-vt 0.63 0.69 0.00
-vt 0.65 0.50 0.00
-vt 0.64 0.54 0.00
-vt 0.66 0.60 0.00
-vt 0.65 0.64 0.00
-vt 0.20 0.10 0.00
-vt 0.20 0.17 0.00
-vt 0.25 0.11 0.00
-vt 0.16 0.16 0.00
-vt 0.15 0.22 0.00
-vt 0.11 0.21 0.00
-vt 0.10 0.25 0.00
-vt 0.06 0.24 0.00
-vt 0.05 0.32 0.00
-vt 0.08 0.33 0.00
-vt 0.14 0.33 0.00
-vt 0.15 0.26 0.00
-vt 0.18 0.26 0.00
-vt 0.19 0.22 0.00
-vt 0.21 0.23 0.00
-vt 0.23 0.17 0.00
-vt 0.27 0.11 0.00
-vt 0.29 0.13 0.00
-vt 0.26 0.19 0.00
-vt 0.24 0.24 0.00
-vt 0.21 0.27 0.00
-vt 0.23 0.28 0.00
-vt 0.19 0.35 0.00
-vt 0.21 0.36 0.00
-vt 0.16 0.34 0.00
-vt 0.39 0.68 0.00
-vt 0.25 0.68 0.00
-vt 0.39 0.69 0.00
-vt 0.25 0.69 0.00
-vt 0.25 0.70 0.00
-vt 0.39 0.70 0.00
-vt 0.25 0.71 0.00
-vt 0.39 0.71 0.00
-vt 0.17 0.09 0.00
-vt 0.12 0.15 0.00
-vt 0.08 0.20 0.00
-vt 0.06 0.20 0.00
-vt 0.08 0.14 0.00
-vt 0.06 0.14 0.00
-vt 0.10 0.08 0.00
-vt 0.06 0.07 0.00
-vt 0.13 0.08 0.00
-vt 0.48 0.02 0.00
-vt 0.51 0.02 0.00
-vt 0.53 0.02 0.00
-vt 0.55 0.03 0.00
-vt 0.87 0.46 0.00
-vt 0.95 0.50 0.00
-vt 0.95 0.45 0.00
-vt 0.37 0.72 0.00
-vt 0.38 0.71 0.00
-vt 0.37 0.73 0.00
-vt 0.39 0.73 0.00
-vt 0.39 0.72 0.00
-vt 0.38 0.74 0.00
-vt 0.01 0.74 0.00
-vt 0.02 0.73 0.00
-vt 0.04 0.73 0.00
-vt 0.03 0.73 0.00
-vt 0.77 0.13 0.00
-vt 0.87 0.13 0.00
-vt 0.77 0.11 0.00
-vt 0.78 0.11 0.00
-vt 0.85 0.11 0.00
-vt 0.20 0.52 0.00
-vt 0.20 0.50 0.00
-vt 0.22 0.51 0.00
-vt 0.21 0.50 0.00
-vt 0.21 0.57 0.00
-vt 0.20 0.55 0.00
-vt 0.23 0.56 0.00
-vt 0.23 0.55 0.00
-vt 0.21 0.58 0.00
-vt 0.23 0.57 0.00
-vt 0.23 0.59 0.00
-vt 0.21 0.51 0.00
-vt 0.21 0.53 0.00
-vt 0.20 0.53 0.00
-vt 0.21 0.56 0.00
-vt 0.21 0.54 0.00
-vt 0.22 0.54 0.00
-vt 0.22 0.58 0.00
-vt 0.23 0.58 0.00
-vt 0.48 0.06 0.00
-vt 0.47 0.06 0.00
-vt 0.39 0.62 0.00
-vt 0.44 0.63 0.00
-vt 0.40 0.64 0.00
-vt 0.38 0.63 0.00
-vt 0.38 0.65 0.00
-vt 0.37 0.63 0.00
-vt 0.38 0.66 0.00
-vt 0.40 0.67 0.00
-vt 0.44 0.65 0.00
-vt 0.44 0.67 0.00
-vt 0.54 0.66 0.00
-vt 0.54 0.68 0.00
-vt 0.54 0.63 0.00
-vt 0.54 0.60 0.00
-vt 0.54 0.54 0.00
-vt 0.44 0.54 0.00
-vt 0.45 0.52 0.00
-vt 0.40 0.54 0.00
-vt 0.40 0.53 0.00
-vt 0.38 0.54 0.00
-vt 0.39 0.49 0.00
-vt 0.38 0.59 0.00
-vt 0.37 0.59 0.00
-vt 0.40 0.59 0.00
-vt 0.44 0.59 0.00
-vt 0.12 0.42 0.00
-vt 0.10 0.50 0.00
-vt 0.14 0.43 0.00
-vt 0.16 0.43 0.00
-vt 0.18 0.43 0.00
-vt 0.16 0.51 0.00
-vt 0.14 0.51 0.00
-vt 0.15 0.54 0.00
-vt 0.13 0.54 0.00
-vt 0.13 0.50 0.00
-vt 0.12 0.54 0.00
-vt 0.09 0.53 0.00
-vt 0.09 0.55 0.00
-vt 0.05 0.54 0.00
-vt 0.05 0.52 0.00
-vt 0.04 0.52 0.00
-vt 0.06 0.49 0.00
-vt 0.01 0.53 0.00
-vt 0.04 0.49 0.00
-vt 0.07 0.41 0.00
-vt 0.05 0.41 0.00
-vt 0.12 0.56 0.00
-vt 0.13 0.56 0.00
-vt 0.14 0.56 0.00
-vt 0.54 0.51 0.00
-vt 0.65 0.01 0.00
-vt 0.65 0.02 0.00
-vt 0.52 0.01 0.00
-vt 0.52 0.02 0.00
-vt 0.62 0.03 0.00
-vt 0.66 0.02 0.00
-vt 0.62 0.02 0.00
-vt 0.22 0.56 0.00
-vt 0.20 0.49 0.00
-vt 0.21 0.49 0.00
-vt 0.23 0.54 0.00
-vt 0.24 0.56 0.00
-vt 0.24 0.57 0.00
-vt 0.75 0.10 0.00
-vt 0.88 0.11 0.00
-vt 0.75 0.09 0.00
-vt 0.88 0.10 0.00
-vt 0.88 0.08 0.00
-vt 0.75 0.08 0.00
-vt 0.88 0.06 0.00
-vt 0.75 0.05 0.00
-vt 0.88 0.03 0.00
-vt 0.75 0.03 0.00
-vt 0.88 0.02 0.00
-vt 0.75 0.01 0.00
-vt 0.88 0.01 0.00
-vt 0.75 0.00 0.00
-vt 0.94 0.09 0.00
-vt 0.94 0.08 0.00
-vt 0.94 0.07 0.00
-vt 0.94 0.06 0.00
-vt 0.94 0.04 0.00
-vt 0.94 0.03 0.00
-vt 0.99 0.07 0.00
-vt 0.99 0.06 0.00
-vt 0.99 0.05 0.00
-vt 0.73 0.03 0.00
-vt 0.73 0.05 0.00
-vt 0.73 0.08 0.00
-vt 0.73 0.09 0.00
-vt 0.73 0.10 0.00
-vt 0.73 0.02 0.00
-vt 0.70 0.05 0.00
-vt 0.70 0.07 0.00
-vt 0.68 0.05 0.00
-vt 0.68 0.04 0.00
-vt 0.70 0.03 0.00
-vt 0.73 0.01 0.00
-vt 0.70 0.02 0.00
-vt 0.67 0.05 0.00
-vt 0.67 0.06 0.00
-vt 0.70 0.08 0.00
-vt 0.70 0.09 0.00
-vt 0.68 0.03 0.00
-vt 0.67 0.07 0.00
-vt 0.48 0.03 0.00
-vt 0.64 0.44 0.00
-vt 0.40 0.52 0.00
-vt 0.01 0.32 0.00
-vt 0.49 0.03 0.00
-vt 0.48 0.01 0.00
-vt 0.66 0.01 0.00
-# 229 texture coords
-
-g P_51_Mustang_Left_Wing
-f 1688/1032/1709 1689/1033/1709 1690/1033/1709
-f 1691/1034/1710 1692/1035/1711 1693/1036/1712
-f 1694/1037/1713 1693/1036/1712 1692/1035/1711
-f 1692/1035/1711 1695/1038/1714 1694/1037/1713
-f 1696/1039/1715 1694/1037/1713 1695/1038/1714
-f 1695/1038/1714 1697/1040/1716 1696/1039/1715
-f 1698/1041/1717 1696/1039/1715 1697/1040/1716
-f 1697/1040/1716 1699/1042/1718 1698/1041/1717
-f 1700/1043/1719 1698/1041/1717 1699/1042/1718
-f 1699/1042/1718 1701/1044/1720 1700/1043/1719
-f 1701/1044/1720 1699/1042/1718 1702/1045/1721
-f 1702/1045/1721 1703/1046/1721 1701/1044/1720
-f 1688/1047/1722 1703/1046/1721 1702/1045/1721
-f 1702/1045/1721 1704/1048/1723 1688/1047/1722
-f 1705/1049/1724 1688/1047/1722 1704/1048/1723
-f 1704/1048/1723 1706/1050/1725 1705/1049/1724
-f 1707/1051/1726 1705/1049/1724 1706/1050/1725
-f 1706/1050/1725 1708/1052/1727 1707/1051/1726
-f 1709/1053/1728 1707/1051/1726 1708/1052/1727
-f 1710/1054/1729 1711/1055/1730 1691/1034/1710
-f 1692/1035/1711 1691/1034/1710 1711/1055/1730
-f 1692/1035/1711 1711/1055/1730 1695/1038/1714
-f 1708/1052/1727 1695/1038/1714 1711/1055/1730
-f 1708/1052/1727 1706/1050/1725 1695/1038/1714
-f 1697/1040/1716 1695/1038/1714 1706/1050/1725
-f 1706/1050/1725 1704/1048/1723 1697/1040/1716
-f 1699/1042/1718 1697/1040/1716 1704/1048/1723
-f 1704/1048/1723 1702/1045/1721 1699/1042/1718
-f 1708/1052/1727 1711/1055/1730 1709/1053/1728
-f 1712/1056/1731 1709/1053/1728 1711/1055/1730
-f 1711/1055/1730 1710/1054/1729 1712/1056/1731
-f 1713/1057/1732 1712/1056/1731 1710/1054/1729
-f 1712/1056/1731 1713/1057/1732 1714/1058/1733
-f 1715/1059/1734 1714/1058/1733 1713/1057/1732
-f 1688/1047/1722 1705/1049/1724 1689/1060/1735
-f 1716/1061/1736 1689/1060/1735 1705/1049/1724
-f 1716/1061/1736 1705/1049/1724 1717/1062/1737
-f 1707/1051/1726 1717/1062/1737 1705/1049/1724
-f 1707/1051/1726 1709/1053/1728 1717/1062/1737
-f 1718/1063/1738 1717/1062/1737 1709/1053/1728
-f 1718/1063/1738 1709/1053/1728 1714/1058/1733
-f 1712/1056/1731 1714/1058/1733 1709/1053/1728
-f 1719/1064/1739 1720/1065/1740 1721/1066/1741
-f 1720/1065/1740 1719/1064/1739 1722/1067/1742
-f 1722/1067/1742 1723/1068/1743 1720/1065/1740
-f 1723/1068/1743 1722/1067/1742 1724/1069/1744
-f 1724/1069/1744 1725/1070/1745 1723/1068/1743
-f 1725/1070/1745 1724/1069/1744 1726/1071/1746
-f 1726/1071/1746 1690/1072/1747 1725/1070/1745
-f 1727/1073/1748 1725/1070/1745 1690/1072/1747
-f 1727/1073/1748 1728/1074/1743 1725/1070/1745
-f 1729/1075/1743 1725/1070/1745 1728/1074/1743
-f 1729/1075/1743 1728/1074/1743 1730/1076/1749
-f 1730/1076/1749 1731/1077/1740 1729/1075/1743
-f 1731/1077/1740 1730/1076/1749 1732/1078/1750
-f 1731/1077/1740 1732/1078/1750 1720/1065/1740
-f 1733/1079/1751 1720/1065/1740 1732/1078/1750
-f 1733/1079/1751 1721/1066/1741 1720/1065/1740
-f 1721/1066/1741 1733/1079/1751 1734/1080/1752
-f 1734/1080/1752 1733/1079/1751 1693/1081/1753
-f 1729/1075/1743 1723/1068/1743 1725/1070/1745
-f 1723/1068/1743 1729/1075/1743 1731/1077/1740
-f 1731/1077/1740 1720/1065/1740 1723/1068/1743
-f 1691/1082/1754 1693/1081/1753 1733/1079/1751
-f 1733/1079/1751 1732/1078/1750 1691/1082/1754
-f 1710/1083/1755 1691/1082/1754 1732/1078/1750
-f 1732/1078/1750 1735/1084/1756 1710/1083/1755
-f 1713/1085/1757 1710/1083/1755 1735/1084/1756
-f 1735/1084/1756 1736/1086/1758 1713/1085/1757
-f 1715/1087/1759 1713/1085/1757 1736/1086/1758
-f 1737/1088/1760 1730/1076/1749 1728/1074/1743
-f 1737/1088/1760 1736/1086/1758 1730/1076/1749
-f 1735/1084/1756 1730/1076/1749 1736/1086/1758
-f 1735/1084/1756 1732/1078/1750 1730/1076/1749
-f 1738/1089/1726 1739/1090/1725 1740/1091/1761
-f 1739/1090/1725 1738/1089/1726 1741/1092/1762
-f 1742/1091/1763 1741/1092/1762 1738/1089/1726
-f 1741/1092/1762 1742/1091/1763 1743/1093/1764
-f 1744/1094/1765 1743/1093/1764 1742/1091/1763
-f 1743/1093/1764 1744/1094/1765 1745/1095/1766
-f 1746/1096/1767 1745/1095/1766 1744/1094/1765
-f 1745/1095/1766 1746/1096/1767 1747/1093/1768
-f 1748/1094/1769 1747/1093/1768 1746/1096/1767
-f 1747/1093/1768 1748/1094/1769 1749/1092/1770
-f 1740/1091/1761 1749/1092/1770 1748/1094/1769
-f 1749/1092/1770 1740/1091/1761 1739/1090/1725
-f 1750/1091/1763 1751/1092/1762 1752/1089/1726
-f 1751/1092/1762 1750/1091/1763 1753/1093/1764
-f 1754/1094/1765 1753/1093/1764 1750/1091/1763
-f 1753/1093/1764 1754/1094/1765 1755/1095/1766
-f 1756/1096/1767 1755/1095/1766 1754/1094/1765
-f 1755/1095/1766 1756/1096/1767 1757/1093/1768
-f 1758/1094/1769 1757/1093/1768 1756/1096/1767
-f 1757/1093/1768 1758/1094/1769 1759/1092/1770
-f 1760/1091/1761 1759/1092/1770 1758/1094/1769
-f 1759/1092/1770 1760/1091/1761 1761/1090/1725
-f 1752/1089/1726 1761/1090/1725 1760/1091/1761
-f 1761/1090/1725 1752/1089/1726 1751/1092/1762
-f 1762/1094/1765 1763/1093/1764 1764/1091/1763
-f 1763/1093/1764 1762/1094/1765 1765/1095/1766
-f 1766/1096/1767 1765/1095/1766 1762/1094/1765
-f 1765/1095/1766 1766/1096/1767 1767/1093/1768
-f 1768/1094/1769 1767/1093/1768 1766/1096/1767
-f 1767/1093/1768 1768/1094/1769 1769/1092/1770
-f 1770/1091/1761 1769/1092/1770 1768/1094/1769
-f 1769/1092/1770 1770/1091/1761 1771/1090/1725
-f 1772/1089/1726 1771/1090/1725 1770/1091/1761
-f 1771/1090/1725 1772/1089/1726 1773/1092/1762
-f 1764/1091/1763 1773/1092/1762 1772/1089/1726
-f 1773/1092/1762 1764/1091/1763 1763/1093/1764
-f 1774/1097/1771 1722/1067/1742 1719/1064/1739
-f 1722/1067/1742 1774/1097/1771 1775/1098/1772
-f 1775/1098/1772 1724/1069/1744 1722/1067/1742
-f 1724/1069/1744 1775/1098/1772 1776/1099/1773
-f 1776/1099/1773 1726/1071/1746 1724/1069/1744
-f 1776/1099/1773 1777/1100/1774 1726/1071/1746
-f 1776/1099/1773 1778/1101/1775 1777/1100/1774
-f 1779/1102/1748 1777/1100/1774 1778/1101/1775
-f 1778/1101/1775 1780/1103/1776 1779/1102/1748
-f 1781/1104/1777 1779/1102/1748 1780/1103/1776
-f 1782/1105/1744 1775/1098/1772 1774/1097/1771
-f 1775/1098/1772 1782/1105/1744 1778/1101/1775
-f 1778/1101/1775 1776/1099/1773 1775/1098/1772
-f 1780/1103/1776 1778/1101/1775 1782/1105/1744
-f 1783/1106/1778 1779/1107/1778 1781/1106/1778
-f 1784/1107/1778 1779/1107/1778 1783/1106/1778
-f 1777/1108/1778 1779/1107/1778 1784/1107/1778
-f 1703/1108/1778 1777/1108/1778 1784/1107/1778
-f 1777/1108/1778 1703/1108/1778 1726/1109/1778
-f 1703/1108/1778 1688/1032/1778 1726/1109/1778
-f 1726/1109/1778 1688/1032/1778 1690/1033/1778
-f 1784/1110/1779 1701/1044/1720 1703/1046/1721
-f 1701/1044/1720 1784/1110/1779 1785/1111/1723
-f 1785/1111/1723 1700/1043/1719 1701/1044/1720
-f 1783/1112/1779 1785/1111/1723 1784/1110/1779
-f 1749/1113/1780 1739/1114/1780 1747/1115/1780
-f 1739/1114/1780 1743/1116/1780 1747/1115/1780
-f 1741/1117/1780 1743/1116/1780 1739/1114/1780
-f 1747/1115/1780 1743/1116/1780 1745/1118/1780
-f 1759/1113/1780 1761/1114/1780 1757/1115/1780
-f 1761/1114/1780 1753/1116/1780 1757/1115/1780
-f 1751/1117/1780 1753/1116/1780 1761/1114/1780
-f 1757/1115/1780 1753/1116/1780 1755/1118/1780
-f 1769/1113/1780 1771/1114/1780 1767/1115/1780
-f 1771/1114/1780 1763/1116/1780 1767/1115/1780
-f 1773/1117/1780 1763/1116/1780 1771/1114/1780
-f 1767/1115/1780 1763/1116/1780 1765/1118/1780
-f 1786/1119/1781 1787/1119/1781 1788/1119/1781
-f 1789/1119/1781 1788/1119/1781 1787/1119/1781
-f 1790/1120/1782 1791/1120/1782 1786/1120/1782
-f 1787/1120/1782 1786/1120/1782 1791/1120/1782
-f 1791/1120/1783 1790/1120/1783 1792/1121/1783
-f 1793/1121/1783 1792/1121/1783 1790/1120/1783
-f 1794/1121/1784 1795/1121/1784 1793/1122/1784
-f 1792/1122/1784 1793/1122/1784 1795/1121/1784
-f 1788/1123/1785 1794/1124/1785 1786/1125/1785
-f 1790/1126/1785 1794/1124/1785 1793/1127/1785
-f 1786/1125/1785 1794/1124/1785 1790/1126/1785
-f 1789/1123/1786 1787/1125/1786 1795/1124/1786
-f 1795/1124/1786 1787/1125/1786 1792/1127/1786
-f 1792/1127/1786 1787/1125/1786 1791/1126/1786
-f 1727/1128/1787 1690/1129/1787 1716/1130/1787
-f 1689/1131/1787 1716/1130/1787 1690/1129/1787
-f 1737/1132/1788 1728/1133/1789 1718/1134/1789
-f 1717/1135/1789 1718/1134/1789 1728/1133/1789
-f 1717/1135/1790 1728/1133/1790 1716/1130/1790
-f 1727/1128/1790 1716/1130/1790 1728/1133/1790
-f 1736/1136/1791 1737/1132/1791 1714/1137/1791
-f 1718/1134/1792 1714/1137/1792 1737/1132/1792
-f 1715/1138/1793 1736/1136/1793 1714/1137/1793
-f 1780/1139/1794 1782/1140/1794 1785/1128/1794
-f 1700/1141/1795 1785/1128/1795 1782/1140/1795
-f 1783/1129/1796 1781/1129/1796 1785/1128/1796
-f 1780/1139/1797 1785/1128/1797 1781/1129/1797
-f 1696/1142/1798 1698/1143/1798 1719/1135/1798
-f 1774/1144/1799 1719/1135/1799 1698/1143/1799
-f 1774/1144/1800 1698/1143/1800 1782/1140/1800
-f 1700/1141/1801 1782/1140/1801 1698/1143/1801
-f 1693/1138/1802 1694/1145/1802 1734/1146/1802
-f 1721/1137/1803 1694/1145/1803 1719/1135/1803
-f 1696/1142/1804 1719/1135/1804 1694/1145/1804
-f 1734/1146/1805 1694/1145/1805 1721/1137/1805
-f 1796/1147/1806 1797/1148/1806 1798/1148/1806
-f 1799/1149/1807 1800/1150/1808 1801/1151/1809
-f 1799/1149/1807 1801/1151/1809 1802/1152/1810
-f 1803/1153/1811 1802/1152/1810 1801/1151/1809
-f 1802/1152/1810 1803/1153/1811 1804/1154/1812
-f 1805/1153/1813 1804/1154/1812 1803/1153/1811
-f 1805/1153/1813 1803/1153/1811 1806/1155/1814
-f 1803/1153/1811 1801/1151/1809 1806/1155/1814
-f 1807/1156/1815 1806/1155/1814 1801/1151/1809
-f 1801/1151/1809 1808/1157/1816 1807/1156/1815
-f 1809/1158/1817 1807/1156/1815 1808/1157/1816
-f 1808/1157/1816 1810/1159/1818 1809/1158/1817
-f 1811/1160/1819 1809/1158/1817 1810/1159/1818
-f 1811/1160/1819 1810/1159/1818 1715/1059/1820
-f 1714/1058/1821 1715/1059/1820 1810/1159/1818
-f 1714/1058/1821 1810/1159/1818 1718/1063/1728
-f 1812/1161/1822 1718/1063/1728 1810/1159/1818
-f 1718/1063/1728 1812/1161/1822 1717/1062/1726
-f 1813/1162/1823 1717/1062/1726 1812/1161/1822
-f 1810/1159/1818 1808/1157/1816 1812/1161/1822
-f 1800/1150/1808 1812/1161/1822 1808/1157/1816
-f 1808/1157/1816 1801/1151/1809 1800/1150/1808
-f 1813/1162/1823 1814/1163/1824 1717/1062/1726
-f 1814/1163/1824 1813/1162/1823 1815/1164/1825
-f 1815/1164/1825 1816/1165/1826 1814/1163/1824
-f 1815/1164/1825 1817/1166/1827 1816/1165/1826
-f 1798/1167/1828 1816/1165/1826 1817/1166/1827
-f 1817/1166/1827 1818/1168/1829 1798/1167/1828
-f 1796/1169/1830 1798/1167/1828 1818/1168/1829
-f 1819/1168/1831 1796/1169/1830 1818/1168/1829
-f 1818/1168/1829 1820/1170/1832 1819/1168/1831
-f 1821/1171/1833 1819/1168/1831 1820/1170/1832
-f 1821/1171/1833 1820/1170/1832 1804/1154/1812
-f 1802/1152/1810 1804/1154/1812 1820/1170/1832
-f 1802/1152/1810 1820/1170/1832 1799/1149/1807
-f 1822/1172/1834 1799/1149/1807 1820/1170/1832
-f 1799/1149/1807 1822/1172/1834 1800/1150/1808
-f 1823/1173/1835 1800/1150/1808 1822/1172/1834
-f 1800/1150/1808 1823/1173/1835 1812/1161/1822
-f 1813/1162/1823 1812/1161/1822 1823/1173/1835
-f 1823/1173/1835 1815/1164/1825 1813/1162/1823
-f 1815/1164/1825 1823/1173/1835 1817/1166/1827
-f 1822/1172/1834 1817/1166/1827 1823/1173/1835
-f 1817/1166/1827 1822/1172/1834 1818/1168/1829
-f 1820/1170/1832 1818/1168/1829 1822/1172/1834
-f 1824/1174/1836 1825/1175/1837 1826/1176/1838
-f 1826/1176/1838 1737/1088/1740 1824/1174/1836
-f 1826/1176/1838 1827/1177/1839 1737/1088/1740
-f 1736/1086/1840 1737/1088/1740 1827/1177/1839
-f 1736/1086/1840 1827/1177/1839 1715/1087/1841
-f 1811/1178/1842 1715/1087/1841 1827/1177/1839
-f 1811/1178/1842 1827/1177/1839 1809/1179/1843
-f 1828/1180/1844 1809/1179/1843 1827/1177/1839
-f 1809/1179/1843 1828/1180/1844 1807/1181/1845
-f 1829/1182/1846 1807/1181/1845 1828/1180/1844
-f 1828/1180/1844 1830/1183/1847 1829/1182/1846
-f 1831/1184/1848 1829/1182/1846 1830/1183/1847
-f 1831/1184/1848 1830/1183/1847 1832/1185/1849
-f 1832/1185/1849 1833/1186/1850 1831/1184/1848
-f 1833/1186/1850 1832/1185/1849 1834/1187/1851
-f 1835/1188/1852 1834/1187/1851 1832/1185/1849
-f 1835/1188/1852 1797/1189/1850 1834/1187/1851
-f 1835/1188/1852 1836/1190/1853 1797/1189/1850
-f 1797/1189/1850 1796/1191/1854 1834/1187/1851
-f 1837/1192/1855 1797/1189/1850 1836/1190/1853
-f 1836/1190/1853 1838/1193/1777 1837/1192/1855
-f 1839/1194/1746 1837/1192/1855 1838/1193/1777
-f 1838/1193/1777 1727/1073/1856 1839/1194/1746
-f 1690/1072/1857 1839/1194/1746 1727/1073/1856
-f 1727/1073/1856 1838/1193/1777 1728/1074/1743
-f 1824/1174/1836 1728/1074/1743 1838/1193/1777
-f 1838/1193/1777 1836/1190/1853 1824/1174/1836
-f 1825/1175/1837 1824/1174/1836 1836/1190/1853
-f 1836/1190/1853 1835/1188/1852 1825/1175/1837
-f 1832/1185/1849 1825/1175/1837 1835/1188/1852
-f 1825/1175/1837 1832/1185/1849 1830/1183/1847
-f 1830/1183/1847 1826/1176/1838 1825/1175/1837
-f 1830/1183/1847 1828/1180/1844 1826/1176/1838
-f 1827/1177/1839 1826/1176/1838 1828/1180/1844
-f 1728/1074/1743 1824/1174/1836 1737/1088/1740
-f 1834/1187/1858 1796/1191/1858 1819/1187/1858
-f 1834/1187/1858 1819/1187/1858 1833/1186/1859
-f 1821/1186/1860 1833/1186/1859 1819/1187/1858
-f 1821/1186/1860 1804/1195/1861 1833/1186/1859
-f 1840/1195/1862 1833/1186/1859 1804/1195/1861
-f 1840/1195/1862 1804/1195/1861 1841/1196/1863
-f 1805/1196/1864 1841/1196/1863 1804/1195/1861
-f 1841/1196/1863 1805/1196/1864 1806/1197/1865
-f 1841/1196/1863 1806/1197/1865 1829/1182/1866
-f 1807/1181/1867 1829/1182/1866 1806/1197/1865
-f 1842/1198/1868 1814/1163/1824 1816/1165/1826
-f 1814/1163/1824 1842/1198/1868 1716/1061/1824
-f 1716/1061/1824 1717/1062/1726 1814/1163/1824
-f 1689/1060/1869 1716/1061/1824 1842/1198/1868
-f 1840/1195/1870 1831/1184/1848 1833/1186/1850
-f 1831/1184/1848 1840/1195/1870 1829/1182/1846
-f 1841/1196/1871 1829/1182/1846 1840/1195/1870
-f 1843/1127/1872 1844/1125/1872 1845/1124/1872
-f 1846/1123/1872 1845/1124/1872 1844/1125/1872
-f 1847/1123/1873 1848/1125/1873 1849/1124/1873
-f 1850/1127/1873 1849/1124/1873 1848/1125/1873
-f 1851/1119/1874 1852/1119/1874 1853/1119/1874
-f 1854/1119/1874 1853/1119/1874 1852/1119/1874
-f 1855/1199/1875 1856/1200/1875 1851/1201/1875
-f 1852/1202/1875 1851/1201/1875 1856/1200/1875
-f 1857/1121/1876 1858/1121/1876 1855/1122/1876
-f 1856/1122/1876 1855/1122/1876 1858/1121/1876
-f 1853/1123/1872 1857/1124/1872 1851/1125/1872
-f 1855/1127/1872 1851/1125/1872 1857/1124/1872
-f 1854/1123/1873 1852/1125/1873 1858/1124/1873
-f 1856/1127/1873 1858/1124/1873 1852/1125/1873
-f 1859/1119/1877 1860/1119/1877 1861/1119/1877
-f 1862/1119/1877 1861/1119/1877 1860/1119/1877
-f 1863/1199/1875 1864/1200/1875 1859/1201/1875
-f 1860/1202/1875 1859/1201/1875 1864/1200/1875
-f 1865/1121/1876 1866/1121/1876 1863/1122/1876
-f 1864/1122/1876 1863/1122/1876 1866/1121/1876
-f 1861/1123/1872 1865/1124/1872 1859/1125/1872
-f 1863/1127/1872 1859/1125/1872 1865/1124/1872
-f 1862/1123/1873 1860/1125/1873 1866/1124/1873
-f 1864/1127/1873 1866/1124/1873 1860/1125/1873
-f 1837/1200/1878 1839/1203/1878 1797/1204/1878
-f 1690/1033/1879 1689/1033/1879 1839/1203/1879
-f 1842/1205/1880 1816/1200/1880 1689/1033/1880
-f 1689/1033/1881 1816/1200/1881 1839/1203/1881
-f 1839/1203/1882 1816/1200/1882 1797/1204/1882
-f 1816/1200/1883 1798/1204/1883 1797/1204/1883
-f 1718/1206/1884 1717/1143/1884 1714/1145/1884
-f 1716/1139/1885 1689/1207/1885 1717/1143/1885
-f 1717/1143/1886 1689/1207/1886 1714/1145/1886
-f 1690/1208/1887 1727/1130/1887 1689/1207/1887
-f 1689/1207/1888 1727/1130/1888 1714/1145/1888
-f 1728/1209/1889 1737/1210/1889 1727/1130/1889
-f 1727/1130/1890 1737/1210/1890 1714/1145/1890
-f 1737/1210/1891 1736/1211/1891 1714/1145/1891
-f 1714/1145/1892 1736/1211/1892 1715/1138/1892
-f 1844/1119/1874 1848/1119/1874 1846/1119/1874
-f 1847/1119/1874 1846/1119/1874 1848/1119/1874
-f 1843/1199/1875 1850/1200/1875 1844/1201/1875
-f 1848/1202/1875 1844/1201/1875 1850/1200/1875
-f 1845/1121/1893 1849/1121/1893 1843/1122/1893
-f 1850/1122/1893 1843/1122/1893 1849/1121/1893
-f 1867/1212/1894 1868/1213/1894 1869/1214/1895
-f 1868/1213/1894 1867/1212/1894 1870/1215/1896
-f 1871/1214/1896 1870/1215/1896 1867/1212/1894
-f 1870/1215/1896 1871/1214/1896 1872/1216/1897
-f 1873/1217/1898 1872/1216/1897 1871/1214/1896
-f 1872/1216/1897 1873/1217/1898 1874/1218/1899
-f 1875/1219/1900 1874/1218/1899 1873/1217/1898
-f 1874/1218/1899 1875/1219/1900 1876/1220/1901
-f 1877/1221/1902 1876/1220/1901 1875/1219/1900
-f 1876/1220/1901 1877/1221/1902 1878/1222/1903
-f 1879/1223/1904 1878/1222/1903 1877/1221/1902
-f 1878/1222/1903 1879/1223/1904 1880/1224/1905
-f 1881/1225/1905 1880/1224/1905 1879/1223/1904
-f 1880/1224/1905 1881/1225/1905 1882/1222/1906
-f 1883/1223/1906 1882/1222/1906 1881/1225/1905
-f 1882/1222/1906 1883/1223/1906 1884/1220/1907
-f 1885/1221/1908 1884/1220/1907 1883/1223/1906
-f 1884/1220/1907 1885/1221/1908 1886/1218/1909
-f 1887/1219/1910 1886/1218/1909 1885/1221/1908
-f 1886/1218/1909 1887/1219/1910 1888/1216/1911
-f 1889/1217/1912 1888/1216/1911 1887/1219/1910
-f 1888/1216/1911 1889/1217/1912 1890/1215/1913
-f 1869/1214/1895 1890/1215/1913 1889/1217/1912
-f 1890/1215/1913 1869/1214/1895 1868/1213/1894
-f 1868/1213/1914 1891/1226/1915 1890/1215/1916
-f 1892/1227/1917 1890/1215/1916 1891/1226/1915
-f 1890/1215/1916 1892/1227/1917 1888/1216/1918
-f 1893/1228/1919 1888/1216/1918 1892/1227/1917
-f 1888/1216/1918 1893/1228/1919 1886/1218/1920
-f 1894/1229/1921 1886/1218/1920 1893/1228/1919
-f 1886/1218/1920 1894/1229/1921 1884/1220/1922
-f 1895/1230/1923 1884/1220/1922 1894/1229/1921
-f 1884/1220/1922 1895/1230/1923 1882/1222/1924
-f 1896/1231/1925 1882/1222/1924 1895/1230/1923
-f 1882/1222/1924 1896/1231/1925 1880/1224/1926
-f 1897/1231/1927 1880/1224/1926 1896/1231/1925
-f 1880/1224/1926 1897/1231/1927 1878/1222/1928
-f 1898/1231/1929 1878/1222/1928 1897/1231/1927
-f 1878/1222/1928 1898/1231/1929 1876/1220/1930
-f 1899/1230/1931 1876/1220/1930 1898/1231/1929
-f 1876/1220/1930 1899/1230/1931 1874/1218/1932
-f 1900/1229/1933 1874/1218/1932 1899/1230/1931
-f 1891/1226/1915 1901/1232/1934 1892/1227/1917
-f 1902/1232/1935 1892/1227/1917 1901/1232/1934
-f 1892/1227/1917 1902/1232/1935 1893/1228/1919
-f 1874/1218/1932 1900/1229/1933 1872/1216/1936
-f 1903/1228/1937 1872/1216/1936 1900/1229/1933
-f 1872/1216/1936 1903/1228/1937 1870/1215/1938
-f 1904/1227/1939 1870/1215/1938 1903/1228/1937
-f 1870/1215/1938 1904/1227/1939 1868/1213/1914
-f 1891/1226/1915 1868/1213/1914 1904/1227/1939
-f 1904/1227/1939 1905/1232/1940 1891/1226/1915
-f 1901/1232/1934 1891/1226/1915 1905/1232/1940
-f 1901/1232/1934 1905/1232/1940 1906/1233/1941
-f 1902/1232/1935 1901/1232/1934 1906/1233/1941
-f 1907/1233/1942 1902/1232/1935 1906/1233/1941
-f 1907/1233/1942 1893/1228/1919 1902/1232/1935
-f 1893/1228/1919 1907/1233/1942 1894/1229/1921
-f 1908/1233/1943 1894/1229/1921 1907/1233/1942
-f 1894/1229/1921 1908/1233/1943 1895/1230/1923
-f 1909/1234/1944 1895/1230/1923 1908/1233/1943
-f 1895/1230/1923 1909/1234/1944 1896/1231/1925
-f 1910/1234/1945 1896/1231/1925 1909/1234/1944
-f 1896/1231/1925 1910/1234/1945 1897/1231/1927
-f 1911/1234/1946 1897/1231/1927 1910/1234/1945
-f 1897/1231/1927 1911/1234/1946 1898/1231/1929
-f 1912/1234/1947 1898/1231/1929 1911/1234/1946
-f 1898/1231/1929 1912/1234/1947 1899/1230/1931
-f 1913/1234/1948 1899/1230/1931 1912/1234/1947
-f 1899/1230/1931 1913/1234/1948 1900/1229/1933
-f 1914/1233/1949 1900/1229/1933 1913/1234/1948
-f 1900/1229/1933 1914/1233/1949 1903/1228/1937
-f 1915/1233/1950 1903/1228/1937 1914/1233/1949
-f 1903/1228/1937 1915/1233/1950 1904/1227/1939
-f 1905/1232/1940 1904/1227/1939 1915/1233/1950
-f 1905/1232/1940 1915/1233/1950 1906/1233/1941
-f 1915/1233/1950 1914/1233/1949 1906/1233/1941
-f 1914/1233/1949 1913/1234/1948 1906/1233/1941
-f 1913/1234/1948 1912/1234/1947 1906/1233/1941
-f 1912/1234/1947 1911/1234/1946 1906/1233/1941
-f 1911/1234/1946 1910/1234/1945 1906/1233/1941
-f 1910/1234/1945 1909/1234/1944 1906/1233/1941
-f 1909/1234/1944 1908/1233/1943 1906/1233/1941
-f 1908/1233/1943 1907/1233/1942 1906/1233/1941
-f 1885/1221/1951 1916/1235/1952 1887/1219/1953
-f 1917/1236/1954 1887/1219/1953 1916/1235/1952
-f 1887/1219/1953 1917/1236/1954 1889/1217/1955
-f 1918/1237/1956 1889/1217/1955 1917/1236/1954
-f 1889/1217/1955 1918/1237/1956 1869/1214/1957
-f 1919/1238/1958 1869/1214/1957 1918/1237/1956
-f 1869/1214/1957 1919/1238/1958 1867/1212/1959
-f 1920/1239/1960 1867/1212/1959 1919/1238/1958
-f 1867/1212/1959 1920/1239/1960 1871/1214/1961
-f 1921/1238/1962 1871/1214/1961 1920/1239/1960
-f 1871/1214/1961 1921/1238/1962 1873/1217/1963
-f 1922/1237/1964 1873/1217/1963 1921/1238/1962
-f 1873/1217/1963 1922/1237/1964 1875/1219/1965
-f 1923/1236/1966 1875/1219/1965 1922/1237/1964
-f 1875/1219/1965 1923/1236/1966 1877/1221/1967
-f 1924/1235/1968 1877/1221/1967 1923/1236/1966
-f 1877/1221/1967 1924/1235/1968 1879/1223/1969
-f 1925/1240/1970 1879/1223/1969 1924/1235/1968
-f 1917/1236/1954 1926/1241/1971 1918/1237/1956
-f 1918/1237/1956 1927/1242/1972 1919/1238/1958
-f 1927/1242/1972 1918/1237/1956 1926/1241/1971
-f 1926/1241/1971 1928/1243/1973 1927/1242/1972
-f 1928/1243/1973 1926/1241/1971 1929/1244/1974
-f 1930/1245/1975 1929/1244/1974 1926/1241/1971
-f 1926/1241/1971 1917/1236/1954 1930/1245/1975
-f 1916/1235/1952 1930/1245/1975 1917/1236/1954
-f 1879/1223/1969 1925/1240/1970 1881/1225/1976
-f 1931/1246/1977 1881/1225/1976 1925/1240/1970
-f 1881/1225/1976 1931/1246/1977 1883/1223/1978
-f 1932/1240/1979 1883/1223/1978 1931/1246/1977
-f 1883/1223/1978 1932/1240/1979 1885/1221/1951
-f 1916/1235/1952 1885/1221/1951 1932/1240/1979
-f 1932/1240/1979 1933/1247/1980 1916/1235/1952
-f 1930/1245/1975 1916/1235/1952 1933/1247/1980
-f 1933/1247/1980 1934/1244/1981 1930/1245/1975
-f 1929/1244/1974 1930/1245/1975 1934/1244/1981
-f 1934/1244/1981 1935/1248/1982 1929/1244/1974
-f 1929/1244/1974 1935/1248/1982 1928/1243/1973
-f 1928/1243/1973 1935/1248/1982 1936/1249/1983
-f 1936/1249/1983 1927/1242/1972 1928/1243/1973
-f 1927/1242/1972 1936/1249/1983 1937/1250/1984
-f 1937/1250/1984 1919/1238/1958 1927/1242/1972
-f 1919/1238/1958 1937/1250/1984 1920/1239/1960
-f 1938/1251/1985 1920/1239/1960 1937/1250/1984
-f 1920/1239/1960 1938/1251/1985 1921/1238/1962
-f 1939/1250/1986 1921/1238/1962 1938/1251/1985
-f 1921/1238/1962 1939/1250/1986 1922/1237/1964
-f 1940/1242/1987 1922/1237/1964 1939/1250/1986
-f 1922/1237/1964 1940/1242/1987 1923/1236/1966
-f 1941/1241/1988 1923/1236/1966 1940/1242/1987
-f 1923/1236/1966 1941/1241/1988 1924/1235/1968
-f 1942/1245/1989 1924/1235/1968 1941/1241/1988
-f 1924/1235/1968 1942/1245/1989 1925/1240/1970
-f 1943/1247/1990 1925/1240/1970 1942/1245/1989
-f 1925/1240/1970 1943/1247/1990 1931/1246/1977
-f 1944/1247/1991 1931/1246/1977 1943/1247/1990
-f 1931/1246/1977 1944/1247/1991 1932/1240/1979
-f 1933/1247/1980 1932/1240/1979 1944/1247/1991
-f 1944/1247/1991 1945/1252/1992 1933/1247/1980
-f 1934/1244/1981 1933/1247/1980 1945/1252/1992
-f 1945/1252/1992 1935/1248/1982 1934/1244/1981
-f 1946/1244/1993 1935/1248/1982 1945/1252/1992
-f 1945/1252/1992 1944/1247/1991 1946/1244/1993
-f 1943/1247/1990 1946/1244/1993 1944/1247/1991
-f 1947/1244/1994 1935/1248/1982 1946/1244/1993
-f 1946/1244/1993 1943/1247/1990 1947/1244/1994
-f 1942/1245/1989 1947/1244/1994 1943/1247/1990
-f 1947/1244/1994 1942/1245/1989 1948/1243/1995
-f 1941/1241/1988 1948/1243/1995 1942/1245/1989
-f 1948/1243/1995 1941/1241/1988 1949/1249/1996
-f 1940/1242/1987 1949/1249/1996 1941/1241/1988
-f 1949/1249/1996 1940/1242/1987 1950/1253/1997
-f 1939/1250/1986 1950/1253/1997 1940/1242/1987
-f 1950/1253/1997 1939/1250/1986 1951/1253/1998
-f 1938/1251/1985 1951/1253/1998 1939/1250/1986
-f 1951/1253/1998 1938/1251/1985 1952/1253/1999
-f 1937/1250/1984 1952/1253/1999 1938/1251/1985
-f 1952/1253/1999 1937/1250/1984 1936/1249/1983
-f 1936/1249/1983 1935/1248/1982 1952/1253/1999
-f 1952/1253/1999 1935/1248/1982 1951/1253/1998
-f 1951/1253/1998 1935/1248/1982 1950/1253/1997
-f 1950/1253/1997 1935/1248/1982 1949/1249/1996
-f 1949/1249/1996 1935/1248/1982 1948/1243/1995
-f 1948/1243/1995 1935/1248/1982 1947/1244/1994
-f 1689/1106/2000 1953/1107/2000 1690/1254/2000
-f 1796/1169/1719 1953/1255/2001 1798/1256/1719
-f 1689/1060/2002 1798/1256/1719 1953/1255/2001
-f 1953/1257/1856 1796/1191/2003 1690/1072/1856
-f 1797/1189/2004 1690/1072/1856 1796/1191/2003
-f 1798/1258/2005 1797/1258/2005 1796/1254/2005
-f 1690/1204/2006 1797/1259/2006 1689/1260/2006
-f 1798/1259/2007 1689/1260/2007 1797/1259/2007
-# 500 faces
-
-#
-# object P_51_Mustang_Left_Landing_Wheel
-#
-
-v 19.25 -7.41 18.44
-v 19.26 -7.41 18.30
-v 20.79 -7.36 18.42
-v 20.79 -7.36 18.28
-v 20.30 -0.82 17.29
-v 19.89 -9.61 17.84
-v 20.06 -0.82 17.28
-v 20.05 -9.61 18.01
-v 20.47 -0.82 17.47
-v 20.04 -9.61 18.26
-v 20.45 -0.82 17.71
-v 19.86 -9.61 18.43
-v 20.27 -0.82 17.88
-v 19.61 -9.61 18.42
-v 20.03 -0.82 17.87
-v 19.45 -9.60 18.24
-v 19.87 -0.82 17.69
-v 19.46 -9.61 18.00
-v 19.88 -0.82 17.45
-v 19.64 -9.61 17.83
-v 18.91 -13.24 18.10
-v 18.69 -13.22 18.10
-v 19.03 -10.60 17.93
-v 18.70 -10.57 17.94
-v 19.21 -9.83 17.89
-v 19.03 -9.31 17.85
-v 19.56 -9.60 17.87
-v 19.59 -9.04 17.83
-v 19.58 -9.04 18.33
-v 19.02 -9.31 18.35
-v 19.56 -9.59 18.36
-v 19.20 -9.83 18.38
-v 18.70 -10.57 18.43
-v 19.03 -10.60 18.43
-v 18.59 -13.22 18.60
-v 18.90 -13.24 18.60
-v 23.32 -9.94 15.18
-v 21.57 -3.85 17.12
-v 23.08 -10.00 18.57
-v 20.86 -1.44 18.08
-v 20.94 -1.41 16.97
-v 20.73 -1.48 16.97
-v 21.36 -3.92 17.12
-v 20.65 -1.50 18.08
-v 22.86 -10.07 18.58
-v 23.11 -10.00 15.18
-v 20.80 -7.18 18.41
-v 20.80 -7.18 18.27
-v 19.27 -7.10 18.42
-v 19.27 -7.10 18.28
-v 20.80 -7.36 17.54
-v 19.27 -7.42 17.55
-v 20.81 -7.18 17.52
-v 19.28 -7.10 17.53
-v 19.28 -7.10 17.68
-v 19.26 -7.41 17.70
-v 20.81 -7.18 17.67
-v 20.80 -7.36 17.68
-v 18.93 -10.59 17.88
-v 18.90 -10.98 16.68
-v 18.93 -10.87 19.15
-v 18.91 -11.75 20.15
-v 18.87 -12.99 20.61
-v 18.74 -15.33 17.13
-v 18.80 -13.21 15.67
-v 18.76 -14.45 16.14
-v 18.85 -11.94 15.88
-v 19.50 -14.55 15.96
-v 19.55 -13.22 15.47
-v 19.60 -11.86 15.68
-v 19.65 -10.83 16.55
-v 19.68 -10.41 17.84
-v 19.68 -10.71 19.20
-v 19.66 -11.65 20.27
-v 19.62 -12.98 20.77
-v 18.82 -14.26 20.41
-v 19.57 -14.34 20.55
-v 18.78 -15.22 19.60
-v 19.52 -15.37 19.68
-v 20.42 -10.87 19.10
-v 20.40 -11.74 20.10
-v 20.36 -12.98 20.56
-v 20.31 -14.25 20.36
-v 20.27 -15.21 19.55
-v 19.49 -15.79 18.40
-v 20.24 -15.60 18.35
-v 19.48 -15.49 17.04
-v 20.23 -15.32 17.08
-v 18.75 -15.61 18.40
-v 20.25 -14.44 16.08
-v 20.29 -13.21 15.62
-v 20.34 -11.94 15.82
-v 20.39 -10.98 16.63
-v 20.42 -10.59 17.83
-# 94 vertices
-
-vn 0.04 -1.00 0.00
-vn 0.41 -0.08 -0.91
-vn -0.34 -0.04 -0.94
-vn 0.94 -0.07 -0.33
-vn 0.93 -0.07 -0.35
-vn 0.90 -0.02 0.44
-vn 0.91 -0.02 0.40
-vn 0.34 0.04 0.94
-vn 0.37 0.04 0.93
-vn -0.41 0.08 0.91
-vn -0.93 0.07 0.35
-vn -0.94 0.07 0.33
-vn -0.91 0.02 -0.40
-vn -0.90 0.02 -0.44
-vn -0.37 -0.04 -0.93
-vn -0.01 -0.06 -1.00
-vn 0.01 0.06 1.00
-vn -0.01 -1.00 0.00
-vn 0.01 1.00 -0.00
-vn 0.96 0.25 0.07
-vn -0.96 -0.25 -0.07
-vn 1.00 -0.05 0.01
-vn 0.05 1.00 -0.00
-vn -1.00 0.05 -0.01
-vn -0.43 0.90 -0.01
-vn -0.97 0.25 -0.01
-vn -1.00 0.04 -0.01
-vn -1.00 0.03 -0.04
-vn -0.98 -0.00 -0.18
-vn -0.98 -0.01 -0.20
-vn -0.06 -1.00 -0.01
-vn -0.08 -1.00 -0.00
-vn -0.07 -1.00 -0.01
-vn -0.09 -1.00 0.00
-vn 0.98 -0.22 0.01
-vn 0.55 -0.83 0.01
-vn -0.29 0.96 -0.00
-vn -0.01 0.05 1.00
-vn 0.29 -0.96 0.00
-vn -0.09 0.28 -0.96
-vn 0.02 -0.06 -1.00
-vn -1.00 0.04 0.01
-vn -0.26 -0.55 -0.79
-vn -0.27 -0.10 -0.96
-vn -0.03 -0.57 -0.82
-vn -0.03 -0.10 -0.99
-vn -0.27 0.40 -0.87
-vn -0.03 0.42 -0.91
-vn -0.26 0.80 -0.53
-vn -0.02 0.83 -0.56
-vn -0.24 0.97 -0.04
-vn -0.00 1.00 -0.05
-vn -0.22 0.87 0.45
-vn 0.01 0.89 0.45
-vn -0.20 0.55 0.81
-vn 0.03 0.57 0.82
-vn -0.20 0.10 0.97
-vn 0.03 0.10 0.99
-vn -0.21 -0.40 0.89
-vn 0.03 -0.42 0.91
-vn -0.22 -0.81 0.55
-vn 0.02 -0.83 0.56
-vn 0.25 0.87 0.44
-vn 0.26 0.55 0.79
-vn 0.27 0.10 0.96
-vn 0.27 -0.40 0.87
-vn 0.26 -0.80 0.53
-vn 0.00 -1.00 0.05
-vn 0.24 -0.97 0.04
-vn -0.01 -0.89 -0.45
-vn 0.22 -0.87 -0.45
-vn -0.24 -0.97 0.05
-vn -0.25 -0.87 -0.44
-vn 0.20 -0.55 -0.81
-vn 0.20 -0.10 -0.97
-vn 0.21 0.40 -0.89
-vn 0.22 0.81 -0.55
-vn 0.24 0.97 -0.05
-vn 1.00 -0.04 -0.01
-# 79 vertex normals
-
-vt 0.07 0.76 0.00
-vt 0.09 0.92 0.00
-vt 0.30 0.92 0.00
-vt 0.30 0.93 0.00
-vt 0.09 0.93 0.00
-vt 0.30 0.94 0.00
-vt 0.09 0.94 0.00
-vt 0.44 0.70 0.00
-vt 0.44 0.73 0.00
-vt 0.44 0.74 0.00
-vt 0.43 0.74 0.00
-vt 0.43 0.75 0.00
-vt 0.31 0.99 0.00
-vt 0.31 0.98 0.00
-vt 0.32 1.00 0.00
-vt 0.33 0.99 0.00
-vt 0.33 0.98 0.00
-vt 0.33 1.00 0.00
-vt 0.32 0.98 0.00
-vt 0.66 0.03 0.00
-vt 0.53 0.08 0.00
-vt 0.67 0.11 0.00
-vt 0.47 0.11 0.00
-vt 0.47 0.08 0.00
-vt 0.61 0.03 0.00
-vt 0.66 0.00 0.00
-vt 0.47 0.00 0.00
-vt 0.08 0.75 0.00
-vt 0.09 0.75 0.00
-vt 0.07 0.75 0.00
-vt 0.03 0.85 0.00
-vt 0.04 0.85 0.00
-vt 0.03 0.84 0.00
-vt 0.04 0.84 0.00
-vt 0.08 0.76 0.00
-vt 0.09 0.74 0.00
-vt 0.42 0.74 0.00
-vt 0.42 0.73 0.00
-vt 0.43 0.73 0.00
-vt 0.42 0.72 0.00
-vt 0.43 0.72 0.00
-vt 0.46 0.73 0.00
-vt 0.46 0.72 0.00
-vt 0.45 0.73 0.00
-vt 0.05 0.68 0.00
-vt 0.03 0.68 0.00
-vt 0.03 0.67 0.00
-vt 0.16 0.67 0.00
-vt 0.08 0.68 0.00
-vt 0.08 0.67 0.00
-vt 0.16 0.66 0.00
-vt 0.07 0.66 0.00
-vt 0.07 0.67 0.00
-vt 0.03 0.66 0.00
-vt 0.82 0.92 0.00
-vt 0.80 0.92 0.00
-vt 0.84 0.93 0.00
-vt 0.85 0.94 0.00
-vt 0.85 0.96 0.00
-vt 0.78 0.98 0.00
-vt 0.77 0.94 0.00
-vt 0.77 0.96 0.00
-vt 0.78 0.93 0.00
-vt 0.31 0.77 0.00
-vt 0.29 0.77 0.00
-vt 0.31 0.76 0.00
-vt 0.29 0.76 0.00
-vt 0.32 0.77 0.00
-vt 0.33 0.76 0.00
-vt 0.34 0.77 0.00
-vt 0.34 0.76 0.00
-vt 0.36 0.77 0.00
-vt 0.36 0.76 0.00
-vt 0.38 0.77 0.00
-vt 0.38 0.76 0.00
-vt 0.39 0.77 0.00
-vt 0.39 0.76 0.00
-vt 0.36 0.75 0.00
-vt 0.38 0.75 0.00
-vt 0.39 0.75 0.00
-vt 0.34 0.75 0.00
-vt 0.32 0.75 0.00
-vt 0.31 0.75 0.00
-vt 0.29 0.75 0.00
-vt 0.84 0.98 0.00
-vt 0.82 0.99 0.00
-vt 0.80 0.99 0.00
-# 87 texture coords
-
-g P_51_Mustang_Left_Landing_Wheel
-f 1954/1261/2008 1955/1261/2008 1956/1261/2008
-f 1957/1261/2008 1956/1261/2008 1955/1261/2008
-f 1958/1262/2009 1959/1263/2009 1960/1262/2010
-f 1959/1263/2009 1958/1262/2009 1961/1264/2011
-f 1962/1265/2012 1961/1264/2011 1958/1262/2009
-f 1961/1264/2011 1962/1265/2012 1963/1266/2013
-f 1964/1267/2014 1963/1266/2013 1962/1265/2012
-f 1963/1266/2013 1964/1267/2014 1965/1266/2015
-f 1966/1267/2016 1965/1266/2015 1964/1267/2014
-f 1965/1266/2015 1966/1267/2016 1967/1266/2017
-f 1968/1267/2017 1967/1266/2017 1966/1267/2016
-f 1967/1266/2017 1968/1267/2017 1969/1266/2018
-f 1970/1267/2019 1969/1266/2018 1968/1267/2017
-f 1969/1266/2018 1970/1267/2019 1971/1264/2020
-f 1972/1265/2021 1971/1264/2020 1970/1267/2019
-f 1971/1264/2020 1972/1265/2021 1973/1263/2022
-f 1960/1262/2010 1973/1263/2022 1972/1265/2021
-f 1973/1263/2022 1960/1262/2010 1959/1263/2009
-f 1974/1268/2023 1975/1268/2023 1976/1269/2023
-f 1975/1268/2023 1977/1269/2023 1976/1269/2023
-f 1976/1269/2023 1977/1269/2023 1978/1270/2023
-f 1977/1269/2023 1979/1270/2023 1978/1270/2023
-f 1978/1270/2023 1979/1270/2023 1980/1271/2023
-f 1979/1270/2023 1981/1272/2023 1980/1271/2023
-f 1982/1272/2024 1983/1270/2024 1984/1271/2024
-f 1983/1270/2024 1985/1270/2024 1984/1271/2024
-f 1986/1269/2024 1985/1270/2024 1983/1270/2024
-f 1987/1269/2024 1985/1270/2024 1986/1269/2024
-f 1988/1268/2024 1987/1269/2024 1986/1269/2024
-f 1989/1268/2024 1987/1269/2024 1988/1268/2024
-f 1967/1273/2025 1969/1274/2025 1965/1275/2025
-f 1969/1274/2025 1961/1276/2025 1965/1275/2025
-f 1973/1277/2025 1961/1276/2025 1969/1274/2025
-f 1959/1277/2025 1961/1276/2025 1973/1277/2025
-f 1965/1275/2025 1961/1276/2025 1963/1278/2025
-f 1958/1279/2026 1960/1277/2026 1962/1274/2026
-f 1960/1277/2026 1966/1275/2026 1962/1274/2026
-f 1970/1276/2026 1966/1275/2026 1960/1277/2026
-f 1968/1278/2026 1966/1275/2026 1970/1276/2026
-f 1972/1277/2026 1970/1276/2026 1960/1277/2026
-f 1990/1280/2027 1991/1281/2027 1992/1282/2027
-f 1992/1282/2027 1991/1281/2027 1993/1283/2027
-f 1991/1281/2027 1994/1284/2027 1993/1283/2027
-f 1995/1280/2028 1996/1285/2028 1997/1286/2028
-f 1996/1285/2028 1998/1287/2028 1997/1286/2028
-f 1999/1284/2028 1998/1287/2028 1996/1285/2028
-f 1956/1288/2029 1957/1288/2029 2000/1288/2029
-f 2001/1288/2029 2000/1288/2029 1957/1288/2029
-f 2000/1288/2030 2001/1288/2030 2002/1289/2030
-f 2003/1289/2030 2002/1289/2030 2001/1288/2030
-f 2002/1290/2031 2003/1290/2031 1954/1290/2031
-f 1955/1290/2031 1954/1290/2031 2003/1290/2031
-f 2004/1291/2023 2005/1292/2023 2006/1293/2023
-f 2007/1294/2023 2006/1293/2023 2005/1292/2023
-f 2008/1293/2024 2009/1291/2024 2010/1294/2024
-f 2011/1292/2024 2010/1294/2024 2009/1291/2024
-f 2009/1290/2008 2005/1261/2008 2011/1288/2008
-f 2004/1295/2008 2011/1288/2008 2005/1261/2008
-f 2011/1289/2029 2004/1289/2029 2010/1289/2029
-f 2006/1289/2029 2010/1289/2029 2004/1289/2029
-f 2010/1288/2030 2006/1288/2030 2008/1288/2030
-f 2007/1288/2030 2008/1288/2030 2006/1288/2030
-f 2008/1296/2031 2007/1296/2031 2009/1296/2031
-f 2005/1296/2031 2009/1296/2031 2007/1296/2031
-f 1982/1297/2032 1981/1298/2032 1983/1271/2032
-f 1979/1299/2032 1983/1271/2032 1981/1298/2032
-f 1983/1298/2033 1979/1300/2033 1986/1299/2033
-f 1977/1301/2033 1986/1299/2033 1979/1300/2033
-f 1986/1299/2034 1977/1301/2035 1988/1302/2036
-f 1975/1303/2037 1988/1302/2036 1977/1301/2035
-f 1988/1299/2038 1975/1299/2039 1989/1271/2040
-f 1974/1271/2041 1989/1271/2040 1975/1299/2039
-f 1989/1298/2029 1974/1298/2029 1987/1304/2029
-f 1976/1304/2029 1987/1304/2029 1974/1298/2029
-f 1987/1304/2042 1976/1304/2042 1985/1302/2042
-f 1978/1302/2042 1985/1302/2042 1976/1304/2042
-f 1985/1297/2043 1978/1271/2043 1984/1297/2043
-f 1980/1271/2043 1984/1297/2043 1978/1271/2043
-f 1994/1305/2044 1995/1305/2044 1993/1306/2044
-f 1997/1306/2044 1993/1306/2044 1995/1305/2044
-f 1998/1307/2045 1992/1307/2045 1997/1308/2045
-f 1993/1308/2045 1997/1308/2045 1992/1307/2045
-f 1999/1306/2046 1990/1307/2046 1998/1309/2046
-f 1992/1310/2046 1998/1309/2046 1990/1307/2046
-f 1990/1311/2047 1999/1308/2047 1991/1312/2047
-f 1996/1313/2047 1991/1312/2047 1999/1308/2047
-f 1995/1307/2048 1994/1314/2048 1996/1313/2048
-f 1991/1312/2048 1996/1313/2048 1994/1314/2048
-f 1962/1274/2026 1966/1275/2026 1964/1273/2026
-f 1957/1291/2023 1955/1292/2023 2001/1293/2023
-f 2003/1294/2023 2001/1293/2023 1955/1292/2023
-f 2002/1293/2024 1954/1291/2024 2000/1294/2024
-f 1956/1292/2024 2000/1294/2024 1954/1291/2024
-f 1971/1279/2025 1973/1277/2025 1969/1274/2025
-f 2012/1315/2049 2013/1316/2049 2014/1317/2049
-f 2015/1318/2049 2014/1317/2049 2016/1319/2049
-f 2014/1317/2049 2013/1316/2049 2016/1319/2049
-f 2013/1316/2049 2017/1320/2049 2016/1319/2049
-f 2018/1321/2049 2017/1320/2049 2013/1316/2049
-f 2019/1322/2049 2017/1320/2049 2018/1321/2049
-f 2020/1323/2049 2018/1321/2049 2013/1316/2049
-f 2019/1324/2050 2018/1325/2051 2021/1326/2052
-f 2022/1327/2053 2021/1326/2052 2018/1325/2051
-f 2018/1325/2051 2020/1324/2054 2022/1327/2053
-f 2023/1326/2055 2022/1327/2053 2020/1324/2054
-f 2020/1324/2054 2013/1328/2056 2023/1326/2055
-f 2024/1329/2057 2023/1326/2055 2013/1328/2056
-f 2013/1328/2056 2012/1330/2058 2024/1329/2057
-f 2025/1331/2059 2024/1329/2057 2012/1330/2058
-f 2012/1330/2058 2014/1332/2060 2025/1331/2059
-f 2026/1333/2061 2025/1331/2059 2014/1332/2060
-f 2014/1332/2060 2015/1334/2062 2026/1333/2061
-f 2027/1335/2063 2026/1333/2061 2015/1334/2062
-f 2015/1334/2062 2016/1336/2064 2027/1335/2063
-f 2028/1337/2065 2027/1335/2063 2016/1336/2064
-f 2016/1336/2064 2029/1334/2066 2028/1337/2065
-f 2030/1335/2067 2028/1337/2065 2029/1334/2066
-f 2029/1334/2066 2031/1332/2068 2030/1335/2067
-f 2032/1333/2069 2030/1335/2067 2031/1332/2068
-f 2026/1333/2061 2027/1335/2063 2033/1338/2070
-f 2034/1339/2071 2033/1338/2070 2027/1335/2063
-f 2027/1335/2063 2028/1337/2065 2034/1339/2071
-f 2035/1340/2072 2034/1339/2071 2028/1337/2065
-f 2028/1337/2065 2030/1335/2067 2035/1340/2072
-f 2036/1339/2073 2035/1340/2072 2030/1335/2067
-f 2030/1335/2067 2032/1333/2069 2036/1339/2073
-f 2037/1338/2074 2036/1339/2073 2032/1333/2069
-f 2032/1333/2069 2038/1331/2075 2037/1338/2074
-f 2039/1341/2076 2037/1338/2074 2038/1331/2075
-f 2038/1331/2075 2040/1329/2077 2039/1341/2076
-f 2041/1342/2078 2039/1341/2076 2040/1329/2077
-f 2031/1332/2068 2042/1330/2079 2032/1333/2069
-f 2038/1331/2075 2032/1333/2069 2042/1330/2079
-f 2042/1330/2079 2017/1328/2080 2038/1331/2075
-f 2040/1329/2077 2038/1331/2075 2017/1328/2080
-f 2017/1328/2080 2019/1324/2050 2040/1329/2077
-f 2021/1326/2052 2040/1329/2077 2019/1324/2050
-f 2040/1329/2077 2021/1326/2052 2041/1342/2078
-f 2043/1343/2081 2041/1342/2078 2021/1326/2052
-f 2021/1326/2052 2022/1327/2053 2043/1343/2081
-f 2044/1344/2082 2043/1343/2081 2022/1327/2053
-f 2022/1327/2053 2023/1326/2055 2044/1344/2082
-f 2045/1343/2083 2044/1344/2082 2023/1326/2055
-f 2023/1326/2055 2024/1329/2057 2045/1343/2083
-f 2046/1342/2084 2045/1343/2083 2024/1329/2057
-f 2024/1329/2057 2025/1331/2059 2046/1342/2084
-f 2047/1341/2085 2046/1342/2084 2025/1331/2059
-f 2025/1331/2059 2026/1333/2061 2047/1341/2085
-f 2033/1338/2070 2047/1341/2085 2026/1333/2061
-f 2044/1319/2086 2045/1318/2086 2043/1345/2086
-f 2045/1318/2086 2047/1315/2086 2043/1345/2086
-f 2043/1345/2086 2047/1315/2086 2036/1322/2086
-f 2047/1315/2086 2034/1323/2086 2036/1322/2086
-f 2036/1322/2086 2034/1323/2086 2035/1321/2086
-f 2033/1316/2086 2034/1323/2086 2047/1315/2086
-f 2046/1317/2086 2047/1315/2086 2045/1318/2086
-f 2041/1346/2086 2043/1345/2086 2039/1347/2086
-f 2039/1347/2086 2043/1345/2086 2036/1322/2086
-f 2037/1320/2086 2039/1347/2086 2036/1322/2086
-f 2042/1347/2049 2031/1346/2049 2017/1320/2049
-f 2017/1320/2049 2031/1346/2049 2016/1319/2049
-f 2016/1319/2049 2031/1346/2049 2029/1345/2049
-# 162 faces
-
-#
-# object P_51_Mustang_Left_Rockets
-#
-
-v 28.30 -4.77 8.29
-v 28.33 -4.86 5.62
-v 28.36 -4.84 8.30
-v 28.39 -4.93 5.63
-v 30.30 -3.78 17.72
-v 30.11 -3.64 18.78
-v 29.93 -4.14 17.76
-v 29.98 -4.36 6.27
-v 29.58 -4.47 6.28
-v 29.44 -4.27 17.78
-v 29.18 -4.36 6.28
-v 28.96 -4.13 17.77
-v 28.90 -4.06 6.25
-v 28.63 -3.77 17.74
-v 28.82 -3.65 6.22
-v 28.52 -3.28 17.70
-v 28.94 -3.25 6.18
-v 28.67 -2.78 17.65
-v 29.25 -2.95 6.15
-v 29.04 -2.43 17.61
-v 29.65 -2.85 6.14
-v 29.53 -2.30 17.60
-v 30.05 -2.96 6.14
-v 30.01 -2.44 17.60
-v 28.80 -3.63 18.79
-v 29.07 -3.91 18.82
-v 29.44 -4.02 18.82
-v 29.82 -3.92 18.81
-v 29.46 -3.20 20.36
-v 30.23 -3.25 18.75
-v 30.46 -3.29 17.68
-v 30.29 -4.07 6.24
-v 30.41 -3.66 6.20
-v 29.13 -2.58 18.69
-v 28.84 -2.86 18.72
-v 28.72 -3.24 18.76
-v 29.51 -2.48 18.68
-v 30.32 -3.26 6.17
-v 30.35 -2.80 17.63
-v 30.15 -2.87 18.71
-v 29.89 -2.58 18.69
-v 29.57 -3.63 6.19
-v 29.64 -3.70 6.20
-v 30.92 -2.50 5.38
-v 30.85 -2.43 5.38
-v 29.61 -3.61 8.86
-v 29.55 -3.54 8.86
-v 30.89 -2.41 8.05
-v 30.82 -2.34 8.04
-v 30.77 -4.79 8.27
-v 29.63 -3.54 8.86
-v 30.70 -4.86 8.27
-v 29.56 -3.61 8.86
-v 28.48 -2.33 8.06
-v 28.41 -2.40 8.07
-v 30.73 -4.94 5.61
-v 29.59 -3.70 6.20
-v 28.44 -2.48 5.41
-v 28.51 -2.41 5.40
-v 29.66 -3.63 6.19
-v 30.80 -4.88 5.60
-v 30.94 -4.79 8.27
-v 30.97 -4.88 5.60
-v 31.00 -4.86 8.27
-v 31.03 -4.95 5.60
-v 32.94 -3.80 17.70
-v 32.75 -3.66 18.76
-v 32.57 -4.16 17.74
-v 32.62 -4.38 6.25
-v 32.21 -4.49 6.26
-v 32.08 -4.29 17.75
-v 31.82 -4.38 6.25
-v 31.60 -4.15 17.74
-v 31.54 -4.08 6.23
-v 31.26 -3.79 17.71
-v 31.45 -3.67 6.19
-v 31.16 -3.30 17.67
-v 31.58 -3.27 6.15
-v 31.31 -2.81 17.62
-v 31.89 -2.97 6.12
-v 31.68 -2.45 17.59
-v 32.29 -2.87 6.11
-v 32.17 -2.32 17.57
-v 32.68 -2.98 6.12
-v 32.65 -2.46 17.58
-v 31.44 -3.65 18.77
-v 31.70 -3.93 18.79
-v 32.08 -4.04 18.80
-v 32.46 -3.94 18.79
-v 32.09 -3.22 20.34
-v 32.87 -3.27 18.72
-v 33.09 -3.31 17.65
-v 32.92 -4.09 6.22
-v 33.05 -3.68 6.18
-v 31.77 -2.60 18.67
-v 31.48 -2.88 18.70
-v 31.36 -3.26 18.73
-v 32.15 -2.50 18.66
-v 32.96 -3.28 6.14
-v 32.99 -2.82 17.61
-v 32.79 -2.89 18.69
-v 32.52 -2.61 18.66
-v 32.21 -3.65 6.17
-v 32.28 -3.72 6.17
-v 33.55 -2.52 5.36
-v 33.49 -2.45 5.35
-v 32.25 -3.63 8.84
-v 32.18 -3.56 8.83
-v 33.52 -2.43 8.02
-v 33.46 -2.36 8.02
-v 33.41 -4.81 8.24
-v 32.27 -3.56 8.83
-v 33.34 -4.88 8.25
-v 32.19 -3.63 8.84
-v 31.12 -2.35 8.04
-v 31.05 -2.42 8.05
-v 33.37 -4.96 5.58
-v 32.22 -3.72 6.17
-v 31.08 -2.50 5.38
-v 31.15 -2.43 5.37
-v 32.29 -3.65 6.16
-v 33.44 -4.90 5.58
-v 33.69 -4.81 8.24
-v 33.72 -4.90 5.57
-v 33.75 -4.88 8.25
-v 33.78 -4.97 5.58
-v 35.69 -3.82 17.67
-v 35.50 -3.68 18.73
-v 35.32 -4.18 17.71
-v 35.37 -4.40 6.22
-v 34.96 -4.51 6.23
-v 34.83 -4.31 17.73
-v 34.57 -4.40 6.23
-v 34.35 -4.17 17.72
-v 34.29 -4.10 6.20
-v 34.01 -3.81 17.69
-v 34.21 -3.69 6.17
-v 33.91 -3.32 17.64
-v 34.33 -3.29 6.13
-v 34.06 -2.83 17.60
-v 34.64 -2.99 6.10
-v 34.43 -2.47 17.56
-v 35.04 -2.89 6.08
-v 34.92 -2.34 17.54
-v 35.44 -3.00 6.09
-v 35.40 -2.48 17.55
-v 34.19 -3.67 18.74
-v 34.45 -3.95 18.77
-v 34.83 -4.06 18.77
-v 35.21 -3.96 18.76
-v 34.85 -3.24 20.31
-v 35.62 -3.30 18.69
-v 35.84 -3.33 17.63
-v 35.67 -4.11 6.19
-v 35.80 -3.71 6.15
-v 34.52 -2.62 18.64
-v 34.23 -2.90 18.67
-v 34.11 -3.28 18.71
-v 34.90 -2.52 18.63
-v 35.71 -3.30 6.12
-v 35.74 -2.84 17.58
-v 35.54 -2.91 18.66
-v 35.27 -2.63 18.64
-v 34.96 -3.67 6.14
-v 35.03 -3.74 6.15
-v 36.31 -2.54 5.33
-v 36.24 -2.47 5.32
-v 35.00 -3.65 8.81
-v 34.93 -3.58 8.81
-v 36.28 -2.46 8.00
-v 36.21 -2.39 7.99
-v 36.16 -4.83 8.22
-v 35.02 -3.58 8.81
-v 36.09 -4.90 8.22
-v 34.94 -3.65 8.81
-v 33.87 -2.37 8.01
-v 33.80 -2.44 8.02
-v 36.12 -4.99 5.56
-v 34.97 -3.74 6.15
-v 33.83 -2.52 5.35
-v 33.90 -2.45 5.35
-v 35.05 -3.67 6.14
-v 36.19 -4.92 5.55
-# 183 vertices
-
-vn -0.73 -0.68 0.01
-vn 0.85 -0.51 0.11
-vn 0.82 -0.47 0.33
-vn 0.49 -0.86 0.12
-vn 0.50 -0.87 0.02
-vn -0.01 -1.00 0.02
-vn -0.01 -0.99 0.12
-vn -0.52 -0.85 0.01
-vn -0.52 -0.85 0.12
-vn -0.89 -0.46 -0.01
-vn -0.89 -0.45 0.10
-vn -1.00 0.05 -0.03
-vn -1.00 0.05 0.08
-vn -0.85 0.53 -0.04
-vn -0.85 0.53 0.06
-vn -0.48 0.87 -0.05
-vn -0.49 0.87 0.05
-vn 0.01 1.00 -0.05
-vn 0.01 1.00 0.06
-vn 0.52 0.85 -0.04
-vn 0.52 0.85 0.07
-vn -0.85 -0.42 0.32
-vn -0.50 -0.79 0.34
-vn -0.01 -0.94 0.35
-vn 0.47 -0.81 0.34
-vn -0.35 -0.53 0.78
-vn 0.92 -0.26 0.31
-vn 0.95 -0.29 0.10
-vn 0.86 -0.52 0.01
-vn 0.95 -0.30 0.01
-vn -0.46 0.85 0.27
-vn -0.81 0.52 0.28
-vn -0.95 0.07 0.30
-vn 0.01 0.96 0.27
-vn 0.45 0.77 0.46
-vn 0.88 0.47 -0.02
-vn 0.88 0.47 0.08
-vn 0.98 0.21 -0.01
-vn 0.97 0.22 0.09
-vn 0.84 0.46 0.30
-vn 0.93 0.23 0.30
-vn 0.49 0.82 0.29
-vn -0.01 -0.09 -1.00
-vn 0.27 0.17 -0.95
-vn 0.00 -0.08 -1.00
-vn -0.27 -0.33 -0.91
-vn -0.27 -0.17 0.95
-vn -0.00 0.08 1.00
-vn 0.01 0.09 1.00
-vn 0.27 0.33 0.91
-vn -0.69 0.72 -0.03
-vn 0.28 -0.19 0.94
-vn 0.02 0.08 1.00
-vn -0.25 0.35 0.90
-vn 0.25 -0.35 -0.90
-vn -0.02 -0.08 -1.00
-vn -0.28 0.19 -0.94
-vn 0.73 0.68 -0.01
-vn 0.69 -0.72 0.03
-# 59 vertex normals
-
-vt 0.81 0.65 0.00
-vt 0.71 0.65 0.00
-vt 0.83 0.57 0.00
-vt 0.85 0.57 0.00
-vt 0.64 0.57 0.00
-vt 0.64 0.58 0.00
-vt 0.83 0.58 0.00
-vt 0.64 0.59 0.00
-vt 0.83 0.59 0.00
-vt 0.64 0.60 0.00
-vt 0.83 0.60 0.00
-vt 0.85 0.58 0.00
-vt 0.89 0.58 0.00
-vt 0.85 0.59 0.00
-vt 0.85 0.60 0.00
-vt 0.89 0.60 0.00
-vt 0.64 0.61 0.00
-vt 0.83 0.61 0.00
-vt 0.85 0.61 0.00
-vt 0.37 0.73 0.00
-vt 0.37 0.74 0.00
-vt 0.39 0.74 0.00
-vt 0.39 0.72 0.00
-vt 0.39 0.73 0.00
-vt 0.38 0.74 0.00
-vt 0.69 0.65 0.00
-vt 0.75 0.65 0.00
-vt 0.91 0.70 0.00
-vt 0.91 0.66 0.00
-vt 0.98 0.70 0.00
-vt 0.98 0.66 0.00
-vt 0.91 0.63 0.00
-vt 0.98 0.63 0.00
-vt 0.37 0.72 0.00
-vt 0.38 0.71 0.00
-# 35 texture coords
-
-g P_51_Mustang_Left_Rockets
-f 2048/1348/2087 2049/1349/2087 2050/1348/2087
-f 2051/1349/2087 2050/1348/2087 2049/1349/2087
-f 2052/1350/2088 2053/1351/2089 2054/1350/2090
-f 2054/1350/2090 2055/1352/2091 2052/1350/2088
-f 2055/1352/2091 2054/1350/2090 2056/1353/2092
-f 2057/1354/2093 2056/1353/2092 2054/1350/2090
-f 2056/1353/2092 2057/1354/2093 2058/1353/2094
-f 2059/1354/2095 2058/1353/2094 2057/1354/2093
-f 2058/1353/2094 2059/1354/2095 2060/1353/2096
-f 2061/1354/2097 2060/1353/2096 2059/1354/2095
-f 2060/1353/2096 2061/1354/2097 2062/1355/2098
-f 2063/1356/2099 2062/1355/2098 2061/1354/2097
-f 2062/1355/2098 2063/1356/2099 2064/1355/2100
-f 2065/1356/2101 2064/1355/2100 2063/1356/2099
-f 2064/1355/2100 2065/1356/2101 2066/1355/2102
-f 2067/1356/2103 2066/1355/2102 2065/1356/2101
-f 2066/1355/2102 2067/1356/2103 2068/1357/2104
-f 2069/1358/2105 2068/1357/2104 2067/1356/2103
-f 2068/1357/2104 2069/1358/2105 2070/1357/2106
-f 2071/1358/2107 2070/1357/2106 2069/1358/2105
-f 2061/1354/2097 2072/1359/2108 2063/1356/2099
-f 2072/1359/2108 2061/1354/2097 2073/1359/2109
-f 2059/1354/2095 2073/1359/2109 2061/1354/2097
-f 2073/1359/2109 2059/1354/2095 2074/1359/2110
-f 2057/1354/2093 2074/1359/2110 2059/1354/2095
-f 2074/1359/2110 2057/1354/2093 2075/1351/2111
-f 2054/1350/2090 2075/1351/2111 2057/1354/2093
-f 2075/1351/2111 2054/1350/2090 2053/1351/2089
-f 2075/1351/2111 2053/1351/2089 2076/1360/2112
-f 2053/1351/2089 2077/1351/2113 2076/1360/2112
-f 2053/1351/2089 2052/1350/2088 2077/1351/2113
-f 2078/1350/2114 2077/1351/2113 2052/1350/2088
-f 2052/1350/2088 2079/1352/2115 2078/1350/2114
-f 2080/1352/2116 2078/1350/2114 2079/1352/2115
-f 2081/1361/2117 2082/1361/2118 2076/1360/2112
-f 2082/1361/2118 2083/1361/2119 2076/1360/2112
-f 2083/1361/2119 2072/1359/2108 2076/1360/2112
-f 2072/1359/2108 2073/1359/2109 2076/1360/2112
-f 2073/1359/2109 2074/1359/2110 2076/1360/2112
-f 2074/1359/2110 2075/1351/2111 2076/1360/2112
-f 2084/1362/2120 2081/1361/2117 2076/1363/2121
-f 2070/1357/2106 2071/1358/2107 2085/1357/2122
-f 2086/1358/2123 2085/1357/2122 2071/1358/2107
-f 2085/1357/2122 2086/1358/2123 2080/1364/2124
-f 2078/1365/2125 2080/1364/2124 2086/1358/2123
-f 2086/1358/2123 2087/1362/2126 2078/1365/2125
-f 2077/1366/2127 2078/1365/2125 2087/1362/2126
-f 2077/1366/2127 2087/1362/2126 2076/1363/2121
-f 2087/1362/2126 2088/1362/2128 2076/1363/2121
-f 2088/1362/2128 2084/1362/2120 2076/1363/2121
-f 2088/1362/2128 2071/1358/2107 2084/1362/2120
-f 2069/1358/2105 2084/1362/2120 2071/1358/2107
-f 2084/1362/2120 2069/1358/2105 2081/1361/2117
-f 2067/1356/2103 2081/1361/2117 2069/1358/2105
-f 2081/1361/2117 2067/1356/2103 2082/1361/2118
-f 2065/1356/2101 2082/1361/2118 2067/1356/2103
-f 2082/1361/2118 2065/1356/2101 2083/1361/2119
-f 2063/1356/2099 2083/1361/2119 2065/1356/2101
-f 2083/1361/2119 2063/1356/2099 2072/1359/2108
-f 2087/1362/2126 2086/1358/2123 2088/1362/2128
-f 2071/1358/2107 2088/1362/2128 2086/1358/2123
-f 2085/1367/2129 2080/1367/2129 2070/1368/2129
-f 2080/1367/2129 2066/1369/2129 2070/1368/2129
-f 2058/1370/2129 2066/1369/2129 2080/1367/2129
-f 2062/1371/2129 2066/1369/2129 2058/1370/2129
-f 2060/1370/2129 2062/1371/2129 2058/1370/2129
-f 2070/1368/2129 2066/1369/2129 2068/1372/2129
-f 2064/1371/2129 2066/1369/2129 2062/1371/2129
-f 2049/1373/2130 2089/1374/2129 2051/1373/2130
-f 2090/1374/2131 2051/1373/2130 2089/1374/2129
-f 2090/1374/2131 2089/1374/2129 2091/1348/2132
-f 2092/1348/2132 2091/1348/2132 2089/1374/2129
-f 2050/1373/2133 2093/1374/2134 2048/1373/2133
-f 2094/1374/2135 2048/1373/2133 2093/1374/2134
-f 2093/1374/2134 2095/1348/2136 2094/1374/2135
-f 2096/1348/2136 2094/1374/2135 2095/1348/2136
-f 2048/1375/2137 2094/1376/2137 2049/1377/2137
-f 2089/1378/2137 2049/1377/2137 2094/1376/2137
-f 2094/1376/2137 2096/1379/2137 2089/1378/2137
-f 2092/1380/2137 2089/1378/2137 2096/1379/2137
-f 2097/1373/2138 2098/1374/2135 2099/1373/2138
-f 2100/1374/2139 2099/1373/2138 2098/1374/2135
-f 2098/1374/2135 2101/1348/2140 2100/1374/2139
-f 2102/1348/2140 2100/1374/2139 2101/1348/2140
-f 2099/1375/2087 2100/1376/2087 2103/1377/2087
-f 2104/1378/2087 2103/1377/2087 2100/1376/2087
-f 2100/1376/2087 2102/1379/2087 2104/1378/2087
-f 2105/1380/2087 2104/1378/2087 2102/1379/2087
-f 2105/1348/2141 2106/1348/2141 2104/1374/2142
-f 2107/1374/2129 2104/1374/2142 2106/1348/2141
-f 2107/1374/2129 2108/1373/2143 2104/1374/2142
-f 2103/1373/2143 2104/1374/2142 2108/1373/2143
-f 2101/1375/2144 2098/1376/2144 2106/1377/2144
-f 2107/1378/2144 2106/1377/2144 2098/1376/2144
-f 2098/1376/2144 2097/1379/2144 2107/1378/2144
-f 2108/1380/2144 2107/1378/2144 2097/1379/2144
-f 2079/1381/2129 2055/1381/2129 2080/1367/2129
-f 2055/1381/2129 2058/1370/2129 2080/1367/2129
-f 2056/1382/2129 2058/1370/2129 2055/1381/2129
-f 2095/1375/2145 2093/1376/2145 2091/1377/2145
-f 2090/1378/2145 2091/1377/2145 2093/1376/2145
-f 2093/1376/2145 2050/1379/2145 2090/1378/2145
-f 2051/1380/2145 2090/1378/2145 2050/1379/2145
-f 2095/1348/2144 2091/1349/2144 2096/1348/2144
-f 2092/1349/2144 2096/1348/2144 2091/1349/2144
-f 2099/1348/2145 2103/1349/2145 2097/1348/2145
-f 2108/1349/2145 2097/1348/2145 2103/1349/2145
-f 2101/1348/2137 2106/1349/2137 2102/1348/2137
-f 2105/1349/2137 2102/1348/2137 2106/1349/2137
-f 2079/1352/2115 2052/1350/2088 2055/1352/2091
-f 2109/1348/2087 2110/1349/2087 2111/1348/2087
-f 2112/1349/2087 2111/1348/2087 2110/1349/2087
-f 2113/1350/2088 2114/1351/2089 2115/1350/2090
-f 2115/1350/2090 2116/1352/2091 2113/1350/2088
-f 2116/1352/2091 2115/1350/2090 2117/1353/2092
-f 2118/1354/2093 2117/1353/2092 2115/1350/2090
-f 2117/1353/2092 2118/1354/2093 2119/1353/2094
-f 2120/1354/2095 2119/1353/2094 2118/1354/2093
-f 2119/1353/2094 2120/1354/2095 2121/1353/2096
-f 2122/1354/2097 2121/1353/2096 2120/1354/2095
-f 2121/1353/2096 2122/1354/2097 2123/1355/2098
-f 2124/1356/2099 2123/1355/2098 2122/1354/2097
-f 2123/1355/2098 2124/1356/2099 2125/1355/2100
-f 2126/1356/2101 2125/1355/2100 2124/1356/2099
-f 2125/1355/2100 2126/1356/2101 2127/1355/2102
-f 2128/1356/2103 2127/1355/2102 2126/1356/2101
-f 2127/1355/2102 2128/1356/2103 2129/1357/2104
-f 2130/1358/2105 2129/1357/2104 2128/1356/2103
-f 2129/1357/2104 2130/1358/2105 2131/1357/2106
-f 2132/1358/2107 2131/1357/2106 2130/1358/2105
-f 2122/1354/2097 2133/1359/2108 2124/1356/2099
-f 2133/1359/2108 2122/1354/2097 2134/1359/2109
-f 2120/1354/2095 2134/1359/2109 2122/1354/2097
-f 2134/1359/2109 2120/1354/2095 2135/1359/2110
-f 2118/1354/2093 2135/1359/2110 2120/1354/2095
-f 2135/1359/2110 2118/1354/2093 2136/1351/2111
-f 2115/1350/2090 2136/1351/2111 2118/1354/2093
-f 2136/1351/2111 2115/1350/2090 2114/1351/2089
-f 2136/1351/2111 2114/1351/2089 2137/1360/2112
-f 2114/1351/2089 2138/1351/2113 2137/1360/2112
-f 2114/1351/2089 2113/1350/2088 2138/1351/2113
-f 2139/1350/2114 2138/1351/2113 2113/1350/2088
-f 2113/1350/2088 2140/1352/2115 2139/1350/2114
-f 2141/1352/2116 2139/1350/2114 2140/1352/2115
-f 2142/1361/2117 2143/1361/2118 2137/1360/2112
-f 2143/1361/2118 2144/1361/2119 2137/1360/2112
-f 2144/1361/2119 2133/1359/2108 2137/1360/2112
-f 2133/1359/2108 2134/1359/2109 2137/1360/2112
-f 2134/1359/2109 2135/1359/2110 2137/1360/2112
-f 2135/1359/2110 2136/1351/2111 2137/1360/2112
-f 2145/1362/2120 2142/1361/2117 2137/1363/2121
-f 2131/1357/2106 2132/1358/2107 2146/1357/2122
-f 2147/1358/2123 2146/1357/2122 2132/1358/2107
-f 2146/1357/2122 2147/1358/2123 2141/1364/2124
-f 2139/1365/2125 2141/1364/2124 2147/1358/2123
-f 2147/1358/2123 2148/1362/2126 2139/1365/2125
-f 2138/1366/2127 2139/1365/2125 2148/1362/2126
-f 2138/1366/2127 2148/1362/2126 2137/1363/2121
-f 2148/1362/2126 2149/1362/2128 2137/1363/2121
-f 2149/1362/2128 2145/1362/2120 2137/1363/2121
-f 2149/1362/2128 2132/1358/2107 2145/1362/2120
-f 2130/1358/2105 2145/1362/2120 2132/1358/2107
-f 2145/1362/2120 2130/1358/2105 2142/1361/2117
-f 2128/1356/2103 2142/1361/2117 2130/1358/2105
-f 2142/1361/2117 2128/1356/2103 2143/1361/2118
-f 2126/1356/2101 2143/1361/2118 2128/1356/2103
-f 2143/1361/2118 2126/1356/2101 2144/1361/2119
-f 2124/1356/2099 2144/1361/2119 2126/1356/2101
-f 2144/1361/2119 2124/1356/2099 2133/1359/2108
-f 2148/1362/2126 2147/1358/2123 2149/1362/2128
-f 2132/1358/2107 2149/1362/2128 2147/1358/2123
-f 2146/1367/2129 2141/1367/2129 2131/1368/2129
-f 2141/1367/2129 2127/1369/2129 2131/1368/2129
-f 2119/1370/2129 2127/1369/2129 2141/1367/2129
-f 2123/1371/2129 2127/1369/2129 2119/1370/2129
-f 2121/1370/2129 2123/1371/2129 2119/1370/2129
-f 2131/1368/2129 2127/1369/2129 2129/1372/2129
-f 2125/1371/2129 2127/1369/2129 2123/1371/2129
-f 2110/1373/2130 2150/1374/2129 2112/1373/2130
-f 2151/1374/2131 2112/1373/2130 2150/1374/2129
-f 2151/1374/2131 2150/1374/2129 2152/1348/2132
-f 2153/1348/2132 2152/1348/2132 2150/1374/2129
-f 2111/1373/2133 2154/1374/2134 2109/1373/2133
-f 2155/1374/2135 2109/1373/2133 2154/1374/2134
-f 2154/1374/2134 2156/1348/2136 2155/1374/2135
-f 2157/1348/2136 2155/1374/2135 2156/1348/2136
-f 2109/1375/2137 2155/1376/2137 2110/1377/2137
-f 2150/1378/2137 2110/1377/2137 2155/1376/2137
-f 2155/1376/2137 2157/1379/2137 2150/1378/2137
-f 2153/1380/2137 2150/1378/2137 2157/1379/2137
-f 2158/1373/2138 2159/1374/2135 2160/1373/2138
-f 2161/1374/2139 2160/1373/2138 2159/1374/2135
-f 2159/1374/2135 2162/1348/2140 2161/1374/2139
-f 2163/1348/2140 2161/1374/2139 2162/1348/2140
-f 2160/1375/2087 2161/1376/2087 2164/1377/2087
-f 2165/1378/2087 2164/1377/2087 2161/1376/2087
-f 2161/1376/2087 2163/1379/2087 2165/1378/2087
-f 2166/1380/2087 2165/1378/2087 2163/1379/2087
-f 2166/1348/2141 2167/1348/2141 2165/1374/2142
-f 2168/1374/2129 2165/1374/2142 2167/1348/2141
-f 2168/1374/2129 2169/1373/2143 2165/1374/2142
-f 2164/1373/2143 2165/1374/2142 2169/1373/2143
-f 2162/1375/2144 2159/1376/2144 2167/1377/2144
-f 2168/1378/2144 2167/1377/2144 2159/1376/2144
-f 2159/1376/2144 2158/1379/2144 2168/1378/2144
-f 2169/1380/2144 2168/1378/2144 2158/1379/2144
-f 2140/1381/2129 2116/1381/2129 2141/1367/2129
-f 2116/1381/2129 2119/1370/2129 2141/1367/2129
-f 2117/1382/2129 2119/1370/2129 2116/1381/2129
-f 2156/1375/2145 2154/1376/2145 2152/1377/2145
-f 2151/1378/2145 2152/1377/2145 2154/1376/2145
-f 2154/1376/2145 2111/1379/2145 2151/1378/2145
-f 2112/1380/2145 2151/1378/2145 2111/1379/2145
-f 2156/1348/2144 2152/1349/2144 2157/1348/2144
-f 2153/1349/2144 2157/1348/2144 2152/1349/2144
-f 2160/1348/2145 2164/1349/2145 2158/1348/2145
-f 2169/1349/2145 2158/1348/2145 2164/1349/2145
-f 2162/1348/2137 2167/1349/2137 2163/1348/2137
-f 2166/1349/2137 2163/1348/2137 2167/1349/2137
-f 2140/1352/2115 2113/1350/2088 2116/1352/2091
-f 2170/1348/2087 2171/1349/2087 2172/1348/2087
-f 2173/1349/2087 2172/1348/2087 2171/1349/2087
-f 2174/1350/2088 2175/1351/2089 2176/1350/2090
-f 2176/1350/2090 2177/1352/2091 2174/1350/2088
-f 2177/1352/2091 2176/1350/2090 2178/1353/2092
-f 2179/1354/2093 2178/1353/2092 2176/1350/2090
-f 2178/1353/2092 2179/1354/2093 2180/1353/2094
-f 2181/1354/2095 2180/1353/2094 2179/1354/2093
-f 2180/1353/2094 2181/1354/2095 2182/1353/2096
-f 2183/1354/2097 2182/1353/2096 2181/1354/2095
-f 2182/1353/2096 2183/1354/2097 2184/1355/2098
-f 2185/1356/2099 2184/1355/2098 2183/1354/2097
-f 2184/1355/2098 2185/1356/2099 2186/1355/2100
-f 2187/1356/2101 2186/1355/2100 2185/1356/2099
-f 2186/1355/2100 2187/1356/2101 2188/1355/2102
-f 2189/1356/2103 2188/1355/2102 2187/1356/2101
-f 2188/1355/2102 2189/1356/2103 2190/1357/2104
-f 2191/1358/2105 2190/1357/2104 2189/1356/2103
-f 2190/1357/2104 2191/1358/2105 2192/1357/2106
-f 2193/1358/2107 2192/1357/2106 2191/1358/2105
-f 2183/1354/2097 2194/1359/2108 2185/1356/2099
-f 2194/1359/2108 2183/1354/2097 2195/1359/2109
-f 2181/1354/2095 2195/1359/2109 2183/1354/2097
-f 2195/1359/2109 2181/1354/2095 2196/1359/2110
-f 2179/1354/2093 2196/1359/2110 2181/1354/2095
-f 2196/1359/2110 2179/1354/2093 2197/1351/2111
-f 2176/1350/2090 2197/1351/2111 2179/1354/2093
-f 2197/1351/2111 2176/1350/2090 2175/1351/2089
-f 2197/1351/2111 2175/1351/2089 2198/1360/2112
-f 2175/1351/2089 2199/1351/2113 2198/1360/2112
-f 2175/1351/2089 2174/1350/2088 2199/1351/2113
-f 2200/1350/2114 2199/1351/2113 2174/1350/2088
-f 2174/1350/2088 2201/1352/2115 2200/1350/2114
-f 2202/1352/2116 2200/1350/2114 2201/1352/2115
-f 2203/1361/2117 2204/1361/2118 2198/1360/2112
-f 2204/1361/2118 2205/1361/2119 2198/1360/2112
-f 2205/1361/2119 2194/1359/2108 2198/1360/2112
-f 2194/1359/2108 2195/1359/2109 2198/1360/2112
-f 2195/1359/2109 2196/1359/2110 2198/1360/2112
-f 2196/1359/2110 2197/1351/2111 2198/1360/2112
-f 2206/1362/2120 2203/1361/2117 2198/1363/2121
-f 2192/1357/2106 2193/1358/2107 2207/1357/2122
-f 2208/1358/2123 2207/1357/2122 2193/1358/2107
-f 2207/1357/2122 2208/1358/2123 2202/1364/2124
-f 2200/1365/2125 2202/1364/2124 2208/1358/2123
-f 2208/1358/2123 2209/1362/2126 2200/1365/2125
-f 2199/1366/2127 2200/1365/2125 2209/1362/2126
-f 2199/1366/2127 2209/1362/2126 2198/1363/2121
-f 2209/1362/2126 2210/1362/2128 2198/1363/2121
-f 2210/1362/2128 2206/1362/2120 2198/1363/2121
-f 2210/1362/2128 2193/1358/2107 2206/1362/2120
-f 2191/1358/2105 2206/1362/2120 2193/1358/2107
-f 2206/1362/2120 2191/1358/2105 2203/1361/2117
-f 2189/1356/2103 2203/1361/2117 2191/1358/2105
-f 2203/1361/2117 2189/1356/2103 2204/1361/2118
-f 2187/1356/2101 2204/1361/2118 2189/1356/2103
-f 2204/1361/2118 2187/1356/2101 2205/1361/2119
-f 2185/1356/2099 2205/1361/2119 2187/1356/2101
-f 2205/1361/2119 2185/1356/2099 2194/1359/2108
-f 2209/1362/2126 2208/1358/2123 2210/1362/2128
-f 2193/1358/2107 2210/1362/2128 2208/1358/2123
-f 2207/1367/2129 2202/1367/2129 2192/1368/2129
-f 2202/1367/2129 2188/1369/2129 2192/1368/2129
-f 2180/1370/2129 2188/1369/2129 2202/1367/2129
-f 2184/1371/2129 2188/1369/2129 2180/1370/2129
-f 2182/1370/2129 2184/1371/2129 2180/1370/2129
-f 2192/1368/2129 2188/1369/2129 2190/1372/2129
-f 2186/1371/2129 2188/1369/2129 2184/1371/2129
-f 2171/1373/2130 2211/1374/2129 2173/1373/2130
-f 2212/1374/2131 2173/1373/2130 2211/1374/2129
-f 2212/1374/2131 2211/1374/2129 2213/1348/2132
-f 2214/1348/2132 2213/1348/2132 2211/1374/2129
-f 2172/1373/2133 2215/1374/2134 2170/1373/2133
-f 2216/1374/2135 2170/1373/2133 2215/1374/2134
-f 2215/1374/2134 2217/1348/2136 2216/1374/2135
-f 2218/1348/2136 2216/1374/2135 2217/1348/2136
-f 2170/1375/2137 2216/1376/2137 2171/1377/2137
-f 2211/1378/2137 2171/1377/2137 2216/1376/2137
-f 2216/1376/2137 2218/1379/2137 2211/1378/2137
-f 2214/1380/2137 2211/1378/2137 2218/1379/2137
-f 2219/1373/2138 2220/1374/2135 2221/1373/2138
-f 2222/1374/2139 2221/1373/2138 2220/1374/2135
-f 2220/1374/2135 2223/1348/2140 2222/1374/2139
-f 2224/1348/2140 2222/1374/2139 2223/1348/2140
-f 2221/1375/2087 2222/1376/2087 2225/1377/2087
-f 2226/1378/2087 2225/1377/2087 2222/1376/2087
-f 2222/1376/2087 2224/1379/2087 2226/1378/2087
-f 2227/1380/2087 2226/1378/2087 2224/1379/2087
-f 2227/1348/2141 2228/1348/2141 2226/1374/2142
-f 2229/1374/2129 2226/1374/2142 2228/1348/2141
-f 2229/1374/2129 2230/1373/2143 2226/1374/2142
-f 2225/1373/2143 2226/1374/2142 2230/1373/2143
-f 2223/1375/2144 2220/1376/2144 2228/1377/2144
-f 2229/1378/2144 2228/1377/2144 2220/1376/2144
-f 2220/1376/2144 2219/1379/2144 2229/1378/2144
-f 2230/1380/2144 2229/1378/2144 2219/1379/2144
-f 2201/1381/2129 2177/1381/2129 2202/1367/2129
-f 2177/1381/2129 2180/1370/2129 2202/1367/2129
-f 2178/1382/2129 2180/1370/2129 2177/1381/2129
-f 2217/1375/2145 2215/1376/2145 2213/1377/2145
-f 2212/1378/2145 2213/1377/2145 2215/1376/2145
-f 2215/1376/2145 2172/1379/2145 2212/1378/2145
-f 2173/1380/2145 2212/1378/2145 2172/1379/2145
-f 2217/1348/2144 2213/1349/2144 2218/1348/2144
-f 2214/1349/2144 2218/1348/2144 2213/1349/2144
-f 2221/1348/2145 2225/1349/2145 2219/1348/2145
-f 2230/1349/2145 2219/1348/2145 2225/1349/2145
-f 2223/1348/2137 2228/1349/2137 2224/1348/2137
-f 2227/1349/2137 2224/1348/2137 2228/1349/2137
-f 2201/1352/2115 2174/1350/2088 2177/1352/2091
-# 330 faces
-
-#
-# object P_51_Mustang_Left_Wing_Flap
-#
-
-v 4.70 -0.34 3.26
-v 5.20 -0.60 -0.73
-v 4.68 -0.83 3.28
-v 29.00 -0.53 5.74
-v 29.38 -0.84 2.43
-v 28.97 -1.13 5.77
-# 6 vertices
-
-vn -0.99 0.04 -0.13
-vn 0.01 1.00 -0.06
-vn 0.02 1.00 -0.09
-vn 0.01 1.00 -0.07
-vn -0.10 0.04 0.99
-vn -0.10 0.06 0.99
-vn -0.00 -1.00 -0.06
-vn -0.00 -1.00 -0.08
-vn -0.00 -1.00 -0.09
-vn 0.99 -0.04 0.12
-# 10 vertex normals
-
-vt 0.23 0.01 0.00
-vt 0.29 0.02 0.00
-vt 0.23 0.02 0.00
-vt 0.98 0.45 0.00
-vt 0.65 0.50 0.00
-vt 0.97 0.38 0.00
-vt 0.65 0.44 0.00
-vt 0.46 0.01 0.00
-vt 0.46 0.00 0.00
-vt 0.23 0.00 0.00
-vt 0.01 0.04 0.00
-vt 0.01 0.31 0.00
-vt 0.06 0.05 0.00
-vt 0.05 0.32 0.00
-vt 0.28 0.01 0.00
-vt 0.33 0.02 0.00
-vt 0.33 0.01 0.00
-# 17 texture coords
-
-g P_51_Mustang_Left_Wing_Flap
-f 2231/1383/2146 2232/1384/2146 2233/1385/2146
-f 2231/1386/2147 2234/1387/2148 2232/1388/2149
-f 2235/1389/2148 2232/1388/2149 2234/1387/2148
-f 2233/1390/2150 2236/1383/2151 2231/1391/2150
-f 2234/1392/2151 2231/1391/2150 2236/1383/2151
-f 2232/1393/2152 2235/1394/2153 2233/1395/2152
-f 2236/1396/2154 2233/1395/2152 2235/1394/2153
-f 2235/1397/2155 2234/1398/2155 2236/1399/2155
-# 8 faces
-
-#
-# object P_51_Mustang_Right_Elevator
-#
-
-v -1.73 4.93 -32.15
-v -1.43 4.98 -35.87
-v -1.80 5.11 -32.31
-v -4.44 4.96 -31.91
-v -4.06 5.00 -35.35
-v -7.81 5.09 -34.62
-v -7.82 5.05 -31.65
-v -11.23 5.16 -33.95
-v -11.33 5.14 -31.30
-v -14.07 5.22 -33.39
-v -14.38 5.21 -32.45
-v -13.95 5.24 -30.69
-v -13.81 5.66 -30.77
-v -11.12 5.68 -31.09
-v -7.79 5.68 -31.43
-v -4.42 5.63 -31.75
-v -1.74 5.55 -32.08
-# 17 vertices
-
-vn 0.91 0.41 0.08
-vn -0.01 -1.00 -0.01
-vn -0.02 -1.00 -0.01
-vn -0.03 -1.00 -0.01
-vn -0.03 -1.00 -0.00
-vn -0.02 -1.00 -0.02
-vn -0.02 -1.00 -0.00
-vn -0.03 -1.00 0.03
-vn -0.03 0.99 -0.16
-vn -0.02 0.98 -0.17
-vn -0.02 0.99 -0.17
-vn -0.02 0.98 -0.18
-vn -0.01 0.98 -0.18
-vn -0.01 0.98 -0.17
-vn -0.03 0.98 -0.18
-vn -0.00 0.99 -0.16
-vn -0.01 0.99 -0.16
-vn 0.01 0.99 -0.15
-vn 0.98 -0.18 0.11
-# 19 vertex normals
-
-vt 0.96 0.79 0.00
-vt 0.96 0.78 0.00
-vt 0.02 0.62 0.00
-vt 0.06 0.63 0.00
-vt 0.01 0.57 0.00
-vt 0.05 0.58 0.00
-vt 0.11 0.59 0.00
-vt 0.11 0.63 0.00
-vt 0.16 0.60 0.00
-vt 0.16 0.63 0.00
-vt 0.20 0.60 0.00
-vt 0.20 0.62 0.00
-vt 0.20 0.64 0.00
-vt 0.29 0.23 0.00
-vt 0.29 0.27 0.00
-vt 0.25 0.22 0.00
-vt 0.25 0.27 0.00
-vt 0.29 0.32 0.00
-vt 0.24 0.32 0.00
-vt 0.28 0.37 0.00
-vt 0.23 0.37 0.00
-vt 0.22 0.41 0.00
-vt 0.28 0.41 0.00
-# 23 texture coords
-
-g P_51_Mustang_Right_Elevator
-f 2237/1400/2156 2238/1401/2156 2239/1400/2156
-f 2237/1402/2157 2240/1403/2158 2238/1404/2157
-f 2241/1405/2158 2238/1404/2157 2240/1403/2158
-f 2241/1405/2158 2240/1403/2158 2242/1406/2159
-f 2243/1407/2159 2242/1406/2159 2240/1403/2158
-f 2242/1406/2159 2243/1407/2159 2244/1408/2158
-f 2245/1409/2160 2244/1408/2158 2243/1407/2159
-f 2246/1410/2161 2244/1408/2158 2245/1409/2160
-f 2247/1411/2162 2246/1410/2161 2245/1409/2160
-f 2248/1412/2163 2247/1411/2162 2245/1409/2160
-f 2249/1413/2164 2250/1414/2165 2246/1415/2166
-f 2244/1416/2167 2246/1415/2166 2250/1414/2165
-f 2250/1414/2165 2251/1417/2168 2244/1416/2167
-f 2242/1418/2168 2244/1416/2167 2251/1417/2168
-f 2251/1417/2168 2252/1419/2168 2242/1418/2168
-f 2241/1420/2169 2242/1418/2168 2252/1419/2168
-f 2241/1420/2170 2252/1419/2171 2238/1421/2172
-f 2253/1422/2173 2238/1421/2172 2252/1419/2171
-f 2253/1400/2174 2239/1400/2174 2238/1401/2174
-# 19 faces
-
-#
-# object P_51_Mustang_Back_Wheel
-#
-
-v 0.75 -3.90 -21.82
-v 0.72 -4.53 -21.59
-v 0.78 -3.45 -22.32
-v 0.67 -5.83 -22.72
-v 0.69 -5.68 -23.36
-v 0.67 -5.64 -22.12
-v 0.79 -3.49 -23.56
-v 0.79 -3.30 -22.96
-v 0.69 -5.17 -21.70
-v 0.29 -3.41 -23.61
-v 0.29 -3.21 -22.96
-v 0.27 -3.37 -22.27
-v 0.24 -3.85 -21.74
-v 0.21 -4.52 -21.50
-v 0.18 -5.20 -21.61
-v 0.16 -5.72 -22.06
-v 0.16 -5.92 -22.71
-v 0.17 -5.76 -23.40
-v 0.72 -5.24 -23.86
-v 0.20 -5.28 -23.93
-v 0.75 -4.61 -24.09
-v 0.24 -4.61 -24.17
-v 0.78 -3.97 -23.98
-v 0.27 -3.92 -24.06
-v -0.25 -3.96 -23.97
-v -0.23 -3.49 -23.55
-v -0.23 -3.30 -22.95
-v -0.24 -3.45 -22.31
-v -0.27 -3.89 -21.81
-v -0.30 -4.52 -21.58
-v -0.33 -5.16 -21.69
-v -0.35 -5.63 -22.11
-v -0.35 -5.82 -22.71
-v -0.33 -5.68 -23.35
-v -0.31 -5.23 -23.85
-v -0.28 -4.60 -24.08
-# 36 vertices
-
-vn 1.00 -0.05 0.01
-vn 0.18 0.82 -0.54
-vn 0.00 0.84 -0.55
-vn 0.19 0.98 -0.04
-vn 0.01 1.00 -0.04
-vn 0.18 0.87 0.46
-vn 0.01 0.89 0.46
-vn 0.18 0.55 0.82
-vn 0.01 0.56 0.83
-vn 0.18 0.09 0.98
-vn 0.01 0.09 1.00
-vn 0.18 -0.42 0.89
-vn 0.00 -0.43 0.90
-vn 0.18 -0.82 0.54
-vn -0.00 -0.84 0.55
-vn 0.17 -0.99 0.03
-vn -0.01 -1.00 0.04
-vn 0.16 -0.87 -0.46
-vn -0.01 -0.89 -0.46
-vn 0.16 -0.55 -0.82
-vn -0.01 -0.56 -0.83
-vn 0.17 -0.09 -0.98
-vn -0.01 -0.09 -1.00
-vn 0.18 0.42 -0.89
-vn -0.00 0.43 -0.90
-vn -0.18 0.42 -0.89
-vn -0.18 0.82 -0.54
-vn -0.17 0.99 -0.03
-vn -0.16 0.87 0.46
-vn -0.16 0.55 0.82
-vn -0.17 0.09 0.98
-vn -0.18 -0.42 0.89
-vn -0.18 -0.82 0.54
-vn -0.19 -0.98 0.04
-vn -0.18 -0.87 -0.46
-vn -0.18 -0.55 -0.82
-vn -0.18 -0.09 -0.98
-vn -1.00 0.05 -0.01
-# 38 vertex normals
-
-vt 0.79 0.99 0.00
-vt 0.81 0.99 0.00
-vt 0.78 0.97 0.00
-vt 0.85 0.95 0.00
-vt 0.85 0.93 0.00
-vt 0.85 0.97 0.00
-vt 0.78 0.93 0.00
-vt 0.77 0.95 0.00
-vt 0.83 0.99 0.00
-vt 0.31 0.75 0.00
-vt 0.31 0.76 0.00
-vt 0.30 0.75 0.00
-vt 0.30 0.76 0.00
-vt 0.33 0.75 0.00
-vt 0.32 0.76 0.00
-vt 0.34 0.75 0.00
-vt 0.34 0.76 0.00
-vt 0.36 0.75 0.00
-vt 0.36 0.76 0.00
-vt 0.37 0.75 0.00
-vt 0.37 0.76 0.00
-vt 0.38 0.75 0.00
-vt 0.39 0.76 0.00
-vt 0.33 0.77 0.00
-vt 0.31 0.77 0.00
-vt 0.30 0.77 0.00
-vt 0.34 0.77 0.00
-vt 0.36 0.77 0.00
-vt 0.37 0.77 0.00
-vt 0.38 0.77 0.00
-vt 0.83 0.92 0.00
-vt 0.79 0.92 0.00
-vt 0.81 0.91 0.00
-# 33 texture coords
-
-g P_51_Mustang_Back_Wheel
-f 2254/1423/2175 2255/1424/2175 2256/1425/2175
-f 2257/1426/2175 2258/1427/2175 2259/1428/2175
-f 2258/1427/2175 2255/1424/2175 2259/1428/2175
-f 2260/1429/2175 2255/1424/2175 2258/1427/2175
-f 2256/1425/2175 2255/1424/2175 2260/1429/2175
-f 2261/1430/2175 2256/1425/2175 2260/1429/2175
-f 2259/1428/2175 2255/1424/2175 2262/1431/2175
-f 2260/1432/2176 2263/1433/2177 2261/1434/2178
-f 2264/1435/2179 2261/1434/2178 2263/1433/2177
-f 2261/1434/2178 2264/1435/2179 2256/1432/2180
-f 2265/1433/2181 2256/1432/2180 2264/1435/2179
-f 2256/1432/2180 2265/1433/2181 2254/1436/2182
-f 2266/1437/2183 2254/1436/2182 2265/1433/2181
-f 2254/1436/2182 2266/1437/2183 2255/1438/2184
-f 2267/1439/2185 2255/1438/2184 2266/1437/2183
-f 2255/1438/2184 2267/1439/2185 2262/1440/2186
-f 2268/1441/2187 2262/1440/2186 2267/1439/2185
-f 2262/1440/2186 2268/1441/2187 2259/1442/2188
-f 2269/1443/2189 2259/1442/2188 2268/1441/2187
-f 2259/1442/2188 2269/1443/2189 2257/1444/2190
-f 2270/1445/2191 2257/1444/2190 2269/1443/2189
-f 2257/1444/2190 2270/1445/2191 2258/1442/2192
-f 2271/1443/2193 2258/1442/2192 2270/1445/2191
-f 2258/1442/2192 2271/1443/2193 2272/1440/2194
-f 2273/1441/2195 2272/1440/2194 2271/1443/2193
-f 2272/1440/2194 2273/1441/2195 2274/1438/2196
-f 2275/1439/2197 2274/1438/2196 2273/1441/2195
-f 2274/1438/2196 2275/1439/2197 2276/1436/2198
-f 2277/1437/2199 2276/1436/2198 2275/1439/2197
-f 2276/1436/2198 2277/1437/2199 2260/1432/2176
-f 2263/1433/2177 2260/1432/2176 2277/1437/2199
-f 2277/1437/2199 2278/1446/2200 2263/1433/2177
-f 2279/1447/2201 2263/1433/2177 2278/1446/2200
-f 2263/1433/2177 2279/1447/2201 2264/1435/2179
-f 2280/1448/2202 2264/1435/2179 2279/1447/2201
-f 2264/1435/2179 2280/1448/2202 2265/1433/2181
-f 2281/1447/2203 2265/1433/2181 2280/1448/2202
-f 2265/1433/2181 2281/1447/2203 2266/1437/2183
-f 2282/1446/2204 2266/1437/2183 2281/1447/2203
-f 2266/1437/2183 2282/1446/2204 2267/1439/2185
-f 2283/1449/2205 2267/1439/2185 2282/1446/2204
-f 2267/1439/2185 2283/1449/2205 2268/1441/2187
-f 2284/1450/2206 2268/1441/2187 2283/1449/2205
-f 2268/1441/2187 2284/1450/2206 2269/1443/2189
-f 2285/1451/2207 2269/1443/2189 2284/1450/2206
-f 2269/1443/2189 2285/1451/2207 2270/1445/2191
-f 2286/1452/2208 2270/1445/2191 2285/1451/2207
-f 2270/1445/2191 2286/1452/2208 2271/1443/2193
-f 2287/1451/2209 2271/1443/2193 2286/1452/2208
-f 2271/1443/2193 2287/1451/2209 2273/1441/2195
-f 2288/1450/2210 2273/1441/2195 2287/1451/2209
-f 2273/1441/2195 2288/1450/2210 2275/1439/2197
-f 2289/1449/2211 2275/1439/2197 2288/1450/2210
-f 2275/1439/2197 2289/1449/2211 2277/1437/2199
-f 2278/1446/2200 2277/1437/2199 2289/1449/2211
-f 2285/1428/2212 2284/1431/2212 2286/1426/2212
-f 2286/1426/2212 2284/1431/2212 2288/1453/2212
-f 2288/1453/2212 2284/1431/2212 2280/1430/2212
-f 2278/1454/2212 2288/1453/2212 2280/1430/2212
-f 2279/1429/2212 2278/1454/2212 2280/1430/2212
-f 2289/1455/2212 2288/1453/2212 2278/1454/2212
-f 2287/1427/2212 2286/1426/2212 2288/1453/2212
-f 2272/1453/2175 2274/1455/2175 2258/1427/2175
-f 2274/1455/2175 2260/1429/2175 2258/1427/2175
-f 2276/1454/2175 2260/1429/2175 2274/1455/2175
-f 2281/1425/2212 2280/1430/2212 2282/1423/2212
-f 2280/1430/2212 2284/1431/2212 2282/1423/2212
-f 2282/1423/2212 2284/1431/2212 2283/1424/2212
-# 68 faces
-
-#
-# object P_51_Mustang_Left_Elevator
-#
-
-v 3.14 4.95 -35.92
-v 3.33 4.89 -32.33
-v 3.39 5.51 -32.16
-v 5.75 4.92 -35.46
-v 6.03 4.88 -32.03
-v 9.49 4.95 -34.81
-v 9.40 4.92 -31.81
-v 12.89 4.98 -34.22
-v 12.73 4.96 -31.49
-v 15.72 4.99 -33.73
-v 15.64 4.97 -32.81
-v 15.50 5.01 -31.28
-v 15.57 5.42 -31.45
-v 12.75 5.49 -31.56
-v 9.43 5.54 -31.80
-v 6.06 5.54 -32.00
-v 3.41 5.07 -32.37
-# 17 vertices
-
-vn -1.00 0.08 0.05
-vn -0.01 -1.00 -0.01
-vn 0.00 -1.00 -0.01
-vn -0.00 -1.00 -0.01
-vn 0.01 -1.00 -0.01
-vn 0.01 -1.00 -0.00
-vn 0.02 -1.00 0.02
-vn 0.03 0.98 -0.18
-vn 0.03 0.98 -0.19
-vn 0.02 0.98 -0.19
-vn 0.02 0.98 -0.18
-vn -0.00 0.98 -0.18
-vn 0.02 0.99 -0.16
-vn 0.01 0.99 -0.17
-vn 0.04 0.99 -0.15
-vn 0.78 -0.24 0.58
-# 16 vertex normals
-
-vt 0.94 0.79 0.00
-vt 0.93 0.78 0.00
-vt 0.01 0.57 0.00
-vt 0.05 0.58 0.00
-vt 0.02 0.62 0.00
-vt 0.06 0.63 0.00
-vt 0.11 0.59 0.00
-vt 0.11 0.63 0.00
-vt 0.16 0.59 0.00
-vt 0.16 0.64 0.00
-vt 0.20 0.60 0.00
-vt 0.20 0.62 0.00
-vt 0.20 0.64 0.00
-vt 0.29 0.61 0.00
-vt 0.26 0.62 0.00
-vt 0.29 0.57 0.00
-vt 0.25 0.57 0.00
-vt 0.29 0.52 0.00
-vt 0.24 0.52 0.00
-vt 0.28 0.47 0.00
-vt 0.23 0.47 0.00
-vt 0.28 0.43 0.00
-vt 0.22 0.43 0.00
-# 23 texture coords
-
-g P_51_Mustang_Left_Elevator
-f 2290/1456/2213 2291/1457/2213 2292/1457/2213
-f 2290/1458/2214 2293/1459/2215 2291/1460/2216
-f 2294/1461/2217 2291/1460/2216 2293/1459/2215
-f 2293/1459/2215 2295/1462/2217 2294/1461/2217
-f 2296/1463/2217 2294/1461/2217 2295/1462/2217
-f 2295/1462/2217 2297/1464/2217 2296/1463/2217
-f 2298/1465/2218 2296/1463/2217 2297/1464/2217
-f 2299/1466/2215 2298/1465/2218 2297/1464/2217
-f 2300/1467/2215 2298/1465/2218 2299/1466/2215
-f 2301/1468/2219 2298/1465/2218 2300/1467/2215
-f 2302/1469/2220 2299/1470/2220 2303/1471/2221
-f 2297/1472/2221 2303/1471/2221 2299/1470/2220
-f 2303/1471/2221 2297/1472/2221 2304/1473/2222
-f 2295/1474/2222 2304/1473/2222 2297/1472/2221
-f 2304/1473/2222 2295/1474/2222 2305/1475/2223
-f 2293/1476/2223 2305/1475/2223 2295/1474/2222
-f 2305/1475/2224 2293/1476/2225 2292/1477/2226
-f 2290/1478/2227 2292/1477/2226 2293/1476/2225
-f 2306/1457/2228 2292/1457/2228 2291/1457/2228
-# 19 faces
-
-#
-# object P_51_Mustang_Rudder
-#
-
-v 1.94 16.37 -39.44
-v 1.85 16.90 -39.49
-v 1.94 16.37 -39.43
-v -0.40 3.34 -38.12
-v -0.34 5.20 -38.31
-v 0.05 2.94 -41.04
-v 0.27 4.65 -42.12
-v 0.29 7.13 -38.50
-v 0.58 6.72 -42.03
-v 0.67 6.59 -43.07
-v 0.75 7.71 -43.00
-v 1.10 7.67 -43.30
-v 1.43 15.17 -42.50
-v 1.44 7.70 -43.02
-v 1.76 15.18 -42.35
-v 1.50 7.81 -42.12
-v 1.78 15.24 -41.86
-v 1.75 8.22 -38.63
-v 1.92 15.54 -39.35
-v 1.82 16.10 -41.76
-v 1.82 16.67 -41.61
-v 0.34 8.23 -38.61
-v 0.87 15.54 -39.34
-v 0.67 7.82 -42.09
-v 0.92 16.38 -39.42
-v 1.07 15.25 -41.84
-v 1.10 15.19 -42.33
-v 1.49 17.19 -40.75
-v 1.48 17.32 -39.52
-v 1.06 16.91 -39.48
-v 1.15 16.68 -41.59
-v 1.10 16.10 -41.74
-v 1.14 16.05 -42.19
-v 1.47 16.03 -42.34
-v 1.80 16.05 -42.20
-v 1.81 16.63 -42.01
-v 1.82 16.83 -41.81
-v 1.17 16.83 -41.79
-v 1.50 16.81 -41.93
-v 1.17 16.63 -41.99
-v 1.49 16.61 -42.13
-v 0.94 4.41 -43.65
-v 0.48 4.74 -43.09
-v 1.05 6.55 -43.43
-v 1.41 4.73 -43.10
-v 1.44 3.03 -42.87
-v 1.58 4.64 -42.14
-v 1.61 2.93 -41.06
-v 2.02 3.32 -38.14
-v 1.63 1.73 -40.70
-v 1.99 1.54 -37.97
-v 1.44 1.15 -40.85
-v 1.75 0.67 -37.88
-v 0.74 0.99 -40.75
-v 0.67 0.46 -37.85
-v 0.05 1.17 -40.84
-v -0.39 0.69 -37.86
-v -0.54 1.56 -37.94
-v -0.09 1.74 -40.68
-v 0.78 1.47 -42.17
-v 0.24 1.84 -42.10
-v 1.35 1.83 -42.11
-v 0.84 2.58 -43.11
-v 0.29 3.04 -42.85
-v 2.09 4.08 -38.22
-v 2.14 5.18 -38.33
-v 1.49 6.71 -42.05
-v 1.69 7.13 -38.52
-v 1.41 6.58 -43.09
-# 69 vertices
-
-vn 1.00 0.09 -0.04
-vn 0.91 0.42 -0.05
-vn 0.99 0.16 -0.05
-vn -0.99 0.04 -0.16
-vn -0.97 0.15 -0.18
-vn -0.99 0.03 -0.16
-vn -0.98 0.10 -0.16
-vn -0.98 0.14 -0.13
-vn -0.99 0.11 -0.10
-vn -0.89 0.11 -0.45
-vn -0.88 0.09 -0.47
-vn -0.01 0.10 -1.00
-vn -0.01 0.13 -0.99
-vn 0.89 0.01 -0.46
-vn 0.83 0.04 -0.56
-vn 1.00 -0.03 -0.06
-vn 1.00 -0.04 -0.05
-vn 1.00 -0.04 -0.06
-vn 1.00 -0.03 -0.05
-vn 1.00 -0.02 -0.05
-vn 0.99 0.15 0.03
-vn -0.99 0.05 -0.10
-vn -0.99 0.06 -0.09
-vn -0.99 0.07 -0.10
-vn -0.99 0.14 -0.08
-vn -1.00 0.05 -0.08
-vn -0.82 0.12 -0.56
-vn 0.03 0.99 -0.13
-vn 0.02 0.99 -0.10
-vn -0.87 0.48 -0.08
-vn -0.97 0.24 -0.01
-vn -0.99 0.07 -0.08
-vn -0.79 0.19 -0.58
-vn -0.01 0.25 -0.97
-vn 0.80 0.12 -0.59
-vn 0.75 0.35 -0.55
-vn 0.71 0.64 -0.29
-vn -0.68 0.67 -0.30
-vn -0.00 0.83 -0.56
-vn -0.74 0.40 -0.55
-vn -0.01 0.51 -0.86
-vn 0.00 -0.04 -1.00
-vn -0.89 0.08 -0.45
-vn 0.00 0.09 -1.00
-vn 0.90 -0.01 -0.44
-vn 0.84 -0.22 -0.49
-vn 0.99 -0.01 -0.14
-vn 0.99 -0.06 -0.13
-vn 0.99 -0.05 -0.14
-vn 0.97 -0.15 -0.17
-vn 0.98 -0.17 -0.14
-vn 0.65 -0.71 -0.26
-vn 0.64 -0.75 -0.19
-vn -0.01 -0.97 -0.24
-vn -0.02 -0.98 -0.18
-vn -0.68 -0.67 -0.28
-vn -0.68 -0.70 -0.21
-vn -0.98 -0.08 -0.17
-vn -0.98 -0.06 -0.19
-vn -0.02 -0.80 -0.60
-vn -0.80 -0.39 -0.45
-vn 0.78 -0.46 -0.43
-vn -0.01 -0.46 -0.89
-vn -0.85 -0.14 -0.51
-vn -0.01 -0.10 -1.00
-vn 0.99 0.04 -0.13
-vn 1.00 0.03 -0.09
-vn 0.99 0.08 -0.07
-vn 0.90 0.02 -0.44
-vn 0.01 0.10 1.00
-# 70 vertex normals
-
-vt 0.93 0.98 0.00
-vt 0.93 0.99 0.00
-vt 0.93 0.83 0.00
-vt 0.93 0.85 0.00
-vt 0.96 0.83 0.00
-vt 0.98 0.85 0.00
-vt 0.93 0.87 0.00
-vt 0.97 0.87 0.00
-vt 0.98 0.87 0.00
-vt 0.98 0.88 0.00
-vt 0.99 0.88 0.00
-vt 0.97 0.97 0.00
-vt 0.97 0.88 0.00
-vt 0.96 0.97 0.00
-vt 0.93 0.89 0.00
-vt 0.93 0.97 0.00
-vt 0.96 0.98 0.00
-vt 0.96 0.99 0.00
-vt 0.95 0.99 0.00
-vt 0.93 1.00 0.00
-vt 0.97 0.98 0.00
-vt 0.97 0.99 0.00
-vt 1.00 0.84 0.00
-vt 0.99 0.85 0.00
-vt 0.99 0.87 0.00
-vt 0.99 0.83 0.00
-vt 0.96 0.81 0.00
-vt 0.93 0.81 0.00
-vt 0.96 0.80 0.00
-vt 0.93 0.80 0.00
-vt 0.96 0.79 0.00
-vt 0.93 0.79 0.00
-vt 0.98 0.80 0.00
-vt 0.98 0.81 0.00
-vt 0.99 0.82 0.00
-vt 0.93 0.84 0.00
-vt 0.65 0.02 0.00
-vt 0.65 0.03 0.00
-vt 0.66 0.02 0.00
-vt 0.64 0.03 0.00
-vt 0.56 0.01 0.00
-vt 0.55 0.03 0.00
-vt 0.55 0.01 0.00
-vt 0.53 0.03 0.00
-vt 0.52 0.01 0.00
-vt 0.48 0.03 0.00
-vt 0.48 0.01 0.00
-vt 0.48 0.02 0.00
-vt 0.56 0.03 0.00
-vt 0.49 0.03 0.00
-vt 0.51 0.03 0.00
-vt 0.49 0.01 0.00
-vt 0.53 0.01 0.00
-vt 0.64 0.01 0.00
-vt 0.65 0.01 0.00
-# 55 texture coords
-
-g P_51_Mustang_Rudder
-f 2307/1479/2229 2308/1480/2230 2309/1479/2231
-f 2310/1481/2232 2311/1482/2233 2312/1483/2234
-f 2313/1484/2235 2312/1483/2234 2311/1482/2233
-f 2311/1482/2233 2314/1485/2236 2313/1484/2235
-f 2315/1486/2237 2313/1484/2235 2314/1485/2236
-f 2315/1486/2237 2316/1487/2238 2313/1484/2235
-f 2316/1487/2238 2315/1486/2237 2317/1488/2239
-f 2317/1488/2239 2318/1489/2240 2316/1487/2238
-f 2318/1489/2240 2317/1488/2239 2319/1490/2241
-f 2318/1489/2240 2319/1490/2241 2320/1488/2242
-f 2321/1490/2243 2320/1488/2242 2319/1490/2241
-f 2320/1488/2242 2321/1490/2243 2322/1491/2244
-f 2323/1492/2245 2322/1491/2244 2321/1490/2243
-f 2322/1491/2244 2323/1492/2245 2324/1493/2246
-f 2325/1494/2247 2324/1493/2246 2323/1492/2245
-f 2323/1492/2245 2326/1495/2248 2325/1494/2247
-f 2307/1479/2229 2325/1494/2247 2326/1495/2248
-f 2326/1495/2248 2327/1496/2249 2307/1479/2229
-f 2327/1496/2249 2308/1480/2230 2307/1479/2229
-f 2314/1485/2236 2328/1493/2250 2315/1486/2237
-f 2328/1493/2250 2329/1494/2251 2330/1491/2252
-f 2330/1491/2252 2315/1486/2237 2328/1493/2250
-f 2330/1491/2252 2317/1488/2239 2315/1486/2237
-f 2329/1494/2251 2331/1479/2253 2332/1492/2254
-f 2332/1492/2254 2330/1491/2252 2329/1494/2251
-f 2332/1492/2254 2333/1490/2255 2330/1491/2252
-f 2317/1488/2239 2330/1491/2252 2333/1490/2255
-f 2333/1490/2255 2319/1490/2241 2317/1488/2239
-f 2327/1496/2249 2334/1497/2256 2308/1480/2230
-f 2335/1498/2257 2308/1480/2230 2334/1497/2256
-f 2335/1498/2257 2334/1497/2256 2336/1480/2258
-f 2337/1496/2259 2336/1480/2258 2334/1497/2256
-f 2336/1480/2258 2337/1496/2259 2331/1479/2253
-f 2338/1495/2260 2331/1479/2253 2337/1496/2259
-f 2338/1495/2260 2332/1492/2254 2331/1479/2253
-f 2338/1495/2260 2339/1495/2261 2332/1492/2254
-f 2333/1490/2255 2332/1492/2254 2339/1495/2261
-f 2339/1495/2261 2340/1499/2262 2333/1490/2255
-f 2319/1490/2241 2333/1490/2255 2340/1499/2262
-f 2319/1490/2241 2340/1499/2262 2321/1490/2243
-f 2341/1495/2263 2321/1490/2243 2340/1499/2262
-f 2321/1490/2243 2341/1495/2263 2323/1492/2245
-f 2326/1495/2248 2323/1492/2245 2341/1495/2263
-f 2341/1495/2263 2342/1496/2264 2326/1495/2248
-f 2327/1496/2249 2326/1495/2248 2342/1496/2264
-f 2342/1496/2264 2343/1496/2265 2327/1496/2249
-f 2337/1496/2259 2334/1497/2256 2344/1496/2266
-f 2327/1496/2249 2343/1496/2265 2334/1497/2256
-f 2345/1496/2267 2334/1497/2256 2343/1496/2265
-f 2345/1496/2267 2344/1496/2266 2334/1497/2256
-f 2344/1496/2266 2345/1496/2267 2346/1496/2268
-f 2344/1496/2266 2346/1496/2268 2337/1496/2259
-f 2337/1496/2259 2346/1496/2268 2338/1495/2260
-f 2339/1495/2261 2338/1495/2260 2346/1496/2268
-f 2346/1496/2268 2347/1500/2269 2339/1495/2261
-f 2340/1499/2262 2339/1495/2261 2347/1500/2269
-f 2340/1499/2262 2347/1500/2269 2341/1495/2263
-f 2342/1496/2264 2341/1495/2263 2347/1500/2269
-f 2347/1500/2269 2345/1496/2267 2342/1496/2264
-f 2343/1496/2265 2342/1496/2264 2345/1496/2267
-f 2347/1500/2269 2346/1496/2268 2345/1496/2267
-f 2348/1501/2270 2349/1502/2271 2350/1503/2272
-f 2348/1501/2270 2350/1503/2272 2351/1502/2273
-f 2351/1502/2273 2352/1504/2274 2348/1501/2270
-f 2351/1502/2273 2353/1484/2275 2352/1504/2274
-f 2354/1483/2276 2352/1504/2274 2353/1484/2275
-f 2355/1481/2277 2354/1483/2276 2353/1484/2275
-f 2354/1483/2276 2355/1481/2277 2356/1505/2278
-f 2357/1506/2279 2356/1505/2278 2355/1481/2277
-f 2356/1505/2278 2357/1506/2279 2358/1507/2280
-f 2359/1508/2281 2358/1507/2280 2357/1506/2279
-f 2358/1507/2280 2359/1508/2281 2360/1509/2282
-f 2361/1510/2283 2360/1509/2282 2359/1508/2281
-f 2360/1509/2282 2361/1510/2283 2362/1507/2284
-f 2363/1508/2285 2362/1507/2284 2361/1510/2283
-f 2363/1508/2285 2364/1506/2286 2362/1507/2284
-f 2365/1505/2287 2362/1507/2284 2364/1506/2286
-f 2364/1506/2286 2310/1481/2232 2365/1505/2287
-f 2312/1483/2234 2365/1505/2287 2310/1481/2232
-f 2366/1511/2288 2362/1507/2284 2367/1512/2289
-f 2362/1507/2284 2366/1511/2288 2360/1509/2282
-f 2366/1511/2288 2358/1507/2280 2360/1509/2282
-f 2366/1511/2288 2368/1512/2290 2358/1507/2280
-f 2356/1505/2278 2358/1507/2280 2368/1512/2290
-f 2356/1505/2278 2368/1512/2290 2354/1483/2276
-f 2352/1504/2274 2354/1483/2276 2368/1512/2290
-f 2352/1504/2274 2368/1512/2290 2369/1513/2291
-f 2369/1513/2291 2348/1501/2270 2352/1504/2274
-f 2369/1513/2291 2370/1504/2292 2348/1501/2270
-f 2349/1502/2271 2348/1501/2270 2370/1504/2292
-f 2366/1511/2288 2369/1513/2291 2368/1512/2290
-f 2366/1511/2288 2367/1512/2289 2369/1513/2291
-f 2370/1504/2292 2369/1513/2291 2367/1512/2289
-f 2371/1514/2293 2355/1481/2277 2372/1482/2294
-f 2372/1482/2294 2355/1481/2277 2353/1484/2275
-f 2353/1484/2275 2373/1486/2295 2372/1482/2294
-f 2374/1485/2296 2372/1482/2294 2373/1486/2295
-f 2374/1485/2296 2373/1486/2295 2324/1493/2246
-f 2322/1491/2244 2324/1493/2246 2373/1486/2295
-f 2322/1491/2244 2373/1486/2295 2320/1488/2242
-f 2375/1487/2297 2320/1488/2242 2373/1486/2295
-f 2320/1488/2242 2375/1487/2297 2318/1489/2240
-f 2350/1503/2272 2318/1489/2240 2375/1487/2297
-f 2350/1503/2272 2316/1487/2238 2318/1489/2240
-f 2316/1487/2238 2350/1503/2272 2349/1502/2271
-f 2349/1502/2271 2313/1484/2235 2316/1487/2238
-f 2349/1502/2271 2370/1504/2292 2313/1484/2235
-f 2312/1483/2234 2313/1484/2235 2370/1504/2292
-f 2370/1504/2292 2367/1512/2289 2312/1483/2234
-f 2365/1505/2287 2312/1483/2234 2367/1512/2289
-f 2365/1505/2287 2367/1512/2289 2362/1507/2284
-f 2373/1486/2295 2353/1484/2275 2375/1487/2297
-f 2351/1502/2273 2375/1487/2297 2353/1484/2275
-f 2375/1487/2297 2351/1502/2273 2350/1503/2272
-f 2336/1515/2298 2331/1516/2298 2335/1517/2298
-f 2331/1516/2298 2329/1518/2298 2335/1517/2298
-f 2329/1518/2298 2324/1519/2298 2335/1517/2298
-f 2314/1520/2298 2324/1519/2298 2329/1518/2298
-f 2374/1521/2298 2324/1519/2298 2314/1520/2298
-f 2314/1520/2298 2311/1522/2298 2374/1521/2298
-f 2311/1522/2298 2371/1523/2298 2374/1521/2298
-f 2363/1524/2298 2371/1523/2298 2311/1522/2298
-f 2359/1525/2298 2371/1523/2298 2363/1524/2298
-f 2361/1526/2298 2359/1525/2298 2363/1524/2298
-f 2328/1527/2298 2314/1520/2298 2329/1518/2298
-f 2364/1528/2298 2363/1524/2298 2310/1529/2298
-f 2310/1529/2298 2363/1524/2298 2311/1522/2298
-f 2357/1530/2298 2371/1523/2298 2359/1525/2298
-f 2371/1523/2298 2372/1531/2298 2374/1521/2298
-f 2324/1519/2298 2325/1532/2298 2335/1517/2298
-f 2325/1532/2298 2309/1533/2298 2335/1517/2298
-f 2309/1533/2298 2308/1515/2298 2335/1517/2298
-# 132 faces
-
diff --git a/examples/web/models/resources/plane.png b/examples/web/models/resources/plane.png
deleted file mode 100644
index b415138..0000000
--- a/examples/web/models/resources/plane.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/models/resources/plane/LICENSE b/examples/web/models/resources/plane/LICENSE
new file mode 100644
index 0000000..57333b2
--- /dev/null
+++ b/examples/web/models/resources/plane/LICENSE
@@ -0,0 +1,9 @@
+WWI Plane Model created by GiaHanLam (https://sketchfab.com/GiaHanLam)
+This model is free to use, licensed as Creative Commons Attribution (CC-BY 4.0)
+
+License details: https://creativecommons.org/licenses/by/4.0/
+
+As per the license, author must be credited and commercial use is allowed.
+
+This model was donwload from author Sketchfab account: https://sketchfab.com/3d-models/wwi-plane-model-f0d39a6daacd4925a8922db193886715
+
diff --git a/examples/web/models/resources/plane/plane.bin b/examples/web/models/resources/plane/plane.bin
new file mode 100644
index 0000000..4e5ee53
--- /dev/null
+++ b/examples/web/models/resources/plane/plane.bin
Binary files differ
diff --git a/examples/web/models/resources/plane/plane.gltf b/examples/web/models/resources/plane/plane.gltf
new file mode 100644
index 0000000..928b172
--- /dev/null
+++ b/examples/web/models/resources/plane/plane.gltf
@@ -0,0 +1,327 @@
+{
+ "accessors": [
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 3446,
+ "max": [
+ 143.99604797363281,
+ 168.74668884277344,
+ 75.31597900390625
+ ],
+ "min": [
+ -143.99604797363281,
+ -43.94732666015625,
+ -49.556678771972656
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 41352,
+ "componentType": 5126,
+ "count": 3446,
+ "max": [
+ 1,
+ 0.99916732311248779,
+ 0.99978786706924438
+ ],
+ "min": [
+ -1,
+ -0.99928808212280273,
+ -0.99977350234985352
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5126,
+ "count": 3446,
+ "max": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "min": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 3446,
+ "max": [
+ 4.8965663909912109,
+ 0.99786919355392456
+ ],
+ "min": [
+ 0.0036561768501996994,
+ 0.0083234198391437531
+ ],
+ "type": "VEC2"
+ },
+ {
+ "bufferView": 0,
+ "componentType": 5125,
+ "count": 7692,
+ "max": [
+ 3445
+ ],
+ "min": [
+ 0
+ ],
+ "type": "SCALAR"
+ }
+ ],
+ "asset": {
+ "extras": {
+ "author": "GiaHanLam (https://sketchfab.com/GiaHanLam)",
+ "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
+ "source": "https://sketchfab.com/3d-models/wwi-plane-model-f0d39a6daacd4925a8922db193886715",
+ "title": "WWI Plane Model"
+ },
+ "generator": "Sketchfab-8.25.0",
+ "version": "2.0"
+ },
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 30768,
+ "byteOffset": 0,
+ "name": "floatBufferViews",
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteLength": 27568,
+ "byteOffset": 30768,
+ "byteStride": 8,
+ "name": "floatBufferViews",
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 82704,
+ "byteOffset": 58336,
+ "byteStride": 12,
+ "name": "floatBufferViews",
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 55136,
+ "byteOffset": 141040,
+ "byteStride": 16,
+ "name": "floatBufferViews",
+ "target": 34962
+ }
+ ],
+ "buffers": [
+ {
+ "byteLength": 196176,
+ "uri": "plane.bin"
+ }
+ ],
+ "images": [
+ {
+ "uri": "plane_diffuse.png"
+ }
+ ],
+ "materials": [
+ {
+ "doubleSided": true,
+ "name": "Material_24",
+ "pbrMetallicRoughness": {
+ "baseColorFactor": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "baseColorTexture": {
+ "index": 0,
+ "texCoord": 0
+ },
+ "metallicFactor": 0,
+ "roughnessFactor": 0.59999999999999998
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "name": "BODY_Material #24_0",
+ "primitives": [
+ {
+ "attributes": {
+ "COLOR_0": 2,
+ "NORMAL": 1,
+ "POSITION": 0,
+ "TEXCOORD_0": 3
+ },
+ "indices": 4,
+ "material": 0,
+ "mode": 4
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "children": [
+ 1
+ ],
+ "name": "RootNode (gltf orientation matrix)",
+ "rotation": [
+ -0.70710678118654746,
+ -0,
+ -0,
+ 0.70710678118654757
+ ]
+ },
+ {
+ "children": [
+ 2
+ ],
+ "name": "RootNode (model correction matrix)"
+ },
+ {
+ "children": [
+ 3
+ ],
+ "matrix": [
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "name": "base"
+ },
+ {
+ "children": [
+ 4,
+ 6
+ ],
+ "name": "RootNode"
+ },
+ {
+ "children": [
+ 5
+ ],
+ "matrix": [
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2.2204460492503131e-16,
+ -1,
+ 0,
+ 0,
+ 1,
+ 2.2204460492503131e-16,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "name": "BODY"
+ },
+ {
+ "mesh": 0,
+ "name": "BODY_Material #24_0"
+ },
+ {
+ "children": [
+ 7
+ ],
+ "matrix": [
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ -680,
+ 0,
+ 90,
+ 1
+ ],
+ "name": "Sky001"
+ },
+ {
+ "children": [
+ 8
+ ],
+ "matrix": [
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2.2204460492503131e-16,
+ 1,
+ 0,
+ 0,
+ -1,
+ 2.2204460492503131e-16,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "name": ""
+ },
+ {
+ "name": ""
+ }
+ ],
+ "samplers": [
+ {
+ "magFilter": 9729,
+ "minFilter": 9987,
+ "wrapS": 10497,
+ "wrapT": 10497
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "name": "OSG_Scene",
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "sampler": 0,
+ "source": 0
+ }
+ ]
+}
+
diff --git a/examples/web/models/resources/plane/plane_diffuse.png b/examples/web/models/resources/plane/plane_diffuse.png
new file mode 100644
index 0000000..07371c0
--- /dev/null
+++ b/examples/web/models/resources/plane/plane_diffuse.png
Binary files differ
diff --git a/examples/web/models/resources/plane_diffuse.png b/examples/web/models/resources/plane_diffuse.png
deleted file mode 100644
index c02a9e2..0000000
--- a/examples/web/models/resources/plane_diffuse.png
+++ /dev/null
Binary files differ
diff --git a/examples/web/shaders/shaders_basic_lighting.c b/examples/web/shaders/shaders_basic_lighting.c
index e21ee14..b290a19 100644
--- a/examples/web/shaders/shaders_basic_lighting.c
+++ b/examples/web/shaders/shaders_basic_lighting.c
@@ -83,7 +83,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 0.5f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
- camera.type = CAMERA_PERSPECTIVE; // Camera mode type
+ camera.projection = CAMERA_PERSPECTIVE; // Camera mode type
// Load models
modelA = LoadModelFromMesh(GenMeshTorus(0.4f, 1.0f, 16, 32));
diff --git a/examples/web/shaders/shaders_custom_uniform.c b/examples/web/shaders/shaders_custom_uniform.c
index e574dc4..27fae05 100644
--- a/examples/web/shaders/shaders_custom_uniform.c
+++ b/examples/web/shaders/shaders_custom_uniform.c
@@ -68,7 +68,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 1.5f, 0.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
model = LoadModel("resources/models/barracks.obj"); // Load OBJ model
texture = LoadTexture("resources/models/barracks_diffuse.png"); // Load model texture
diff --git a/examples/web/shaders/shaders_fog.c b/examples/web/shaders/shaders_fog.c
index 0b36bcf..0e0b000 100644
--- a/examples/web/shaders/shaders_fog.c
+++ b/examples/web/shaders/shaders_fog.c
@@ -84,7 +84,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 0.5f, 0.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
// Load models and texture
modelA = LoadModelFromMesh(GenMeshTorus(0.4f, 1.0f, 16, 32));
diff --git a/examples/web/shaders/shaders_model_shader.c b/examples/web/shaders/shaders_model_shader.c
index 18abea5..e69ab8d 100644
--- a/examples/web/shaders/shaders_model_shader.c
+++ b/examples/web/shaders/shaders_model_shader.c
@@ -63,7 +63,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 1.0f, -1.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
model = LoadModel("resources/models/watermill.obj"); // Load OBJ model
texture = LoadTexture("resources/models/watermill_diffuse.png"); // Load model texture
diff --git a/examples/web/shaders/shaders_rlgl_mesh_instanced.c b/examples/web/shaders/shaders_rlgl_mesh_instanced.c
index a42882b..b4105d1 100644
--- a/examples/web/shaders/shaders_rlgl_mesh_instanced.c
+++ b/examples/web/shaders/shaders_rlgl_mesh_instanced.c
@@ -77,7 +77,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
cube = GenMeshCube(1.0f, 1.0f, 1.0f);
diff --git a/examples/web/shaders/shaders_simple_mask.c b/examples/web/shaders/shaders_simple_mask.c
index 79effab..390d602 100644
--- a/examples/web/shaders/shaders_simple_mask.c
+++ b/examples/web/shaders/shaders_simple_mask.c
@@ -76,7 +76,7 @@ int main(void)
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
camera.fovy = 45.0f;
- camera.type = CAMERA_PERSPECTIVE;
+ camera.projection = CAMERA_PERSPECTIVE;
// Define our three models to show the shader on
torus = GenMeshTorus(.3, 1, 16, 32);