Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/armasmooth.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/armasmooth.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/armasmooth.x	(revision 1481)
@@ -0,0 +1,6771 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   30.480000,0.000000,0.000000,0.000000,0.000000,0.000000,30.480000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.999507,0.000000,-0.031411,0.000000,-0.005569,0.984157,0.177212,0.000000,0.030913,0.177300,-0.983671,0.000000,2.446697,78.905312,-260.364075,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,254.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,254.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,254.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame polyToSubd1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame polySurface1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh polySurfaceShape1 {
+   980;
+   -23.231377;21.747646;16.840540;,
+   10.529055;77.643288;-24.908819;,
+   48.788380;52.628746;-17.741035;,
+   -12.576931;78.981773;-21.235744;,
+   -39.694229;-12.453611;12.027144;,
+   -3.267402;84.846489;-10.335261;,
+   27.048080;46.456139;-2.368840;,
+   -10.858169;84.755043;-4.595995;,
+   -49.569859;-51.654629;4.283700;,
+   -20.847832;21.264679;22.466444;,
+   8.327302;-0.980969;10.939425;,
+   8.546353;71.713768;33.831223;,
+   -15.700845;33.824730;26.798580;,
+   -0.064917;5.519952;35.464745;,
+   -2.581256;67.240547;-35.920265;,
+   -26.731462;-50.913979;16.397236;,
+   57.592995;60.362343;-20.668554;,
+   29.175213;65.982162;11.635934;,
+   21.096550;51.561897;26.373188;,
+   -1.880925;88.517113;14.816057;,
+   26.890347;-48.830227;23.406443;,
+   -11.814466;6.802450;24.328449;,
+   57.014965;74.305664;-17.979649;,
+   26.759581;-12.582512;18.551954;,
+   -57.385937;68.255699;-17.909374;,
+   -52.427631;52.324406;-15.988821;,
+   -6.592553;54.283791;-14.339314;,
+   -56.903950;57.714382;-15.151299;,
+   -15.147379;66.043922;-16.535233;,
+   -3.124509;51.371620;37.288494;,
+   22.203907;16.776007;6.754188;,
+   -0.136735;39.142338;-10.798880;,
+   56.033638;66.752815;-5.878434;,
+   3.332694;15.899289;29.785725;,
+   29.976439;-44.638645;19.445957;,
+   -40.011654;-4.472192;4.386003;,
+   3.838981;11.833509;-0.423487;,
+   -16.196892;49.265087;33.157970;,
+   1.864671;6.452878;4.979218;,
+   23.593864;-48.477840;4.805585;,
+   16.112103;-13.551900;8.689779;,
+   16.916508;-50.269131;24.213966;,
+   31.068920;2.114991;14.387363;,
+   -22.491791;59.458427;28.711340;,
+   55.073315;67.257019;-30.524504;,
+   -36.884575;-23.636887;20.013029;,
+   -10.486121;80.018883;-25.749689;,
+   53.514877;54.262741;-15.412707;,
+   -6.920623;58.550972;-21.883003;,
+   5.389471;57.395844;-18.436031;,
+   -60.632595;64.886528;-20.347506;,
+   47.364326;58.549702;-21.434574;,
+   -12.343576;82.372879;22.074516;,
+   13.239326;78.087021;-15.982163;,
+   -42.872814;67.653244;-23.309744;,
+   -2.854124;63.398209;37.769196;,
+   27.314863;68.027664;4.324491;,
+   17.370226;29.321169;11.019459;,
+   18.856615;-40.310535;13.445570;,
+   -39.949409;51.093193;-14.428605;,
+   40.457260;56.158077;6.821201;,
+   39.888012;65.049599;-9.608715;,
+   -28.356464;-42.431931;9.592130;,
+   -37.919525;49.722885;3.440363;,
+   7.941593;80.585335;-12.165461;,
+   13.272189;45.625778;-11.246181;,
+   40.837948;50.375927;-12.402261;,
+   -31.349321;65.428169;5.377238;,
+   -28.264774;68.536125;-2.209452;,
+   31.464939;-29.453304;15.442099;,
+   -5.499843;87.497726;-5.692556;,
+   10.933255;36.592358;-7.522753;,
+   14.705895;30.443731;1.711024;,
+   -4.883377;76.879822;32.814411;,
+   -34.382183;-19.604797;0.895589;,
+   10.860622;5.139582;1.552797;,
+   33.833954;-51.644905;11.492816;,
+   -37.390202;-51.836639;-0.500972;,
+   -44.033607;-50.755299;13.707094;,
+   51.733959;85.100632;-30.286264;,
+   -54.658905;72.831123;-45.265160;,
+   -58.834332;60.220047;-34.493099;,
+   -24.346226;-25.929518;17.495390;,
+   4.449260;5.519744;24.958956;,
+   6.283016;13.040165;27.535877;,
+   6.834349;79.218414;-26.384541;,
+   -60.433907;69.153831;-40.805233;,
+   -7.110306;9.648146;29.624266;,
+   26.634808;-28.275356;25.443899;,
+   16.462761;-30.767822;25.077385;,
+   3.236300;4.143968;12.217373;,
+   -52.090477;61.549820;-35.398174;,
+   7.845400;77.879547;30.094288;,
+   -48.928356;70.944214;-32.526245;,
+   -2.001779;6.147701;18.540596;,
+   -3.997277;85.027321;-20.842989;,
+   60.490910;69.562912;-20.525572;,
+   -29.081076;47.041538;8.945582;,
+   13.491511;67.830948;-15.343978;,
+   55.755917;81.121483;-23.474909;,
+   -43.165493;66.216545;-7.929526;,
+   17.418638;69.247604;-9.878590;,
+   19.393341;42.138519;23.203114;,
+   18.240524;21.934292;18.418297;,
+   37.428062;62.886700;-3.387430;,
+   8.522061;36.178997;30.154608;,
+   -19.025993;29.565107;8.156867;,
+   10.623377;1.246377;21.002106;,
+   21.108461;42.924644;-2.048960;,
+   -41.058716;-40.403782;13.627597;,
+   29.137053;-45.587524;10.088849;,
+   -6.754264;18.582582;-3.058113;,
+   41.382984;63.021683;-0.436833;,
+   31.090721;-14.015646;1.532564;,
+   -37.574154;-40.835484;19.347115;,
+   -33.830647;9.622592;5.891818;,
+   25.855715;1.678430;0.136543;,
+   -33.625763;-25.245651;21.102438;,
+   -34.354210;-8.511318;-1.425898;,
+   -37.414635;-43.487267;6.788628;,
+   21.964270;-26.201653;6.657632;,
+   32.828560;-3.875774;7.232496;,
+   -18.757650;35.332558;1.272372;,
+   30.230421;6.434883;10.488771;,
+   50.828209;83.957054;-25.880947;,
+   16.712711;-40.246994;27.550308;,
+   15.119040;-40.681545;25.070211;,
+   17.585598;-47.935207;27.837818;,
+   16.447954;29.702024;20.300789;,
+   10.791606;80.789101;24.644808;,
+   11.799372;83.453667;18.877607;,
+   12.753651;72.811905;31.057386;,
+   18.269531;74.285439;23.241549;,
+   -24.907051;47.838551;21.941032;,
+   -24.337181;41.183533;10.861015;,
+   -22.346336;40.918770;19.423578;,
+   -25.909025;61.910362;22.568579;,
+   -20.150743;67.324478;28.488634;,
+   -25.155352;71.024071;18.350611;,
+   24.408340;-4.309687;20.681660;,
+   26.849432;5.749564;19.923729;,
+   0.703748;5.980165;19.752396;,
+   -29.496878;0.976355;21.472668;,
+   -34.562325;-5.630307;17.147423;,
+   -5.410191;79.736504;-26.219851;,
+   -5.525956;73.447105;-30.511984;,
+   40.637184;59.441647;4.353981;,
+   6.808304;66.833618;-31.293568;,
+   4.131444;67.986931;-33.729839;,
+   20.922157;-39.837292;28.407011;,
+   20.681755;-30.760532;26.354311;,
+   -17.110931;-5.294822;13.740476;,
+   -7.677234;64.366692;-32.005043;,
+   -13.120533;71.583420;-21.627403;,
+   -9.562820;73.701118;-26.648994;,
+   -0.119823;55.286087;-17.733532;,
+   5.279078;57.864288;-26.741697;,
+   8.705782;64.841133;-27.263292;,
+   48.392811;74.794441;-21.156021;,
+   -59.986202;57.962463;-21.984518;,
+   -57.100868;55.130867;-23.584789;,
+   -21.483200;70.097366;-7.941819;,
+   -19.904671;76.280403;-3.534853;,
+   -12.807381;79.824562;-9.373845;,
+   31.529902;-11.838130;11.633744;,
+   -40.474640;65.246353;-12.316350;,
+   -47.274857;70.553978;-19.151548;,
+   -12.257531;43.392647;-13.273990;,
+   -10.744083;83.479401;-18.531069;,
+   -10.709617;82.186768;-14.568960;,
+   14.652484;-6.045070;20.403162;,
+   -46.647518;51.341599;-10.922218;,
+   -37.934410;49.875477;-9.400082;,
+   -28.707211;46.456059;1.480005;,
+   -23.055687;21.314295;9.138343;,
+   -2.938050;25.684654;31.345087;,
+   6.213574;21.618307;29.553463;,
+   -23.779352;-24.200356;6.973775;,
+   -25.930996;-26.552734;5.045123;,
+   3.344620;4.337828;29.601828;,
+   -1.253475;-4.429909;43.667206;,
+   1.311829;1.201145;30.461956;,
+   -27.625690;70.336746;6.131655;,
+   37.748840;48.669609;-9.633609;,
+   -5.251921;72.681801;35.066860;,
+   29.618509;56.673630;-6.880043;,
+   -28.646393;46.669521;-5.712206;,
+   -22.663244;41.273949;-2.407135;,
+   -40.475529;-52.428001;-0.025345;,
+   31.911669;63.953907;-1.228076;,
+   34.034142;64.744553;4.737082;,
+   -47.925686;-49.526981;9.237421;,
+   12.366317;17.274921;25.398649;,
+   15.803928;8.031680;23.918226;,
+   29.237045;-23.798561;5.124865;,
+   32.042511;-20.151361;8.081107;,
+   1.079975;36.879143;32.280373;,
+   25.962639;11.090486;18.322248;,
+   19.379131;10.716366;22.879160;,
+   13.905684;21.793295;2.437541;,
+   -2.521416;88.834625;5.330594;,
+   45.662434;53.224560;-1.290224;,
+   38.696293;48.694916;3.822109;,
+   13.275920;11.155436;0.431052;,
+   -38.960991;-4.921108;0.502073;,
+   -40.397938;-11.406587;2.582079;,
+   -37.982616;-9.637207;-0.671113;,
+   -16.827061;1.219543;2.024750;,
+   47.766426;58.241852;-0.493110;,
+   17.822210;-50.711369;16.715219;,
+   25.767616;-52.003105;13.320611;,
+   25.788979;-52.030918;19.719465;,
+   -22.078241;0.325571;22.647345;,
+   -28.632874;-6.307639;18.752348;,
+   40.506306;52.295155;5.316885;,
+   27.770908;47.682465;13.041126;,
+   -28.605740;-51.737720;20.933187;,
+   -38.453209;-51.573601;17.868256;,
+   -57.538834;74.423309;-41.121658;,
+   -54.796970;76.401901;-40.631519;,
+   -38.560078;-37.803692;10.614609;,
+   -36.471687;-40.706314;8.612479;,
+   -56.042988;61.674351;-44.656796;,
+   -61.083351;63.941998;-32.523369;,
+   -58.847366;69.612587;-32.487225;,
+   -43.582443;-47.804741;3.639714;,
+   19.549570;-17.600628;4.929959;,
+   4.324104;57.693089;-38.476509;,
+   4.073305;59.610996;-40.833714;,
+   61.151371;74.806770;-28.508942;,
+   59.407169;73.976173;-35.939606;,
+   51.886002;79.113907;-29.888548;,
+   1.686703;55.170410;-33.396271;,
+   -0.635408;54.172260;-28.953407;,
+   57.544411;75.724358;-36.600132;,
+   57.243092;71.118996;-34.986412;,
+   12.201731;61.430344;-12.735711;,
+   9.142339;61.757362;-15.278492;,
+   -29.585354;-12.200247;16.682796;,
+   -19.371784;77.367393;19.279099;,
+   -18.076494;75.333305;25.265509;,
+   -26.845667;-11.142011;16.612680;,
+   -53.397472;53.549129;-25.210716;,
+   0.435121;86.523956;21.332268;,
+   0.795067;82.036789;27.807570;,
+   -11.059132;87.523178;-26.792774;,
+   50.824585;58.112110;-23.512583;,
+   61.415108;71.798065;-31.482500;,
+   16.009220;-14.508739;18.090040;,
+   17.358320;-22.397089;22.092823;,
+   -13.120117;91.699112;-24.619215;,
+   -6.762522;86.072777;-17.362455;,
+   54.532749;59.488056;-23.354218;,
+   13.572235;88.878441;-24.414091;,
+   5.079187;82.585022;-23.020861;,
+   -8.037496;7.394119;3.910575;,
+   -5.525725;7.165616;8.052677;,
+   -6.929708;4.351809;15.059266;,
+   48.849506;75.568901;-18.514339;,
+   29.720833;-24.428600;20.914055;,
+   -28.036732;-22.561440;18.964972;,
+   -24.331562;-19.455368;14.058089;,
+   -22.708822;-12.529905;12.420349;,
+   -8.276654;86.613785;16.002691;,
+   -6.172192;85.309013;21.774727;,
+   0.507739;53.722134;-14.543627;,
+   10.949615;87.943718;-21.213522;,
+   14.887443;85.283066;-22.475981;,
+   -51.335220;69.808502;-16.114189;,
+   1.267519;80.633224;-24.481256;,
+   27.053032;49.425159;15.769525;,
+   -36.536926;-31.755466;20.822580;,
+   14.965677;-45.322857;22.741985;,
+   8.847341;56.377430;-13.729373;,
+   17.613600;77.874947;19.069670;,
+   9.707153;48.685608;34.553562;,
+   3.970703;55.657516;36.952862;,
+   2.186514;47.067413;35.871670;,
+   -14.055193;39.291409;-10.859177;,
+   -8.179990;42.757317;-12.936078;,
+   -4.469852;34.773224;-8.822228;,
+   -31.458313;55.441509;-12.508349;,
+   -32.935844;61.931461;-11.410446;,
+   -19.765247;34.505474;18.012314;,
+   -20.144247;42.988682;26.484459;,
+   0.927243;83.435623;-18.787252;,
+   5.602570;83.896713;-17.966656;,
+   0.069245;83.299904;-13.802476;,
+   33.288052;-50.823174;6.024050;,
+   37.140850;59.965816;-9.249754;,
+   -18.504297;32.634731;6.543198;,
+   -20.867159;25.951544;10.512113;,
+   -19.959961;28.840885;19.093710;,
+   -34.754444;8.609067;14.175639;,
+   -29.439671;15.308071;16.550678;,
+   16.086752;19.486320;22.050291;,
+   11.430693;28.933090;-0.860638;,
+   -49.059551;54.873287;-6.792627;,
+   -56.565937;62.910397;-13.200722;,
+   -13.969313;32.984276;-3.028304;,
+   22.909231;46.023342;-3.967682;,
+   -6.491213;23.096079;30.923742;,
+   -4.441797;14.692162;30.965691;,
+   -40.618313;-21.946705;13.349382;,
+   -28.063814;63.000854;-9.223725;,
+   23.648182;42.402142;13.728390;,
+   36.747234;58.258667;-10.138535;,
+   21.854334;50.319027;-6.310572;,
+   -0.109900;18.753326;-3.911966;,
+   -9.923913;31.830421;-5.775570;,
+   26.330523;57.586540;-6.216231;,
+   24.271385;63.249424;-3.904407;,
+   43.490692;66.836777;-6.640229;,
+   -8.771151;45.741859;35.041233;,
+   -28.549631;-47.050503;22.799749;,
+   -3.168605;-3.075628;46.795586;,
+   -1.414543;-3.645108;46.420979;,
+   46.349968;49.855534;-9.862261;,
+   -16.364931;30.680529;1.328256;,
+   29.457794;-7.041263;0.205995;,
+   24.617147;-10.526937;0.086002;,
+   21.250067;-2.076252;-0.541498;,
+   -45.687435;-51.870766;0.771647;,
+   -16.158957;13.392418;-0.003486;,
+   -14.640921;25.244291;0.350748;,
+   -13.185824;21.590004;-0.660779;,
+   3.636490;24.054296;-4.826551;,
+   -43.436813;63.193916;-2.995316;,
+   -31.647524;59.150051;11.765693;,
+   -39.608345;55.053143;4.334138;,
+   -2.729323;8.597571;2.697550;,
+   5.384380;8.831658;1.121641;,
+   -33.486282;-48.373760;21.653500;,
+   28.863157;-50.124111;2.506805;,
+   12.342522;83.840324;13.705063;,
+   31.682068;-47.160076;16.364042;,
+   -30.291618;52.587994;11.504889;,
+   38.640137;46.999805;0.459969;,
+   27.317598;-18.567331;2.474881;,
+   -24.490520;3.260403;-0.658248;,
+   -35.173321;-1.485547;-0.783199;,
+   -33.275497;-11.431732;-0.744405;,
+   -29.541395;-29.918562;4.698513;,
+   -50.183594;72.633484;-31.418667;,
+   -50.972095;74.515793;-37.612392;,
+   -31.491405;67.429626;1.291571;,
+   -10.799117;35.120728;30.787914;,
+   -11.454615;85.902588;3.079127;,
+   59.115898;78.607300;-27.978643;,
+   57.137653;80.632736;-32.024982;,
+   -30.174412;-52.446217;10.413647;,
+   16.032961;-28.609108;11.962235;,
+   -38.064007;-52.548347;11.016982;,
+   23.809998;-51.318756;4.965349;,
+   22.084288;-50.665928;5.900444;,
+   -25.824821;-48.282860;19.171753;,
+   -16.932409;58.201363;33.804115;,
+   -18.940332;51.316353;31.351589;,
+   -25.137999;52.777828;23.691950;,
+   -60.285118;65.215393;-44.420109;,
+   -58.270679;69.956207;-45.293186;,
+   15.800889;52.175640;31.597755;,
+   19.418747;61.717934;28.042404;,
+   11.828910;60.893093;34.693291;,
+   2.990596;5.213221;16.647573;,
+   -4.595795;57.434505;-37.074467;,
+   -3.889861;59.476936;-40.859539;,
+   2.138803;61.509098;-42.036064;,
+   -0.963325;60.160847;-42.761971;,
+   -55.434738;59.808475;-35.027874;,
+   -49.247093;52.068192;-22.375628;,
+   -3.081308;-3.760027;43.964832;,
+   -16.143675;93.758804;-26.957443;,
+   15.994831;30.135908;5.156514;,
+   20.243208;40.193150;2.987234;,
+   -15.486785;-3.605286;10.694561;,
+   -24.042631;-9.541127;3.825193;,
+   -35.780533;-12.405237;15.249560;,
+   -39.211315;-21.564734;17.080482;,
+   -61.687630;61.655937;-24.549137;,
+   -14.987871;86.284767;-24.151865;,
+   -53.413586;73.784630;-27.016319;,
+   -5.081264;56.147915;-27.514418;,
+   -44.840313;52.972961;-21.594219;,
+   -37.922092;53.954063;-15.619296;,
+   -60.425667;61.188412;-19.194227;,
+   53.125378;77.430878;-17.512815;,
+   -8.866350;62.227570;-25.696405;,
+   7.506732;63.588539;36.154556;,
+   2.396883;68.580460;36.486526;,
+   16.742010;25.440201;5.828321;,
+   15.977837;-41.958508;17.383215;,
+   -16.376255;72.418671;-12.390795;,
+   59.894421;61.260956;-10.280354;,
+   58.372066;57.803692;-11.835213;,
+   -6.452668;6.202003;27.538244;,
+   -1.627267;-2.014938;36.121349;,
+   38.430149;54.953678;-11.697120;,
+   7.690415;42.083256;-11.192493;,
+   4.976133;35.093063;-8.605462;,
+   14.690363;-33.768040;17.601891;,
+   14.889446;-14.891966;13.147102;,
+   55.105495;72.367920;-11.569728;,
+   14.490047;29.140270;24.375490;,
+   6.998496;4.794286;21.871946;,
+   -26.202097;49.137249;-9.580162;,
+   -25.059965;55.197823;-10.639063;,
+   10.812136;29.616917;28.398977;,
+   21.373476;17.620762;11.343534;,
+   21.529562;15.393859;17.091015;,
+   31.401400;-50.937302;17.695782;,
+   -32.999023;50.440144;-11.180526;,
+   20.987263;60.499062;-8.944830;,
+   24.857025;67.819557;0.728902;,
+   28.531916;62.428837;15.857634;,
+   -24.019840;64.240685;-9.585884;,
+   11.917829;-6.985616;12.941396;,
+   -34.424259;10.014401;9.813907;,
+   59.402634;66.196297;-10.884911;,
+   -40.641788;-31.243536;11.366081;,
+   -40.301868;-29.691607;15.666512;,
+   -22.822437;-30.621578;11.803487;,
+   -25.985153;-42.789047;16.652981;,
+   25.934204;52.210316;-4.932060;,
+   11.288940;77.594460;-11.963920;,
+   19.606236;47.022518;-7.729577;,
+   -7.400333;83.897980;-9.860908;,
+   -17.098688;25.877792;25.228157;,
+   -29.374025;64.323181;12.984330;,
+   -38.484531;65.750786;-6.998101;,
+   -36.524479;62.144131;-14.117249;,
+   -15.954618;64.803032;32.972191;,
+   -9.203046;59.649815;36.891846;,
+   49.525215;51.953262;-5.955174;,
+   56.178844;58.211151;-6.728310;,
+   32.025322;-51.900093;4.940245;,
+   1.947575;9.566645;32.018333;,
+   -41.247208;-49.938686;0.342672;,
+   -38.764107;-49.650299;-1.346603;,
+   -6.285296;36.492821;32.804058;,
+   8.054681;19.270620;-1.177188;,
+   45.777122;61.089188;-0.234432;,
+   2.705714;76.469994;32.752495;,
+   -28.409138;-39.265244;21.491930;,
+   18.975346;-14.245516;20.237135;,
+   16.841843;-1.716942;22.239367;,
+   9.480227;85.425034;2.669773;,
+   8.875649;84.399590;-2.562959;,
+   4.648818;87.877304;6.089650;,
+   -39.781391;-16.902445;2.449857;,
+   -22.061762;18.901827;5.028281;,
+   -36.760078;3.504514;2.489040;,
+   5.051847;87.064301;15.401100;,
+   27.751686;53.897465;17.021126;,
+   27.423418;59.091480;18.166313;,
+   30.659485;0.040888;4.724024;,
+   5.116466;3.451025;7.485710;,
+   25.324501;-41.453091;26.362104;,
+   28.294010;-36.688877;23.616587;,
+   -16.833517;-1.168683;3.759905;,
+   52.747604;85.264534;-27.068106;,
+   17.877319;69.910172;27.737125;,
+   -60.644119;65.566917;-24.570387;,
+   -55.609470;74.242661;-31.648880;,
+   14.548819;37.161129;23.625366;,
+   18.083445;37.498520;17.362167;,
+   -22.815481;-28.538656;14.552077;,
+   -26.722010;-40.889412;19.961950;,
+   -54.031662;67.831978;-42.897533;,
+   -59.412842;60.700066;-44.757683;,
+   -0.157130;57.872128;-42.196781;,
+   10.813922;83.199295;-25.896582;,
+   -57.929287;63.042091;-48.866653;,
+   58.932812;68.682510;-30.824203;,
+   -33.436123;-47.563747;2.952923;,
+   -4.537083;1.701620;38.960873;,
+   -12.523685;11.385189;26.283173;,
+   -12.878408;84.645325;13.109903;,
+   -20.226830;78.367714;12.531791;,
+   -49.149090;65.890503;-32.584881;,
+   -7.779071;5.915742;19.791157;,
+   20.277245;-50.925426;26.624506;,
+   -15.691791;70.438812;-15.249719;,
+   12.125265;70.662621;-19.773560;,
+   60.418140;65.956406;-21.582418;,
+   -15.028545;15.590824;26.286991;,
+   30.245386;-38.158348;18.360455;,
+   -15.847594;91.699951;-27.686884;,
+   -23.604780;-13.651059;6.854941;,
+   -36.710709;57.481659;-15.799827;,
+   -7.831448;57.956852;-17.408831;,
+   14.082340;74.666100;-13.009386;,
+   32.867966;-13.526472;9.040296;,
+   15.704653;89.225212;-21.312164;,
+   -18.323547;63.079369;-13.239793;,
+   -13.134839;73.247101;31.308798;,
+   -8.202612;80.573509;27.699270;,
+   -8.466954;7.701838;26.177969;,
+   -4.609607;9.360097;33.345322;,
+   -22.846352;9.930546;24.047356;,
+   -30.629827;10.646135;20.230045;,
+   48.742111;72.245247;-22.999706;,
+   2.912777;51.310139;-12.878390;,
+   -25.639311;59.402767;-9.987561;,
+   -19.942116;44.881203;-10.488305;,
+   -52.361385;54.768467;-12.254140;,
+   12.005389;54.922901;-11.411759;,
+   12.225388;38.621132;28.707315;,
+   8.499649;81.645752;-7.225971;,
+   0.941249;87.942574;-4.306873;,
+   29.121340;8.179390;15.147542;,
+   23.909683;-14.082366;20.320080;,
+   22.171740;41.835495;7.872886;,
+   27.601152;44.405285;6.628835;,
+   26.305939;-41.669117;14.123914;,
+   26.355919;-37.511398;12.790151;,
+   -35.073166;-37.829803;7.733480;,
+   56.928391;62.714642;-5.947433;,
+   17.545952;75.206306;-2.203465;,
+   26.038174;12.883357;11.549201;,
+   23.119509;2.569010;22.283663;,
+   -21.970943;14.795415;1.778026;,
+   17.840210;77.575905;8.020234;,
+   12.009060;17.949549;0.657819;,
+   -11.023147;10.979689;0.931310;,
+   -38.070587;3.536329;6.819589;,
+   -18.271103;24.854822;4.687036;,
+   24.596918;10.361124;4.068486;,
+   17.652380;16.350595;2.581936;,
+   -25.288986;-18.229105;4.145061;,
+   16.057241;-4.399817;1.798530;,
+   -37.675945;-2.281961;13.997865;,
+   31.911669;63.953907;-1.228076;,
+   -28.707211;46.456059;1.480005;,
+   -49.569859;-51.654629;4.283700;,
+   -54.658905;72.831123;-45.265160;,
+   4.131444;67.986931;-33.729839;,
+   -52.427631;52.324406;-15.988821;,
+   -57.100868;55.130867;-23.584789;,
+   50.824585;58.112110;-23.512583;,
+   18.240524;21.934292;18.418297;,
+   -13.120117;91.699112;-24.619215;,
+   -3.997277;85.027321;-20.842989;,
+   55.073315;67.257019;-30.524504;,
+   50.824585;58.112110;-23.512583;,
+   16.916508;-50.269131;24.213966;,
+   17.822210;-50.711369;16.715219;,
+   9.142339;61.757362;-15.278492;,
+   -9.923913;31.830421;-5.775570;,
+   -14.055193;39.291409;-10.859177;,
+   37.428062;62.886700;-3.387430;,
+   24.857025;67.819557;0.728902;,
+   -41.058716;-40.403782;13.627597;,
+   -49.569859;-51.654629;4.283700;,
+   -47.925686;-49.526981;9.237421;,
+   -37.919525;49.722885;3.440363;,
+   -39.608345;55.053143;4.334138;,
+   31.090721;-14.015646;1.532564;,
+   -35.173321;-1.485547;-0.783199;,
+   -12.807381;79.824562;-9.373845;,
+   10.860622;5.139582;1.552797;,
+   21.250067;-2.076252;-0.541498;,
+   0.435121;86.523956;21.332268;,
+   57.137653;80.632736;-32.024982;,
+   51.733959;85.100632;-30.286264;,
+   -30.291618;52.587994;11.504889;,
+   -39.608345;55.053143;4.334138;,
+   -44.033607;-50.755299;13.707094;,
+   -49.569859;-51.654629;4.283700;,
+   -28.409138;-39.265244;21.491930;,
+   -28.549631;-47.050503;22.799749;,
+   -24.907051;47.838551;21.941032;,
+   -20.144247;42.988682;26.484459;,
+   -57.929287;63.042091;-48.866653;,
+   2.138803;61.509098;-42.036064;,
+   -3.168605;-3.075628;46.795586;,
+   -1.414543;-3.645108;46.420979;,
+   -53.397472;53.549129;-25.210716;,
+   -44.033607;-50.755299;13.707094;,
+   -38.453209;-51.573601;17.868256;,
+   -16.376255;72.418671;-12.390795;,
+   12.005389;54.922901;-11.411759;,
+   8.847341;56.377430;-13.729373;,
+   -0.119823;55.286087;-17.733532;,
+   8.847341;56.377430;-13.729373;,
+   14.889446;-14.891966;13.147102;,
+   4.449260;5.519744;24.958956;,
+   -25.059965;55.197823;-10.639063;,
+   -12.257531;43.392647;-13.273990;,
+   31.682068;-47.160076;16.364042;,
+   29.976439;-44.638645;19.445957;,
+   -31.458313;55.441509;-12.508349;,
+   -16.376255;72.418671;-12.390795;,
+   -56.565937;62.910397;-13.200722;,
+   38.640137;46.999805;0.459969;,
+   37.748840;48.669609;-9.633609;,
+   47.766426;58.241852;-0.493110;,
+   45.662434;53.224560;-1.290224;,
+   32.025322;-51.900093;4.940245;,
+   6.283016;13.040165;27.535877;,
+   -31.491405;67.429626;1.291571;,
+   53.514877;54.262741;-15.412707;,
+   -37.982616;-9.637207;-0.671113;,
+   -39.781391;-16.902445;2.449857;,
+   23.809998;-51.318756;4.965349;,
+   40.457260;56.158077;6.821201;,
+   5.384380;8.831658;1.121641;,
+   -3.889861;59.476936;-40.859539;,
+   -0.963325;60.160847;-42.761971;,
+   1.947575;9.566645;32.018333;,
+   3.344620;4.337828;29.601828;,
+   6.834349;79.218414;-26.384541;,
+   29.237045;-23.798561;5.124865;,
+   21.964270;-26.201653;6.657632;,
+   -7.677234;64.366692;-32.005043;,
+   -4.595795;57.434505;-37.074467;,
+   -5.081264;56.147915;-27.514418;,
+   38.696293;48.694916;3.822109;,
+   4.449260;5.519744;24.958956;,
+   6.998496;4.794286;21.871946;,
+   14.887443;85.283066;-22.475981;,
+   -6.929708;4.351809;15.059266;,
+   -17.110931;-5.294822;13.740476;,
+   -26.845667;-11.142011;16.612680;,
+   31.401400;-50.937302;17.695782;,
+   52.747604;85.264534;-27.068106;,
+   -13.120533;71.583420;-21.627403;,
+   -17.098688;25.877792;25.228157;,
+   -20.847832;21.264679;22.466444;,
+   -25.137999;52.777828;23.691950;,
+   -31.647524;59.150051;11.765693;,
+   -30.291618;52.587994;11.504889;,
+   -10.486121;80.018883;-25.749689;,
+   -22.822437;-30.621578;11.803487;,
+   -22.815481;-28.538656;14.552077;,
+   -6.592553;54.283791;-14.339314;,
+   -6.762522;86.072777;-17.362455;,
+   -13.120117;91.699112;-24.619215;,
+   -14.987871;86.284767;-24.151865;,
+   -10.858169;84.755043;-4.595995;,
+   -7.400333;83.897980;-9.860908;,
+   13.239326;78.087021;-15.982163;,
+   -15.147379;66.043922;-16.535233;,
+   -8.866350;62.227570;-25.696405;,
+   -36.710709;57.481659;-15.799827;,
+   -52.090477;61.549820;-35.398174;,
+   -60.632595;64.886528;-20.347506;,
+   -18.076494;75.333305;25.265509;,
+   2.912777;51.310139;-12.878390;,
+   -12.343576;82.372879;22.074516;,
+   -52.427631;52.324406;-15.988821;,
+   16.086752;19.486320;22.050291;,
+   -46.647518;51.341599;-10.922218;,
+   13.491511;67.830948;-15.343978;,
+   20.987263;60.499062;-8.944830;,
+   3.636490;24.054296;-4.826551;,
+   43.490692;66.836777;-6.640229;,
+   55.105495;72.367920;-11.569728;,
+   53.125378;77.430878;-17.512815;,
+   12.005389;54.922901;-11.411759;,
+   7.941593;80.585335;-12.165461;,
+   0.069245;83.299904;-13.802476;,
+   0.941249;87.942574;-4.306873;,
+   -3.267402;84.846489;-10.335261;,
+   -5.499843;87.497726;-5.692556;,
+   26.634808;-28.275356;25.443899;,
+   27.048080;46.456139;-2.368840;,
+   26.330523;57.586540;-6.216231;,
+   21.854334;50.319027;-6.310572;,
+   22.909231;46.023342;-3.967682;,
+   28.863157;-50.124111;2.506805;,
+   26.305939;-41.669117;14.123914;,
+   29.137053;-45.587524;10.088849;,
+   18.856615;-40.310535;13.445570;,
+   56.178844;58.211151;-6.728310;,
+   8.499649;81.645752;-7.225971;,
+   8.875649;84.399590;-2.562959;,
+   29.121340;8.179390;15.147542;,
+   30.230421;6.434883;10.488771;,
+   -31.647524;59.150051;11.765693;,
+   -11.454615;85.902588;3.079127;,
+   5.384380;8.831658;1.121641;,
+   27.314863;68.027664;4.324491;,
+   24.857025;67.819557;0.728902;,
+   3.838981;11.833509;-0.423487;,
+   -2.729323;8.597571;2.697550;,
+   -8.037496;7.394119;3.910575;,
+   -11.023147;10.979689;0.931310;,
+   -8.466954;7.701838;26.177969;,
+   -28.356464;-42.431931;9.592130;,
+   -36.760078;3.504514;2.489040;,
+   25.855715;1.678430;0.136543;,
+   29.457794;-7.041263;0.205995;,
+   22.084288;-50.665928;5.900444;,
+   18.856615;-40.310535;13.445570;,
+   22.203907;16.776007;6.754188;,
+   -24.042631;-9.541127;3.825193;,
+   13.905684;21.793295;2.437541;,
+   16.742010;25.440201;5.828321;,
+   -5.525725;7.165616;8.052677;,
+   -8.037496;7.394119;3.910575;,
+   2.990596;5.213221;16.647573;,
+   -25.930996;-26.552734;5.045123;,
+   24.596918;10.361124;4.068486;,
+   25.324501;-41.453091;26.362104;,
+   -33.436123;-47.563747;2.952923;,
+   -38.764107;-49.650299;-1.346603;,
+   16.712711;-40.246994;27.550308;,
+   16.462761;-30.767822;25.077385;,
+   17.585598;-47.935207;27.837818;,
+   -25.909025;61.910362;22.568579;,
+   -25.155352;71.024071;18.350611;,
+   -37.675945;-2.281961;13.997865;,
+   41.382984;63.021683;-0.436833;,
+   34.034142;64.744553;4.737082;,
+   40.637184;59.441647;4.353981;,
+   17.585598;-47.935207;27.837818;,
+   -15.147379;66.043922;-16.535233;,
+   -12.576931;78.981773;-21.235744;,
+   13.491511;67.830948;-15.343978;,
+   48.849506;75.568901;-18.514339;,
+   -28.264774;68.536125;-2.209452;,
+   31.068920;2.114991;14.387363;,
+   26.759581;-12.582512;18.551954;,
+   -10.744083;83.479401;-18.531069;,
+   -37.934410;49.875477;-9.400082;,
+   -28.646393;46.669521;-5.712206;,
+   37.428062;62.886700;-3.387430;,
+   -38.764107;-49.650299;-1.346603;,
+   -37.390202;-51.836639;-0.500972;,
+   41.382984;63.021683;-0.436833;,
+   -41.058716;-40.403782;13.627597;,
+   -47.925686;-49.526981;9.237421;,
+   26.355919;-37.511398;12.790151;,
+   25.962639;11.090486;18.322248;,
+   4.648818;87.877304;6.089650;,
+   8.054681;19.270620;-1.177188;,
+   12.009060;17.949549;0.657819;,
+   -34.354210;-8.511318;-1.425898;,
+   27.770908;47.682465;13.041126;,
+   -28.605740;-51.737720;20.933187;,
+   -33.486282;-48.373760;21.653500;,
+   23.593864;-48.477840;4.805585;,
+   33.288052;-50.823174;6.024050;,
+   -35.073166;-37.829803;7.733480;,
+   -58.834332;60.220047;-34.493099;,
+   -59.412842;60.700066;-44.757683;,
+   -57.538834;74.423309;-41.121658;,
+   -60.433907;69.153831;-40.805233;,
+   -58.847366;69.612587;-32.487225;,
+   -54.796970;76.401901;-40.631519;,
+   -37.414635;-43.487267;6.788628;,
+   -36.471687;-40.706314;8.612479;,
+   -56.042988;61.674351;-44.656796;,
+   61.415108;71.798065;-31.482500;,
+   57.544411;75.724358;-36.600132;,
+   4.324104;57.693089;-38.476509;,
+   59.407169;73.976173;-35.939606;,
+   57.243092;71.118996;-34.986412;,
+   12.201731;61.430344;-12.735711;,
+   9.142339;61.757362;-15.278492;,
+   -5.410191;79.736504;-26.219851;,
+   47.364326;58.549702;-21.434574;,
+   61.151371;74.806770;-28.508942;,
+   16.009220;-14.508739;18.090040;,
+   19.393341;42.138519;23.203114;,
+   21.096550;51.561897;26.373188;,
+   48.788380;52.628746;-17.741035;,
+   13.572235;88.878441;-24.414091;,
+   5.079187;82.585022;-23.020861;,
+   10.949615;87.943718;-21.213522;,
+   5.602570;83.896713;-17.966656;,
+   -2.001779;6.147701;18.540596;,
+   -6.172192;85.309013;21.774727;,
+   -12.343576;82.372879;22.074516;,
+   15.704653;89.225212;-21.312164;,
+   15.704653;89.225212;-21.312164;,
+   27.770908;47.682465;13.041126;,
+   -36.536926;-31.755466;20.822580;,
+   -36.884575;-23.636887;20.013029;,
+   -37.574154;-40.835484;19.347115;,
+   5.389471;57.395844;-18.436031;,
+   17.877319;69.910172;27.737125;,
+   18.269531;74.285439;23.241549;,
+   17.613600;77.874947;19.069670;,
+   -36.710709;57.481659;-15.799827;,
+   7.941593;80.585335;-12.165461;,
+   33.833954;-51.644905;11.492816;,
+   33.288052;-50.823174;6.024050;,
+   31.682068;-47.160076;16.364042;,
+   29.137053;-45.587524;10.088849;,
+   -24.019840;64.240685;-9.585884;,
+   -21.483200;70.097366;-7.941819;,
+   -30.629827;10.646135;20.230045;,
+   -24.019840;64.240685;-9.585884;,
+   -28.063814;63.000854;-9.223725;,
+   -28.264774;68.536125;-2.209452;,
+   29.720833;-24.428600;20.914055;,
+   36.747234;58.258667;-10.138535;,
+   37.140850;59.965816;-9.249754;,
+   -6.754264;18.582582;-3.058113;,
+   26.330523;57.586540;-6.216231;,
+   41.382984;63.021683;-0.436833;,
+   53.125378;77.430878;-17.512815;,
+   29.175213;65.982162;11.635934;,
+   -28.605740;-51.737720;20.933187;,
+   49.525215;51.953262;-5.955174;,
+   -14.640921;25.244291;0.350748;,
+   -13.185824;21.590004;-0.660779;,
+   -43.436813;63.193916;-2.995316;,
+   3.838981;11.833509;-0.423487;,
+   33.288052;-50.823174;6.024050;,
+   -29.081076;47.041538;8.945582;,
+   -45.687435;-51.870766;0.771647;,
+   -43.582443;-47.804741;3.639714;,
+   24.617147;-10.526937;0.086002;,
+   -50.972095;74.515793;-37.612392;,
+   -54.796970;76.401901;-40.631519;,
+   -48.928356;70.944214;-32.526245;,
+   11.799372;83.453667;18.877607;,
+   -15.700845;33.824730;26.798580;,
+   -43.436813;63.193916;-2.995316;,
+   -31.349321;65.428169;5.377238;,
+   -31.647524;59.150051;11.765693;,
+   55.755917;81.121483;-23.474909;,
+   59.115898;78.607300;-27.978643;,
+   -26.731462;-50.913979;16.397236;,
+   -30.174412;-52.446217;10.413647;,
+   23.593864;-48.477840;4.805585;,
+   -25.985153;-42.789047;16.652981;,
+   -58.834332;60.220047;-34.493099;,
+   -3.889861;59.476936;-40.859539;,
+   -7.677234;64.366692;-32.005043;,
+   -24.042631;-9.541127;3.825193;,
+   -15.847594;91.699951;-27.686884;,
+   6.834349;79.218414;-26.384541;,
+   -2.581256;67.240547;-35.920265;,
+   -5.525956;73.447105;-30.511984;,
+   -39.949409;51.093193;-14.428605;,
+   -49.247093;52.068192;-22.375628;,
+   -44.840313;52.972961;-21.594219;,
+   -37.922092;53.954063;-15.619296;,
+   55.755917;81.121483;-23.474909;,
+   53.125378;77.430878;-17.512815;,
+   -28.036732;-22.561440;18.964972;,
+   -7.677234;64.366692;-32.005043;,
+   -6.452668;6.202003;27.538244;,
+   -3.081308;-3.760027;43.964832;,
+   -1.627267;-2.014938;36.121349;,
+   40.837948;50.375927;-12.402261;,
+   10.933255;36.592358;-7.522753;,
+   16.447954;29.702024;20.300789;,
+   26.890347;-48.830227;23.406443;,
+   33.833954;-51.644905;11.492816;,
+   -25.059965;55.197823;-10.639063;,
+   -26.202097;49.137249;-9.580162;,
+   -21.483200;70.097366;-7.941819;,
+   10.623377;1.246377;21.002106;,
+   11.917829;-6.985616;12.941396;,
+   -40.618313;-21.946705;13.349382;,
+   38.430149;54.953678;-11.697120;,
+   40.837948;50.375927;-12.402261;,
+   11.288940;77.594460;-11.963920;,
+   -7.400333;83.897980;-9.860908;,
+   -39.211315;-21.564734;17.080482;,
+   -32.935844;61.931461;-11.410446;,
+   38.640137;46.999805;0.459969;,
+   49.525215;51.953262;-5.955174;,
+   -41.247208;-49.938686;0.342672;,
+   -37.414635;-43.487267;6.788628;,
+   -38.764107;-49.650299;-1.346603;,
+   21.529562;15.393859;17.091015;,
+   19.379131;10.716366;22.879160;,
+   25.962639;11.090486;18.322248;,
+   -24.346226;-25.929518;17.495390;,
+   0.941249;87.942574;-4.306873;,
+   -22.061762;18.901827;5.028281;,
+   -23.055687;21.314295;9.138343;,
+   -33.830647;9.622592;5.891818;,
+   12.342522;83.840324;13.705063;,
+   10.860622;5.139582;1.552797;,
+   8.327302;-0.980969;10.939425;,
+   -16.827061;1.219543;2.024750;,
+   50.828209;83.957054;-25.880947;,
+   27.423418;59.091480;18.166313;,
+   -60.644119;65.566917;-24.570387;,
+   -55.609470;74.242661;-31.648880;,
+   -57.385937;68.255699;-17.909374;,
+   18.083445;37.498520;17.362167;,
+   -26.722010;-40.889412;19.961950;,
+   2.138803;61.509098;-42.036064;,
+   4.073305;59.610996;-40.833714;,
+   4.449260;5.519744;24.958956;,
+   6.283016;13.040165;27.535877;,
+   10.813922;83.199295;-25.896582;,
+   -56.042988;61.674351;-44.656796;,
+   -59.412842;60.700066;-44.757683;,
+   -57.929287;63.042091;-48.866653;,
+   59.407169;73.976173;-35.939606;,
+   -4.537083;1.701620;38.960873;,
+   -3.168605;-3.075628;46.795586;,
+   -0.064917;5.519952;35.464745;,
+   -4.537083;1.701620;38.960873;,
+   -6.920623;58.550972;-21.883003;,
+   27.601152;44.405285;6.628835;,
+   13.572235;88.878441;-24.414091;,
+   15.704653;89.225212;-21.312164;,
+   -12.878408;84.645325;13.109903;,
+   -42.872814;67.653244;-23.309744;,
+   26.890347;-48.830227;23.406443;,
+   -16.376255;72.418671;-12.390795;,
+   -18.323547;63.079369;-13.239793;,
+   -12.576931;78.981773;-21.235744;,
+   8.705782;64.841133;-27.263292;,
+   -7.779071;5.915742;19.791157;,
+   -6.929708;4.351809;15.059266;,
+   -15.847594;91.699951;-27.686884;,
+   -16.143675;93.758804;-26.957443;,
+   1.686703;55.170410;-33.396271;,
+   -0.635408;54.172260;-28.953407;,
+   55.755917;81.121483;-23.474909;,
+   59.115898;78.607300;-27.978643;,
+   -11.059132;87.523178;-26.792774;,
+   -5.410191;79.736504;-26.219851;,
+   54.532749;59.488056;-23.354218;,
+   53.514877;54.262741;-15.412707;,
+   57.592995;60.362343;-20.668554;,
+   -36.524479;62.144131;-14.117249;,
+   -18.323547;63.079369;-13.239793;,
+   -6.452668;6.202003;27.538244;,
+   -4.537083;1.701620;38.960873;,
+   -0.064917;5.519952;35.464745;,
+   -18.323547;63.079369;-13.239793;,
+   -32.935844;61.931461;-11.410446;,
+   16.009220;-14.508739;18.090040;,
+   56.033638;66.752815;-5.878434;,
+   -46.647518;51.341599;-10.922218;,
+   19.379131;10.716366;22.879160;,
+   -16.196892;49.265087;33.157970;,
+   -20.847832;21.264679;22.466444;,
+   13.272189;45.625778;-11.246181;,
+   -39.694229;-12.453611;12.027144;,
+   12.225388;38.621132;28.707315;,
+   8.522061;36.178997;30.154608;,
+   14.548819;37.161129;23.625366;,
+   17.358320;-22.397089;22.092823;,
+   26.305939;-41.669117;14.123914;,
+   23.593864;-48.477840;4.805585;,
+   18.856615;-40.310535;13.445570;,
+   -35.073166;-37.829803;7.733480;,
+   -36.471687;-40.706314;8.612479;,
+   7.941593;80.585335;-12.165461;,
+   -6.754264;18.582582;-3.058113;,
+   56.928391;62.714642;-5.947433;,
+   8.054681;19.270620;-1.177188;,
+   3.838981;11.833509;-0.423487;,
+   -0.109900;18.753326;-3.911966;,
+   -10.858169;84.755043;-4.595995;,
+   -19.904671;76.280403;-3.534853;,
+   -8.037496;7.394119;3.910575;,
+   27.048080;46.456139;-2.368840;,
+   -11.814466;6.802450;24.328449;,
+   -43.582443;-47.804741;3.639714;,
+   -41.247208;-49.938686;0.342672;,
+   -45.687435;-51.870766;0.771647;,
+   -7.110306;9.648146;29.624266;,
+   -4.609607;9.360097;33.345322;,
+   -4.441797;14.692162;30.965691;,
+   -22.491791;59.458427;28.711340;,
+   -21.970943;14.795415;1.778026;,
+   -25.288986;-18.229105;4.145061;,
+   -54.658905;72.831123;-45.265160;,
+   3.236300;4.143968;12.217373;,
+   11.799372;83.453667;18.877607;,
+   57.544411;75.724358;-36.600132;,
+   3.236300;4.143968;12.217373;,
+   -30.629827;10.646135;20.230045;,
+   -34.754444;8.609067;14.175639;,
+   -60.644119;65.566917;-24.570387;,
+   20.277245;-50.925426;26.624506;;
+   1060;
+   3;131,132,129;,
+   3;132,274,129;,
+   3;139,140,520;,
+   3;46,144,145;,
+   3;231,501,79;,
+   3;148,85,1;,
+   3;89,125,150;,
+   3;150,125,149;,
+   3;151,262,375;,
+   3;159,379,81;,
+   3;154,152,153;,
+   3;48,382,155;,
+   3;49,156,237;,
+   3;25,159,160;,
+   3;161,162,392;,
+   3;163,392,162;,
+   3;166,100,165;,
+   3;26,279,167;,
+   3;401,248,416;,
+   3;416,248,170;,
+   3;63,171,173;,
+   3;0,174,417;,
+   3;105,196,176;,
+   3;176,196,175;,
+   3;179,180,83;,
+   3;181,83,180;,
+   3;428,138,182;,
+   3;310,413,189;,
+   3;103,408,57;,
+   3;532,190,104;,
+   3;192,84,193;,
+   3;194,113,195;,
+   3;520,140,198;,
+   3;72,373,199;,
+   3;509,70,200;,
+   3;337,201,202;,
+   3;202,201,214;,
+   3;75,36,203;,
+   3;35,204,205;,
+   3;204,340,206;,
+   3;376,341,207;,
+   3;78,191,8;,
+   3;60,214,208;,
+   3;34,110,514;,
+   3;186,187,533;,
+   3;210,211,209;,
+   3;211,41,209;,
+   3;435,353,333;,
+   3;80,218,219;,
+   3;225,534,109;,
+   3;120,58,226;,
+   3;58,351,226;,
+   3;367,148,228;,
+   3;148,147,228;,
+   3;535,468,472;,
+   3;230,234,349;,
+   3;365,470,233;,
+   3;233,470,232;,
+   3;536,14,145;,
+   3;45,117,238;,
+   3;240,52,239;,
+   3;537,538,242;,
+   3;130,243,129;,
+   3;129,243,244;,
+   3;250,95,245;,
+   3;51,44,246;,
+   3;2,66,539;,
+   3;540,403,295;,
+   3;361,275,507;,
+   3;541,251,542;,
+   3;543,473,544;,
+   3;544,473,252;,
+   3;255,256,257;,
+   3;241,260,262;,
+   3;262,260,261;,
+   3;1,267,53;,
+   3;100,166,268;,
+   3;269,144,285;,
+   3;270,102,305;,
+   3;545,272,546;,
+   3;547,236,273;,
+   3;236,506,273;,
+   3;309,278,280;,
+   3;503,406,281;,
+   3;377,238,143;,
+   3;143,238,213;,
+   3;284,133,135;,
+   3;251,5,287;,
+   3;283,290,292;,
+   3;292,290,291;,
+   3;192,198,295;,
+   3;72,296,108;,
+   3;298,27,297;,
+   3;548,299,549;,
+   3;302,33,175;,
+   3;324,299,325;,
+   3;325,299,548;,
+   3;61,550,312;,
+   3;61,312,258;,
+   3;551,56,532;,
+   3;552,553,554;,
+   3;315,316,13;,
+   3;2,47,317;,
+   3;318,299,324;,
+   3;116,319,321;,
+   3;326,71,296;,
+   3;297,555,329;,
+   3;331,38,330;,
+   3;314,443,332;,
+   3;110,34,335;,
+   3;556,63,336;,
+   3;323,111,524;,
+   3;557,338,320;,
+   3;521,323,558;,
+   3;558,323,339;,
+   3;169,559,426;,
+   3;92,11,131;,
+   3;342,74,341;,
+   3;560,561,530;,
+   3;68,345,182;,
+   3;452,19,562;,
+   3;318,324,106;,
+   3;7,347,70;,
+   3;563,564,460;,
+   3;565,328,566;,
+   3;217,567,352;,
+   3;567,568,352;,
+   3;569,570,467;,
+   3;467,570,355;,
+   3;37,356,357;,
+   3;571,572,358;,
+   3;358,572,357;,
+   3;469,359,573;,
+   3;359,86,360;,
+   3;363,361,362;,
+   3;359,469,223;,
+   3;574,368,14;,
+   3;366,14,368;,
+   3;242,369,370;,
+   3;370,369,91;,
+   3;371,180,575;,
+   3;576,575,180;,
+   3;374,57,373;,
+   3;45,377,378;,
+   3;276,363,388;,
+   3;462,379,50;,
+   3;577,160,81;,
+   3;54,343,166;,
+   3;166,343,381;,
+   3;84,192,176;,
+   3;157,156,227;,
+   3;379,159,385;,
+   3;578,579,114;,
+   3;332,114,579;,
+   3;57,30,390;,
+   3;385,27,298;,
+   3;169,3,580;,
+   3;502,265,581;,
+   3;581,265,582;,
+   3;583,49,584;,
+   3;31,398,399;,
+   3;585,351,400;,
+   3;84,586,404;,
+   3;587,588,504;,
+   3;589,590,410;,
+   3;384,489,591;,
+   3;591,411,59;,
+   3;98,101,412;,
+   3;494,415,592;,
+   3;393,96,418;,
+   3;593,327,24;,
+   3;24,327,268;,
+   3;183,6,423;,
+   3;108,425,300;,
+   3;0,9,292;,
+   3;292,9,427;,
+   3;396,141,181;,
+   3;165,429,430;,
+   3;594,595,317;,
+   3;495,431,184;,
+   3;184,431,432;,
+   3;434,596,597;,
+   3;288,76,598;,
+   3;599,33,436;,
+   3;429,100,600;,
+   3;601,394,433;,
+   3;37,346,313;,
+   3;449,602,74;,
+   3;199,523,440;,
+   3;112,441,32;,
+   3;92,442,11;,
+   3;442,389,11;,
+   3;248,444,170;,
+   3;448,334,446;,
+   3;220,419,603;,
+   3;210,354,604;,
+   3;454,18,453;,
+   3;477,263,347;,
+   3;347,263,200;,
+   3;146,605,596;,
+   3;38,606,456;,
+   3;457,458,88;,
+   3;458,20,486;,
+   3;355,216,15;,
+   3;105,407,464;,
+   3;464,407,403;,
+   3;422,421,466;,
+   3;536,574,14;,
+   3;607,608,470;,
+   3;607,470,365;,
+   3;609,13,610;,
+   3;253,611,254;,
+   3;93,479,344;,
+   3;344,479,468;,
+   3;272,400,391;,
+   3;338,612,613;,
+   3;473,543,235;,
+   3;77,438,474;,
+   3;474,62,350;,
+   3;62,15,350;,
+   3;102,270,18;,
+   3;301,476,302;,
+   3;87,302,476;,
+   3;44,501,231;,
+   3;614,615,387;,
+   3;387,615,616;,
+   3;536,144,269;,
+   3;594,617,215;,
+   3;360,86,218;,
+   3;618,364,619;,
+   3;620,1,471;,
+   3;621,480,622;,
+   3;622,480,623;,
+   3;241,262,151;,
+   3;127,41,481;,
+   3;76,624,211;,
+   3;386,99,625;,
+   3;28,482,626;,
+   3;157,1,483;,
+   3;247,96,484;,
+   3;485,627,628;,
+   3;485,301,439;,
+   3;439,346,485;,
+   3;629,630,631;,
+   3;20,34,486;,
+   3;487,632,380;,
+   3;633,488,634;,
+   3;634,488,261;,
+   3;488,262,261;,
+   3;385,159,27;,
+   3;635,490,265;,
+   3;265,490,155;,
+   3;1,53,483;,
+   3;636,637,168;,
+   3;168,637,638;,
+   3;639,640,163;,
+   3;601,16,394;,
+   3;96,393,484;,
+   3;64,493,286;,
+   3;286,493,266;,
+   3;641,493,424;,
+   3;490,642,643;,
+   3;644,645,479;,
+   3;646,593,24;,
+   3;277,439,196;,
+   3;647,495,496;,
+   3;495,73,496;,
+   3;497,87,476;,
+   3;33,302,436;,
+   3;436,302,498;,
+   3;537,370,59;,
+   3;21,476,212;,
+   3;158,501,289;,
+   3;306,501,397;,
+   3;648,65,398;,
+   3;73,442,244;,
+   3;649,496,264;,
+   3;415,503,304;,
+   3;272,126,400;,
+   3;402,418,22;,
+   3;27,650,505;,
+   3;651,409,103;,
+   3;4,377,143;,
+   3;652,59,172;,
+   3;65,648,506;,
+   3;653,654,236;,
+   3;308,399,655;,
+   3;656,657,658;,
+   3;299,122,187;,
+   3;659,307,425;,
+   3;660,661,508;,
+   3;662,447,508;,
+   3;663,664,662;,
+   3;123,510,42;,
+   3;395,141,396;,
+   3;665,511,150;,
+   3;305,465,512;,
+   3;666,512,108;,
+   3;185,423,667;,
+   3;654,423,668;,
+   3;669,668,423;,
+   3;670,671,672;,
+   3;673,613,515;,
+   3;517,674,393;,
+   3;675,676,518;,
+   3;409,197,519;,
+   3;677,678,519;,
+   3;198,193,520;,
+   3;193,445,520;,
+   3;298,329,679;,
+   3;478,680,182;,
+   3;43,356,137;,
+   3;137,356,431;,
+   3;521,558,451;,
+   3;36,75,681;,
+   3;682,683,522;,
+   3;321,75,203;,
+   3;524,684,685;,
+   3;293,417,525;,
+   3;444,511,139;,
+   3;139,520,445;,
+   3;686,207,687;,
+   3;687,207,339;,
+   3;395,688,94;,
+   3;178,689,342;,
+   3;35,690,204;,
+   3;691,455,692;,
+   3;39,693,694;,
+   3;391,694,693;,
+   3;522,683,518;,
+   3;443,117,332;,
+   3;332,117,271;,
+   3;136,630,629;,
+   3;174,526,450;,
+   3;695,527,528;,
+   3;488,529,696;,
+   3;697,698,528;,
+   3;698,695,528;,
+   3;449,74,516;,
+   3;10,560,40;,
+   3;40,560,530;,
+   3;226,40,530;,
+   3;552,419,220;,
+   3;106,324,526;,
+   3;57,390,373;,
+   3;699,700,330;,
+   3;701,94,699;,
+   3;702,529,177;,
+   3;492,195,121;,
+   3;113,121,195;,
+   3;30,678,703;,
+   3;40,351,585;,
+   3;525,35,531;,
+   3;352,322,188;,
+   3;257,375,255;,
+   3;255,375,459;,
+   3;665,149,704;,
+   3;689,705,119;,
+   3;119,705,706;,
+   3;126,707,708;,
+   3;545,709,126;,
+   3;126,709,707;,
+   3;57,128,103;,
+   3;129,274,130;,
+   3;129,92,131;,
+   3;461,132,131;,
+   3;134,135,97;,
+   3;133,97,135;,
+   3;134,283,135;,
+   3;43,137,710;,
+   3;647,711,137;,
+   3;137,711,710;,
+   3;139,23,140;,
+   3;42,140,23;,
+   3;83,181,141;,
+   3;500,712,142;,
+   3;142,712,143;,
+   3;712,4,143;,
+   3;713,714,715;,
+   3;714,17,715;,
+   3;147,148,1;,
+   3;125,716,149;,
+   3;665,150,149;,
+   3;488,375,262;,
+   3;375,257,151;,
+   3;223,81,379;,
+   3;152,717,153;,
+   3;153,718,154;,
+   3;233,155,382;,
+   3;237,156,157;,
+   3;157,719,237;,
+   3;61,720,158;,
+   3;161,721,162;,
+   3;639,163,162;,
+   3;722,723,164;,
+   3;54,166,165;,
+   3;279,26,648;,
+   3;251,724,169;,
+   3;724,3,169;,
+   3;170,107,416;,
+   3;725,726,171;,
+   3;726,173,171;,
+   3;174,115,417;,
+   3;439,175,196;,
+   3;175,33,176;,
+   3;177,633,702;,
+   3;633,62,702;,
+   3;179,576,180;,
+   3;181,180,396;,
+   3;478,182,138;,
+   3;182,67,428;,
+   3;66,2,595;,
+   3;73,495,184;,
+   3;727,185,189;,
+   3;310,189,185;,
+   3;408,30,57;,
+   3;186,405,187;,
+   3;437,728,188;,
+   3;728,729,188;,
+   3;532,56,190;,
+   3;730,104,190;,
+   3;731,732,114;,
+   3;114,732,578;,
+   3;84,445,193;,
+   3;198,192,193;,
+   3;195,69,194;,
+   3;69,733,194;,
+   3;275,196,105;,
+   3;734,198,140;,
+   3;373,390,199;,
+   3;19,735,200;,
+   3;735,509,200;,
+   3;201,208,214;,
+   3;736,737,36;,
+   3;737,203,36;,
+   3;603,205,204;,
+   3;340,118,206;,
+   3;204,206,603;,
+   3;738,207,341;,
+   3;733,486,514;,
+   3;486,34,514;,
+   3;187,122,134;,
+   3;187,134,533;,
+   3;134,97,533;,
+   3;354,210,209;,
+   3;210,76,211;,
+   3;142,213,212;,
+   3;213,623,212;,
+   3;270,739,214;,
+   3;739,202,214;,
+   3;740,741,217;,
+   3;353,742,333;,
+   3;743,435,333;,
+   3;221,552,220;,
+   3;744,221,220;,
+   3;91,369,222;,
+   3;745,746,369;,
+   3;369,746,222;,
+   3;86,223,224;,
+   3;747,748,749;,
+   3;749,463,747;,
+   3;463,750,747;,
+   3;225,109,751;,
+   3;752,751,109;,
+   3;147,157,228;,
+   3;157,227,228;,
+   3;468,645,753;,
+   3;753,472,468;,
+   3;348,229,349;,
+   3;754,230,229;,
+   3;229,230,349;,
+   3;79,755,231;,
+   3;470,756,232;,
+   3;757,758,755;,
+   3;145,144,536;,
+   3;98,759,760;,
+   3;45,238,377;,
+   3;239,478,138;,
+   3;138,240,239;,
+   3;21,212,623;,
+   3;370,537,242;,
+   3;92,129,244;,
+   3;761,245,95;,
+   3;762,539,66;,
+   3;247,763,96;,
+   3;708,249,764;,
+   3;403,407,295;,
+   3;407,192,295;,
+   3;765,766,507;,
+   3;507,766,361;,
+   3;16,252,473;,
+   3;252,767,544;,
+   3;768,769,770;,
+   3;771,770,769;,
+   3;772,257,256;,
+   3;386,124,720;,
+   3;164,723,259;,
+   3;260,82,261;,
+   3;19,263,562;,
+   3;562,263,773;,
+   3;263,774,773;,
+   3;502,635,265;,
+   3;775,768,770;,
+   3;776,53,267;,
+   3;285,771,269;,
+   3;771,769,269;,
+   3;305,513,777;,
+   3;777,270,305;,
+   3;778,779,420;,
+   3;552,780,420;,
+   3;420,780,778;,
+   3;391,546,272;,
+   3;391,693,546;,
+   3;273,781,547;,
+   3;782,17,783;,
+   3;17,784,783;,
+   3;363,276,275;,
+   3;275,276,277;,
+   3;276,29,277;,
+   3;278,167,279;,
+   3;31,280,279;,
+   3;279,280,278;,
+   3;281,785,282;,
+   3;282,503,281;,
+   3;623,213,238;,
+   3;213,142,143;,
+   3;135,283,284;,
+   3;12,284,283;,
+   3;285,786,771;,
+   3;787,788,789;,
+   3;789,788,790;,
+   3;668,506,654;,
+   3;506,236,654;,
+   3;550,61,289;,
+   3;106,291,290;,
+   3;291,0,292;,
+   3;791,68,792;,
+   3;793,294,293;,
+   3;108,300,666;,
+   3;175,439,301;,
+   3;301,302,175;,
+   3;603,419,205;,
+   3;794,795,796;,
+   3;797,23,665;,
+   3;102,465,305;,
+   3;185,727,798;,
+   3;727,799,798;,
+   3;548,800,325;,
+   3;412,311,801;,
+   3;311,683,801;,
+   3;802,312,550;,
+   3;312,803,258;,
+   3;37,313,432;,
+   3;313,29,432;,
+   3;356,37,432;,
+   3;56,804,190;,
+   3;332,805,314;,
+   3;806,317,47;,
+   3;806,594,317;,
+   3;492,164,259;,
+   3;259,69,492;,
+   3;318,122,299;,
+   3;557,320,319;,
+   3;320,321,319;,
+   3;322,437,188;,
+   3;807,808,521;,
+   3;323,521,808;,
+   3;298,679,809;,
+   3;329,298,297;,
+   3;810,331,330;,
+   3;811,670,672;,
+   3;334,784,522;,
+   3;784,682,522;,
+   3;812,336,63;,
+   3;111,308,524;,
+   3;308,684,524;,
+   3;613,320,338;,
+   3;339,738,558;,
+   3;141,395,94;,
+   3;169,426,251;,
+   3;5,251,426;,
+   3;74,738,341;,
+   3;178,342,341;,
+   3;813,8,814;,
+   3;561,815,530;,
+   3;815,120,530;,
+   3;343,816,463;,
+   3;817,463,816;,
+   3;343,818,816;,
+   3;345,67,182;,
+   3;452,562,819;,
+   3;318,106,290;,
+   3;290,122,318;,
+   3;37,820,346;,
+   3;600,100,821;,
+   3;600,821,822;,
+   3;821,823,822;,
+   3;824,825,460;,
+   3;460,825,563;,
+   3;826,740,827;,
+   3;40,226,351;,
+   3;322,352,568;,
+   3;352,740,217;,
+   3;828,604,354;,
+   3;570,216,355;,
+   3;829,467,355;,
+   3;43,357,356;,
+   3;572,37,357;,
+   3;357,43,358;,
+   3;80,573,360;,
+   3;359,360,573;,
+   3;766,362,361;,
+   3;362,461,363;,
+   3;86,359,223;,
+   3;830,223,469;,
+   3;701,83,141;,
+   3;94,701,141;,
+   3;831,615,614;,
+   3;14,366,832;,
+   3;383,370,91;,
+   3;242,745,369;,
+   3;371,396,180;,
+   3;108,373,72;,
+   3;374,373,108;,
+   3;1,157,147;,
+   3;488,833,375;,
+   3;4,378,377;,
+   3;276,388,55;,
+   3;29,276,55;,
+   3;272,545,126;,
+   3;462,223,379;,
+   3;160,159,81;,
+   3;637,372,638;,
+   3;834,638,372;,
+   3;343,463,381;,
+   3;769,835,269;,
+   3;836,152,154;,
+   3;837,836,154;,
+   3;718,632,154;,
+   3;154,632,837;,
+   3;365,233,382;,
+   3;192,407,176;,
+   3;838,839,840;,
+   3;838,840,841;,
+   3;50,379,385;,
+   3;501,44,51;,
+   3;22,842,843;,
+   3;238,844,623;,
+   3;117,844,238;,
+   3;643,642,845;,
+   3;648,31,279;,
+   3;11,389,388;,
+   3;389,55,388;,
+   3;50,385,298;,
+   3;580,559,169;,
+   3;674,394,393;,
+   3;4,303,378;,
+   3;155,582,265;,
+   3;475,846,847;,
+   3;848,847,846;,
+   3;51,849,397;,
+   3;65,850,398;,
+   3;850,399,398;,
+   3;22,843,402;,
+   3;540,851,403;,
+   3;405,587,504;,
+   3;407,105,176;,
+   3;408,103,409;,
+   3;430,54,165;,
+   3;590,852,410;,
+   3;853,589,410;,
+   3;59,384,591;,
+   3;854,855,591;,
+   3;591,855,411;,
+   3;412,101,311;,
+   3;101,683,311;,
+   3;454,60,414;,
+   3;60,715,414;,
+   3;17,414,715;,
+   3;592,415,856;,
+   3;292,12,283;,
+   3;857,10,858;,
+   3;293,294,417;,
+   3;294,0,417;,
+   3;420,419,552;,
+   3;420,859,419;,
+   3;62,633,829;,
+   3;327,100,268;,
+   3;185,860,423;,
+   3;423,860,183;,
+   3;860,861,183;,
+   3;862,101,491;,
+   3;491,53,862;,
+   3;307,300,425;,
+   3;863,70,5;,
+   3;863,7,70;,
+   3;427,12,292;,
+   3;492,121,722;,
+   3;121,678,722;,
+   3;630,428,67;,
+   3;185,798,860;,
+   3;779,864,420;,
+   3;864,859,420;,
+   3;84,107,445;,
+   3;107,84,404;,
+   3;165,100,429;,
+   3;429,865,430;,
+   3;2,317,595;,
+   3;431,356,432;,
+   3;432,55,184;,
+   3;597,866,867;,
+   3;867,434,597;,
+   3;868,869,870;,
+   3;796,429,600;,
+   3;674,433,394;,
+   3;871,872,873;,
+   3;346,439,313;,
+   3;439,29,313;,
+   3;602,738,74;,
+   3;440,326,296;,
+   3;440,296,199;,
+   3;296,72,199;,
+   3;596,32,441;,
+   3;389,442,184;,
+   3;442,73,184;,
+   3;184,55,389;,
+   3;812,63,173;,
+   3;117,443,844;,
+   3;874,844,443;,
+   3;444,445,170;,
+   3;445,107,170;,
+   3;338,557,612;,
+   3;448,446,875;,
+   3;676,875,446;,
+   3;603,744,220;,
+   3;283,134,122;,
+   3;521,451,876;,
+   3;877,876,878;,
+   3;451,878,876;,
+   3;604,598,210;,
+   3;598,76,210;,
+   3;879,452,819;,
+   3;19,200,263;,
+   3;200,70,347;,
+   3;112,146,441;,
+   3;441,146,596;,
+   3;678,121,455;,
+   3;606,880,456;,
+   3;880,881,456;,
+   3;585,858,40;,
+   3;858,10,40;,
+   3;457,20,458;,
+   3;259,88,458;,
+   3;486,69,458;,
+   3;259,458,69;,
+   3;882,255,459;,
+   3;459,833,882;,
+   3;883,460,564;,
+   3;355,15,829;,
+   3;15,62,829;,
+   3;766,884,362;,
+   3;461,362,884;,
+   3;223,885,224;,
+   3;224,885,886;,
+   3;885,887,886;,
+   3;403,851,464;,
+   3;851,888,464;,
+   3;466,874,889;,
+   3;889,422,466;,
+   3;874,443,889;,
+   3;647,137,495;,
+   3;890,891,608;,
+   3;608,891,470;,
+   3;891,756,470;,
+   3;610,892,609;,
+   3;893,609,892;,
+   3;894,611,253;,
+   3;645,468,479;,
+   3;468,535,344;,
+   3;400,351,391;,
+   3;694,391,351;,
+   3;895,896,897;,
+   3;247,473,898;,
+   3;898,473,235;,
+   3;575,899,371;,
+   3;350,77,474;,
+   3;900,901,902;,
+   3;128,57,465;,
+   3;453,18,270;,
+   3;301,485,476;,
+   3;270,214,453;,
+   3;454,453,60;,
+   3;214,60,453;,
+   3;231,755,758;,
+   3;758,44,231;,
+   3;501,158,79;,
+   3;79,158,124;,
+   3;158,720,124;,
+   3;616,903,387;,
+   3;269,835,536;,
+   3;594,215,904;,
+   3;218,80,360;,
+   3;10,857,90;,
+   3;90,857,364;,
+   3;857,619,364;,
+   3;16,473,247;,
+   3;471,905,620;,
+   3;906,620,905;,
+   3;52,907,239;,
+   3;239,907,478;,
+   3;93,908,479;,
+   3;21,623,480;,
+   3;29,55,432;,
+   3;735,19,452;,
+   3;879,735,452;,
+   3;624,909,211;,
+   3;909,481,211;,
+   3;481,41,211;,
+   3;54,818,343;,
+   3;463,24,381;,
+   3;24,268,381;,
+   3;268,166,381;,
+   3;124,386,625;,
+   3;910,482,911;,
+   3;28,911,482;,
+   3;626,482,912;,
+   3;910,912,482;,
+   3;913,483,98;,
+   3;484,16,247;,
+   3;85,471,1;,
+   3;94,914,915;,
+   3;916,917,245;,
+   3;250,245,917;,
+   3;820,627,346;,
+   3;346,627,485;,
+   3;144,542,285;,
+   3;918,49,919;,
+   3;49,583,919;,
+   3;918,227,156;,
+   3;156,49,918;,
+   3;96,763,22;,
+   3;22,763,920;,
+   3;763,921,920;,
+   3;97,133,631;,
+   3;629,631,133;,
+   3;363,275,361;,
+   3;487,922,632;,
+   3;923,632,922;,
+   3;632,718,380;,
+   3;2,924,925;,
+   3;925,924,926;,
+   3;82,634,261;,
+   3;25,27,159;,
+   3;644,908,927;,
+   3;477,774,263;,
+   3;490,48,155;,
+   3;491,483,53;,
+   3;491,98,483;,
+   3;912,168,638;,
+   3;16,484,394;,
+   3;393,394,484;,
+   3;492,722,164;,
+   3;64,424,493;,
+   3;643,48,490;,
+   3;908,644,479;,
+   3;840,645,841;,
+   3;644,841,645;,
+   3;196,275,277;,
+   3;439,277,29;,
+   3;406,928,26;,
+   3;649,647,496;,
+   3;21,497,476;,
+   3;87,497,929;,
+   3;101,98,491;,
+   3;930,931,498;,
+   3;498,931,436;,
+   3;652,537,59;,
+   3;485,499,476;,
+   3;476,499,212;,
+   3;499,142,212;,
+   3;485,628,499;,
+   3;499,628,500;,
+   3;500,142,499;,
+   3;490,635,642;,
+   3;635,932,642;,
+   3;501,306,289;,
+   3;61,158,289;,
+   3;51,397,501;,
+   3;31,648,398;,
+   3;415,494,503;,
+   3;494,406,503;,
+   3;69,486,733;,
+   3;26,167,406;,
+   3;644,927,933;,
+   3;454,414,782;,
+   3;17,782,414;,
+   3;92,244,442;,
+   3;73,244,496;,
+   3;243,264,244;,
+   3;244,264,496;,
+   3;282,304,503;,
+   3;934,126,708;,
+   3;400,126,585;,
+   3;934,585,126;,
+   3;402,935,418;,
+   3;96,22,418;,
+   3;588,549,504;,
+   3;650,936,505;,
+   3;651,937,409;,
+   3;938,284,12;,
+   3;786,285,287;,
+   3;285,542,287;,
+   3;542,251,287;,
+   3;411,172,59;,
+   3;411,855,172;,
+   3;855,726,172;,
+   3;275,105,507;,
+   3;174,0,291;,
+   3;0,294,939;,
+   3;294,793,939;,
+   3;111,280,308;,
+   3;280,31,308;,
+   3;308,31,399;,
+   3;850,655,399;,
+   3;111,309,280;,
+   3;940,425,71;,
+   3;108,296,425;,
+   3;425,296,71;,
+   3;297,505,555;,
+   3;936,555,505;,
+   3;297,27,505;,
+   3;656,112,657;,
+   3;112,32,657;,
+   3;187,405,504;,
+   3;504,549,187;,
+   3;549,299,187;,
+   3;940,659,425;,
+   3;661,663,508;,
+   3;508,663,662;,
+   3;35,205,859;,
+   3;205,419,859;,
+   3;859,941,35;,
+   3;140,510,734;,
+   3;140,42,510;,
+   3;942,943,944;,
+   3;944,465,942;,
+   3;465,102,942;,
+   3;796,795,429;,
+   3;865,429,795;,
+   3;33,84,176;,
+   3;511,444,945;,
+   3;89,150,945;,
+   3;945,150,511;,
+   3;248,945,444;,
+   3;23,511,665;,
+   3;512,666,513;,
+   3;305,512,513;,
+   3;512,465,374;,
+   3;374,108,512;,
+   3;654,667,423;,
+   3;6,669,423;,
+   3;673,515,946;,
+   3;671,670,947;,
+   3;948,671,947;,
+   3;613,612,515;,
+   3;342,949,74;,
+   3;342,689,949;,
+   3;119,950,689;,
+   3;949,689,950;,
+   3;393,418,517;,
+   3;418,935,517;,
+   3;862,518,101;,
+   3;683,101,518;,
+   3;862,951,518;,
+   3;316,610,13;,
+   3;951,675,518;,
+   3;519,30,408;,
+   3;408,409,519;,
+   3;678,30,519;,
+   3;197,677,519;,
+   3;952,323,808;,
+   3;32,596,953;,
+   3;596,434,953;,
+   3;954,955,956;,
+   3;956,326,954;,
+   3;680,957,958;,
+   3;958,68,680;,
+   3;68,182,680;,
+   3;137,431,495;,
+   3;737,116,203;,
+   3;116,321,203;,
+   3;959,524,685;,
+   3;960,595,904;,
+   3;904,595,594;,
+   3;115,690,417;,
+   3;417,690,525;,
+   3;690,35,525;,
+   3;23,139,511;,
+   3;445,444,139;,
+   3;323,687,339;,
+   3;207,738,339;,
+   3;961,914,688;,
+   3;914,94,688;,
+   3;962,119,963;,
+   3;963,964,962;,
+   3;340,204,690;,
+   3;121,113,455;,
+   3;455,113,692;,
+   3;363,461,131;,
+   3;11,388,131;,
+   3;131,388,363;,
+   3;475,965,846;,
+   3;965,475,966;,
+   3;967,965,966;,
+   3;682,784,17;,
+   3;676,446,518;,
+   3;518,446,522;,
+   3;334,522,446;,
+   3;114,332,271;,
+   3;117,45,271;,
+   3;629,968,136;,
+   3;138,428,136;,
+   3;630,136,428;,
+   3;969,450,324;,
+   3;324,450,526;,
+   3;737,528,116;,
+   3;527,116,528;,
+   3;907,680,478;,
+   3;376,970,341;,
+   3;970,178,341;,
+   3;57,374,465;,
+   3;528,737,697;,
+   3;120,226,530;,
+   3;174,291,526;,
+   3;291,106,526;,
+   3;971,817,816;,
+   3;122,290,283;,
+   3;330,38,699;,
+   3;38,972,699;,
+   3;972,701,699;,
+   3;334,973,784;,
+   3;529,488,177;,
+   3;488,633,177;,
+   3;492,69,195;,
+   3;678,455,703;,
+   3;455,691,703;,
+   3;974,564,563;,
+   3;881,975,456;,
+   3;38,456,975;,
+   3;35,941,531;,
+   3;293,525,531;,
+   3;976,977,531;,
+   3;827,352,729;,
+   3;188,729,352;,
+   3;827,740,352;,
+   3;375,833,459;,
+   3;646,24,978;,
+   3;716,979,149;,
+   3;149,979,704;,
+   3;979,852,704;;
+
+   MeshNormals {
+    532;
+    -0.999392;-0.020360;-0.028292;,
+    -0.991963;-0.124989;0.019659;,
+    -0.991114;-0.116330;-0.064504;,
+    -0.986332;-0.061504;-0.152860;,
+    -0.985368;0.060721;0.159254;,
+    -0.982905;0.180544;-0.036090;,
+    -0.981342;-0.190498;-0.026039;,
+    -0.977768;-0.174471;-0.116318;,
+    -0.977041;0.081694;-0.196768;,
+    -0.971696;-0.073510;-0.224505;,
+    -0.967481;0.002691;-0.252928;,
+    -0.961581;-0.109066;0.251926;,
+    -0.950579;0.050361;-0.306370;,
+    -0.945054;-0.014836;0.326577;,
+    -0.942512;-0.144450;-0.301340;,
+    -0.941768;0.232923;0.242529;,
+    -0.941264;-0.293595;0.166808;,
+    -0.936924;0.335875;-0.096756;,
+    -0.931982;0.362501;0.001200;,
+    -0.926524;0.319951;-0.197950;,
+    -0.910146;0.013291;0.414074;,
+    -0.909406;-0.154993;0.385951;,
+    -0.907457;0.292775;0.301339;,
+    -0.902639;0.105974;-0.417148;,
+    -0.902477;-0.404148;0.148997;,
+    -0.900309;-0.125446;-0.416782;,
+    -0.895956;0.277307;-0.346934;,
+    -0.890554;0.049470;-0.452179;,
+    -0.888557;0.454238;0.064298;,
+    -0.887586;0.364668;-0.281440;,
+    -0.882354;-0.023931;-0.469977;,
+    -0.880069;0.403158;-0.250883;,
+    -0.878055;0.465749;0.109987;,
+    -0.876109;0.375769;0.302044;,
+    -0.869926;0.410905;0.272738;,
+    -0.868902;0.146154;0.472915;,
+    -0.868752;-0.254331;-0.424954;,
+    -0.864518;0.180109;0.469223;,
+    -0.860452;-0.320688;-0.395957;,
+    -0.860403;0.127922;0.493298;,
+    -0.859664;-0.150235;-0.488269;,
+    -0.859196;-0.327330;0.393239;,
+    -0.852006;-0.147740;0.502253;,
+    -0.851041;0.119720;0.511269;,
+    -0.850745;0.253565;0.460367;,
+    -0.842332;0.054152;-0.536231;,
+    -0.841719;-0.457458;0.286777;,
+    -0.832174;-0.514411;-0.207045;,
+    -0.831138;-0.005475;0.556039;,
+    -0.828562;-0.504823;-0.242157;,
+    -0.827720;0.552232;0.099599;,
+    -0.819686;-0.034410;-0.571778;,
+    -0.818734;-0.129447;-0.559391;,
+    -0.818288;-0.564423;0.108770;,
+    -0.815498;0.477007;0.327760;,
+    -0.811303;0.400132;-0.426242;,
+    -0.802945;-0.113987;0.585053;,
+    -0.802104;-0.332570;-0.496011;,
+    -0.799329;-0.600665;0.016600;,
+    -0.797789;0.193667;0.570987;,
+    -0.795796;0.224574;0.562383;,
+    -0.789756;0.609845;-0.066145;,
+    -0.781413;0.375794;-0.498169;,
+    -0.780642;-0.336495;0.526658;,
+    -0.780366;-0.156934;0.605310;,
+    -0.779712;-0.282570;0.558751;,
+    -0.778142;0.122183;-0.616089;,
+    -0.777345;0.139925;-0.613315;,
+    -0.773977;0.626659;0.090877;,
+    -0.771169;0.049538;0.634701;,
+    -0.770564;0.111495;-0.627535;,
+    -0.770148;-0.625756;-0.123696;,
+    -0.762739;0.385894;0.518956;,
+    -0.761048;-0.455068;0.462297;,
+    -0.757322;-0.387246;-0.525836;,
+    -0.755589;0.654628;-0.023397;,
+    -0.753250;0.591028;-0.288616;,
+    -0.751686;0.604298;0.264182;,
+    -0.751484;0.655241;0.077015;,
+    -0.750925;-0.600802;0.274134;,
+    -0.749138;-0.660760;-0.046781;,
+    -0.748211;0.352712;-0.561938;,
+    -0.747473;0.163301;0.643908;,
+    -0.746580;-0.270947;-0.607624;,
+    -0.740686;-0.074804;-0.667674;,
+    -0.732459;0.654802;-0.186382;,
+    -0.727392;-0.399670;0.557822;,
+    -0.724409;0.031718;0.688641;,
+    -0.724024;-0.688442;-0.042860;,
+    -0.723213;-0.138849;-0.676523;,
+    -0.719963;0.056526;0.691706;,
+    -0.719020;-0.200445;-0.665456;,
+    -0.712542;-0.641445;-0.284310;,
+    -0.711052;0.474162;-0.519206;,
+    -0.709167;-0.169918;0.684259;,
+    -0.708741;0.591402;0.384617;,
+    -0.708287;0.700737;0.085421;,
+    -0.705392;-0.421256;-0.570057;,
+    -0.705333;0.430183;-0.563425;,
+    -0.702905;0.307149;0.641548;,
+    -0.702349;0.643214;0.304930;,
+    -0.701501;-0.669983;0.242937;,
+    -0.698812;0.653756;-0.290283;,
+    -0.693596;-0.187448;0.695548;,
+    -0.691748;0.525059;-0.495780;,
+    -0.686831;0.668850;0.284435;,
+    -0.680654;0.270595;0.680799;,
+    -0.676184;0.625835;-0.388724;,
+    -0.675191;0.687027;0.268535;,
+    -0.674939;0.328511;0.660710;,
+    -0.673758;0.630412;-0.385527;,
+    -0.660407;-0.734332;-0.156907;,
+    -0.655512;0.500957;-0.565107;,
+    -0.652546;-0.210670;-0.727875;,
+    -0.640295;-0.764192;-0.077669;,
+    -0.639460;-0.768817;-0.003310;,
+    -0.637640;-0.740480;-0.212380;,
+    -0.631753;-0.265143;0.728415;,
+    -0.629898;-0.694075;-0.348550;,
+    -0.627431;0.576312;0.523637;,
+    -0.626575;0.523786;-0.577106;,
+    -0.623106;-0.314657;0.716051;,
+    -0.619382;-0.679112;0.393920;,
+    -0.617980;-0.311613;-0.721801;,
+    -0.604535;0.681850;0.411847;,
+    -0.602136;-0.600659;0.525968;,
+    -0.598316;0.251466;0.760778;,
+    -0.597990;-0.586101;0.546712;,
+    -0.592140;-0.075046;-0.802333;,
+    -0.590154;-0.799471;-0.112091;,
+    -0.583792;-0.684409;0.436774;,
+    -0.578731;0.744260;-0.333390;,
+    -0.575361;0.805011;0.144629;,
+    -0.568277;0.033323;-0.822162;,
+    -0.566741;0.052365;0.822231;,
+    -0.560423;0.825224;-0.070228;,
+    -0.552629;0.013123;0.833324;,
+    -0.545311;-0.110604;-0.830905;,
+    -0.541110;-0.840821;0.014830;,
+    -0.538552;-0.266600;0.799303;,
+    -0.517774;-0.818572;-0.248697;,
+    -0.517719;-0.855550;0.000781;,
+    -0.513742;0.107973;0.851123;,
+    -0.512424;-0.764931;-0.390259;,
+    -0.510507;-0.227717;0.829173;,
+    -0.507006;0.772831;0.381678;,
+    -0.499317;0.217894;0.838573;,
+    -0.489890;-0.433901;-0.756133;,
+    -0.488409;-0.080678;-0.868877;,
+    -0.488183;-0.429735;-0.759609;,
+    -0.486812;0.787591;-0.377776;,
+    -0.486757;0.857085;-0.168737;,
+    -0.486369;-0.752013;-0.444884;,
+    -0.485367;-0.159470;0.859644;,
+    -0.482215;0.250606;0.839444;,
+    -0.482162;0.387619;-0.785667;,
+    -0.480010;-0.194222;0.855493;,
+    -0.479385;0.468823;0.741886;,
+    -0.477747;0.170199;0.861853;,
+    -0.472316;-0.137135;-0.870696;,
+    -0.471555;-0.066407;-0.879333;,
+    -0.468840;0.765846;-0.440077;,
+    -0.464510;0.881860;0.080957;,
+    -0.460848;-0.876556;0.138813;,
+    -0.452043;-0.418328;-0.787819;,
+    -0.451672;0.868584;-0.203847;,
+    -0.445068;-0.224169;-0.866985;,
+    -0.427706;-0.419641;-0.800606;,
+    -0.424627;-0.067258;-0.902867;,
+    -0.424588;-0.443912;-0.789093;,
+    -0.422882;-0.131780;0.896552;,
+    -0.419884;-0.636138;0.647322;,
+    -0.417854;-0.065005;0.906186;,
+    -0.416245;0.726592;0.546630;,
+    -0.412745;0.322927;-0.851681;,
+    -0.412686;0.901016;0.133642;,
+    -0.402293;0.177525;-0.898134;,
+    -0.393610;0.898570;0.194016;,
+    -0.376474;0.573182;-0.727825;,
+    -0.376066;0.730460;-0.570090;,
+    -0.374698;0.838588;0.395439;,
+    -0.368316;0.484940;-0.793206;,
+    -0.363653;-0.821894;0.438459;,
+    -0.353415;0.384330;-0.852871;,
+    -0.350115;-0.575544;-0.739032;,
+    -0.348525;-0.731245;-0.586354;,
+    -0.335872;0.716890;0.610949;,
+    -0.332139;-0.931103;0.150767;,
+    -0.330325;0.923854;0.193339;,
+    -0.328384;-0.255272;0.909395;,
+    -0.318158;0.371253;-0.872322;,
+    -0.316570;0.322360;0.892114;,
+    -0.312324;0.932575;0.180989;,
+    -0.306058;0.004864;0.952000;,
+    -0.294336;-0.125167;0.947470;,
+    -0.292672;0.030572;0.955724;,
+    -0.292430;-0.406697;-0.865496;,
+    -0.290074;-0.956768;-0.021273;,
+    -0.283045;-0.280332;-0.917224;,
+    -0.278677;-0.867889;-0.411227;,
+    -0.275560;-0.871224;-0.406246;,
+    -0.270749;0.902648;-0.334547;,
+    -0.269896;-0.225847;0.936028;,
+    -0.269508;0.211779;-0.939423;,
+    -0.267575;-0.909275;-0.318782;,
+    -0.264943;-0.119435;0.956839;,
+    -0.264599;0.471546;-0.841209;,
+    -0.262941;0.912705;-0.312781;,
+    -0.253772;0.513790;0.819524;,
+    -0.243353;-0.028428;0.969521;,
+    -0.238867;-0.287744;-0.927441;,
+    -0.237564;-0.674565;-0.698946;,
+    -0.232995;0.855083;0.463192;,
+    -0.228441;0.132520;0.964496;,
+    -0.214227;-0.902916;-0.372625;,
+    -0.200714;-0.367672;-0.908037;,
+    -0.200442;-0.528806;-0.824735;,
+    -0.196006;-0.782929;-0.590427;,
+    -0.188544;0.347773;0.918425;,
+    -0.186817;-0.631147;-0.752829;,
+    -0.183621;-0.241092;-0.952973;,
+    -0.165116;0.611969;0.773454;,
+    -0.157764;0.290941;0.943644;,
+    -0.157454;0.185911;-0.969869;,
+    -0.150670;0.737816;-0.657971;,
+    -0.146548;-0.805335;0.574420;,
+    -0.140182;0.887401;0.439168;,
+    -0.137146;-0.362719;0.921751;,
+    -0.131902;-0.062093;-0.989316;,
+    -0.131160;-0.217243;0.967266;,
+    -0.129820;-0.005587;-0.991522;,
+    -0.118858;-0.596647;-0.793653;,
+    -0.116511;-0.409934;-0.904643;,
+    -0.115238;0.993238;-0.014110;,
+    -0.115212;-0.993125;-0.020696;,
+    -0.114664;-0.065468;-0.991245;,
+    -0.114175;-0.224382;-0.967790;,
+    -0.110310;0.114296;-0.987303;,
+    -0.106885;-0.270074;-0.956888;,
+    -0.102751;0.956213;0.274043;,
+    -0.099161;-0.632335;-0.768322;,
+    -0.091879;-0.981779;-0.166337;,
+    -0.085558;0.797786;-0.596839;,
+    -0.076255;0.053236;0.995666;,
+    -0.064828;0.300035;-0.951723;,
+    -0.061700;-0.791184;-0.608458;,
+    -0.061060;-0.994505;-0.085041;,
+    -0.059466;-0.341153;0.938125;,
+    -0.057612;-0.243761;0.968123;,
+    -0.057531;-0.996944;0.052848;,
+    -0.052069;-0.905102;-0.421994;,
+    -0.049949;-0.981114;-0.186870;,
+    -0.042587;-0.155652;0.986894;,
+    -0.037207;0.219031;-0.975008;,
+    -0.036210;-0.783600;-0.620209;,
+    -0.029642;0.978983;-0.201774;,
+    -0.028065;0.425335;-0.904601;,
+    -0.025128;-0.999052;0.035537;,
+    -0.019997;0.609755;-0.792338;,
+    -0.007411;0.974920;0.222431;,
+    -0.006997;-0.271790;-0.962331;,
+    -0.005298;0.148526;0.988894;,
+    -0.005207;-0.198773;-0.980032;,
+    -0.004658;-0.019969;-0.999790;,
+    -0.004244;0.088804;0.996040;,
+    0.000835;-0.984322;-0.176378;,
+    0.005526;0.988525;0.150957;,
+    0.011430;-0.366199;-0.930466;,
+    0.012355;0.614898;-0.788510;,
+    0.035014;-0.383280;-0.922968;,
+    0.037226;-0.095711;-0.994713;,
+    0.056029;0.772680;0.632319;,
+    0.056279;-0.320111;-0.945707;,
+    0.056295;0.982210;0.179148;,
+    0.059805;0.786534;0.614645;,
+    0.059872;-0.308447;-0.949356;,
+    0.063261;0.886815;0.457775;,
+    0.069944;-0.696828;-0.713819;,
+    0.070637;-0.084127;0.993948;,
+    0.074029;-0.429006;-0.900263;,
+    0.085460;-0.360865;-0.928694;,
+    0.090115;-0.976266;0.196938;,
+    0.090171;0.910695;0.403118;,
+    0.094459;-0.911355;-0.400636;,
+    0.102824;0.838180;0.535613;,
+    0.107509;-0.234855;-0.966067;,
+    0.109690;0.214354;0.970577;,
+    0.115001;-0.643135;0.757068;,
+    0.118169;0.022683;0.992734;,
+    0.118859;0.950180;-0.288150;,
+    0.125820;-0.833605;-0.537840;,
+    0.128370;0.538776;0.832611;,
+    0.129362;0.290515;0.948086;,
+    0.130040;-0.065171;-0.989365;,
+    0.136727;-0.260410;0.955768;,
+    0.138514;-0.700046;-0.700535;,
+    0.140331;-0.919322;-0.367634;,
+    0.145157;-0.312081;-0.938901;,
+    0.150784;0.928543;-0.339223;,
+    0.156159;0.812952;-0.561002;,
+    0.164940;0.972200;-0.166198;,
+    0.172377;-0.227322;0.958442;,
+    0.177168;-0.610629;0.771845;,
+    0.181640;0.551356;-0.814256;,
+    0.186544;-0.296569;-0.936615;,
+    0.187593;-0.888692;-0.418372;,
+    0.198413;-0.072002;0.977470;,
+    0.205384;-0.360982;-0.909676;,
+    0.228150;-0.790097;-0.568941;,
+    0.245750;0.350905;-0.903589;,
+    0.259852;-0.061990;0.963657;,
+    0.260927;0.914216;-0.310042;,
+    0.272976;-0.822132;0.499582;,
+    0.281071;0.325519;-0.902794;,
+    0.284911;0.099333;-0.953393;,
+    0.285436;0.523093;-0.803057;,
+    0.289106;0.957297;0.000133;,
+    0.309209;-0.197792;-0.930198;,
+    0.309288;-0.053060;0.949487;,
+    0.309371;0.937025;0.162093;,
+    0.310905;0.121896;0.942592;,
+    0.312667;0.478883;-0.820311;,
+    0.317360;-0.867604;-0.382813;,
+    0.324947;-0.209616;-0.922210;,
+    0.326496;0.025878;0.944844;,
+    0.328432;0.631823;0.702091;,
+    0.329885;0.377581;0.865221;,
+    0.330567;0.919514;0.212647;,
+    0.333558;-0.098624;0.937557;,
+    0.336447;0.940841;-0.040259;,
+    0.338819;0.101334;0.935379;,
+    0.339211;-0.934145;-0.110946;,
+    0.339729;0.759414;0.554865;,
+    0.340251;0.904466;0.257238;,
+    0.342299;-0.131744;0.930309;,
+    0.344235;-0.853940;0.390242;,
+    0.348196;-0.408077;0.843938;,
+    0.350475;0.555732;-0.753877;,
+    0.369150;-0.289991;0.882969;,
+    0.369163;-0.239930;0.897860;,
+    0.374559;0.459420;0.805381;,
+    0.376907;-0.131534;-0.916864;,
+    0.378028;-0.184374;-0.907249;,
+    0.381770;0.247429;-0.890523;,
+    0.382481;0.910346;0.158047;,
+    0.386495;0.505028;-0.771730;,
+    0.388388;-0.921473;0.006469;,
+    0.389349;-0.921074;0.005461;,
+    0.395927;-0.036612;-0.917552;,
+    0.396008;0.587846;0.705418;,
+    0.396547;-0.907035;-0.141554;,
+    0.397997;-0.679175;-0.616701;,
+    0.402142;0.913144;0.066702;,
+    0.403374;-0.342812;-0.848392;,
+    0.403614;-0.348659;-0.845891;,
+    0.425363;-0.447028;-0.786913;,
+    0.426873;0.055696;-0.902595;,
+    0.429152;-0.183636;-0.884368;,
+    0.431830;-0.841767;-0.323962;,
+    0.432702;-0.706391;-0.560161;,
+    0.436297;-0.868786;0.234213;,
+    0.441682;-0.077149;0.893848;,
+    0.443776;-0.728296;-0.522156;,
+    0.449817;-0.723930;-0.523058;,
+    0.455188;-0.672604;-0.583444;,
+    0.455636;0.194908;0.868566;,
+    0.462754;-0.395905;-0.793169;,
+    0.466373;0.317682;-0.825575;,
+    0.469976;0.165815;0.866965;,
+    0.472466;0.714025;0.516667;,
+    0.475907;0.800884;-0.363452;,
+    0.480604;-0.037413;0.876139;,
+    0.482321;-0.294154;-0.825130;,
+    0.482356;-0.439700;-0.757625;,
+    0.485106;0.404137;0.775464;,
+    0.485483;0.254911;0.836257;,
+    0.485726;0.824046;0.291579;,
+    0.488556;-0.252830;0.835099;,
+    0.489072;0.871348;-0.039518;,
+    0.489081;-0.181041;-0.853243;,
+    0.495328;-0.533647;-0.685471;,
+    0.501146;0.058928;0.863354;,
+    0.502573;0.361455;-0.785347;,
+    0.512406;-0.451416;-0.730523;,
+    0.522701;-0.038694;-0.851638;,
+    0.529430;0.848098;0.020801;,
+    0.534264;0.436197;-0.724082;,
+    0.535517;-0.844213;-0.022942;,
+    0.542660;0.791159;-0.282112;,
+    0.544876;0.414076;0.729144;,
+    0.552065;-0.806840;-0.210317;,
+    0.557630;-0.102331;0.823758;,
+    0.558338;0.816286;-0.148108;,
+    0.570624;0.567919;0.593174;,
+    0.576828;-0.450458;-0.681437;,
+    0.576896;0.673298;0.462450;,
+    0.577900;0.741818;-0.340203;,
+    0.583191;0.800514;-0.138079;,
+    0.584447;0.810562;0.037561;,
+    0.587079;-0.328531;-0.739869;,
+    0.588718;-0.800523;-0.112132;,
+    0.588984;-0.658605;0.468333;,
+    0.594585;-0.232966;-0.769543;,
+    0.595314;-0.742942;0.306002;,
+    0.596280;-0.781874;-0.181995;,
+    0.596615;0.639053;-0.485450;,
+    0.599631;-0.653864;0.461416;,
+    0.602703;-0.737750;-0.304095;,
+    0.611471;0.198017;0.766089;,
+    0.611855;-0.017777;0.790770;,
+    0.613829;0.262302;-0.744588;,
+    0.617448;-0.140606;0.773943;,
+    0.619026;-0.579445;-0.530141;,
+    0.620337;-0.103858;-0.777428;,
+    0.624949;-0.687410;-0.370009;,
+    0.626962;-0.360373;-0.690688;,
+    0.632102;0.724618;-0.274545;,
+    0.636987;0.053185;-0.769037;,
+    0.641210;-0.042564;0.766184;,
+    0.647985;0.639178;-0.414207;,
+    0.651980;-0.507287;0.563544;,
+    0.658611;-0.423685;0.621870;,
+    0.659129;-0.503068;-0.558992;,
+    0.659647;-0.682167;0.315458;,
+    0.660964;0.107757;0.742641;,
+    0.660967;-0.425417;0.618178;,
+    0.665486;-0.148414;-0.731507;,
+    0.665632;0.112825;0.737702;,
+    0.669383;0.550881;0.498455;,
+    0.674009;-0.434734;0.597259;,
+    0.674219;-0.713792;0.189549;,
+    0.676655;0.589110;0.441688;,
+    0.676989;-0.377218;-0.631975;,
+    0.679499;-0.727818;0.092532;,
+    0.682039;0.090870;0.725648;,
+    0.683874;0.443193;-0.579566;,
+    0.684253;-0.605331;-0.406660;,
+    0.697993;0.538233;0.472347;,
+    0.701437;-0.287444;0.652198;,
+    0.702614;-0.653438;-0.281694;,
+    0.705886;0.630146;-0.323484;,
+    0.706273;0.401552;-0.583039;,
+    0.707382;0.691758;-0.145195;,
+    0.707477;0.622592;0.334448;,
+    0.708865;-0.666411;0.231099;,
+    0.713080;0.020697;-0.700777;,
+    0.713750;0.639127;-0.286492;,
+    0.713916;0.672796;0.194089;,
+    0.714828;-0.211932;0.666413;,
+    0.717467;-0.613701;-0.329563;,
+    0.718329;-0.109622;-0.687013;,
+    0.718405;0.075674;0.691497;,
+    0.723566;0.358388;0.589923;,
+    0.724083;-0.010639;0.689630;,
+    0.730667;0.535236;0.423849;,
+    0.732191;-0.423451;0.533466;,
+    0.733028;-0.029917;-0.679540;,
+    0.737016;0.288587;0.611167;,
+    0.740055;0.129300;0.660000;,
+    0.742111;-0.493989;0.453041;,
+    0.742623;0.130294;0.656912;,
+    0.744464;0.537493;0.396073;,
+    0.746392;-0.627125;-0.222742;,
+    0.754556;0.652292;0.071838;,
+    0.756207;0.070025;0.650575;,
+    0.759531;-0.047692;-0.648720;,
+    0.760564;-0.188251;0.621373;,
+    0.765275;0.262186;-0.587889;,
+    0.770420;-0.371078;0.518415;,
+    0.779047;-0.449371;-0.437209;,
+    0.783990;-0.616644;-0.071475;,
+    0.787306;-0.615782;0.031014;,
+    0.788889;-0.326430;-0.520671;,
+    0.791514;-0.041576;-0.609735;,
+    0.791992;0.501001;-0.348921;,
+    0.797718;-0.064774;0.599542;,
+    0.800339;0.528714;-0.282698;,
+    0.802188;0.544599;0.244758;,
+    0.805798;-0.172542;-0.566498;,
+    0.805929;0.402160;-0.434448;,
+    0.810216;0.577632;0.099458;,
+    0.818495;-0.130202;0.559566;,
+    0.822188;0.286112;-0.492084;,
+    0.828511;0.184850;-0.528583;,
+    0.831926;0.033365;0.553883;,
+    0.838614;0.506270;-0.201040;,
+    0.851182;0.347483;0.393376;,
+    0.851826;0.503274;0.145286;,
+    0.854571;-0.375136;0.359140;,
+    0.855890;-0.075555;-0.511608;,
+    0.858001;-0.198789;-0.473622;,
+    0.858195;-0.454833;0.237969;,
+    0.858805;0.076046;0.506626;,
+    0.858891;0.005616;0.512128;,
+    0.859114;-0.041797;0.510074;,
+    0.862689;-0.115942;-0.492266;,
+    0.864192;0.133195;0.485213;,
+    0.865573;0.312531;-0.391290;,
+    0.870424;0.408584;0.274628;,
+    0.882264;-0.463986;-0.079548;,
+    0.886716;-0.148663;-0.437760;,
+    0.891872;0.419084;-0.170094;,
+    0.897236;0.321071;-0.303119;,
+    0.898187;-0.404098;-0.173102;,
+    0.902835;0.415863;0.109303;,
+    0.910290;0.226243;0.346680;,
+    0.915828;-0.227337;-0.331024;,
+    0.921708;0.084157;0.378646;,
+    0.922711;0.088645;0.375162;,
+    0.922947;0.377365;0.075929;,
+    0.933137;-0.222962;-0.282036;,
+    0.937434;-0.258307;-0.233442;,
+    0.939041;-0.161526;0.303498;,
+    0.939346;-0.183993;-0.289439;,
+    0.946282;0.276044;0.168376;,
+    0.946597;0.035400;0.320470;,
+    0.946606;-0.155251;0.282550;,
+    0.946647;-0.190501;-0.259940;,
+    0.948388;-0.028843;-0.315798;,
+    0.948877;0.296615;-0.107947;,
+    0.951199;-0.002243;0.308571;,
+    0.956069;-0.281501;-0.081787;,
+    0.964717;-0.162692;-0.207007;,
+    0.967379;-0.005344;0.253275;,
+    0.972772;0.163341;0.164423;,
+    0.975689;0.106333;-0.191634;,
+    0.980399;-0.184399;-0.069386;,
+    0.986746;-0.005153;0.162193;,
+    0.988113;-0.134767;-0.073966;,
+    0.989920;-0.133860;-0.046255;,
+    0.995413;0.088402;-0.036566;,
+    0.999840;-0.013481;0.011787;;
+    1060;
+    3;389,437,369;,
+    3;437,447,369;,
+    3;328,427,318;,
+    3;137,303,206;,
+    3;52,45,104;,
+    3;337,256,473;,
+    3;126,142,222;,
+    3;222,142,288;,
+    3;423,488,462;,
+    3;53,1,116;,
+    3;66,30,27;,
+    3;114,115,241;,
+    3;404,470,469;,
+    3;163,53,129;,
+    3;112,107,55;,
+    3;102,55,107;,
+    3;344,273,378;,
+    3;215,272,220;,
+    3;2,48,24;,
+    3;24,48,121;,
+    3;130,197,141;,
+    3;50,76,61;,
+    3;377,301,334;,
+    3;334,301,278;,
+    3;520,346,430;,
+    3;358,430,346;,
+    3;33,54,78;,
+    3;313,405,299;,
+    3;505,487,530;,
+    3;299,352,165;,
+    3;371,338,310;,
+    3;383,426,513;,
+    3;318,427,375;,
+    3;472,506,417;,
+    3;311,207,233;,
+    3;360,420,406;,
+    3;406,420,425;,
+    3;169,269,263;,
+    3;5,67,10;,
+    3;67,203,168;,
+    3;432,323,353;,
+    3;127,35,7;,
+    3;434,425,409;,
+    3;514,416,386;,
+    3;200,118,141;,
+    3;234,281,111;,
+    3;281,101,111;,
+    3;322,185,309;,
+    3;315,85,255;,
+    3;179,7,31;,
+    3;196,160,83;,
+    3;160,40,83;,
+    3;321,337,456;,
+    3;337,483,456;,
+    3;315,500,262;,
+    3;465,223,440;,
+    3;92,254,246;,
+    3;246,254,350;,
+    3;337,178,206;,
+    3;146,261,243;,
+    3;119,145,108;,
+    3;163,129,204;,
+    3;376,282,369;,
+    3;369,282,271;,
+    3;276,388,367;,
+    3;113,149,240;,
+    3;290,147,240;,
+    3;505,484,458;,
+    3;411,339,421;,
+    3;276,239,388;,
+    3;149,364,240;,
+    3;240,364,363;,
+    3;362,265,387;,
+    3;336,368,488;,
+    3;488,368,508;,
+    3;473,490,531;,
+    3;273,344,226;,
+    3;242,303,300;,
+    3;455,459,444;,
+    3;101,6,111;,
+    3;469,372,380;,
+    3;372,342,380;,
+    3;167,184,232;,
+    3;253,228,341;,
+    3;158,243,153;,
+    3;153,243,227;,
+    3;63,41,46;,
+    3;239,289,329;,
+    3;16,14,15;,
+    3;15,14,26;,
+    3;371,375,458;,
+    3;472,415,436;,
+    3;82,73,86;,
+    3;167,97,184;,
+    3;213,324,278;,
+    3;70,97,148;,
+    3;148,97,167;,
+    3;75,165,180;,
+    3;75,180,105;,
+    3;405,392,299;,
+    3;31,7,35;,
+    3;117,475,349;,
+    3;290,390,331;,
+    3;36,97,70;,
+    3;343,356,235;,
+    3;354,355,415;,
+    3;86,130,103;,
+    3;211,199,245;,
+    3;361,330,194;,
+    3;416,514,504;,
+    3;103,130,65;,
+    3;230,210,279;,
+    3;426,267,236;,
+    3;174,230,203;,
+    3;203,230,293;,
+    3;68,102,151;,
+    3;325,326,389;,
+    3;304,238,323;,
+    3;169,235,123;,
+    3;150,175,78;,
+    3;319,266,282;,
+    3;36,70,51;,
+    3;131,135,207;,
+    3;440,104,333;,
+    3;65,60,103;,
+    3;171,127,249;,
+    3;127,7,249;,
+    3;330,361,493;,
+    3;493,361,512;,
+    3;144,134,94;,
+    3;41,63,42;,
+    3;42,63,94;,
+    3;140,12,262;,
+    3;12,17,98;,
+    3;381,411,451;,
+    3;12,140,0;,
+    3;321,237,178;,
+    3;84,178,237;,
+    3;204,296,283;,
+    3;283,296,422;,
+    3;80,346,117;,
+    3;475,117,346;,
+    3;499,530,506;,
+    3;146,158,59;,
+    3;306,381,320;,
+    3;28,1,22;,
+    3;204,129,116;,
+    3;476,385,344;,
+    3;344,385,259;,
+    3;338,371,334;,
+    3;510,470,439;,
+    3;1,53,21;,
+    3;127,171,87;,
+    3;194,87,171;,
+    3;530,474,467;,
+    3;21,73,82;,
+    3;68,8,55;,
+    3;285,277,342;,
+    3;342,277,380;,
+    3;241,404,380;,
+    3;275,297,307;,
+    3;2,40,3;,
+    3;338,430,225;,
+    3;228,220,164;,
+    3;504,514,468;,
+    3;394,445,341;,
+    3;341,295,305;,
+    3;478,479,384;,
+    3;133,155,55;,
+    3;516,524,486;,
+    3;82,173,124;,
+    3;124,173,226;,
+    3;217,308,260;,
+    3;436,399,373;,
+    3;50,109,15;,
+    3;15,109,90;,
+    3;214,251,358;,
+    3;378,298,419;,
+    3;360,217,331;,
+    3;157,154,218;,
+    3;218,154,195;,
+    3;429,409,420;,
+    3;497,433,322;,
+    3;338,324,408;,
+    3;298,273,175;,
+    3;390,471,403;,
+    3;144,156,202;,
+    3;91,168,238;,
+    3;417,314,357;,
+    3;284,340,374;,
+    3;325,291,326;,
+    3;291,292,326;,
+    3;48,209,121;,
+    3;316,398,397;,
+    3;89,9,91;,
+    3;234,74,185;,
+    3;464,466,448;,
+    3;132,188,135;,
+    3;135,188,233;,
+    3;393,434,409;,
+    3;199,211,152;,
+    3;391,494,365;,
+    3;494,438,528;,
+    3;512,312,503;,
+    3;377,418,481;,
+    3;481,418,484;,
+    3;529,517,523;,
+    3;337,321,178;,
+    3;84,237,254;,
+    3;84,254,92;,
+    3;408,349,520;,
+    3;258,256,161;,
+    3;502,489,485;,
+    3;485,489,500;,
+    3;6,3,25;,
+    3;267,383,196;,
+    3;364,149,216;,
+    3;351,244,410;,
+    3;410,413,407;,
+    3;413,503,407;,
+    3;459,455,466;,
+    3;205,189,213;,
+    3;56,213,189;,
+    3;149,45,52;,
+    3;30,92,47;,
+    3;47,92,115;,
+    3;337,303,242;,
+    3;360,406,401;,
+    3;98,17,85;,
+    3;430,187,225;,
+    3;490,473,348;,
+    3;387,335,423;,
+    3;423,335,336;,
+    3;336,488,423;,
+    3;139,101,302;,
+    3;433,468,281;,
+    3;274,431,333;,
+    3;57,23,27;,
+    3;510,473,518;,
+    3;511,524,521;,
+    3;172,90,109;,
+    3;172,205,229;,
+    3;229,156,172;,
+    3;42,60,65;,
+    3;438,514,528;,
+    3;159,137,11;,
+    3;517,522,523;,
+    3;523,522,508;,
+    3;522,488,508;,
+    3;21,53,73;,
+    3;215,143,277;,
+    3;277,143,241;,
+    3;473,531,518;,
+    3;239,276,72;,
+    3;72,276,11;,
+    3;131,151,102;,
+    3;390,449,471;,
+    3;524,516,521;,
+    3;327,395,192;,
+    3;192,395,162;,
+    3;531,395,477;,
+    3;143,57,47;,
+    3;445,422,489;,
+    3;22,82,124;,
+    3;294,229,301;,
+    3;119,157,186;,
+    3;157,221,186;,
+    3;182,56,189;,
+    3;324,213,408;,
+    3;408,213,208;,
+    3;163,283,305;,
+    3;287,189,247;,
+    3;19,45,29;,
+    3;81,45,128;,
+    3;285,317,297;,
+    3;221,291,271;,
+    3;145,186,212;,
+    3;155,253,268;,
+    3;6,13,3;,
+    3;332,486,461;,
+    3;73,163,122;,
+    3;458,454,505;,
+    3;43,158,153;,
+    3;197,305,250;,
+    3;317,285,342;,
+    3;478,384,372;,
+    3;280,307,354;,
+    3;180,332,274;,
+    3;97,49,118;,
+    3;342,379,399;,
+    3;327,329,370;,
+    3;311,396,370;,
+    3;289,207,311;,
+    3;501,498,507;,
+    3;88,251,214;,
+    3;365,286,222;,
+    3;444,491,400;,
+    3;308,400,436;,
+    3;190,260,313;,
+    3;384,260,379;,
+    3;373,379,260;,
+    3;309,386,416;,
+    3;160,196,366;,
+    3;453,429,516;,
+    3;370,396,446;,
+    3;454,428,463;,
+    3;498,501,463;,
+    3;375,310,318;,
+    3;310,248,318;,
+    3;82,103,60;,
+    3;96,135,78;,
+    3;69,134,99;,
+    3;99,134,154;,
+    3;174,203,93;,
+    3;269,169,211;,
+    3;392,405,442;,
+    3;235,169,263;,
+    3;279,269,245;,
+    3;34,61,18;,
+    3;209,286,328;,
+    3;328,318,248;,
+    3;362,353,279;,
+    3;279,353,293;,
+    3;88,182,257;,
+    3;402,413,304;,
+    3;5,93,67;,
+    3;343,482,356;,
+    3;183,74,160;,
+    3;25,160,74;,
+    3;442,405,446;,
+    3;330,261,194;,
+    3;194,261,136;,
+    3;37,60,42;,
+    3;76,62,120;,
+    3;474,435,382;,
+    3;522,450,432;,
+    3;417,467,382;,
+    3;467,474,382;,
+    3;91,238,198;,
+    3;71,169,38;,
+    3;38,169,123;,
+    3;83,38,123;,
+    3;31,9,89;,
+    3;51,70,62;,
+    3;530,467,506;,
+    3;265,362,245;,
+    3;187,257,265;,
+    3;402,450,495;,
+    3;527,513,525;,
+    3;426,525,513;,
+    3;474,501,435;,
+    3;38,40,2;,
+    3;18,5,39;,
+    3;249,166,219;,
+    3;387,462,362;,
+    3;362,462,412;,
+    3;365,288,391;,
+    3;413,410,224;,
+    3;224,410,244;,
+    3;13,142,126;,
+    3;101,139,13;,
+    3;13,139,142;,
+    3;530,515,505;,
+    3;369,447,376;,
+    3;369,325,389;,
+    3;457,437,389;,
+    3;58,46,79;,
+    3;41,79,46;,
+    3;58,16,46;,
+    3;69,99,37;,
+    3;119,54,99;,
+    3;99,54,37;,
+    3;328,424,427;,
+    3;507,427,424;,
+    3;430,358,251;,
+    3;106,39,170;,
+    3;170,39,153;,
+    3;39,43,153;,
+    3;284,352,393;,
+    3;352,443,393;,
+    3;483,337,473;,
+    3;142,139,288;,
+    3;365,222,288;,
+    3;522,462,488;,
+    3;462,387,423;,
+    3;0,116,1;,
+    3;30,57,27;,
+    3;27,8,66;,
+    3;246,241,115;,
+    3;469,470,510;,
+    3;510,478,469;,
+    3;75,105,19;,
+    3;112,150,107;,
+    3;131,102,107;,
+    3;507,424,492;,
+    3;476,344,378;,
+    3;272,215,285;,
+    3;239,72,68;,
+    3;72,8,68;,
+    3;121,125,24;,
+    3;250,200,197;,
+    3;200,141,197;,
+    3;76,110,61;,
+    3;229,278,301;,
+    3;278,324,334;,
+    3;495,517,402;,
+    3;517,413,402;,
+    3;520,475,346;,
+    3;358,346,214;,
+    3;96,78,54;,
+    3;78,95,33;,
+    3;147,290,217;,
+    3;221,157,218;,
+    3;165,190,299;,
+    3;313,299,190;,
+    3;487,474,530;,
+    3;200,231,118;,
+    3;181,244,219;,
+    3;244,351,219;,
+    3;299,392,352;,
+    3;284,165,352;,
+    3;31,35,87;,
+    3;87,35,127;,
+    3;338,248,310;,
+    3;375,371,310;,
+    3;513,526,383;,
+    3;526,366,383;,
+    3;339,301,377;,
+    3;428,375,427;,
+    3;506,467,417;,
+    3;266,316,233;,
+    3;316,311,233;,
+    3;420,409,425;,
+    3;357,314,269;,
+    3;314,263,269;,
+    3;91,10,67;,
+    3;203,270,168;,
+    3;67,168,91;,
+    3;270,353,323;,
+    3;366,528,386;,
+    3;528,514,386;,
+    3;118,49,58;,
+    3;118,58,141;,
+    3;58,79,141;,
+    3;74,234,111;,
+    3;234,433,281;,
+    3;170,227,247;,
+    3;227,336,247;,
+    3;455,401,425;,
+    3;401,406,425;,
+    3;312,194,171;,
+    3;185,183,309;,
+    3;497,322,309;,
+    3;176,31,89;,
+    3;198,176,89;,
+    3;422,296,414;,
+    3;116,140,296;,
+    3;296,140,414;,
+    3;17,0,32;,
+    3;85,17,32;,
+    3;32,177,85;,
+    3;177,255,85;,
+    3;179,31,224;,
+    3;176,224,31;,
+    3;483,510,456;,
+    3;510,439,456;,
+    3;500,422,414;,
+    3;414,262,500;,
+    3;480,509,440;,
+    3;511,465,509;,
+    3;509,465,440;,
+    3;104,223,52;,
+    3;254,439,350;,
+    3;465,216,223;,
+    3;206,303,337;,
+    3;478,372,469;,
+    3;146,243,158;,
+    3;108,96,54;,
+    3;54,119,108;,
+    3;287,247,336;,
+    3;283,163,204;,
+    3;325,369,271;,
+    3;303,367,388;,
+    3;113,240,147;,
+    3;511,509,524;,
+    3;126,191,48;,
+    3;484,418,458;,
+    3;418,371,458;,
+    3;459,466,421;,
+    3;421,466,411;,
+    3;449,363,364;,
+    3;363,290,240;,
+    3;258,161,162;,
+    3;192,162,161;,
+    3;257,387,265;,
+    3;274,100,105;,
+    3;492,424,496;,
+    3;368,460,508;,
+    3;266,188,282;,
+    3;282,188,212;,
+    3;188,145,212;,
+    3;285,215,277;,
+    3;395,258,162;,
+    3;395,531,490;,
+    3;300,192,242;,
+    3;192,161,242;,
+    3;444,347,401;,
+    3;401,455,444;,
+    3;136,146,20;,
+    3;31,87,20;,
+    3;20,87,136;,
+    3;25,111,6;,
+    3;25,74,111;,
+    3;380,404,469;,
+    3;457,443,437;,
+    3;443,447,437;,
+    3;381,306,339;,
+    3;339,306,294;,
+    3;306,252,294;,
+    3;184,220,272;,
+    3;275,232,272;,
+    3;272,232,184;,
+    3;341,445,345;,
+    3;345,253,341;,
+    3;336,227,243;,
+    3;227,170,153;,
+    3;46,16,63;,
+    3;64,63,16;,
+    3;300,327,192;,
+    3;433,497,504;,
+    3;504,497,416;,
+    3;379,342,384;,
+    3;342,372,384;,
+    3;165,75,29;,
+    3;51,26,14;,
+    3;26,50,15;,
+    3;155,150,112;,
+    3;106,77,34;,
+    3;436,373,308;,
+    3;278,229,205;,
+    3;205,213,278;,
+    3;91,9,10;,
+    3;155,268,150;,
+    3;496,424,365;,
+    3;459,491,444;,
+    3;190,165,81;,
+    3;165,29,81;,
+    3;167,210,148;,
+    3;384,441,313;,
+    3;441,405,313;,
+    3;284,180,165;,
+    3;180,274,105;,
+    3;144,202,195;,
+    3;202,252,195;,
+    3;134,144,195;,
+    3;392,443,352;,
+    3;194,312,361;,
+    3;403,331,390;,
+    3;403,360,331;,
+    3;527,492,496;,
+    3;496,526,527;,
+    3;36,49,97;,
+    3;426,236,356;,
+    3;236,235,356;,
+    3;166,181,219;,
+    3;70,148,174;,
+    3;230,174,148;,
+    3;82,60,173;,
+    3;103,82,86;,
+    3;269,211,245;,
+    3;497,309,416;,
+    3;398,447,442;,
+    3;447,392,442;,
+    3;79,65,130;,
+    3;210,280,279;,
+    3;280,269,279;,
+    3;196,236,267;,
+    3;293,270,203;,
+    3;251,88,257;,
+    3;68,151,239;,
+    3;289,239,151;,
+    3;238,270,323;,
+    3;402,304,323;,
+    3;166,7,179;,
+    3;235,236,123;,
+    3;236,196,123;,
+    3;385,485,177;,
+    3;255,177,485;,
+    3;385,502,485;,
+    3;175,95,78;,
+    3;319,282,376;,
+    3;36,51,14;,
+    3;14,49,36;,
+    3;144,64,156;,
+    3;175,273,173;,
+    3;175,173,95;,
+    3;173,60,95;,
+    3;431,480,333;,
+    3;333,480,440;,
+    3;503,312,407;,
+    3;38,83,40;,
+    3;166,249,7;,
+    3;249,312,171;,
+    3;183,185,74;,
+    3;361,312,512;,
+    3;529,493,512;,
+    3;69,94,134;,
+    3;63,144,94;,
+    3;94,69,42;,
+    3;315,262,98;,
+    3;12,98,262;,
+    3;466,451,411;,
+    3;451,457,381;,
+    3;17,12,0;,
+    3;116,0,140;,
+    3;187,430,251;,
+    3;257,187,251;,
+    3;84,92,30;,
+    3;178,84,30;,
+    3;359,283,422;,
+    3;204,116,296;,
+    3;80,214,346;,
+    3;436,506,472;,
+    3;499,506,436;,
+    3;473,510,483;,
+    3;522,432,462;,
+    3;43,59,158;,
+    3;306,320,264;,
+    3;252,306,264;,
+    3;6,101,13;,
+    3;28,0,1;,
+    3;129,53,116;,
+    3;276,201,11;,
+    3;159,11,201;,
+    3;385,177,259;,
+    3;161,256,242;,
+    3;178,30,66;,
+    3;206,178,66;,
+    3;8,137,66;,
+    3;66,137,206;,
+    3;92,246,115;,
+    3;371,418,334;,
+    3;305,283,359;,
+    3;305,359,394;,
+    3;22,1,21;,
+    3;45,149,113;,
+    3;461,431,274;,
+    3;243,368,336;,
+    3;261,368,243;,
+    3;47,57,30;,
+    3;285,275,272;,
+    3;326,292,320;,
+    3;292,264,320;,
+    3;22,21,82;,
+    3;55,102,68;,
+    3;429,471,516;,
+    3;43,4,59;,
+    3;241,380,277;,
+    3;44,88,80;,
+    3;214,80,88;,
+    3;113,147,128;,
+    3;317,355,297;,
+    3;355,307,297;,
+    3;461,274,332;,
+    3;505,515,484;,
+    3;231,228,164;,
+    3;418,377,334;,
+    3;487,505,454;,
+    3;419,476,378;,
+    3;514,438,468;,
+    3;433,504,468;,
+    3;305,394,341;,
+    3;228,231,341;,
+    3;341,231,295;,
+    3;384,479,441;,
+    3;479,405,441;,
+    3;464,434,452;,
+    3;434,393,452;,
+    3;443,452,393;,
+    3;55,155,112;,
+    3;15,64,16;,
+    3;125,71,24;,
+    3;34,77,61;,
+    3;77,50,61;,
+    3;20,9,31;,
+    3;20,4,9;,
+    3;413,517,529;,
+    3;173,273,226;,
+    3;190,128,260;,
+    3;260,128,217;,
+    3;128,147,217;,
+    3;477,479,519;,
+    3;519,531,477;,
+    3;379,373,399;,
+    3;151,207,289;,
+    3;151,131,207;,
+    3;90,64,15;,
+    3;527,525,507;,
+    3;525,501,507;,
+    3;60,33,95;,
+    3;190,81,128;,
+    3;146,59,20;,
+    3;59,4,20;,
+    3;338,125,248;,
+    3;125,338,225;,
+    3;378,273,298;,
+    3;298,345,419;,
+    3;290,331,217;,
+    3;154,134,195;,
+    3;195,264,218;,
+    3;420,360,403;,
+    3;403,429,420;,
+    3;181,224,244;,
+    3;150,298,175;,
+    3;429,403,471;,
+    3;454,375,428;,
+    3;156,229,202;,
+    3;229,252,202;,
+    3;168,270,238;,
+    3;357,354,415;,
+    3;357,415,417;,
+    3;415,472,417;,
+    3;409,374,340;,
+    3;292,291,218;,
+    3;291,221,218;,
+    3;218,264,292;,
+    3;79,130,141;,
+    3;261,330,368;,
+    3;460,368,330;,
+    3;209,248,121;,
+    3;248,125,121;,
+    3;267,426,383;,
+    3;316,397,311;,
+    3;396,311,397;,
+    3;91,198,89;,
+    3;16,58,49;,
+    3;174,93,120;,
+    3;76,120,110;,
+    3;93,110,120;,
+    3;185,322,234;,
+    3;322,433,234;,
+    3;398,319,376;,
+    3;266,233,188;,
+    3;233,207,135;,
+    3;284,393,340;,
+    3;340,393,409;,
+    3;501,525,482;,
+    3;211,169,152;,
+    3;169,71,152;,
+    3;2,24,38;,
+    3;24,71,38;,
+    3;391,438,494;,
+    3;496,365,494;,
+    3;528,526,494;,
+    3;496,494,526;,
+    3;353,362,412;,
+    3;412,432,353;,
+    3;100,333,104;,
+    3;512,503,529;,
+    3;503,413,529;,
+    3;466,464,451;,
+    3;457,451,464;,
+    3;0,28,32;,
+    3;32,28,177;,
+    3;28,124,177;,
+    3;484,515,481;,
+    3;515,491,481;,
+    3;523,460,493;,
+    3;493,529,523;,
+    3;460,330,493;,
+    3;119,99,157;,
+    3;321,456,237;,
+    3;237,456,254;,
+    3;456,439,254;,
+    3;520,430,408;,
+    3;338,408,430;,
+    3;348,256,258;,
+    3;422,500,489;,
+    3;500,315,485;,
+    3;3,40,25;,
+    3;160,25,40;,
+    3;414,140,262;,
+    3;511,364,465;,
+    3;465,364,216;,
+    3;117,44,80;,
+    3;407,351,410;,
+    3;117,349,44;,
+    3;515,530,491;,
+    3;448,466,455;,
+    3;205,172,189;,
+    3;455,425,448;,
+    3;464,448,434;,
+    3;425,434,448;,
+    3;52,223,216;,
+    3;216,149,52;,
+    3;45,19,104;,
+    3;104,19,100;,
+    3;19,105,100;,
+    3;115,114,47;,
+    3;242,256,337;,
+    3;360,401,347;,
+    3;85,315,98;,
+    3;71,125,138;,
+    3;138,125,187;,
+    3;125,225,187;,
+    3;449,364,511;,
+    3;348,258,490;,
+    3;395,490,258;,
+    3;145,132,108;,
+    3;108,132,96;,
+    3;502,476,489;,
+    3;287,336,335;,
+    3;252,264,195;,
+    3;316,266,319;,
+    3;398,316,319;,
+    3;468,438,281;,
+    3;438,302,281;,
+    3;302,101,281;,
+    3;476,502,385;,
+    3;177,124,259;,
+    3;124,226,259;,
+    3;226,344,259;,
+    3;100,274,333;,
+    3;55,23,133;,
+    3;57,133,23;,
+    3;27,23,8;,
+    3;55,8,23;,
+    3;510,518,478;,
+    3;521,449,511;,
+    3;256,348,473;,
+    3;257,335,387;,
+    3;159,201,367;,
+    3;276,367,201;,
+    3;64,90,156;,
+    3;156,90,172;,
+    3;303,388,300;,
+    3;350,404,246;,
+    3;404,241,246;,
+    3;350,439,470;,
+    3;470,404,350;,
+    3;524,509,461;,
+    3;461,509,431;,
+    3;509,480,431;,
+    3;79,41,65;,
+    3;42,65,41;,
+    3;381,339,411;,
+    3;159,367,137;,
+    3;303,137,367;,
+    3;137,8,11;,
+    3;290,363,390;,
+    3;390,363,449;,
+    3;460,523,508;,
+    3;163,73,53;,
+    3;445,476,419;,
+    3;132,145,188;,
+    3;143,114,241;,
+    3;519,518,531;,
+    3;519,478,518;,
+    3;8,72,11;,
+    3;449,521,471;,
+    3;516,471,521;,
+    3;527,507,492;,
+    3;327,477,395;,
+    3;47,114,143;,
+    3;476,445,489;,
+    3;359,422,394;,
+    3;445,394,422;,
+    3;301,339,294;,
+    3;229,294,252;,
+    3;228,133,215;,
+    3;145,119,186;,
+    3;287,182,189;,
+    3;56,182,88;,
+    3;479,478,519;,
+    3;44,349,208;,
+    3;208,349,408;,
+    3;197,163,305;,
+    3;172,193,189;,
+    3;189,193,247;,
+    3;193,170,247;,
+    3;172,109,193;,
+    3;193,109,106;,
+    3;106,170,193;,
+    3;143,215,57;,
+    3;215,133,57;,
+    3;45,81,29;,
+    3;75,19,29;,
+    3;113,128,45;,
+    3;275,285,297;,
+    3;155,133,253;,
+    3;133,228,253;,
+    3;526,528,366;,
+    3;215,220,228;,
+    3;445,419,345;,
+    3;464,452,457;,
+    3;443,457,452;,
+    3;325,271,291;,
+    3;221,271,186;,
+    3;282,212,271;,
+    3;271,212,186;,
+    3;345,268,253;,
+    3;48,13,126;,
+    3;3,13,2;,
+    3;48,2,13;,
+    3;332,374,486;,
+    3;524,461,486;,
+    3;220,184,164;,
+    3;163,197,122;,
+    3;458,375,454;,
+    3;144,63,64;,
+    3;327,300,329;,
+    3;300,388,329;,
+    3;388,239,329;,
+    3;295,250,305;,
+    3;295,231,250;,
+    3;231,200,250;,
+    3;339,377,421;,
+    3;76,50,26;,
+    3;50,77,109;,
+    3;77,106,109;,
+    3;210,232,280;,
+    3;232,275,280;,
+    3;280,275,307;,
+    3;355,354,307;,
+    3;210,167,232;,
+    3;317,399,355;,
+    3;436,415,399;,
+    3;399,415,355;,
+    3;86,122,130;,
+    3;197,130,122;,
+    3;86,73,122;,
+    3;180,284,332;,
+    3;284,374,332;,
+    3;118,231,164;,
+    3;164,184,118;,
+    3;184,97,118;,
+    3;317,342,399;,
+    3;329,289,370;,
+    3;370,289,311;,
+    3;5,10,4;,
+    3;10,9,4;,
+    3;4,43,5;,
+    3;427,498,428;,
+    3;427,507,498;,
+    3;421,377,481;,
+    3;481,491,421;,
+    3;491,459,421;,
+    3;150,268,298;,
+    3;345,298,268;,
+    3;324,338,334;,
+    3;286,209,191;,
+    3;126,222,191;,
+    3;191,222,286;,
+    3;48,191,209;,
+    3;424,286,365;,
+    3;400,308,347;,
+    3;444,400,347;,
+    3;400,491,499;,
+    3;499,436,400;,
+    3;384,313,260;,
+    3;308,373,260;,
+    3;160,366,386;,
+    3;386,309,183;,
+    3;160,386,183;,
+    3;196,383,366;,
+    3;304,198,238;,
+    3;304,413,198;,
+    3;224,176,413;,
+    3;198,413,176;,
+    3;516,486,453;,
+    3;486,374,453;,
+    3;477,446,479;,
+    3;405,479,446;,
+    3;477,327,446;,
+    3;475,520,349;,
+    3;327,370,446;,
+    3;463,474,487;,
+    3;487,454,463;,
+    3;501,474,463;,
+    3;428,498,463;,
+    3;210,230,148;,
+    3;374,409,453;,
+    3;409,429,453;,
+    3;357,269,280;,
+    3;280,354,357;,
+    3;135,131,107;,
+    3;107,150,135;,
+    3;150,78,135;,
+    3;99,154,157;,
+    3;314,343,263;,
+    3;343,235,263;,
+    3;362,279,245;,
+    3;308,217,347;,
+    3;347,217,360;,
+    3;110,93,61;,
+    3;61,93,18;,
+    3;93,5,18;,
+    3;424,328,286;,
+    3;248,209,328;,
+    3;230,279,293;,
+    3;353,270,293;,
+    3;287,335,182;,
+    3;335,257,182;,
+    3;179,224,181;,
+    3;181,166,179;,
+    3;203,67,93;,
+    3;525,426,482;,
+    3;482,426,356;,
+    3;381,457,389;,
+    3;326,320,389;,
+    3;389,320,381;,
+    3;44,56,88;,
+    3;56,44,208;,
+    3;213,56,208;,
+    3;392,447,443;,
+    3;396,397,446;,
+    3;446,397,442;,
+    3;398,442,397;,
+    3;87,194,136;,
+    3;261,146,136;,
+    3;42,69,37;,
+    3;54,33,37;,
+    3;60,37,33;,
+    3;174,120,70;,
+    3;70,120,62;,
+    3;314,382,343;,
+    3;435,343,382;,
+    3;132,135,96;,
+    3;432,450,323;,
+    3;450,402,323;,
+    3;530,499,491;,
+    3;382,314,417;,
+    3;196,83,123;,
+    3;76,26,62;,
+    3;26,51,62;,
+    3;315,255,485;,
+    3;49,14,16;,
+    3;245,199,265;,
+    3;199,138,265;,
+    3;138,187,265;,
+    3;398,376,447;,
+    3;450,522,495;,
+    3;522,517,495;,
+    3;527,526,513;,
+    3;501,482,435;,
+    3;482,343,435;,
+    3;223,104,440;,
+    3;71,138,152;,
+    3;199,152,138;,
+    3;5,43,39;,
+    3;34,18,39;,
+    3;106,34,39;,
+    3;407,249,351;,
+    3;219,351,249;,
+    3;407,312,249;,
+    3;462,432,412;,
+    3;22,124,28;,
+    3;139,302,288;,
+    3;288,302,391;,
+    3;302,438,391;;
+   }
+
+   MeshTextureCoords {
+    980;
+    0.590991;-0.211871;,
+    0.163690;-0.391412;,
+    0.352114;-0.705394;,
+    0.525307;-0.535102;,
+    0.277071;-0.140945;,
+    0.557159;-0.522099;,
+    0.866311;-0.476494;,
+    0.535079;-0.500255;,
+    0.112611;-0.862063;,
+    0.604873;-0.215109;,
+    0.152638;-0.788293;,
+    0.413968;-0.370644;,
+    0.612453;-0.255264;,
+    0.880796;-0.911147;,
+    0.558026;-0.594530;,
+    0.108041;-0.461897;,
+    0.628352;-0.841861;,
+    0.053613;-0.365323;,
+    0.020179;-0.311502;,
+    0.558851;-0.449072;,
+    0.019460;-0.047489;,
+    0.350620;-0.179252;,
+    0.664067;-0.853672;,
+    0.471691;-0.129124;,
+    0.192895;-0.534648;,
+    0.333241;-0.527343;,
+    0.755425;-0.467074;,
+    0.339363;-0.508404;,
+    0.576122;-0.910604;,
+    0.379099;-0.316689;,
+    0.072841;-0.205396;,
+    0.773093;-0.500572;,
+    0.658020;-0.953440;,
+    0.397176;-0.215262;,
+    0.033722;-0.035279;,
+    0.558717;-0.127397;,
+    0.424249;-0.457714;,
+    0.346826;-0.301532;,
+    0.253401;-0.661617;,
+    0.138180;-0.657165;,
+    0.143781;-0.760911;,
+    0.687239;-0.971100;,
+    0.477981;-0.162346;,
+    0.322624;-0.341418;,
+    0.513280;-0.687690;,
+    0.284130;-0.101331;,
+    0.539682;-0.577197;,
+    0.361772;-0.714270;,
+    0.744561;-0.857440;,
+    0.146506;-0.337863;,
+    0.364934;-0.524094;,
+    0.532331;-0.664869;,
+    0.601571;-0.386972;,
+    0.140175;-0.395019;,
+    0.236952;-0.537313;,
+    0.383714;-0.344499;,
+    0.436462;-0.783380;,
+    0.061453;-0.239855;,
+    0.146017;-0.699443;,
+    0.062081;-0.741392;,
+    0.067169;-0.329910;,
+    0.565006;-0.681551;,
+    0.125173;-0.488715;,
+    0.076837;-0.794144;,
+    0.161735;-0.842984;,
+    0.808106;-0.494634;,
+    0.340506;-0.708376;,
+    0.564490;-0.342763;,
+    0.534425;-0.356190;,
+    0.049063;-0.081942;,
+    0.551235;-0.498899;,
+    0.102802;-0.266103;,
+    0.084066;-0.251986;,
+    0.378341;-0.387611;,
+    0.672947;-0.700824;,
+    0.433899;-0.476864;,
+    0.733174;-0.933263;,
+    0.139547;-0.451157;,
+    0.117498;-0.858947;,
+    0.507367;-0.729323;,
+    0.388380;-0.603115;,
+    0.353411;-0.553882;,
+    0.114066;-0.558273;,
+    0.257216;-0.721171;,
+    0.412646;-0.187339;,
+    0.169936;-0.399473;,
+    0.379275;-0.577318;,
+    0.368367;-0.200201;,
+    0.018490;-0.076175;,
+    0.439696;-0.055186;,
+    0.157073;-0.800999;,
+    0.033291;-0.686710;,
+    0.412999;-0.390777;,
+    0.447027;-0.704475;,
+    0.237361;-0.705661;,
+    0.261278;-0.854400;,
+    0.651072;-0.850206;,
+    0.565703;-0.283530;,
+    0.144059;-0.361658;,
+    0.535828;-0.728507;,
+    0.236163;-0.504780;,
+    0.117673;-0.366831;,
+    0.030306;-0.287495;,
+    0.042488;-0.229778;,
+    0.460718;-0.803448;,
+    0.414480;-0.274733;,
+    0.562253;-0.230784;,
+    0.423798;-0.161145;,
+    0.084951;-0.283084;,
+    0.229857;-0.820081;,
+    0.050045;-0.031219;,
+    0.753837;-0.558812;,
+    0.634410;-0.945628;,
+    0.076258;-0.122944;,
+    0.282449;-0.034464;,
+    0.557421;-0.172270;,
+    0.472371;-0.487957;,
+    0.296094;-0.074550;,
+    0.538211;-0.114123;,
+    0.667534;-0.752637;,
+    0.134438;-0.731017;,
+    0.066355;-0.151432;,
+    0.558582;-0.251349;,
+    0.482849;-0.170729;,
+    0.527533;-0.728338;,
+    0.443315;-0.042000;,
+    0.183960;-0.682644;,
+    0.693851;-0.981830;,
+    0.042365;-0.249857;,
+    0.418039;-0.397242;,
+    0.419863;-0.403844;,
+    0.427700;-0.375607;,
+    0.438567;-0.381195;,
+    0.591934;-0.286991;,
+    0.569219;-0.265386;,
+    0.587846;-0.270879;,
+    0.603709;-0.334892;,
+    0.331397;-0.361714;,
+    0.594545;-0.361332;,
+    0.459954;-0.139667;,
+    0.465392;-0.170236;,
+    0.245658;-0.719844;,
+    0.303210;-0.170276;,
+    0.292419;-0.153698;,
+    0.549100;-0.571643;,
+    0.549522;-0.584895;,
+    0.635105;-0.938613;,
+    0.176313;-0.370125;,
+    0.182097;-0.374614;,
+    0.452023;-0.047939;,
+    0.450706;-0.063971;,
+    0.110874;-0.589755;,
+    0.837968;-0.870977;,
+    0.826690;-0.855752;,
+    0.834090;-0.858397;,
+    0.758073;-0.868677;,
+    0.166263;-0.343043;,
+    0.160889;-0.360036;,
+    0.540826;-0.698238;,
+    0.347082;-0.531856;,
+    0.341936;-0.540019;,
+    0.005352;-0.840110;,
+    0.013526;-0.830099;,
+    0.016487;-0.832676;,
+    0.052121;-0.132921;,
+    0.239848;-0.519213;,
+    0.223968;-0.533766;,
+    0.743167;-0.485613;,
+    0.580997;-0.943712;,
+    0.529809;-0.529430;,
+    0.434444;-0.131984;,
+    0.067184;-0.768800;,
+    0.071218;-0.758298;,
+    0.088266;-0.784339;,
+    0.570362;-0.205965;,
+    0.387238;-0.243803;,
+    0.408490;-0.233159;,
+    0.131520;-0.542863;,
+    0.694959;-0.704489;,
+    0.251593;-0.747727;,
+    0.243542;-0.761850;,
+    0.248586;-0.731631;,
+    0.557753;-0.364120;,
+    0.878119;-0.471806;,
+    0.375438;-0.369154;,
+    0.868431;-0.451000;,
+    0.531187;-0.284825;,
+    0.540713;-0.269392;,
+    0.788830;-0.915361;,
+    0.866610;-0.437930;,
+    0.454730;-0.787097;,
+    0.116042;-0.861408;,
+    0.426507;-0.202983;,
+    0.431603;-0.180155;,
+    0.068350;-0.087611;,
+    0.063666;-0.104807;,
+    0.398270;-0.272666;,
+    0.041976;-0.192766;,
+    0.446874;-0.181609;,
+    0.083350;-0.224088;,
+    0.555567;-0.471243;,
+    0.092342;-0.327293;,
+    0.086969;-0.312209;,
+    0.445857;-0.473599;,
+    0.545993;-0.128049;,
+    0.553523;-0.107220;,
+    0.542921;-0.110773;,
+    0.712519;-0.632595;,
+    0.081997;-0.331080;,
+    0.691362;-0.952214;,
+    0.709350;-0.941002;,
+    0.711006;-0.953652;,
+    0.322063;-0.162142;,
+    0.305303;-0.148821;,
+    0.073469;-0.320749;,
+    0.302691;-0.777672;,
+    0.088691;-0.462089;,
+    0.795751;-0.953691;,
+    0.387549;-0.585732;,
+    0.395323;-0.591033;,
+    0.571115;-0.043651;,
+    0.569505;-0.027694;,
+    0.020898;-0.661382;,
+    0.369345;-0.565545;,
+    0.380592;-0.558708;,
+    0.238429;-0.827479;,
+    0.138068;-0.735462;,
+    0.184497;-0.340994;,
+    0.194824;-0.345787;,
+    0.679479;-0.797458;,
+    0.680066;-0.793999;,
+    0.510403;-0.709946;,
+    0.768764;-0.824414;,
+    0.762208;-0.844224;,
+    0.685079;-0.788495;,
+    0.654695;-0.807552;,
+    0.816645;-0.440310;,
+    0.148734;-0.351150;,
+    0.300051;-0.122295;,
+    0.590204;-0.378906;,
+    0.609181;-0.373780;,
+    0.104871;-0.577840;,
+    0.027475;-0.704071;,
+    0.394579;-0.412804;,
+    0.395265;-0.401476;,
+    0.271384;-0.862844;,
+    0.526664;-0.662733;,
+    0.657080;-0.823912;,
+    0.439680;-0.104888;,
+    0.184469;-0.714253;,
+    0.269896;-0.866089;,
+    0.539353;-0.542714;,
+    0.626996;-0.833129;,
+    0.320088;-0.824935;,
+    0.310847;-0.835680;,
+    0.131728;-0.617695;,
+    0.123229;-0.618641;,
+    0.111731;-0.607881;,
+    0.566350;-0.688998;,
+    0.042308;-0.108669;,
+    0.109469;-0.568056;,
+    0.118011;-0.564515;,
+    0.115735;-0.576074;,
+    0.540192;-0.445843;,
+    0.368482;-0.409326;,
+    0.759013;-0.875487;,
+    0.172608;-0.838984;,
+    0.151905;-0.403865;,
+    0.211481;-0.527952;,
+    0.566704;-0.565871;,
+    0.041379;-0.307268;,
+    0.287588;-0.061312;,
+    0.179322;-0.667527;,
+    0.802624;-0.449529;,
+    0.433222;-0.395075;,
+    0.412894;-0.304965;,
+    0.398389;-0.328688;,
+    0.394096;-0.299272;,
+    0.739427;-0.507695;,
+    0.759340;-0.494596;,
+    0.759772;-0.522698;,
+    0.691656;-0.454328;,
+    0.684035;-0.447107;,
+    0.590860;-0.250070;,
+    0.605887;-0.271286;,
+    0.564782;-0.547165;,
+    0.164322;-0.848234;,
+    0.566926;-0.527742;,
+    0.732388;-0.915609;,
+    0.560735;-0.675551;,
+    0.569964;-0.241665;,
+    0.575812;-0.224182;,
+    0.593306;-0.232726;,
+    0.584663;-0.173319;,
+    0.589941;-0.193193;,
+    0.436542;-0.211586;,
+    0.093137;-0.253764;,
+    0.337295;-0.479126;,
+    0.355843;-0.492707;,
+    0.536722;-0.242090;,
+    0.097926;-0.297981;,
+    0.369174;-0.229196;,
+    0.381222;-0.213928;,
+    0.271642;-0.105496;,
+    0.695375;-0.436881;,
+    0.045163;-0.288423;,
+    0.558945;-0.665650;,
+    0.113427;-0.313859;,
+    0.775269;-0.551140;,
+    0.748736;-0.530080;,
+    0.861386;-0.442704;,
+    0.101574;-0.360120;,
+    0.575456;-0.683434;,
+    0.364527;-0.299249;,
+    0.297868;-0.027421;,
+    0.860741;-0.943370;,
+    0.861471;-0.935828;,
+    0.349383;-0.722109;,
+    0.551261;-0.235988;,
+    0.475752;-0.518241;,
+    0.466123;-0.533351;,
+    0.457942;-0.498232;,
+    0.771635;-0.910096;,
+    0.727121;-0.584237;,
+    0.545700;-0.218063;,
+    0.534966;-0.224638;,
+    0.100266;-0.238209;,
+    0.219804;-0.506705;,
+    0.150342;-0.842772;,
+    0.339601;-0.456400;,
+    0.242227;-0.657525;,
+    0.251436;-0.647958;,
+    0.289361;-0.030096;,
+    0.049310;-0.869232;,
+    0.051993;-0.407854;,
+    0.046309;-0.020686;,
+    0.086053;-0.802459;,
+    0.097744;-0.323115;,
+    0.472920;-0.565191;,
+    0.718818;-0.609993;,
+    0.539907;-0.132274;,
+    0.694367;-0.657512;,
+    0.686535;-0.708378;,
+    0.213456;-0.565336;,
+    0.454981;-0.678977;,
+    0.546466;-0.353232;,
+    0.358799;-0.268855;,
+    0.532397;-0.475440;,
+    0.683904;-0.795412;,
+    0.683017;-0.793024;,
+    0.124088;-0.458926;,
+    0.148074;-0.715025;,
+    0.794472;-0.937403;,
+    0.050988;-0.873079;,
+    0.699869;-0.925676;,
+    0.100802;-0.471252;,
+    0.340545;-0.331009;,
+    0.333989;-0.314849;,
+    0.321043;-0.320360;,
+    0.369677;-0.588520;,
+    0.381512;-0.593534;,
+    0.433725;-0.318319;,
+    0.444247;-0.342814;,
+    0.425745;-0.339148;,
+    0.168323;-0.803465;,
+    0.753343;-0.822609;,
+    0.549508;-0.608378;,
+    0.202255;-0.350372;,
+    0.557861;-0.612357;,
+    0.023544;-0.681886;,
+    0.042475;-0.714480;,
+    0.236207;-0.765377;,
+    0.568002;-0.962342;,
+    0.076097;-0.251399;,
+    0.066760;-0.275706;,
+    0.124414;-0.595008;,
+    0.698378;-0.653399;,
+    0.287741;-0.132730;,
+    0.276983;-0.111156;,
+    0.360221;-0.535579;,
+    0.818549;-0.822686;,
+    0.208002;-0.552815;,
+    0.751652;-0.847425;,
+    0.043301;-0.707935;,
+    0.070671;-0.738058;,
+    0.352243;-0.516560;,
+    0.540867;-0.721284;,
+    0.540424;-0.768822;,
+    0.412540;-0.345299;,
+    0.397853;-0.364392;,
+    0.072471;-0.226074;,
+    0.162918;-0.669595;,
+    0.004132;-0.847174;,
+    0.632591;-0.868414;,
+    0.619201;-0.865017;,
+    0.233340;-0.727831;,
+    0.239265;-0.746943;,
+    0.551582;-0.658358;,
+    0.789577;-0.501926;,
+    0.783280;-0.521940;,
+    0.164489;-0.699567;,
+    0.436703;-0.112846;,
+    0.660806;-0.866055;,
+    0.431596;-0.234483;,
+    0.414411;-0.172863;,
+    0.515097;-0.291732;,
+    0.723149;-0.465426;,
+    0.419676;-0.244677;,
+    0.054460;-0.211842;,
+    0.038606;-0.206299;,
+    0.481577;-0.014863;,
+    0.078433;-0.745747;,
+    0.117333;-0.349145;,
+    0.856911;-0.429806;,
+    0.047009;-0.346033;,
+    0.709776;-0.429036;,
+    0.430669;-0.134719;,
+    0.571825;-0.180563;,
+    0.647895;-0.865116;,
+    0.571960;-0.062699;,
+    0.589460;-0.041526;,
+    0.312566;-0.043051;,
+    0.309315;-0.040827;,
+    0.861394;-0.464472;,
+    0.166450;-0.837676;,
+    0.110427;-0.297441;,
+    0.545328;-0.522496;,
+    0.606519;-0.230698;,
+    0.584870;-0.340949;,
+    0.253491;-0.502284;,
+    0.252768;-0.516819;,
+    0.341959;-0.349207;,
+    0.363007;-0.336865;,
+    0.605508;-0.881038;,
+    0.662440;-0.932714;,
+    0.055266;-0.867815;,
+    0.393871;-0.195575;,
+    0.782461;-0.909656;,
+    0.153282;-0.452881;,
+    0.378985;-0.279354;,
+    0.092349;-0.227604;,
+    0.643315;-0.942070;,
+    0.398184;-0.384161;,
+    0.306266;-0.055807;,
+    0.448744;-0.112014;,
+    0.440115;-0.150898;,
+    0.080935;-0.408416;,
+    0.113158;-0.825621;,
+    0.078972;-0.415567;,
+    0.661129;-0.684814;,
+    0.556888;-0.206082;,
+    0.683378;-0.601054;,
+    0.574284;-0.448715;,
+    0.039777;-0.321625;,
+    0.034659;-0.331790;,
+    0.074499;-0.160191;,
+    0.260858;-0.663347;,
+    0.016077;-0.058604;,
+    0.026543;-0.070136;,
+    0.134063;-0.609080;,
+    0.499518;-0.783068;,
+    0.448734;-0.360786;,
+    0.368060;-0.538118;,
+    0.198522;-0.562251;,
+    0.428057;-0.258709;,
+    0.041191;-0.270537;,
+    0.312161;-0.060374;,
+    0.096117;-0.481181;,
+    0.447755;-0.673783;,
+    0.356923;-0.582714;,
+    0.765096;-0.806452;,
+    0.166439;-0.412071;,
+    0.442519;-0.647734;,
+    0.644842;-0.821533;,
+    0.136479;-0.469010;,
+    0.408592;-0.825182;,
+    0.346077;-0.194388;,
+    0.523122;-0.445674;,
+    0.573843;-0.379698;,
+    0.438935;-0.702972;,
+    0.347223;-0.168247;,
+    0.703932;-0.973735;,
+    0.582373;-0.916636;,
+    0.154098;-0.374894;,
+    0.639009;-0.847355;,
+    0.345582;-0.222179;,
+    0.039838;-0.058947;,
+    0.817886;-0.809908;,
+    0.129021;-0.557658;,
+    0.074917;-0.736330;,
+    0.739041;-0.867088;,
+    0.130189;-0.380833;,
+    0.057063;-0.126417;,
+    0.176153;-0.832144;,
+    0.720267;-0.432184;,
+    0.352115;-0.377138;,
+    0.367985;-0.399428;,
+    0.357133;-0.187292;,
+    0.381533;-0.195107;,
+    0.316547;-0.187963;,
+    0.302341;-0.194696;,
+    0.533600;-0.685606;,
+    0.763663;-0.880383;,
+    0.703426;-0.442989;,
+    0.515515;-0.278880;,
+    0.332707;-0.491088;,
+    0.801196;-0.468126;,
+    0.428059;-0.283230;,
+    0.117489;-0.823760;,
+    0.567262;-0.495419;,
+    0.475422;-0.177063;,
+    0.458201;-0.102098;,
+    0.060697;-0.285154;,
+    0.062676;-0.293112;,
+    0.047753;-0.042637;,
+    0.469664;-0.609608;,
+    0.663115;-0.717520;,
+    0.633655;-0.880499;,
+    0.096535;-0.387366;,
+    0.057652;-0.196588;,
+    0.453616;-0.160502;,
+    0.697883;-0.592542;,
+    0.070439;-0.391675;,
+    0.088032;-0.210513;,
+    0.751292;-0.580762;,
+    0.562577;-0.154207;,
+    0.556284;-0.218978;,
+    0.469815;-0.477117;,
+    0.457666;-0.465062;,
+    0.141020;-0.554681;,
+    0.129500;-0.772338;,
+    0.579163;-0.150837;,
+    0.444908;-0.795411;,
+    0.550750;-0.283591;,
+    0.240199;-0.839990;,
+    0.458961;-0.658391;,
+    0.571398;-0.583382;,
+    0.038218;-0.735741;,
+    0.024617;-0.712854;,
+    0.348985;-0.700579;,
+    0.441277;-0.219313;,
+    0.533135;-0.551912;,
+    0.551180;-0.556441;,
+    0.641473;-0.817826;,
+    0.628784;-0.827011;,
+    0.195485;-0.641338;,
+    0.176309;-0.649655;,
+    0.806365;-0.444299;,
+    0.528148;-0.234832;,
+    0.515628;-0.264214;,
+    0.582887;-0.673847;,
+    0.429796;-0.789275;,
+    0.583717;-0.022317;,
+    0.577960;-0.005425;,
+    0.582623;-0.015096;,
+    0.324032;-0.460612;,
+    0.079153;-0.803536;,
+    0.483592;-0.547894;,
+    0.687486;-0.618657;,
+    0.527717;-0.522992;,
+    0.128320;-0.793782;,
+    0.120741;-0.780142;,
+    0.565200;-0.428760;,
+    0.506215;-0.791325;,
+    0.495889;-0.793799;,
+    0.147886;-0.832203;,
+    0.141361;-0.834436;,
+    0.776793;-0.939481;,
+    0.772410;-0.924861;,
+    0.086928;-0.481295;,
+    0.087809;-0.471692;,
+    0.319463;-0.299301;,
+    0.331801;-0.295385;,
+    0.368097;-0.605874;,
+    0.566032;-0.606762;,
+    0.233274;-0.779945;,
+    0.243045;-0.776741;,
+    0.337498;-0.544321;,
+    0.265393;-0.020084;,
+    0.273303;-0.016498;,
+    0.518084;-0.529238;,
+    0.778293;-0.880274;,
+    0.772584;-0.876745;,
+    0.138608;-0.328507;,
+    0.137647;-0.333742;,
+    0.155118;-0.735171;,
+    0.405362;-0.184912;,
+    0.507141;-0.297193;,
+    0.503578;-0.283067;,
+    0.486409;-0.014002;,
+    0.479432;-0.020785;,
+    0.083644;-0.742690;,
+    0.721774;-0.416091;,
+    0.197178;-0.516846;,
+    0.331312;-0.746351;,
+    0.323270;-0.730854;,
+    0.645110;-0.936285;,
+    0.653234;-0.928198;,
+    0.724223;-0.915961;,
+    0.404280;-0.201583;,
+    0.256418;-0.484153;,
+    0.609294;-0.861840;,
+    0.675530;-0.656600;,
+    0.554931;-0.079292;,
+    0.712267;-0.918587;,
+    0.635800;-0.931598;,
+    0.259528;-0.653737;,
+    0.756951;-0.794886;,
+    0.764696;-0.791574;,
+    0.888126;-0.902427;,
+    0.876818;-0.910923;,
+    0.316855;-0.835977;,
+    0.479028;-0.572170;,
+    0.463133;-0.583905;,
+    0.541378;-0.779468;,
+    0.530944;-0.787830;,
+    0.534464;-0.773199;,
+    0.329638;-0.754957;,
+    0.178900;-0.808089;,
+    0.174971;-0.797026;,
+    0.160942;-0.414538;,
+    0.343825;-0.157242;,
+    0.328008;-0.147121;,
+    0.321338;-0.147102;,
+    0.724018;-0.950714;,
+    0.529765;-0.731051;,
+    0.573973;-0.925383;,
+    0.338027;-0.237263;,
+    0.328400;-0.218024;,
+    0.602595;-0.309010;,
+    0.588489;-0.316517;,
+    0.581303;-0.298222;,
+    0.829932;-0.835995;,
+    0.120215;-0.513509;,
+    0.118911;-0.546344;,
+    0.747785;-0.877351;,
+    0.585729;-0.949366;,
+    0.576934;-0.958597;,
+    0.573448;-0.950786;,
+    0.024501;-0.817685;,
+    0.029509;-0.820635;,
+    0.171164;-0.832369;,
+    0.725021;-0.866701;,
+    0.738620;-0.850076;,
+    0.424331;-0.728985;,
+    0.428907;-0.698350;,
+    0.182224;-0.541041;,
+    0.341205;-0.388830;,
+    0.785288;-0.479672;,
+    0.349328;-0.403836;,
+    0.331342;-0.500814;,
+    0.031863;-0.210587;,
+    0.052624;-0.757784;,
+    0.823616;-0.431624;,
+    0.836598;-0.449934;,
+    0.785718;-0.545428;,
+    0.644123;-0.961555;,
+    0.654035;-0.964049;,
+    0.653836;-0.977482;,
+    0.120305;-0.316885;,
+    0.124119;-0.818417;,
+    0.118883;-0.826820;,
+    0.109107;-0.838456;,
+    0.113647;-0.835222;,
+    0.105793;-0.847825;,
+    0.465962;-0.085534;,
+    0.080609;-0.295265;,
+    0.855463;-0.453274;,
+    0.831087;-0.464826;,
+    0.851732;-0.473170;,
+    0.299932;-0.826949;,
+    0.290057;-0.835044;,
+    0.293118;-0.823178;,
+    0.456766;-0.613462;,
+    0.615742;-0.885340;,
+    0.107436;-0.401410;,
+    0.096706;-0.406560;,
+    0.051622;-0.186666;,
+    0.064071;-0.185655;,
+    0.349364;-0.451508;,
+    0.553489;-0.391206;,
+    0.417674;-0.465079;,
+    0.073440;-0.369312;,
+    0.095498;-0.370987;,
+    0.779965;-0.581019;,
+    0.766948;-0.583842;,
+    0.749002;-0.599854;,
+    0.742384;-0.591046;,
+    0.226620;-0.717101;,
+    0.690547;-0.737820;,
+    0.550699;-0.154179;,
+    0.086165;-0.163033;,
+    0.080872;-0.140626;,
+    0.152782;-0.651948;,
+    0.158158;-0.670273;,
+    0.467258;-0.466276;,
+    0.142972;-0.565021;,
+    0.450146;-0.454004;,
+    0.456623;-0.455541;,
+    0.236080;-0.677472;,
+    0.229730;-0.661095;,
+    0.248600;-0.696826;,
+    0.136215;-0.530712;,
+    0.076597;-0.183813;,
+    0.463402;-0.043446;,
+    0.679686;-0.751340;,
+    0.668986;-0.761089;,
+    0.195287;-0.667459;,
+    0.190357;-0.694954;,
+    0.199794;-0.643248;,
+    0.320678;-0.355339;,
+    0.318674;-0.365098;,
+    0.284485;-0.163691;,
+    0.076552;-0.341558;,
+    0.062564;-0.352835;,
+    0.065990;-0.341049;,
+    0.446934;-0.028813;,
+    0.822350;-0.859848;,
+    0.826194;-0.843643;,
+    0.138822;-0.357472;,
+    0.546555;-0.705052;,
+    0.006572;-0.833047;,
+    0.053374;-0.155115;,
+    0.046090;-0.129805;,
+    0.531065;-0.536619;,
+    0.076976;-0.765946;,
+    0.090205;-0.764293;,
+    0.877100;-0.439594;,
+    0.787489;-0.901620;,
+    0.798944;-0.916967;,
+    0.471585;-0.798730;,
+    0.272386;-0.036831;,
+    0.265550;-0.025771;,
+    0.055852;-0.064345;,
+    0.462287;-0.189626;,
+    0.574101;-0.474591;,
+    0.429744;-0.451960;,
+    0.446629;-0.460962;,
+    0.697130;-0.635306;,
+    0.065738;-0.309538;,
+    0.818432;-0.964534;,
+    0.810010;-0.971656;,
+    0.045271;-0.876461;,
+    0.050949;-0.862172;,
+    0.564674;-0.040202;,
+    0.015638;-0.680319;,
+    0.012066;-0.660555;,
+    0.190091;-0.591048;,
+    0.181470;-0.591340;,
+    0.191342;-0.580108;,
+    0.196615;-0.591520;,
+    0.236659;-0.814967;,
+    0.231231;-0.814595;,
+    0.434637;-0.664467;,
+    0.675053;-0.799503;,
+    0.488844;-0.717800;,
+    0.776898;-0.803465;,
+    0.486297;-0.706144;,
+    0.497808;-0.699725;,
+    0.131850;-0.353532;,
+    0.140765;-0.348971;,
+    0.268794;-0.858013;,
+    0.345856;-0.695765;,
+    0.667581;-0.824696;,
+    0.179425;-0.721444;,
+    0.442360;-0.287727;,
+    0.448234;-0.314609;,
+    0.616095;-0.836197;,
+    0.597290;-0.563089;,
+    0.575179;-0.558125;,
+    0.589204;-0.555327;,
+    0.576560;-0.542790;,
+    0.111505;-0.619491;,
+    0.545936;-0.429221;,
+    0.529165;-0.428087;,
+    0.606198;-0.559278;,
+    0.148108;-0.410855;,
+    0.052398;-0.301449;,
+    0.596595;-0.026391;,
+    0.598581;-0.039053;,
+    0.595126;-0.015595;,
+    0.798011;-0.442954;,
+    0.028537;-0.359522;,
+    0.029766;-0.377939;,
+    0.043706;-0.386605;,
+    0.678177;-0.456433;,
+    0.582948;-0.526682;,
+    0.052109;-0.836099;,
+    0.052522;-0.827237;,
+    0.057680;-0.840120;,
+    0.060240;-0.839454;,
+    0.528369;-0.359904;,
+    0.525161;-0.364062;,
+    0.599617;-0.189428;,
+    0.286424;-0.506145;,
+    0.271342;-0.500252;,
+    0.276881;-0.489556;,
+    0.475078;-0.102356;,
+    0.879471;-0.451844;,
+    0.880266;-0.445749;,
+    0.525177;-0.225490;,
+    0.101024;-0.347644;,
+    0.586417;-0.679212;,
+    0.573068;-0.692922;,
+    0.442274;-0.769783;,
+    0.300519;-0.008816;,
+    0.355397;-0.726379;,
+    0.725763;-0.565505;,
+    0.737255;-0.565473;,
+    0.355195;-0.460788;,
+    0.251925;-0.642512;,
+    0.302546;-0.817743;,
+    0.088446;-0.797845;,
+    0.106469;-0.860925;,
+    0.113008;-0.868695;,
+    0.122058;-0.759588;,
+    0.208128;-0.586898;,
+    0.203128;-0.591103;,
+    0.219586;-0.569016;,
+    0.586801;-0.435458;,
+    0.344774;-0.268867;,
+    0.245200;-0.482663;,
+    0.262371;-0.469711;,
+    0.254237;-0.460545;,
+    0.505415;-0.774635;,
+    0.509343;-0.784226;,
+    0.827322;-0.957513;,
+    0.813956;-0.940841;,
+    0.713019;-0.902721;,
+    0.110974;-0.487345;,
+    0.361144;-0.564911;,
+    0.534334;-0.794927;,
+    0.545403;-0.595979;,
+    0.137199;-0.590417;,
+    0.562002;-0.963011;,
+    0.579520;-0.568388;,
+    0.847906;-0.868079;,
+    0.838309;-0.851429;,
+    0.399251;-0.744001;,
+    0.401559;-0.736875;,
+    0.406910;-0.732641;,
+    0.412983;-0.735873;,
+    0.677982;-0.849164;,
+    0.671336;-0.857294;,
+    0.306548;-0.092264;,
+    0.735423;-0.840587;,
+    0.394470;-0.827082;,
+    0.406424;-0.818762;,
+    0.407102;-0.812936;,
+    0.553696;-0.645324;,
+    0.797270;-0.514850;,
+    0.437201;-0.244054;,
+    0.471275;-0.021169;,
+    0.490667;-0.007348;,
+    0.097121;-0.748256;,
+    0.088421;-0.749473;,
+    0.713894;-0.420984;,
+    0.171042;-0.785962;,
+    0.156949;-0.767823;,
+    0.578131;-0.092200;,
+    0.884243;-0.462425;,
+    0.893769;-0.472735;,
+    0.122658;-0.392314;,
+    0.549037;-0.508634;,
+    0.591420;-0.058476;,
+    0.264657;-0.508466;,
+    0.651335;-0.919565;,
+    0.659151;-0.925270;,
+    0.068974;-0.864049;,
+    0.079667;-0.856818;,
+    0.072324;-0.868366;,
+    0.354418;-0.863173;,
+    0.349090;-0.853738;,
+    0.358895;-0.860238;,
+    0.313509;-0.084530;,
+    0.099663;-0.417946;,
+    0.696251;-0.581098;,
+    0.691456;-0.579401;,
+    0.679466;-0.592409;,
+    0.586596;-0.461207;,
+    0.267731;-0.659350;,
+    0.266589;-0.675192;,
+    0.144344;-0.610773;,
+    0.493707;-0.786621;,
+    0.459951;-0.336794;,
+    0.378442;-0.544187;,
+    0.385693;-0.550777;,
+    0.385700;-0.536232;,
+    0.436960;-0.264075;,
+    0.308297;-0.051984;,
+    0.772442;-0.788261;,
+    0.774670;-0.795863;,
+    0.888571;-0.894401;,
+    0.896912;-0.896540;,
+    0.320392;-0.829766;,
+    0.549731;-0.994568;,
+    0.546253;-0.992944;,
+    0.549187;-0.991290;,
+    0.664472;-0.800328;,
+    0.230291;-0.767424;,
+    0.366090;-0.831835;,
+    0.375344;-0.848323;,
+    0.369680;-0.844299;,
+    0.539470;-0.758176;,
+    0.297057;-0.765879;,
+    0.166179;-0.429794;,
+    0.162501;-0.434682;,
+    0.579565;-0.394330;,
+    0.437303;-0.731875;,
+    0.714862;-0.968165;,
+    0.587004;-0.922258;,
+    0.589447;-0.904293;,
+    0.576265;-0.938057;,
+    0.164934;-0.362602;,
+    0.224717;-0.705132;,
+    0.228162;-0.694021;,
+    0.278610;-0.866315;,
+    0.276107;-0.868351;,
+    0.170830;-0.330931;,
+    0.162187;-0.325114;,
+    0.674271;-0.839006;,
+    0.677236;-0.825286;,
+    0.830709;-0.818632;,
+    0.843735;-0.833486;,
+    0.360490;-0.697764;,
+    0.368683;-0.696583;,
+    0.368618;-0.691997;,
+    0.427887;-0.746704;,
+    0.730229;-0.453390;,
+    0.363417;-0.192667;,
+    0.379721;-0.177337;,
+    0.387255;-0.180154;,
+    0.724278;-0.878128;,
+    0.425019;-0.753886;,
+    0.174079;-0.719176;,
+    0.651568;-0.875658;,
+    0.326456;-0.485509;,
+    0.026493;-0.200881;,
+    0.622161;-0.273645;,
+    0.600626;-0.199922;,
+    0.117738;-0.289172;,
+    0.578592;-0.131708;,
+    0.021168;-0.280976;,
+    0.009931;-0.273726;,
+    0.022913;-0.274917;,
+    0.444671;-0.083458;,
+    0.466551;-0.619106;,
+    0.298426;-0.837068;,
+    0.284160;-0.844870;,
+    0.672108;-0.737237;,
+    0.668745;-0.747200;,
+    0.119151;-0.400055;,
+    0.745167;-0.566711;,
+    0.662266;-0.943290;,
+    0.096059;-0.220476;,
+    0.092767;-0.204098;,
+    0.096573;-0.217968;,
+    0.534263;-0.398122;,
+    0.535353;-0.376537;,
+    0.753932;-0.586665;,
+    0.294648;-0.747268;,
+    0.219087;-0.717055;,
+    0.651016;-0.766419;,
+    0.652615;-0.770305;,
+    0.643243;-0.774377;,
+    0.393270;-0.838018;,
+    0.399133;-0.835998;,
+    0.390848;-0.848362;,
+    0.615463;-0.330864;,
+    0.548534;-0.200892;,
+    0.697404;-0.673389;,
+    0.202279;-0.610751;,
+    0.250283;-0.684722;,
+    0.034227;-0.408862;,
+    0.506912;-0.796133;,
+    0.262470;-0.671743;,
+    0.594255;-0.172863;,
+    0.581541;-0.169356;,
+    0.183885;-0.551485;,
+    0.459104;-0.024991;;
+   }
+
+   MeshMaterialList {
+    1;
+    1060;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    980;
+    532;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    182,
+    183,
+    184,
+    185,
+    186,
+    187,
+    188,
+    189,
+    190,
+    191,
+    192,
+    193,
+    194,
+    195,
+    196,
+    197,
+    198,
+    199,
+    200,
+    201,
+    202,
+    203,
+    204,
+    205,
+    206,
+    207,
+    208,
+    209,
+    210,
+    211,
+    212,
+    213,
+    214,
+    215,
+    216,
+    217,
+    218,
+    219,
+    220,
+    221,
+    222,
+    223,
+    224,
+    225,
+    226,
+    227,
+    228,
+    229,
+    230,
+    231,
+    232,
+    233,
+    234,
+    235,
+    236,
+    237,
+    238,
+    239,
+    240,
+    241,
+    242,
+    243,
+    244,
+    245,
+    246,
+    247,
+    248,
+    249,
+    250,
+    251,
+    252,
+    253,
+    254,
+    255,
+    256,
+    257,
+    258,
+    259,
+    260,
+    261,
+    262,
+    263,
+    264,
+    265,
+    266,
+    267,
+    268,
+    269,
+    270,
+    271,
+    272,
+    273,
+    274,
+    275,
+    276,
+    277,
+    278,
+    279,
+    280,
+    281,
+    282,
+    283,
+    284,
+    285,
+    286,
+    287,
+    288,
+    289,
+    290,
+    291,
+    292,
+    293,
+    294,
+    295,
+    296,
+    297,
+    298,
+    299,
+    300,
+    301,
+    302,
+    303,
+    304,
+    305,
+    306,
+    307,
+    308,
+    309,
+    310,
+    311,
+    312,
+    313,
+    314,
+    315,
+    316,
+    317,
+    318,
+    319,
+    320,
+    321,
+    322,
+    323,
+    324,
+    325,
+    326,
+    327,
+    328,
+    329,
+    330,
+    331,
+    332,
+    333,
+    334,
+    335,
+    336,
+    337,
+    338,
+    339,
+    340,
+    341,
+    342,
+    343,
+    344,
+    345,
+    346,
+    347,
+    348,
+    349,
+    350,
+    351,
+    352,
+    353,
+    354,
+    355,
+    356,
+    357,
+    358,
+    359,
+    360,
+    361,
+    362,
+    363,
+    364,
+    365,
+    366,
+    367,
+    368,
+    369,
+    370,
+    371,
+    372,
+    373,
+    374,
+    375,
+    376,
+    377,
+    378,
+    379,
+    380,
+    381,
+    382,
+    383,
+    384,
+    385,
+    386,
+    387,
+    388,
+    389,
+    390,
+    391,
+    392,
+    393,
+    394,
+    395,
+    396,
+    397,
+    398,
+    399,
+    400,
+    401,
+    402,
+    403,
+    404,
+    405,
+    406,
+    407,
+    408,
+    409,
+    410,
+    411,
+    412,
+    413,
+    414,
+    415,
+    416,
+    417,
+    418,
+    419,
+    420,
+    421,
+    422,
+    423,
+    424,
+    425,
+    426,
+    427,
+    428,
+    429,
+    430,
+    431,
+    432,
+    433,
+    434,
+    435,
+    436,
+    437,
+    438,
+    439,
+    440,
+    441,
+    442,
+    443,
+    444,
+    445,
+    446,
+    447,
+    448,
+    449,
+    450,
+    451,
+    452,
+    453,
+    454,
+    455,
+    456,
+    457,
+    458,
+    459,
+    460,
+    461,
+    462,
+    463,
+    464,
+    465,
+    466,
+    467,
+    468,
+    469,
+    470,
+    471,
+    472,
+    473,
+    474,
+    475,
+    476,
+    477,
+    478,
+    479,
+    480,
+    481,
+    482,
+    483,
+    484,
+    485,
+    486,
+    487,
+    488,
+    489,
+    490,
+    491,
+    492,
+    493,
+    494,
+    495,
+    496,
+    497,
+    498,
+    499,
+    500,
+    501,
+    502,
+    503,
+    504,
+    505,
+    506,
+    507,
+    508,
+    509,
+    510,
+    511,
+    512,
+    513,
+    514,
+    515,
+    516,
+    517,
+    518,
+    519,
+    520,
+    521,
+    522,
+    523,
+    524,
+    525,
+    526,
+    527,
+    528,
+    529,
+    530,
+    531,
+    189,
+    173,
+    8,
+    80,
+    148,
+    25,
+    160,
+    246,
+    103,
+    250,
+    95,
+    44,
+    246,
+    41,
+    209,
+    237,
+    309,
+    278,
+    104,
+    413,
+    109,
+    8,
+    191,
+    63,
+    329,
+    113,
+    340,
+    163,
+    75,
+    321,
+    243,
+    349,
+    79,
+    336,
+    329,
+    78,
+    8,
+    443,
+    314,
+    133,
+    284,
+    472,
+    367,
+    315,
+    316,
+    242,
+    78,
+    217,
+    392,
+    506,
+    273,
+    155,
+    273,
+    401,
+    83,
+    406,
+    167,
+    335,
+    34,
+    281,
+    392,
+    298,
+    337,
+    183,
+    208,
+    201,
+    435,
+    84,
+    345,
+    47,
+    206,
+    449,
+    353,
+    60,
+    331,
+    366,
+    368,
+    436,
+    179,
+    85,
+    194,
+    120,
+    152,
+    365,
+    382,
+    202,
+    83,
+    404,
+    267,
+    257,
+    151,
+    241,
+    410,
+    460,
+    153,
+    427,
+    9,
+    358,
+    328,
+    336,
+    46,
+    421,
+    466,
+    26,
+    251,
+    250,
+    380,
+    7,
+    426,
+    53,
+    28,
+    387,
+    489,
+    91,
+    50,
+    240,
+    502,
+    52,
+    25,
+    295,
+    171,
+    98,
+    412,
+    326,
+    312,
+    402,
+    386,
+    506,
+    64,
+    287,
+    509,
+    5,
+    70,
+    88,
+    6,
+    310,
+    307,
+    300,
+    333,
+    514,
+    110,
+    58,
+    434,
+    508,
+    447,
+    510,
+    123,
+    328,
+    347,
+    331,
+    56,
+    413,
+    36,
+    330,
+    255,
+    524,
+    497,
+    62,
+    451,
+    116,
+    319,
+    354,
+    58,
+    30,
+    376,
+    199,
+    390,
+    256,
+    255,
+    364,
+    178,
+    527,
+    457,
+    474,
+    438,
+    125,
+    89,
+    127,
+    136,
+    138,
+    531,
+    112,
+    190,
+    146,
+    127,
+    28,
+    3,
+    98,
+    258,
+    68,
+    42,
+    23,
+    168,
+    172,
+    186,
+    104,
+    438,
+    77,
+    112,
+    109,
+    191,
+    515,
+    197,
+    448,
+    440,
+    523,
+    118,
+    215,
+    216,
+    332,
+    39,
+    288,
+    516,
+    81,
+    469,
+    218,
+    86,
+    224,
+    219,
+    119,
+    221,
+    222,
+    247,
+    234,
+    227,
+    230,
+    235,
+    236,
+    237,
+    144,
+    51,
+    229,
+    248,
+    102,
+    18,
+    2,
+    253,
+    254,
+    266,
+    286,
+    94,
+    264,
+    52,
+    493,
+    493,
+    215,
+    271,
+    45,
+    114,
+    49,
+    461,
+    132,
+    274,
+    489,
+    64,
+    76,
+    288,
+    335,
+    110,
+    415,
+    161,
+    500,
+    415,
+    304,
+    68,
+    259,
+    306,
+    289,
+    111,
+    310,
+    112,
+    386,
+    17,
+    216,
+    433,
+    324,
+    325,
+    327,
+    36,
+    288,
+    97,
+    322,
+    225,
+    320,
+    344,
+    219,
+    93,
+    130,
+    12,
+    327,
+    67,
+    328,
+    99,
+    348,
+    15,
+    350,
+    39,
+    422,
+    81,
+    366,
+    152,
+    376,
+    487,
+    85,
+    14,
+    145,
+    59,
+    370,
+    383,
+    384,
+    99,
+    386,
+    260,
+    152,
+    395,
+    371,
+    396,
+    66,
+    71,
+    128,
+    20,
+    76,
+    406,
+    405,
+    161,
+    107,
+    416,
+    303,
+    397,
+    66,
+    424,
+    426,
+    378,
+    282,
+    337,
+    433,
+    437,
+    119,
+    438,
+    409,
+    198,
+    197,
+    82,
+    509,
+    450,
+    174,
+    115,
+    334,
+    75,
+    10,
+    207,
+    124,
+    454,
+    462,
+    463,
+    24,
+    465,
+    467,
+    367,
+    228,
+    83,
+    84,
+    471,
+    222,
+    469,
+    472,
+    230,
+    475,
+    315,
+    13,
+    475,
+    48,
+    513,
+    253,
+    493,
+    477,
+    54,
+    20,
+    392,
+    494,
+    3,
+    157,
+    480,
+    257,
+    487,
+    372,
+    232,
+    233,
+    99,
+    348,
+    245,
+    144,
+    252,
+    47,
+    16,
+    430,
+    494,
+    395,
+    475,
+    13,
+    494,
+    282,
+    248,
+    32,
+    171,
+    198,
+    37,
+    9,
+    65,
+    4,
+    507,
+    105,
+    464,
+    249,
+    514,
+    39,
+    58,
+    516,
+    221,
+    64,
+    111,
+    517,
+    440,
+    36,
+    308,
+    7,
+    162,
+    255,
+    6,
+    21,
+    225,
+    437,
+    322,
+    87,
+    498,
+    302,
+    43,
+    521,
+    529,
+    80,
+    90,
+    130,
+    234,
+    90,
+    500,
+    293,
+    462,
+    481;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/tiger.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/tiger.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/tiger.x	(revision 1481)
@@ -0,0 +1,1371 @@
+xof 0302txt 0064
+template Header {
+ <3D82AB43-62DA-11cf-AB39-0020AF71E433>
+ WORD major;
+ WORD minor;
+ DWORD flags;
+}
+
+template Vector {
+ <3D82AB5E-62DA-11cf-AB39-0020AF71E433>
+ FLOAT x;
+ FLOAT y;
+ FLOAT z;
+}
+
+template Coords2d {
+ <F6F23F44-7686-11cf-8F52-0040333594A3>
+ FLOAT u;
+ FLOAT v;
+}
+
+template Matrix4x4 {
+ <F6F23F45-7686-11cf-8F52-0040333594A3>
+ array FLOAT matrix[16];
+}
+
+template ColorRGBA {
+ <35FF44E0-6C7C-11cf-8F52-0040333594A3>
+ FLOAT red;
+ FLOAT green;
+ FLOAT blue;
+ FLOAT alpha;
+}
+
+template ColorRGB {
+ <D3E16E81-7835-11cf-8F52-0040333594A3>
+ FLOAT red;
+ FLOAT green;
+ FLOAT blue;
+}
+
+template IndexedColor {
+ <1630B820-7842-11cf-8F52-0040333594A3>
+ DWORD index;
+ ColorRGBA indexColor;
+}
+
+template Boolean {
+ <4885AE61-78E8-11cf-8F52-0040333594A3>
+ WORD truefalse;
+}
+
+template Boolean2d {
+ <4885AE63-78E8-11cf-8F52-0040333594A3>
+ Boolean u;
+ Boolean v;
+}
+
+template MaterialWrap {
+ <4885AE60-78E8-11cf-8F52-0040333594A3>
+ Boolean u;
+ Boolean v;
+}
+
+template TextureFilename {
+ <A42790E1-7810-11cf-8F52-0040333594A3>
+ STRING filename;
+}
+
+template Material {
+ <3D82AB4D-62DA-11cf-AB39-0020AF71E433>
+ ColorRGBA faceColor;
+ FLOAT power;
+ ColorRGB specularColor;
+ ColorRGB emissiveColor;
+ [...]
+}
+
+template MeshFace {
+ <3D82AB5F-62DA-11cf-AB39-0020AF71E433>
+ DWORD nFaceVertexIndices;
+ array DWORD faceVertexIndices[nFaceVertexIndices];
+}
+
+template MeshFaceWraps {
+ <4885AE62-78E8-11cf-8F52-0040333594A3>
+ DWORD nFaceWrapValues;
+ Boolean2d faceWrapValues;
+}
+
+template MeshTextureCoords {
+ <F6F23F40-7686-11cf-8F52-0040333594A3>
+ DWORD nTextureCoords;
+ array Coords2d textureCoords[nTextureCoords];
+}
+
+template MeshMaterialList {
+ <F6F23F42-7686-11cf-8F52-0040333594A3>
+ DWORD nMaterials;
+ DWORD nFaceIndexes;
+ array DWORD faceIndexes[nFaceIndexes];
+ [Material]
+}
+
+template MeshNormals {
+ <F6F23F43-7686-11cf-8F52-0040333594A3>
+ DWORD nNormals;
+ array Vector normals[nNormals];
+ DWORD nFaceNormals;
+ array MeshFace faceNormals[nFaceNormals];
+}
+
+template MeshVertexColors {
+ <1630B821-7842-11cf-8F52-0040333594A3>
+ DWORD nVertexColors;
+ array IndexedColor vertexColors[nVertexColors];
+}
+
+template Mesh {
+ <3D82AB44-62DA-11cf-AB39-0020AF71E433>
+ DWORD nVertices;
+ array Vector vertices[nVertices];
+ DWORD nFaces;
+ array MeshFace faces[nFaces];
+ [...]
+}
+
+template FrameTransformMatrix {
+ <F6F23F41-7686-11cf-8F52-0040333594A3>
+ Matrix4x4 frameMatrix;
+}
+
+template Frame {
+ <3D82AB46-62DA-11cf-AB39-0020AF71E433>
+ [...]
+}
+
+Header {
+ 1;
+ 0;
+ 1;
+}
+
+Mesh Body1 {
+ 303;
+ 0.000000;-0.061426;0.938846;,
+ -0.049693;0.200773;0.692165;,
+ 0.000000;-0.031454;1.283610;,
+ 0.049693;-0.023019;0.950530;,
+ 0.032306;0.045667;0.971424;,
+ 0.000000;0.053280;0.973741;,
+ -0.032306;0.269459;0.713059;,
+ -0.023241;0.009165;1.505100;,
+ 0.000000;0.277072;0.715376;,
+ 0.000000;0.014811;1.504150;,
+ 0.049693;-0.111196;1.282310;,
+ 0.032306;-0.039411;1.283480;,
+ 0.023242;0.009165;1.505100;,
+ 0.035751;-0.041767;1.513680;,
+ 0.032306;0.269459;0.713059;,
+ 0.049693;0.200773;0.692165;,
+ 0.000000;0.162366;0.680481;,
+ -0.032306;0.045667;0.971424;,
+ -0.049693;-0.023019;0.950530;,
+ 0.000000;-0.151335;1.281660;,
+ 0.000000;-0.070246;1.518480;,
+ -0.049693;-0.111196;1.282310;,
+ -0.035750;-0.041767;1.513680;,
+ -0.032306;-0.039411;1.283480;,
+ 0.000000;-0.139499;-0.804149;,
+ 0.000000;-0.196023;-0.643914;,
+ 0.000000;0.207794;-1.162700;,
+ 0.000000;0.342375;-1.510260;,
+ 0.000000;-0.232522;-0.216349;,
+ 0.109118;-0.119018;0.100709;,
+ -0.109118;-0.119018;0.100709;,
+ 0.000000;-0.154873;0.103656;,
+ 0.030101;-0.105174;0.316078;,
+ 0.000000;-0.112314;0.317509;,
+ 0.000000;0.112303;0.506078;,
+ -0.030101;-0.105174;0.316078;,
+ -0.028761;-0.037815;0.439801;,
+ 0.028761;-0.037815;0.439801;,
+ 0.081739;-0.203143;0.439706;,
+ 0.065936;-0.238012;0.335711;,
+ 0.020142;-0.108242;0.303668;,
+ 0.114666;-0.167257;0.149229;,
+ 0.116086;-0.276934;0.217803;,
+ 0.090034;-0.382159;0.456303;,
+ -0.114666;-0.167257;0.149229;,
+ -0.116086;-0.276934;0.217803;,
+ -0.020142;-0.108242;0.303668;,
+ -0.090034;-0.382159;0.456303;,
+ -0.081739;-0.203143;0.439706;,
+ -0.076865;-0.377381;0.378108;,
+ -0.065936;-0.238012;0.335711;,
+ 0.076865;-0.377381;0.378108;,
+ -0.077999;-0.438418;0.363464;,
+ -0.094725;-0.687984;0.346619;,
+ -0.119790;-0.424686;0.304048;,
+ -0.160820;-0.602659;0.286432;,
+ -0.190992;-0.614722;0.342338;,
+ -0.168141;-0.687707;0.257272;,
+ -0.151771;-0.687980;0.349147;,
+ -0.203745;-0.687917;0.313177;,
+ -0.128500;-0.687445;0.237457;,
+ -0.079186;-0.687932;0.310966;,
+ -0.165267;-0.602291;0.204563;,
+ -0.076312;-0.617099;0.236559;,
+ -0.125626;-0.603366;0.203812;,
+ -0.127225;-0.603735;0.285509;,
+ -0.085434;-0.617617;0.340127;,
+ -0.068939;-0.687414;0.212852;,
+ -0.118657;-0.370966;0.289767;,
+ -0.153385;-0.423611;0.305410;,
+ -0.215919;-0.687399;0.214649;,
+ -0.200870;-0.614472;0.257455;,
+ -0.204332;-0.687587;0.149699;,
+ -0.191896;-0.646208;0.173407;,
+ -0.162472;-0.639473;0.139614;,
+ -0.173907;-0.687338;0.180856;,
+ -0.169612;-0.687553;0.115905;,
+ -0.129710;-0.640081;0.138863;,
+ -0.127130;-0.687344;0.180105;,
+ -0.130953;-0.687556;0.115154;,
+ -0.088955;-0.647844;0.171610;,
+ -0.082862;-0.687595;0.147901;,
+ -0.091167;-0.448646;0.416058;,
+ -0.146947;-0.626975;0.378308;,
+ -0.098602;-0.627845;0.375781;,
+ -0.183557;-0.435523;0.366725;,
+ -0.139512;-0.447776;0.419786;,
+ -0.036911;-0.131458;-0.800774;,
+ -0.114132;-0.130986;-0.893785;,
+ -0.218544;-0.657847;-0.902645;,
+ -0.171757;-0.532488;-0.896119;,
+ -0.073996;0.255722;-1.483520;,
+ -0.051230;0.326389;-1.504150;,
+ -0.065011;0.221538;-1.464050;,
+ 0.104586;-0.228675;-0.692703;,
+ 0.091167;-0.448646;0.416057;,
+ 0.077999;-0.438418;0.363464;,
+ 0.098603;-0.627845;0.375781;,
+ 0.094725;-0.687984;0.346619;,
+ 0.119790;-0.424686;0.304048;,
+ 0.165267;-0.602291;0.204563;,
+ 0.085434;-0.617617;0.340127;,
+ 0.127225;-0.603735;0.285508;,
+ 0.125626;-0.603366;0.203812;,
+ 0.076312;-0.617099;0.236559;,
+ 0.118657;-0.370966;0.289767;,
+ 0.204332;-0.687587;0.149699;,
+ 0.162472;-0.639473;0.139614;,
+ 0.191896;-0.646208;0.173407;,
+ 0.169612;-0.687553;0.115905;,
+ 0.129710;-0.640081;0.138863;,
+ 0.068939;-0.687414;0.212852;,
+ 0.127130;-0.687344;0.180104;,
+ 0.082862;-0.687595;0.147901;,
+ 0.088955;-0.647844;0.171610;,
+ 0.130953;-0.687556;0.115154;,
+ 0.153385;-0.423611;0.305410;,
+ 0.160820;-0.602659;0.286432;,
+ 0.168141;-0.687707;0.257271;,
+ 0.128500;-0.687445;0.237457;,
+ 0.079186;-0.687932;0.310966;,
+ 0.203745;-0.687917;0.313177;,
+ 0.173907;-0.687338;0.180856;,
+ 0.215919;-0.687399;0.214649;,
+ 0.200870;-0.614472;0.257455;,
+ 0.190992;-0.614722;0.342338;,
+ 0.146947;-0.626975;0.378308;,
+ 0.151771;-0.687979;0.349147;,
+ 0.183557;-0.435523;0.366725;,
+ 0.139512;-0.447776;0.419786;,
+ 0.113246;-0.558335;-0.752050;,
+ -0.113029;-0.558335;-0.752050;,
+ -0.058263;-0.180258;-0.792372;,
+ -0.104586;-0.228675;-0.692703;,
+ 0.058263;-0.180258;-0.792372;,
+ 0.114132;-0.130986;-0.893785;,
+ 0.036911;-0.131458;-0.800774;,
+ 0.000000;-0.004469;-0.968083;,
+ 0.000000;0.159119;-1.080890;,
+ 0.055861;-0.654043;-0.907268;,
+ 0.079285;-0.545055;-0.826090;,
+ -0.189298;-0.627377;-1.035100;,
+ -0.177878;-0.680291;-1.082760;,
+ -0.214254;-0.664213;-1.040040;,
+ -0.161256;-0.660443;-1.077820;,
+ -0.124653;-0.659096;-1.077490;,
+ -0.108039;-0.624876;-1.034770;,
+ -0.052024;-0.654043;-0.907268;,
+ -0.078756;-0.545055;-0.826090;,
+ -0.111125;-0.618182;-0.950786;,
+ -0.184997;-0.620703;-0.947721;,
+ -0.120091;-0.531540;-0.901424;,
+ -0.093467;-0.697089;-1.086940;,
+ -0.177140;-0.697089;-1.086940;,
+ -0.095368;-0.678258;-1.082250;,
+ -0.184330;-0.689285;-0.864494;,
+ -0.228502;-0.695391;-1.044220;,
+ -0.042748;-0.695391;-1.044220;,
+ -0.054974;-0.660441;-1.039530;,
+ -0.101027;-0.689285;-0.864498;,
+ 0.065548;-0.695391;-1.044220;,
+ 0.092340;-0.696620;-1.085760;,
+ 0.102919;-0.689285;-0.864498;,
+ 0.192799;-0.696619;-1.085760;,
+ 0.099554;-0.677289;-1.081080;,
+ 0.127676;-0.657618;-1.076310;,
+ 0.072960;-0.660441;-1.039310;,
+ 0.120245;-0.531540;-0.901424;,
+ 0.112616;-0.618182;-0.950786;,
+ 0.109653;-0.624877;-1.034770;,
+ 0.187687;-0.627377;-1.035100;,
+ 0.178790;-0.679375;-1.081580;,
+ 0.162827;-0.659001;-1.076650;,
+ 0.000000;0.194767;-1.453810;,
+ 0.073996;0.255722;-1.483520;,
+ 0.000000;0.286217;-1.518480;,
+ 0.051230;0.326388;-1.504150;,
+ 0.000000;0.213784;-1.355750;,
+ 0.065011;0.221538;-1.464050;,
+ 0.182916;-0.689285;-0.864494;,
+ 0.171441;-0.532488;-0.896119;,
+ 0.183557;-0.620703;-0.947721;,
+ 0.215773;-0.657847;-0.902646;,
+ 0.220422;-0.695391;-1.044220;,
+ 0.212566;-0.664214;-1.039820;,
+ 0.067091;-0.158537;-0.643915;,
+ 0.130206;-0.193912;-0.216350;,
+ 0.077416;0.007999;-0.964709;,
+ 0.183964;-0.134440;-0.886644;,
+ 0.170979;-0.558332;-0.752044;,
+ 0.194691;-0.546486;-0.818088;,
+ 0.096383;0.183917;-1.077510;,
+ 0.102550;0.289818;-1.155630;,
+ -0.067091;-0.158537;-0.643915;,
+ -0.130206;-0.193912;-0.216350;,
+ -0.077416;0.007999;-0.964709;,
+ 0.000000;0.216114;-1.244810;,
+ 0.000000;0.218816;-1.313860;,
+ -0.183964;-0.134440;-0.886644;,
+ -0.195220;-0.546486;-0.818088;,
+ -0.171291;-0.558332;-0.752044;,
+ -0.102550;0.289818;-1.155630;,
+ -0.096383;0.183918;-1.077510;,
+ -0.203324;-0.000186;-0.216355;,
+ 0.000000;0.461380;-0.216367;,
+ -0.132354;0.415323;-0.216366;,
+ 0.000000;0.483721;-1.426860;,
+ 0.000000;0.505008;0.184315;,
+ -0.083623;0.454487;-1.419150;,
+ -0.097980;0.599269;-1.043210;,
+ -0.150776;0.396113;-1.068880;,
+ 0.000000;0.668371;-1.244740;,
+ 0.000000;0.660052;-1.123730;,
+ 0.083623;0.454486;-1.419150;,
+ 0.000000;0.601379;-1.384240;,
+ 0.000000;0.628851;-1.039190;,
+ 0.097980;0.599268;-1.043210;,
+ 0.150776;0.396113;-1.068880;,
+ 0.000000;0.588297;-0.907439;,
+ 0.132354;0.415323;-0.216366;,
+ 0.203324;-0.000186;-0.216355;,
+ 0.215676;-0.176166;-0.795945;,
+ 0.177974;0.258210;-0.971413;,
+ 0.115772;0.548952;-0.911464;,
+ 0.143614;0.490599;-0.781781;,
+ 0.183334;-0.228667;-0.692694;,
+ 0.215131;0.109326;-0.825489;,
+ 0.115870;0.444022;-0.665901;,
+ 0.178124;0.029546;-0.643920;,
+ 0.160357;0.437455;-1.137120;,
+ 0.226298;0.365261;-1.243240;,
+ 0.105258;0.370388;-1.397000;,
+ 0.104248;0.611072;-1.127950;,
+ 0.082255;0.262741;-1.368650;,
+ 0.192870;0.403955;-1.341710;,
+ 0.166988;0.246562;-1.244800;,
+ 0.153069;0.277384;-1.326760;,
+ 0.089221;0.645525;-1.244750;,
+ 0.139971;0.697089;-1.334440;,
+ 0.177051;0.542720;-1.241680;,
+ 0.126150;0.594872;-1.338400;,
+ 0.041587;0.120377;0.505592;,
+ 0.067583;0.283180;0.536543;,
+ 0.104568;0.447773;0.443333;,
+ 0.000000;0.391487;0.530735;,
+ 0.043936;0.380679;0.531314;,
+ 0.149273;0.477514;0.293496;,
+ 0.172353;-0.275740;0.220239;,
+ 0.139752;-0.200327;0.446770;,
+ 0.152251;-0.370463;0.291793;,
+ 0.192606;-0.235087;0.341477;,
+ 0.138378;-0.381752;0.461846;,
+ 0.182423;-0.376028;0.382956;,
+ 0.160847;0.216311;0.499174;,
+ 0.116618;-0.015705;0.448978;,
+ 0.110923;0.461129;0.163966;,
+ 0.229189;0.099215;0.308897;,
+ 0.213423;-0.066057;0.311063;,
+ 0.176064;-0.153352;0.152359;,
+ 0.170561;0.060886;0.085922;,
+ -0.215676;-0.176166;-0.795945;,
+ -0.177974;0.258210;-0.971413;,
+ -0.115772;0.548952;-0.911464;,
+ -0.143614;0.490599;-0.781781;,
+ 0.000000;0.488737;-0.665903;,
+ 0.000000;0.534271;-0.777755;,
+ -0.183334;-0.228667;-0.692694;,
+ -0.215131;0.109326;-0.825489;,
+ -0.178124;0.029546;-0.643920;,
+ -0.115870;0.444022;-0.665901;,
+ -0.160357;0.437455;-1.137120;,
+ -0.226298;0.365261;-1.243240;,
+ -0.105258;0.370388;-1.397000;,
+ -0.104248;0.611072;-1.127950;,
+ -0.166988;0.246562;-1.244800;,
+ -0.192870;0.403955;-1.341710;,
+ -0.082255;0.262741;-1.368650;,
+ -0.153069;0.277384;-1.326760;,
+ -0.089221;0.645525;-1.244750;,
+ -0.139971;0.697089;-1.334440;,
+ -0.126150;0.594872;-1.338400;,
+ -0.177051;0.542720;-1.241680;,
+ -0.041587;0.120377;0.505592;,
+ 0.000000;0.228662;0.539467;,
+ 0.000000;0.519446;0.291789;,
+ -0.149273;0.477514;0.293496;,
+ -0.172353;-0.275740;0.220239;,
+ -0.139752;-0.200327;0.446770;,
+ -0.138378;-0.381752;0.461846;,
+ -0.192606;-0.235087;0.341477;,
+ -0.152251;-0.370463;0.291794;,
+ -0.182423;-0.376028;0.382957;,
+ -0.116618;-0.015705;0.448978;,
+ -0.160847;0.216311;0.499174;,
+ 0.000000;0.469387;0.442753;,
+ -0.104568;0.447772;0.443333;,
+ -0.067583;0.283180;0.536543;,
+ -0.043936;0.380679;0.531314;,
+ -0.110923;0.461129;0.163966;,
+ -0.229189;0.099215;0.308897;,
+ -0.170561;0.060886;0.085922;,
+ -0.176064;-0.153352;0.152359;,
+ -0.213423;-0.066057;0.311063;;
+
+  599;
+ 3;300,301,302;,
+ 3;299,300,302;,
+ 3;298,300,299;,
+ 3;295,296,297;,
+ 3;294,295,297;,
+ 3;299,292,293;,
+ 3;302,292,299;,
+ 3;289,290,291;,
+ 3;288,289,291;,
+ 3;287,289,288;,
+ 3;286,290,289;,
+ 3;287,292,302;,
+ 3;289,287,302;,
+ 3;286,302,301;,
+ 3;289,302,286;,
+ 3;284,298,285;,
+ 3;294,284,285;,
+ 3;293,282,283;,
+ 3;296,293,283;,
+ 3;295,294,285;,
+ 3;292,282,293;,
+ 3;295,293,296;,
+ 3;293,295,285;,
+ 3;285,299,293;,
+ 3;298,299,285;,
+ 3;279,280,281;,
+ 3;278,280,279;,
+ 3;281,278,279;,
+ 3;275,276,277;,
+ 3;274,275,277;,
+ 3;273,278,281;,
+ 3;272,276,275;,
+ 3;271,275,274;,
+ 3;280,272,275;,
+ 3;270,271,274;,
+ 3;270,273,281;,
+ 3;281,280,275;,
+ 3;271,270,281;,
+ 3;275,271,281;,
+ 3;267,268,269;,
+ 3;266,268,267;,
+ 3;263,264,265;,
+ 3;262,263,265;,
+ 3;269,264,263;,
+ 3;261,263,262;,
+ 3;260,266,267;,
+ 3;267,269,263;,
+ 3;261,260,267;,
+ 3;263,261,267;,
+ 3;257,258,259;,
+ 3;256,257,259;,
+ 3;255,256,259;,
+ 3;256,253,254;,
+ 3;257,256,254;,
+ 3;250,251,252;,
+ 3;249,250,252;,
+ 3;248,251,250;,
+ 3;247,250,249;,
+ 3;247,258,257;,
+ 3;248,257,254;,
+ 3;250,257,248;,
+ 3;250,247,257;,
+ 3;246,255,284;,
+ 3;294,246,284;,
+ 3;243,244,245;,
+ 3;294,244,243;,
+ 3;253,245,242;,
+ 3;241,253,242;,
+ 3;246,294,243;,
+ 3;254,253,241;,
+ 3;243,245,253;,
+ 3;253,246,243;,
+ 3;246,253,256;,
+ 3;255,246,256;,
+ 3;238,239,240;,
+ 3;237,238,240;,
+ 3;239,238,237;,
+ 3;234,235,236;,
+ 3;233,234,236;,
+ 3;232,239,237;,
+ 3;231,234,233;,
+ 3;240,234,231;,
+ 3;230,235,234;,
+ 3;229,235,230;,
+ 3;229,239,232;,
+ 3;239,234,240;,
+ 3;230,239,229;,
+ 3;230,234,239;,
+ 3;226,227,228;,
+ 3;225,226,228;,
+ 3;224,265,264;,
+ 3;227,224,264;,
+ 3;223,265,224;,
+ 3;222,223,224;,
+ 3;221,226,225;,
+ 3;226,224,227;,
+ 3;222,226,221;,
+ 3;224,226,222;,
+ 3;219,220,228;,
+ 3;218,265,223;,
+ 3;217,223,222;,
+ 3;216,223,217;,
+ 3;229,216,217;,
+ 3;216,215,218;,
+ 3;232,215,216;,
+ 3;232,216,229;,
+ 3;223,216,218;,
+ 3;213,214,240;,
+ 3;231,213,240;,
+ 3;237,211,212;,
+ 3;211,240,214;,
+ 3;237,240,211;,
+ 3;212,215,232;,
+ 3;237,212,232;,
+ 3;209,270,210;,
+ 3;209,215,273;,
+ 3;273,270,209;,
+ 3;208,272,280;,
+ 3;278,212,211;,
+ 3;214,208,280;,
+ 3;280,278,211;,
+ 3;212,273,215;,
+ 3;278,273,212;,
+ 3;207,298,284;,
+ 3;207,284,255;,
+ 3;206,208,214;,
+ 3;213,206,214;,
+ 3;218,262,265;,
+ 3;209,262,218;,
+ 3;215,209,218;,
+ 3;210,262,209;,
+ 3;261,262,210;,
+ 3;214,280,211;,
+ 3;297,244,294;,
+ 3;219,207,255;,
+ 3;205,298,207;,
+ 3;204,207,219;,
+ 3;204,205,207;,
+ 3;227,204,219;,
+ 3;228,227,219;,
+ 3;205,268,203;,
+ 3;269,268,205;,
+ 3;269,205,204;,
+ 3;210,201,202;,
+ 3;261,210,202;,
+ 3;199,200,260;,
+ 3;198,199,260;,
+ 3;270,201,210;,
+ 3;197,277,276;,
+ 3;274,197,196;,
+ 3;201,274,196;,
+ 3;277,197,274;,
+ 3;270,274,201;,
+ 3;195,261,202;,
+ 3;266,260,200;,
+ 3;198,261,195;,
+ 3;203,193,194;,
+ 3;300,203,194;,
+ 3;268,193,203;,
+ 3;260,261,198;,
+ 3;229,217,192;,
+ 3;191,192,217;,
+ 3;222,191,217;,
+ 3;221,189,190;,
+ 3;188,221,190;,
+ 3;197,233,236;,
+ 3;235,196,197;,
+ 3;192,196,235;,
+ 3;236,235,197;,
+ 3;229,192,235;,
+ 3;187,191,222;,
+ 3;225,189,221;,
+ 3;188,187,222;,
+ 3;220,259,186;,
+ 3;185,220,186;,
+ 3;228,220,185;,
+ 3;221,188,222;,
+ 3;182,183,184;,
+ 3;181,182,184;,
+ 3;180,182,181;,
+ 3;190,179,182;,
+ 3;190,182,180;,
+ 3;233,177,178;,
+ 3;231,233,178;,
+ 3;174,175,176;,
+ 3;173,178,177;,
+ 3;175,178,173;,
+ 3;174,213,231;,
+ 3;176,213,174;,
+ 3;174,178,175;,
+ 3;178,174,231;,
+ 3;170,171,172;,
+ 3;169,170,172;,
+ 3;184,171,170;,
+ 3;170,168,181;,
+ 3;169,168,170;,
+ 3;170,181,184;,
+ 3;167,181,168;,
+ 3;180,181,167;,
+ 3;165,166,169;,
+ 3;164,166,165;,
+ 3;172,165,169;,
+ 3;163,184,183;,
+ 3;171,184,163;,
+ 3;179,189,162;,
+ 3;163,161,164;,
+ 3;165,172,171;,
+ 3;164,165,171;,
+ 3;163,164,171;,
+ 3;183,161,163;,
+ 3;160,161,183;,
+ 3;190,189,179;,
+ 3;179,160,183;,
+ 3;162,160,179;,
+ 3;179,183,182;,
+ 3;157,158,159;,
+ 3;166,160,162;,
+ 3;157,155,156;,
+ 3;159,155,157;,
+ 3;152,153,154;,
+ 3;157,154,158;,
+ 3;152,154,157;,
+ 3;149,150,151;,
+ 3;148,149,151;,
+ 3;147,149,148;,
+ 3;145,146,158;,
+ 3;154,145,158;,
+ 3;145,144,146;,
+ 3;142,153,143;,
+ 3;141,142,143;,
+ 3;156,143,153;,
+ 3;144,142,141;,
+ 3;141,150,149;,
+ 3;146,144,141;,
+ 3;142,154,153;,
+ 3;145,154,142;,
+ 3;144,145,142;,
+ 3;149,146,141;,
+ 3;146,147,158;,
+ 3;149,147,146;,
+ 3;159,158,147;,
+ 3;168,139,140;,
+ 3;169,139,168;,
+ 3;166,139,169;,
+ 3;167,168,140;,
+ 3;162,139,166;,
+ 3;164,161,160;,
+ 3;166,164,160;,
+ 3;187,137,138;,
+ 3;191,187,138;,
+ 4;152,157,156,153;,
+ 3;136,137,187;,
+ 3;135,136,187;,
+ 3;187,188,135;,
+ 3;135,188,180;,
+ 3;134,185,136;,
+ 3;135,134,136;,
+ 3;148,132,133;,
+ 3;131,148,133;,
+ 3;151,132,148;,
+ 3;130,139,162;,
+ 3;140,139,130;,
+ 3;159,131,200;,
+ 3;155,159,200;,
+ 3;147,131,159;,
+ 3;148,131,147;,
+ 3;129,252,251;,
+ 3;128,249,252;,
+ 3;128,252,129;,
+ 3;125,126,127;,
+ 3;125,123,124;,
+ 3;121,122,123;,
+ 3;121,127,120;,
+ 3;119,121,120;,
+ 3;118,121,119;,
+ 3;122,121,118;,
+ 3;125,121,123;,
+ 3;117,125,124;,
+ 3;116,125,117;,
+ 3;128,125,116;,
+ 3;125,127,121;,
+ 3;126,125,128;,
+ 3;113,114,115;,
+ 3;112,113,115;,
+ 3;111,113,112;,
+ 3;110,115,114;,
+ 3;109,115,110;,
+ 3;115,109,122;,
+ 3;122,112,115;,
+ 3;106,107,108;,
+ 3;109,107,106;,
+ 3;106,124,123;,
+ 3;108,124,106;,
+ 3;110,107,109;,
+ 3;123,122,109;,
+ 3;109,106,123;,
+ 3;116,249,128;,
+ 3;105,249,116;,
+ 3;103,110,104;,
+ 3;103,101,102;,
+ 3;104,101,103;,
+ 3;103,100,107;,
+ 3;110,103,107;,
+ 3;100,103,102;,
+ 3;119,111,112;,
+ 3;114,104,110;,
+ 3;108,107,100;,
+ 3;112,122,118;,
+ 3;118,119,112;,
+ 3;117,100,102;,
+ 3;124,100,117;,
+ 3;100,124,108;,
+ 3;99,105,116;,
+ 3;120,101,104;,
+ 3;111,104,114;,
+ 3;111,119,120;,
+ 3;111,114,113;,
+ 3;104,111,120;,
+ 3;98,120,127;,
+ 3;97,120,98;,
+ 3;101,120,97;,
+ 3;101,95,96;,
+ 3;97,95,101;,
+ 3;102,101,96;,
+ 3;126,97,98;,
+ 3;126,98,127;,
+ 3;129,95,97;,
+ 3;99,102,96;,
+ 3;117,102,99;,
+ 3;126,129,97;,
+ 3;116,117,99;,
+ 3;128,129,126;,
+ 3;185,134,94;,
+ 3;94,228,185;,
+ 3;228,94,225;,
+ 3;140,130,94;,
+ 3;130,162,189;,
+ 3;130,225,94;,
+ 3;225,130,189;,
+ 3;167,140,134;,
+ 3;134,140,94;,
+ 3;134,135,167;,
+ 3;167,135,180;,
+ 3;190,180,188;,
+ 3;199,155,200;,
+ 3;93,177,276;,
+ 3;272,93,276;,
+ 3;91,92,175;,
+ 3;173,177,93;,
+ 3;175,173,93;,
+ 3;91,272,208;,
+ 3;92,91,208;,
+ 3;91,175,93;,
+ 3;93,272,91;,
+ 3;90,151,150;,
+ 3;90,89,199;,
+ 3;89,90,150;,
+ 3;141,143,150;,
+ 3;143,89,150;,
+ 3;156,89,143;,
+ 3;89,155,199;,
+ 3;155,89,156;,
+ 3;198,88,90;,
+ 3;151,90,88;,
+ 3;199,198,90;,
+ 3;138,137,195;,
+ 3;202,138,195;,
+ 3;87,195,137;,
+ 3;88,195,87;,
+ 3;88,198,195;,
+ 3;87,193,132;,
+ 3;88,87,132;,
+ 3;86,288,291;,
+ 3;85,86,291;,
+ 3;85,291,290;,
+ 3;86,83,84;,
+ 3;82,86,84;,
+ 3;85,83,86;,
+ 3;79,80,81;,
+ 3;78,79,81;,
+ 3;77,80,79;,
+ 3;76,77,79;,
+ 3;75,79,78;,
+ 3;76,79,75;,
+ 3;72,73,74;,
+ 3;76,72,74;,
+ 3;77,76,74;,
+ 3;72,70,71;,
+ 3;73,72,71;,
+ 3;76,75,70;,
+ 3;72,76,70;,
+ 3;69,85,290;,
+ 3;68,69,290;,
+ 3;67,78,81;,
+ 3;64,65,66;,
+ 3;63,64,66;,
+ 3;77,64,63;,
+ 3;64,74,62;,
+ 3;77,74,64;,
+ 3;62,65,64;,
+ 3;80,77,63;,
+ 3;59,60,61;,
+ 3;58,59,61;,
+ 3;57,60,59;,
+ 3;74,73,62;,
+ 3;56,59,58;,
+ 3;55,65,62;,
+ 3;78,60,57;,
+ 3;75,78,57;,
+ 3;67,60,78;,
+ 3;71,55,62;,
+ 3;56,55,71;,
+ 3;73,71,62;,
+ 3;56,70,59;,
+ 3;71,70,56;,
+ 3;59,75,57;,
+ 3;70,75,59;,
+ 3;54,69,68;,
+ 3;81,80,67;,
+ 3;61,63,66;,
+ 3;67,61,60;,
+ 3;63,61,67;,
+ 3;80,63,67;,
+ 3;61,84,53;,
+ 3;58,61,53;,
+ 3;66,84,61;,
+ 3;82,84,66;,
+ 3;52,82,66;,
+ 3;65,52,66;,
+ 3;83,56,58;,
+ 3;83,58,53;,
+ 3;84,83,53;,
+ 3;54,52,65;,
+ 3;55,54,65;,
+ 3;69,54,55;,
+ 3;56,69,55;,
+ 3;85,69,56;,
+ 3;56,83,85;,
+ 3;133,132,193;,
+ 3;193,268,133;,
+ 3;266,133,268;,
+ 3;266,131,133;,
+ 3;200,131,266;,
+ 3;132,151,88;,
+ 3;51,105,99;,
+ 3;49,68,50;,
+ 3;47,48,287;,
+ 3;288,47,287;,
+ 3;82,47,288;,
+ 3;49,52,54;,
+ 3;68,49,54;,
+ 3;82,52,47;,
+ 3;49,48,47;,
+ 3;50,48,49;,
+ 3;49,47,52;,
+ 3;96,51,99;,
+ 3;45,46,50;,
+ 3;44,46,45;,
+ 3;44,286,301;,
+ 3;45,286,44;,
+ 3;45,290,286;,
+ 3;68,290,45;,
+ 3;68,45,50;,
+ 3;86,82,288;,
+ 3;95,251,43;,
+ 3;96,95,43;,
+ 3;51,96,43;,
+ 3;129,251,95;,
+ 3;40,41,42;,
+ 3;39,40,42;,
+ 3;247,42,41;,
+ 3;249,42,247;,
+ 3;105,42,249;,
+ 3;105,39,42;,
+ 3;258,247,41;,
+ 3;51,38,39;,
+ 3;43,38,51;,
+ 3;105,51,39;,
+ 3;248,38,43;,
+ 3;251,248,43;,
+ 3;38,248,254;,
+ 3;37,38,254;,
+ 3;37,40,39;,
+ 3;38,37,39;,
+ 3;36,48,50;,
+ 3;46,36,50;,
+ 3;35,46,44;,
+ 3;282,36,46;,
+ 3;33,34,282;,
+ 3;241,34,33;,
+ 3;32,241,33;,
+ 3;35,282,46;,
+ 3;33,282,35;,
+ 3;31,32,33;,
+ 3;35,31,33;,
+ 3;30,31,35;,
+ 3;292,48,36;,
+ 3;44,301,30;,
+ 3;30,301,300;,
+ 3;287,48,292;,
+ 3;44,30,35;,
+ 3;32,41,40;,
+ 3;28,29,31;,
+ 3;241,40,37;,
+ 3;32,40,241;,
+ 3;32,31,29;,
+ 3;28,31,30;,
+ 3;29,259,258;,
+ 3;258,41,29;,
+ 3;29,41,32;,
+ 3;186,29,28;,
+ 3;29,186,259;,
+ 3;254,241,37;,
+ 3;282,292,36;,
+ 3;27,176,175;,
+ 3;92,27,175;,
+ 3;27,92,206;,
+ 3;176,27,206;,
+ 3;197,177,233;,
+ 3;177,197,276;,
+ 3;208,206,92;,
+ 3;213,176,206;,
+ 3;26,196,192;,
+ 3;26,201,196;,
+ 3;191,26,192;,
+ 3;138,26,191;,
+ 3;26,138,202;,
+ 3;202,201,26;,
+ 3;24,185,25;,
+ 3;193,24,25;,
+ 3;136,185,24;,
+ 3;87,24,193;,
+ 3;24,87,137;,
+ 3;137,136,24;,
+ 3;194,30,300;,
+ 3;194,28,30;,
+ 3;25,28,194;,
+ 3;21,22,23;,
+ 3;20,22,21;,
+ 3;19,20,21;,
+ 3;19,21,18;,
+ 3;21,17,18;,
+ 3;23,17,21;,
+ 3;15,16,283;,
+ 3;283,241,242;,
+ 3;14,242,245;,
+ 3;15,242,14;,
+ 3;283,242,15;,
+ 3;13,22,20;,
+ 3;19,13,20;,
+ 3;10,11,12;,
+ 3;11,9,12;,
+ 3;8,245,244;,
+ 3;14,245,8;,
+ 4;12,7,22,13;,
+ 3;9,7,12;,
+ 3;12,13,10;,
+ 3;10,13,19;,
+ 3;6,244,297;,
+ 3;8,6,17;,
+ 3;5,8,17;,
+ 3;14,5,4;,
+ 3;8,5,14;,
+ 3;244,6,8;,
+ 3;3,15,4;,
+ 3;4,15,14;,
+ 3;3,16,15;,
+ 3;4,2,11;,
+ 3;5,2,4;,
+ 3;3,4,11;,
+ 3;16,296,283;,
+ 3;1,296,16;,
+ 3;1,297,296;,
+ 3;6,297,1;,
+ 3;2,7,9;,
+ 3;23,7,2;,
+ 3;22,7,23;,
+ 3;0,18,1;,
+ 3;16,0,1;,
+ 4;17,6,1,18;,
+ 3;3,0,16;,
+ 3;34,241,283;,
+ 3;282,34,283;,
+ 3;11,2,9;,
+ 3;23,2,5;,
+ 3;23,5,17;,
+ 3;10,3,11;,
+ 3;18,0,19;,
+ 3;0,3,10;,
+ 3;19,0,10;,
+ 3;25,185,186;,
+ 3;28,25,186;,
+ 3;193,25,194;,
+ 3;264,269,204;,
+ 3;227,264,204;,
+ 3;255,220,219;,
+ 3;259,220,255;,
+ 3;298,205,203;,
+ 3;300,298,203;;
+
+  MeshMaterialList {
+      1;
+  1;
+  0;;
+     Material {
+     0.694118;0.694118;0.694118;1.000000;;
+     50.000000;
+     1.000000;1.000000;1.000000;;
+       0.000000;0.000000;0.000000;;
+        TextureFilename {
+    "tiger.bmp";
+   }
+ }
+ }
+  MeshTextureCoords {
+    303;
+    0.190860;-0.544059;,
+    0.272086;-0.355992;,
+    0.077337;-0.522561;,
+    0.187013;-0.516511;,
+    0.180133;-0.467245;,
+    0.179370;-0.461784;,
+    0.265206;-0.306726;,
+    0.004406;-0.493426;,
+    0.264443;-0.301265;,
+    0.004719;-0.489377;,
+    0.077765;-0.579757;,
+    0.077380;-0.528268;,
+    0.004406;-0.493426;,
+    0.001581;-0.529958;,
+    0.265206;-0.306726;,
+    0.272086;-0.355992;,
+    0.275933;-0.383540;,
+    0.180133;-0.467245;,
+    0.187013;-0.516511;,
+    0.077979;-0.608548;,
+    0.000000;-0.550385;,
+    0.077765;-0.579757;,
+    0.001581;-0.529958;,
+    0.077380;-0.528268;,
+    0.764787;-0.600058;,
+    0.712026;-0.640601;,
+    0.882850;-0.350956;,
+    0.997293;-0.254425;,
+    0.571239;-0.666781;,
+    0.466839;-0.585368;,
+    0.466839;-0.585368;,
+    0.465868;-0.611086;,
+    0.395923;-0.575438;,
+    0.395452;-0.580559;,
+    0.333360;-0.419449;,
+    0.395923;-0.575438;,
+    0.355184;-0.527123;,
+    0.355184;-0.527123;,
+    0.355215;-0.645708;,
+    0.389458;-0.670719;,
+    0.400009;-0.577639;,
+    0.450862;-0.619968;,
+    0.428283;-0.698636;,
+    0.349750;-0.774111;,
+    0.450862;-0.619968;,
+    0.428283;-0.698636;,
+    0.400009;-0.577639;,
+    0.349750;-0.774111;,
+    0.355215;-0.645708;,
+    0.375498;-0.770684;,
+    0.389458;-0.670719;,
+    0.375498;-0.770684;,
+    0.380320;-0.814463;,
+    0.385866;-0.993469;,
+    0.399884;-0.804614;,
+    0.405685;-0.932268;,
+    0.387276;-0.940921;,
+    0.415286;-0.993271;,
+    0.385034;-0.993466;,
+    0.396878;-0.993421;,
+    0.421811;-0.993083;,
+    0.397606;-0.993432;,
+    0.432642;-0.932004;,
+    0.422107;-0.942626;,
+    0.432889;-0.932775;,
+    0.405989;-0.933040;,
+    0.388004;-0.942997;,
+    0.429913;-0.993060;,
+    0.404586;-0.766082;,
+    0.399436;-0.803843;,
+    0.429321;-0.993050;,
+    0.415226;-0.940741;,
+    0.450708;-0.993185;,
+    0.442901;-0.963505;,
+    0.454028;-0.958674;,
+    0.440448;-0.993006;,
+    0.461835;-0.993160;,
+    0.454276;-0.959110;,
+    0.440696;-0.993010;,
+    0.462082;-0.993162;,
+    0.443493;-0.964678;,
+    0.451300;-0.993190;,
+    0.363002;-0.821800;,
+    0.375432;-0.949709;,
+    0.376264;-0.950333;,
+    0.379246;-0.812387;,
+    0.361774;-0.821176;,
+    0.763676;-0.594291;,
+    0.794303;-0.593952;,
+    0.797220;-0.971853;,
+    0.795071;-0.881937;,
+    0.988489;-0.316579;,
+    0.995281;-0.265891;,
+    0.982078;-0.341098;,
+    0.728091;-0.664021;,
+    0.363002;-0.821800;,
+    0.380320;-0.814463;,
+    0.376264;-0.950333;,
+    0.385866;-0.993469;,
+    0.399884;-0.804614;,
+    0.432642;-0.932004;,
+    0.388004;-0.942997;,
+    0.405989;-0.933040;,
+    0.432889;-0.932775;,
+    0.422107;-0.942626;,
+    0.404586;-0.766082;,
+    0.450708;-0.993185;,
+    0.454028;-0.958674;,
+    0.442901;-0.963505;,
+    0.461835;-0.993160;,
+    0.454276;-0.959110;,
+    0.429913;-0.993060;,
+    0.440696;-0.993010;,
+    0.451300;-0.993190;,
+    0.443493;-0.964678;,
+    0.462082;-0.993162;,
+    0.399436;-0.803843;,
+    0.405685;-0.932268;,
+    0.415287;-0.993271;,
+    0.421811;-0.993083;,
+    0.397606;-0.993432;,
+    0.396878;-0.993421;,
+    0.440448;-0.993006;,
+    0.429321;-0.993050;,
+    0.415226;-0.940741;,
+    0.387276;-0.940921;,
+    0.375432;-0.949709;,
+    0.385034;-0.993466;,
+    0.379246;-0.812387;,
+    0.361774;-0.821176;,
+    0.747633;-0.900476;,
+    0.747633;-0.900476;,
+    0.760910;-0.629293;,
+    0.728091;-0.664021;,
+    0.760910;-0.629293;,
+    0.794303;-0.593952;,
+    0.763676;-0.594291;,
+    0.818767;-0.503206;,
+    0.855912;-0.385869;,
+    0.798742;-0.969124;,
+    0.772012;-0.890951;,
+    0.840834;-0.949998;,
+    0.856528;-0.987951;,
+    0.842461;-0.976419;,
+    0.854901;-0.973715;,
+    0.854792;-0.972749;,
+    0.840726;-0.948204;,
+    0.798742;-0.969124;,
+    0.772012;-0.890951;,
+    0.813072;-0.943402;,
+    0.812062;-0.945211;,
+    0.796818;-0.881257;,
+    0.857904;-1.000000;,
+    0.857904;-1.000000;,
+    0.856360;-0.986493;,
+    0.784658;-0.994402;,
+    0.843837;-0.998782;,
+    0.843837;-0.998782;,
+    0.842293;-0.973714;,
+    0.784659;-0.994402;,
+    0.843837;-0.998782;,
+    0.857515;-0.999664;,
+    0.784659;-0.994402;,
+    0.857515;-0.999663;,
+    0.855974;-0.985798;,
+    0.854404;-0.971689;,
+    0.842221;-0.973714;,
+    0.796818;-0.881257;,
+    0.813072;-0.943402;,
+    0.840726;-0.948205;,
+    0.840834;-0.949998;,
+    0.856139;-0.987294;,
+    0.854516;-0.972681;,
+    0.978706;-0.360300;,
+    0.988489;-0.316579;,
+    1.000000;-0.294706;,
+    0.995281;-0.265892;,
+    0.946417;-0.346659;,
+    0.982078;-0.341098;,
+    0.784658;-0.994402;,
+    0.795071;-0.881937;,
+    0.812062;-0.945211;,
+    0.797220;-0.971853;,
+    0.843837;-0.998782;,
+    0.842388;-0.976420;,
+    0.712026;-0.613714;,
+    0.571239;-0.639087;,
+    0.817656;-0.494263;,
+    0.791951;-0.596430;,
+    0.747631;-0.900474;,
+    0.769377;-0.891977;,
+    0.854799;-0.368082;,
+    0.880522;-0.292123;,
+    0.712026;-0.613714;,
+    0.571239;-0.639087;,
+    0.817656;-0.494263;,
+    0.909887;-0.344988;,
+    0.932623;-0.343050;,
+    0.791951;-0.596430;,
+    0.769377;-0.891977;,
+    0.747631;-0.900474;,
+    0.880522;-0.292123;,
+    0.854799;-0.368081;,
+    0.571241;-0.500134;,
+    0.571245;-0.169067;,
+    0.571244;-0.202102;,
+    0.969832;-0.153042;,
+    0.439309;-0.137774;,
+    0.967293;-0.174011;,
+    0.843505;-0.070163;,
+    0.851957;-0.215881;,
+    0.909864;-0.020599;,
+    0.870018;-0.026565;,
+    0.967293;-0.174011;,
+    0.955798;-0.068650;,
+    0.842181;-0.048945;,
+    0.843505;-0.070164;,
+    0.851957;-0.215881;,
+    0.798798;-0.078033;,
+    0.571244;-0.202102;,
+    0.571241;-0.500134;,
+    0.762086;-0.626358;,
+    0.819864;-0.314794;,
+    0.800124;-0.106254;,
+    0.757422;-0.148109;,
+    0.728088;-0.664016;,
+    0.771814;-0.421584;,
+    0.719266;-0.181517;,
+    0.712028;-0.478808;,
+    0.874427;-0.186227;,
+    0.909370;-0.238010;,
+    0.959999;-0.234332;,
+    0.871408;-0.061697;,
+    0.950664;-0.311544;,
+    0.941794;-0.210256;,
+    0.909884;-0.323149;,
+    0.936871;-0.301041;,
+    0.909867;-0.036985;,
+    0.939400;-0.000000;,
+    0.908856;-0.110724;,
+    0.940704;-0.073317;,
+    0.333520;-0.413657;,
+    0.323329;-0.296884;,
+    0.354021;-0.178827;,
+    0.325241;-0.219199;,
+    0.325051;-0.226951;,
+    0.403359;-0.157494;,
+    0.427480;-0.697780;,
+    0.352889;-0.643688;,
+    0.403919;-0.765721;,
+    0.387560;-0.668621;,
+    0.347925;-0.773819;,
+    0.373902;-0.769713;,
+    0.335634;-0.344847;,
+    0.352162;-0.511265;,
+    0.446010;-0.169247;,
+    0.398287;-0.428836;,
+    0.397574;-0.547381;,
+    0.449832;-0.609995;,
+    0.471708;-0.456328;,
+    0.762086;-0.626358;,
+    0.819864;-0.314794;,
+    0.800124;-0.106254;,
+    0.757422;-0.148109;,
+    0.719266;-0.149444;,
+    0.756097;-0.116784;,
+    0.728088;-0.664016;,
+    0.771814;-0.421584;,
+    0.712028;-0.478808;,
+    0.719266;-0.181517;,
+    0.874427;-0.186227;,
+    0.909370;-0.238010;,
+    0.959999;-0.234332;,
+    0.871408;-0.061697;,
+    0.909884;-0.323149;,
+    0.941794;-0.210256;,
+    0.950664;-0.311544;,
+    0.936871;-0.301041;,
+    0.909867;-0.036985;,
+    0.939400;-0.000000;,
+    0.940704;-0.073317;,
+    0.908856;-0.110724;,
+    0.333520;-0.413657;,
+    0.322366;-0.335988;,
+    0.403921;-0.127418;,
+    0.403359;-0.157494;,
+    0.427480;-0.697780;,
+    0.352889;-0.643688;,
+    0.347925;-0.773819;,
+    0.387560;-0.668621;,
+    0.403919;-0.765721;,
+    0.373901;-0.769713;,
+    0.352162;-0.511265;,
+    0.335634;-0.344847;,
+    0.354212;-0.163323;,
+    0.354021;-0.178827;,
+    0.323329;-0.296884;,
+    0.325051;-0.226951;,
+    0.446010;-0.169247;,
+    0.398287;-0.428836;,
+    0.471708;-0.456328;,
+    0.449832;-0.609995;,
+    0.397574;-0.547381;;
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/diamond.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/diamond.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/diamond.x	(revision 1481)
@@ -0,0 +1,374 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.999848,0.000000,-0.017452,0.000000,-0.011619,0.746193,-0.665629,0.000000,0.013023,0.665730,0.746079,0.000000,0.174683,8.929831,10.007600,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pSphere1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pSphereShape1 {
+   70;
+   0.655524;-2.121320;-2.017496;,
+   -1.716184;-2.121320;-1.246881;,
+   -1.716184;-2.121320;1.246881;,
+   0.655524;-2.121320;2.017496;,
+   2.121320;-2.121320;0.000000;,
+   0.927051;0.000000;-2.853170;,
+   -2.427051;0.000000;-1.763356;,
+   -2.427051;0.000000;1.763356;,
+   0.927051;0.000000;2.853170;,
+   3.000000;0.000000;0.000000;,
+   0.655524;2.121320;-2.017496;,
+   -1.716184;2.121320;-1.246881;,
+   -1.716184;2.121320;1.246881;,
+   0.655524;2.121320;2.017496;,
+   2.121320;2.121320;0.000000;,
+   0.000000;-3.000000;0.000000;,
+   0.000000;3.000000;0.000000;,
+   -2.427051;0.000000;-1.763356;,
+   -1.716184;-2.121320;-1.246881;,
+   -2.427051;0.000000;1.763356;,
+   -1.716184;-2.121320;1.246881;,
+   0.927051;0.000000;2.853170;,
+   0.655524;-2.121320;2.017496;,
+   0.927051;0.000000;-2.853170;,
+   3.000000;0.000000;0.000000;,
+   0.655524;-2.121320;-2.017496;,
+   2.121320;-2.121320;0.000000;,
+   0.927051;0.000000;-2.853170;,
+   -2.427051;0.000000;-1.763356;,
+   -2.427051;0.000000;-1.763356;,
+   -2.427051;0.000000;1.763356;,
+   -1.716184;2.121320;-1.246881;,
+   -2.427051;0.000000;1.763356;,
+   0.927051;0.000000;2.853170;,
+   -1.716184;2.121320;1.246881;,
+   0.927051;0.000000;2.853170;,
+   3.000000;0.000000;0.000000;,
+   0.655524;2.121320;2.017496;,
+   3.000000;0.000000;0.000000;,
+   0.927051;0.000000;-2.853170;,
+   2.121320;2.121320;0.000000;,
+   0.655524;2.121320;-2.017496;,
+   -1.716184;-2.121320;-1.246881;,
+   0.655524;-2.121320;-2.017496;,
+   -1.716184;-2.121320;1.246881;,
+   -1.716184;-2.121320;-1.246881;,
+   0.000000;-3.000000;0.000000;,
+   0.655524;-2.121320;2.017496;,
+   -1.716184;-2.121320;1.246881;,
+   0.000000;-3.000000;0.000000;,
+   2.121320;-2.121320;0.000000;,
+   0.655524;-2.121320;2.017496;,
+   0.000000;-3.000000;0.000000;,
+   0.655524;-2.121320;-2.017496;,
+   2.121320;-2.121320;0.000000;,
+   0.000000;-3.000000;0.000000;,
+   0.655524;2.121320;-2.017496;,
+   -1.716184;2.121320;-1.246881;,
+   -1.716184;2.121320;-1.246881;,
+   -1.716184;2.121320;1.246881;,
+   0.000000;3.000000;0.000000;,
+   -1.716184;2.121320;1.246881;,
+   0.655524;2.121320;2.017496;,
+   0.000000;3.000000;0.000000;,
+   0.655524;2.121320;2.017496;,
+   2.121320;2.121320;0.000000;,
+   0.000000;3.000000;0.000000;,
+   2.121320;2.121320;0.000000;,
+   0.655524;2.121320;-2.017496;,
+   0.000000;3.000000;0.000000;;
+   30;
+   3;6,5,1;,
+   3;0,1,5;,
+   3;7,17,2;,
+   3;18,2,17;,
+   3;8,19,3;,
+   3;20,3,19;,
+   3;9,21,4;,
+   3;22,4,21;,
+   3;23,24,25;,
+   3;26,25,24;,
+   3;27,28,10;,
+   3;28,11,10;,
+   3;29,30,31;,
+   3;30,12,31;,
+   3;32,33,34;,
+   3;33,13,34;,
+   3;35,36,37;,
+   3;36,14,37;,
+   3;38,39,40;,
+   3;39,41,40;,
+   3;42,43,15;,
+   3;44,45,46;,
+   3;47,48,49;,
+   3;50,51,52;,
+   3;53,54,55;,
+   3;56,57,16;,
+   3;58,59,60;,
+   3;61,62,63;,
+   3;64,65,66;,
+   3;67,68,69;;
+
+   MeshNormals {
+    37;
+    -0.948178;-0.317740;-0.000000;,
+    -0.948178;-0.317740;-0.000000;,
+    -0.948178;-0.317740;0.000000;,
+    -0.948178;0.317740;-0.000000;,
+    -0.948178;0.317740;-0.000000;,
+    -0.948178;0.317740;0.000000;,
+    -0.455736;-0.890115;-0.000000;,
+    -0.455736;0.890115;-0.000000;,
+    -0.293003;-0.317740;0.901771;,
+    -0.293003;0.317740;0.901771;,
+    -0.293003;-0.317740;0.901771;,
+    -0.293003;-0.317740;0.901771;,
+    -0.293003;0.317740;0.901771;,
+    -0.293003;0.317740;0.901771;,
+    -0.293003;-0.317740;-0.901771;,
+    -0.293003;-0.317740;-0.901771;,
+    -0.293003;0.317740;-0.901771;,
+    -0.293003;-0.317740;-0.901771;,
+    -0.293003;0.317740;-0.901771;,
+    -0.293003;0.317740;-0.901771;,
+    -0.140830;-0.890115;0.433430;,
+    -0.140830;0.890115;0.433430;,
+    -0.140830;-0.890115;-0.433430;,
+    -0.140830;0.890115;-0.433430;,
+    0.368698;-0.890115;-0.267875;,
+    0.368698;-0.890115;0.267875;,
+    0.368698;0.890115;-0.267875;,
+    0.368698;0.890115;0.267875;,
+    0.767092;-0.317740;0.557325;,
+    0.767092;-0.317740;-0.557325;,
+    0.767092;-0.317740;0.557325;,
+    0.767092;-0.317740;0.557325;,
+    0.767092;0.317740;0.557325;,
+    0.767092;0.317740;0.557325;,
+    0.767092;-0.317740;-0.557325;,
+    0.767092;0.317740;-0.557325;,
+    0.767092;0.317740;-0.557325;;
+    30;
+    3;14,15,15;,
+    3;17,15,15;,
+    3;2,1,1;,
+    3;0,1,1;,
+    3;8,10,10;,
+    3;11,10,10;,
+    3;31,30,30;,
+    3;28,30,30;,
+    3;34,34,34;,
+    3;29,34,34;,
+    3;16,19,19;,
+    3;19,18,19;,
+    3;5,4,4;,
+    3;4,3,4;,
+    3;9,12,12;,
+    3;12,13,12;,
+    3;33,32,32;,
+    3;32,32,32;,
+    3;35,35,35;,
+    3;35,36,35;,
+    3;22,22,22;,
+    3;6,6,6;,
+    3;20,20,20;,
+    3;25,25,25;,
+    3;24,24,24;,
+    3;23,23,23;,
+    3;7,7,7;,
+    3;21,21,21;,
+    3;27,27,27;,
+    3;26,26,26;;
+   }
+
+   MeshMaterialList {
+    1;
+    30;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    70;
+    17;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    6,
+    1,
+    7,
+    2,
+    8,
+    3,
+    5,
+    9,
+    0,
+    4,
+    5,
+    6,
+    6,
+    7,
+    11,
+    7,
+    8,
+    12,
+    8,
+    9,
+    13,
+    9,
+    5,
+    14,
+    10,
+    1,
+    0,
+    2,
+    1,
+    15,
+    3,
+    2,
+    15,
+    4,
+    3,
+    15,
+    0,
+    4,
+    15,
+    10,
+    11,
+    11,
+    12,
+    16,
+    12,
+    13,
+    16,
+    13,
+    14,
+    16,
+    14,
+    10,
+    16;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/torus.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/torus.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/torus.x	(revision 1481)
@@ -0,0 +1,3307 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.707107,0.000000,-0.707107,0.000000,-0.331295,0.883452,-0.331295,0.000000,0.624695,0.468521,0.624695,0.000000,4.029428,3.022071,4.029428,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pTorus1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pTorusShape1 {
+   532;
+   0.475528;0.000000;-0.154509;,
+   0.404509;0.000000;-0.293893;,
+   0.293893;0.000000;-0.404509;,
+   0.154509;0.000000;-0.475528;,
+   0.000000;0.000000;-0.500000;,
+   -0.154509;0.000000;-0.475528;,
+   -0.293893;0.000000;-0.404509;,
+   -0.404509;0.000000;-0.293893;,
+   -0.475528;0.000000;-0.154509;,
+   -0.500000;0.000000;-0.000000;,
+   -0.475528;0.000000;0.154509;,
+   -0.404509;0.000000;0.293893;,
+   -0.293893;0.000000;0.404509;,
+   -0.154509;0.000000;0.475528;,
+   0.000000;0.000000;0.500000;,
+   0.154509;0.000000;0.475528;,
+   0.293893;0.000000;0.404509;,
+   0.404509;0.000000;0.293893;,
+   0.475528;0.000000;0.154509;,
+   0.500000;0.000000;0.000000;,
+   0.498803;0.154509;-0.162071;,
+   0.424307;0.154509;-0.308277;,
+   0.308277;0.154509;-0.424307;,
+   0.162071;0.154509;-0.498802;,
+   0.000000;0.154509;-0.524472;,
+   -0.162071;0.154509;-0.498802;,
+   -0.308277;0.154509;-0.424307;,
+   -0.424307;0.154509;-0.308277;,
+   -0.498802;0.154509;-0.162071;,
+   -0.524472;0.154509;-0.000000;,
+   -0.498802;0.154509;0.162071;,
+   -0.424307;0.154509;0.308277;,
+   -0.308277;0.154509;0.424307;,
+   -0.162071;0.154509;0.498802;,
+   0.000000;0.154509;0.524472;,
+   0.162071;0.154509;0.498802;,
+   0.308277;0.154509;0.424307;,
+   0.424307;0.154509;0.308277;,
+   0.498802;0.154509;0.162071;,
+   0.524472;0.154509;0.000000;,
+   0.566346;0.293893;-0.184017;,
+   0.481763;0.293893;-0.350021;,
+   0.350021;0.293893;-0.481763;,
+   0.184017;0.293893;-0.566346;,
+   0.000000;0.293893;-0.595492;,
+   -0.184017;0.293893;-0.566346;,
+   -0.350021;0.293893;-0.481763;,
+   -0.481763;0.293893;-0.350021;,
+   -0.566346;0.293893;-0.184017;,
+   -0.595492;0.293893;-0.000000;,
+   -0.566346;0.293893;0.184017;,
+   -0.481763;0.293893;0.350021;,
+   -0.350021;0.293893;0.481763;,
+   -0.184017;0.293893;0.566346;,
+   0.000000;0.293893;0.595492;,
+   0.184017;0.293893;0.566346;,
+   0.350021;0.293893;0.481763;,
+   0.481763;0.293893;0.350021;,
+   0.566346;0.293893;0.184017;,
+   0.595491;0.293893;0.000000;,
+   0.671548;0.404509;-0.218199;,
+   0.571253;0.404509;-0.415040;,
+   0.415040;0.404509;-0.571253;,
+   0.218199;0.404509;-0.671548;,
+   0.000000;0.404509;-0.706108;,
+   -0.218199;0.404509;-0.671548;,
+   -0.415040;0.404509;-0.571253;,
+   -0.571253;0.404509;-0.415040;,
+   -0.671548;0.404509;-0.218199;,
+   -0.706108;0.404509;-0.000000;,
+   -0.671548;0.404509;0.218199;,
+   -0.571253;0.404509;0.415040;,
+   -0.415040;0.404509;0.571253;,
+   -0.218199;0.404509;0.671548;,
+   0.000000;0.404509;0.706107;,
+   0.218199;0.404509;0.671548;,
+   0.415040;0.404509;0.571253;,
+   0.571253;0.404509;0.415040;,
+   0.671548;0.404509;0.218199;,
+   0.706107;0.404509;0.000000;,
+   0.804111;0.475528;-0.261271;,
+   0.684017;0.475528;-0.496968;,
+   0.496968;0.475528;-0.684017;,
+   0.261271;0.475528;-0.804110;,
+   0.000000;0.475528;-0.845492;,
+   -0.261271;0.475528;-0.804110;,
+   -0.496968;0.475528;-0.684017;,
+   -0.684017;0.475528;-0.496968;,
+   -0.804110;0.475528;-0.261271;,
+   -0.845492;0.475528;-0.000000;,
+   -0.804110;0.475528;0.261271;,
+   -0.684017;0.475528;0.496968;,
+   -0.496968;0.475528;0.684017;,
+   -0.261271;0.475528;0.804110;,
+   0.000000;0.475528;0.845492;,
+   0.261271;0.475528;0.804110;,
+   0.496967;0.475528;0.684017;,
+   0.684017;0.475528;0.496967;,
+   0.804110;0.475528;0.261271;,
+   0.845491;0.475528;0.000000;,
+   0.951057;0.500000;-0.309017;,
+   0.809017;0.500000;-0.587786;,
+   0.587785;0.500000;-0.809017;,
+   0.309017;0.500000;-0.951057;,
+   0.000000;0.500000;-1.000000;,
+   -0.309017;0.500000;-0.951057;,
+   -0.587785;0.500000;-0.809017;,
+   -0.809017;0.500000;-0.587785;,
+   -0.951057;0.500000;-0.309017;,
+   -1.000000;0.500000;-0.000000;,
+   -0.951057;0.500000;0.309017;,
+   -0.809017;0.500000;0.587785;,
+   -0.587785;0.500000;0.809017;,
+   -0.309017;0.500000;0.951057;,
+   0.000000;0.500000;1.000000;,
+   0.309017;0.500000;0.951057;,
+   0.587785;0.500000;0.809017;,
+   0.809017;0.500000;0.587785;,
+   0.951057;0.500000;0.309017;,
+   1.000000;0.500000;0.000000;,
+   1.098003;0.475528;-0.356763;,
+   0.934017;0.475528;-0.678603;,
+   0.678603;0.475528;-0.934017;,
+   0.356763;0.475528;-1.098003;,
+   0.000000;0.475528;-1.154509;,
+   -0.356763;0.475528;-1.098003;,
+   -0.678603;0.475528;-0.934017;,
+   -0.934017;0.475528;-0.678603;,
+   -1.098003;0.475528;-0.356763;,
+   -1.154509;0.475528;-0.000000;,
+   -1.098003;0.475528;0.356763;,
+   -0.934017;0.475528;0.678603;,
+   -0.678603;0.475528;0.934017;,
+   -0.356763;0.475528;1.098003;,
+   0.000000;0.475528;1.154509;,
+   0.356763;0.475528;1.098003;,
+   0.678603;0.475528;0.934017;,
+   0.934017;0.475528;0.678603;,
+   1.098003;0.475528;0.356763;,
+   1.154508;0.475528;0.000000;,
+   1.230566;0.404509;-0.399835;,
+   1.046782;0.404509;-0.760531;,
+   0.760531;0.404509;-1.046782;,
+   0.399835;0.404509;-1.230566;,
+   0.000000;0.404509;-1.293893;,
+   -0.399835;0.404509;-1.230565;,
+   -0.760531;0.404509;-1.046781;,
+   -1.046781;0.404509;-0.760531;,
+   -1.230565;0.404509;-0.399835;,
+   -1.293893;0.404509;-0.000000;,
+   -1.230565;0.404509;0.399835;,
+   -1.046781;0.404509;0.760531;,
+   -0.760531;0.404509;1.046781;,
+   -0.399835;0.404509;1.230565;,
+   0.000000;0.404509;1.293893;,
+   0.399835;0.404509;1.230565;,
+   0.760531;0.404509;1.046781;,
+   1.046781;0.404509;0.760531;,
+   1.230565;0.404509;0.399835;,
+   1.293893;0.404509;0.000000;,
+   1.335768;0.293893;-0.434017;,
+   1.136272;0.293893;-0.825550;,
+   0.825550;0.293893;-1.136272;,
+   0.434017;0.293893;-1.335768;,
+   0.000000;0.293893;-1.404509;,
+   -0.434017;0.293893;-1.335768;,
+   -0.825550;0.293893;-1.136272;,
+   -1.136272;0.293893;-0.825550;,
+   -1.335767;0.293893;-0.434017;,
+   -1.404509;0.293893;-0.000000;,
+   -1.335767;0.293893;0.434017;,
+   -1.136272;0.293893;0.825550;,
+   -0.825550;0.293893;1.136271;,
+   -0.434017;0.293893;1.335767;,
+   0.000000;0.293893;1.404509;,
+   0.434017;0.293893;1.335767;,
+   0.825549;0.293893;1.136271;,
+   1.136271;0.293893;0.825549;,
+   1.335767;0.293893;0.434017;,
+   1.404509;0.293893;0.000000;,
+   1.403311;0.154509;-0.455964;,
+   1.193728;0.154509;-0.867294;,
+   0.867294;0.154509;-1.193728;,
+   0.455964;0.154509;-1.403311;,
+   0.000000;0.154509;-1.475529;,
+   -0.455963;0.154509;-1.403311;,
+   -0.867294;0.154509;-1.193728;,
+   -1.193728;0.154509;-0.867294;,
+   -1.403311;0.154509;-0.455963;,
+   -1.475529;0.154509;-0.000000;,
+   -1.403311;0.154509;0.455963;,
+   -1.193728;0.154509;0.867294;,
+   -0.867294;0.154509;1.193728;,
+   -0.455963;0.154509;1.403311;,
+   0.000000;0.154509;1.475528;,
+   0.455963;0.154509;1.403311;,
+   0.867294;0.154509;1.193728;,
+   1.193728;0.154509;0.867294;,
+   1.403311;0.154509;0.455963;,
+   1.475528;0.154509;0.000000;,
+   1.426586;-0.000000;-0.463526;,
+   1.213526;-0.000000;-0.881678;,
+   0.881678;-0.000000;-1.213526;,
+   0.463526;-0.000000;-1.426585;,
+   0.000000;-0.000000;-1.500001;,
+   -0.463526;-0.000000;-1.426585;,
+   -0.881678;-0.000000;-1.213526;,
+   -1.213526;-0.000000;-0.881678;,
+   -1.426585;-0.000000;-0.463526;,
+   -1.500000;-0.000000;-0.000000;,
+   -1.426585;-0.000000;0.463526;,
+   -1.213526;-0.000000;0.881678;,
+   -0.881678;-0.000000;1.213526;,
+   -0.463526;-0.000000;1.426585;,
+   0.000000;-0.000000;1.500000;,
+   0.463526;-0.000000;1.426585;,
+   0.881678;-0.000000;1.213526;,
+   1.213526;-0.000000;0.881678;,
+   1.426585;-0.000000;0.463526;,
+   1.500000;-0.000000;0.000000;,
+   1.403311;-0.154509;-0.455964;,
+   1.193728;-0.154509;-0.867294;,
+   0.867294;-0.154509;-1.193728;,
+   0.455964;-0.154509;-1.403311;,
+   0.000000;-0.154509;-1.475529;,
+   -0.455963;-0.154509;-1.403311;,
+   -0.867294;-0.154509;-1.193728;,
+   -1.193728;-0.154509;-0.867294;,
+   -1.403311;-0.154509;-0.455963;,
+   -1.475529;-0.154509;-0.000000;,
+   -1.403311;-0.154509;0.455963;,
+   -1.193728;-0.154509;0.867294;,
+   -0.867294;-0.154509;1.193728;,
+   -0.455963;-0.154509;1.403311;,
+   0.000000;-0.154509;1.475528;,
+   0.455963;-0.154509;1.403311;,
+   0.867294;-0.154509;1.193728;,
+   1.193728;-0.154509;0.867294;,
+   1.403311;-0.154509;0.455963;,
+   1.475528;-0.154509;0.000000;,
+   1.335768;-0.293893;-0.434017;,
+   1.136272;-0.293893;-0.825550;,
+   0.825550;-0.293893;-1.136272;,
+   0.434017;-0.293893;-1.335768;,
+   0.000000;-0.293893;-1.404509;,
+   -0.434017;-0.293893;-1.335768;,
+   -0.825550;-0.293893;-1.136272;,
+   -1.136272;-0.293893;-0.825550;,
+   -1.335767;-0.293893;-0.434017;,
+   -1.404509;-0.293893;-0.000000;,
+   -1.335767;-0.293893;0.434017;,
+   -1.136272;-0.293893;0.825550;,
+   -0.825550;-0.293893;1.136271;,
+   -0.434017;-0.293893;1.335767;,
+   0.000000;-0.293893;1.404509;,
+   0.434017;-0.293893;1.335767;,
+   0.825549;-0.293893;1.136271;,
+   1.136271;-0.293893;0.825549;,
+   1.335767;-0.293893;0.434017;,
+   1.404509;-0.293893;0.000000;,
+   1.230566;-0.404509;-0.399835;,
+   1.046782;-0.404509;-0.760531;,
+   0.760531;-0.404509;-1.046782;,
+   0.399835;-0.404509;-1.230566;,
+   0.000000;-0.404509;-1.293893;,
+   -0.399835;-0.404509;-1.230566;,
+   -0.760531;-0.404509;-1.046782;,
+   -1.046782;-0.404509;-0.760531;,
+   -1.230565;-0.404509;-0.399835;,
+   -1.293893;-0.404509;-0.000000;,
+   -1.230565;-0.404509;0.399835;,
+   -1.046781;-0.404509;0.760531;,
+   -0.760531;-0.404509;1.046781;,
+   -0.399835;-0.404509;1.230565;,
+   0.000000;-0.404509;1.293893;,
+   0.399835;-0.404509;1.230565;,
+   0.760531;-0.404509;1.046781;,
+   1.046781;-0.404509;0.760531;,
+   1.230565;-0.404509;0.399835;,
+   1.293893;-0.404509;0.000000;,
+   1.098003;-0.475528;-0.356763;,
+   0.934017;-0.475528;-0.678603;,
+   0.678603;-0.475528;-0.934017;,
+   0.356763;-0.475528;-1.098003;,
+   0.000000;-0.475528;-1.154509;,
+   -0.356763;-0.475528;-1.098003;,
+   -0.678603;-0.475528;-0.934017;,
+   -0.934017;-0.475528;-0.678603;,
+   -1.098003;-0.475528;-0.356763;,
+   -1.154509;-0.475528;-0.000000;,
+   -1.098003;-0.475528;0.356763;,
+   -0.934017;-0.475528;0.678603;,
+   -0.678603;-0.475528;0.934017;,
+   -0.356763;-0.475528;1.098003;,
+   0.000000;-0.475528;1.154509;,
+   0.356763;-0.475528;1.098003;,
+   0.678603;-0.475528;0.934017;,
+   0.934017;-0.475528;0.678603;,
+   1.098003;-0.475528;0.356763;,
+   1.154509;-0.475528;0.000000;,
+   0.951057;-0.500000;-0.309017;,
+   0.809017;-0.500000;-0.587786;,
+   0.587785;-0.500000;-0.809017;,
+   0.309017;-0.500000;-0.951057;,
+   0.000000;-0.500000;-1.000000;,
+   -0.309017;-0.500000;-0.951057;,
+   -0.587785;-0.500000;-0.809017;,
+   -0.809017;-0.500000;-0.587785;,
+   -0.951057;-0.500000;-0.309017;,
+   -1.000000;-0.500000;-0.000000;,
+   -0.951057;-0.500000;0.309017;,
+   -0.809017;-0.500000;0.587785;,
+   -0.587785;-0.500000;0.809017;,
+   -0.309017;-0.500000;0.951057;,
+   0.000000;-0.500000;1.000000;,
+   0.309017;-0.500000;0.951057;,
+   0.587785;-0.500000;0.809017;,
+   0.809017;-0.500000;0.587785;,
+   0.951057;-0.500000;0.309017;,
+   1.000000;-0.500000;0.000000;,
+   0.804110;-0.475528;-0.261271;,
+   0.684017;-0.475528;-0.496968;,
+   0.496968;-0.475528;-0.684017;,
+   0.261271;-0.475528;-0.804110;,
+   0.000000;-0.475528;-0.845492;,
+   -0.261271;-0.475528;-0.804110;,
+   -0.496968;-0.475528;-0.684017;,
+   -0.684017;-0.475528;-0.496968;,
+   -0.804110;-0.475528;-0.261271;,
+   -0.845492;-0.475528;-0.000000;,
+   -0.804110;-0.475528;0.261271;,
+   -0.684017;-0.475528;0.496967;,
+   -0.496967;-0.475528;0.684017;,
+   -0.261271;-0.475528;0.804110;,
+   0.000000;-0.475528;0.845492;,
+   0.261271;-0.475528;0.804110;,
+   0.496967;-0.475528;0.684017;,
+   0.684017;-0.475528;0.496967;,
+   0.804110;-0.475528;0.261271;,
+   0.845491;-0.475528;0.000000;,
+   0.671548;-0.404509;-0.218199;,
+   0.571253;-0.404509;-0.415040;,
+   0.415040;-0.404509;-0.571253;,
+   0.218199;-0.404509;-0.671548;,
+   0.000000;-0.404509;-0.706107;,
+   -0.218199;-0.404509;-0.671548;,
+   -0.415040;-0.404509;-0.571253;,
+   -0.571253;-0.404509;-0.415040;,
+   -0.671548;-0.404509;-0.218199;,
+   -0.706107;-0.404509;-0.000000;,
+   -0.671548;-0.404509;0.218199;,
+   -0.571253;-0.404509;0.415040;,
+   -0.415040;-0.404509;0.571253;,
+   -0.218199;-0.404509;0.671548;,
+   0.000000;-0.404509;0.706107;,
+   0.218199;-0.404509;0.671548;,
+   0.415039;-0.404509;0.571253;,
+   0.571253;-0.404509;0.415039;,
+   0.671548;-0.404509;0.218199;,
+   0.706107;-0.404509;0.000000;,
+   0.566346;-0.293893;-0.184017;,
+   0.481763;-0.293893;-0.350021;,
+   0.350021;-0.293893;-0.481763;,
+   0.184017;-0.293893;-0.566346;,
+   0.000000;-0.293893;-0.595492;,
+   -0.184017;-0.293893;-0.566346;,
+   -0.350021;-0.293893;-0.481763;,
+   -0.481763;-0.293893;-0.350021;,
+   -0.566346;-0.293893;-0.184017;,
+   -0.595491;-0.293893;-0.000000;,
+   -0.566346;-0.293893;0.184017;,
+   -0.481763;-0.293893;0.350021;,
+   -0.350021;-0.293893;0.481763;,
+   -0.184017;-0.293893;0.566346;,
+   0.000000;-0.293893;0.595491;,
+   0.184017;-0.293893;0.566346;,
+   0.350021;-0.293893;0.481763;,
+   0.481763;-0.293893;0.350021;,
+   0.566346;-0.293893;0.184017;,
+   0.595491;-0.293893;0.000000;,
+   0.498802;-0.154509;-0.162071;,
+   0.424307;-0.154509;-0.308277;,
+   0.308277;-0.154509;-0.424307;,
+   0.162071;-0.154509;-0.498802;,
+   0.000000;-0.154509;-0.524472;,
+   -0.162071;-0.154509;-0.498802;,
+   -0.308277;-0.154509;-0.424307;,
+   -0.424307;-0.154509;-0.308277;,
+   -0.498802;-0.154509;-0.162071;,
+   -0.524472;-0.154509;-0.000000;,
+   -0.498802;-0.154509;0.162071;,
+   -0.424306;-0.154509;0.308277;,
+   -0.308277;-0.154509;0.424306;,
+   -0.162071;-0.154509;0.498802;,
+   0.000000;-0.154509;0.524472;,
+   0.162071;-0.154509;0.498802;,
+   0.308277;-0.154509;0.424306;,
+   0.424306;-0.154509;0.308277;,
+   0.498802;-0.154509;0.162071;,
+   0.524472;-0.154509;0.000000;,
+   0.293893;0.000000;-0.404509;,
+   0.308277;0.154509;-0.424307;,
+   -0.404509;0.000000;-0.293893;,
+   -0.424307;0.154509;-0.308277;,
+   -0.293893;0.000000;0.404509;,
+   -0.308277;0.154509;0.424307;,
+   0.293893;0.000000;0.404509;,
+   0.308277;0.154509;0.424307;,
+   0.350021;0.293893;-0.481763;,
+   -0.481763;0.293893;-0.350021;,
+   -0.350021;0.293893;0.481763;,
+   0.350021;0.293893;0.481763;,
+   0.415040;0.404509;-0.571253;,
+   -0.571253;0.404509;-0.415040;,
+   -0.415040;0.404509;0.571253;,
+   0.415040;0.404509;0.571253;,
+   0.571253;0.404509;-0.415040;,
+   0.671548;0.404509;-0.218199;,
+   0.415040;0.404509;-0.571253;,
+   0.218199;0.404509;-0.671548;,
+   0.000000;0.404509;-0.706108;,
+   -0.218199;0.404509;-0.671548;,
+   -0.415040;0.404509;-0.571253;,
+   -0.571253;0.404509;-0.415040;,
+   -0.671548;0.404509;-0.218199;,
+   -0.706108;0.404509;-0.000000;,
+   -0.671548;0.404509;0.218199;,
+   -0.571253;0.404509;0.415040;,
+   -0.415040;0.404509;0.571253;,
+   -0.218199;0.404509;0.671548;,
+   0.000000;0.404509;0.706107;,
+   0.218199;0.404509;0.671548;,
+   0.415040;0.404509;0.571253;,
+   0.571253;0.404509;0.415040;,
+   0.671548;0.404509;0.218199;,
+   0.706107;0.404509;0.000000;,
+   1.136272;0.293893;-0.825550;,
+   1.335768;0.293893;-0.434017;,
+   0.825550;0.293893;-1.136272;,
+   0.434017;0.293893;-1.335768;,
+   0.825550;0.293893;-1.136272;,
+   0.867294;0.154509;-1.193728;,
+   0.000000;0.293893;-1.404509;,
+   -0.434017;0.293893;-1.335768;,
+   -0.825550;0.293893;-1.136272;,
+   -1.136272;0.293893;-0.825550;,
+   -1.335767;0.293893;-0.434017;,
+   -1.136272;0.293893;-0.825550;,
+   -1.193728;0.154509;-0.867294;,
+   -1.404509;0.293893;-0.000000;,
+   -1.335767;0.293893;0.434017;,
+   -1.136272;0.293893;0.825550;,
+   -0.825550;0.293893;1.136271;,
+   -0.434017;0.293893;1.335767;,
+   -0.825550;0.293893;1.136271;,
+   -0.867294;0.154509;1.193728;,
+   0.000000;0.293893;1.404509;,
+   0.434017;0.293893;1.335767;,
+   0.825549;0.293893;1.136271;,
+   1.136271;0.293893;0.825549;,
+   0.825549;0.293893;1.136271;,
+   0.867294;0.154509;1.193728;,
+   1.335767;0.293893;0.434017;,
+   1.404509;0.293893;0.000000;,
+   0.881678;-0.000000;-1.213526;,
+   -1.213526;-0.000000;-0.881678;,
+   -0.881678;-0.000000;1.213526;,
+   0.881678;-0.000000;1.213526;,
+   0.867294;-0.154509;-1.193728;,
+   -1.193728;-0.154509;-0.867294;,
+   -0.867294;-0.154509;1.193728;,
+   0.867294;-0.154509;1.193728;,
+   0.825550;-0.293893;-1.136272;,
+   -1.136272;-0.293893;-0.825550;,
+   -0.825550;-0.293893;1.136271;,
+   0.825549;-0.293893;1.136271;,
+   0.760531;-0.404509;-1.046782;,
+   -1.046782;-0.404509;-0.760531;,
+   -0.760531;-0.404509;1.046781;,
+   0.760531;-0.404509;1.046781;,
+   1.046782;-0.404509;-0.760531;,
+   1.230566;-0.404509;-0.399835;,
+   0.760531;-0.404509;-1.046782;,
+   0.399835;-0.404509;-1.230566;,
+   0.000000;-0.404509;-1.293893;,
+   -0.399835;-0.404509;-1.230566;,
+   -0.760531;-0.404509;-1.046782;,
+   -1.046782;-0.404509;-0.760531;,
+   -1.230565;-0.404509;-0.399835;,
+   -1.293893;-0.404509;-0.000000;,
+   -1.230565;-0.404509;0.399835;,
+   -1.046781;-0.404509;0.760531;,
+   -0.760531;-0.404509;1.046781;,
+   -0.399835;-0.404509;1.230565;,
+   0.000000;-0.404509;1.293893;,
+   0.399835;-0.404509;1.230565;,
+   0.760531;-0.404509;1.046781;,
+   1.046781;-0.404509;0.760531;,
+   1.230565;-0.404509;0.399835;,
+   1.293893;-0.404509;0.000000;,
+   0.571253;-0.404509;-0.415040;,
+   0.671548;-0.404509;-0.218199;,
+   0.415040;-0.404509;-0.571253;,
+   0.218199;-0.404509;-0.671548;,
+   0.415040;-0.404509;-0.571253;,
+   0.350021;-0.293893;-0.481763;,
+   0.000000;-0.404509;-0.706107;,
+   -0.218199;-0.404509;-0.671548;,
+   -0.415040;-0.404509;-0.571253;,
+   -0.571253;-0.404509;-0.415040;,
+   -0.671548;-0.404509;-0.218199;,
+   -0.571253;-0.404509;-0.415040;,
+   -0.481763;-0.293893;-0.350021;,
+   -0.706107;-0.404509;-0.000000;,
+   -0.671548;-0.404509;0.218199;,
+   -0.571253;-0.404509;0.415040;,
+   -0.415040;-0.404509;0.571253;,
+   -0.218199;-0.404509;0.671548;,
+   -0.415040;-0.404509;0.571253;,
+   -0.350021;-0.293893;0.481763;,
+   0.000000;-0.404509;0.706107;,
+   0.218199;-0.404509;0.671548;,
+   0.415039;-0.404509;0.571253;,
+   0.571253;-0.404509;0.415039;,
+   0.415039;-0.404509;0.571253;,
+   0.350021;-0.293893;0.481763;,
+   0.671548;-0.404509;0.218199;,
+   0.706107;-0.404509;0.000000;,
+   0.308277;-0.154509;-0.424307;,
+   -0.424307;-0.154509;-0.308277;,
+   -0.308277;-0.154509;0.424306;,
+   0.308277;-0.154509;0.424306;;
+   400;
+   4;1,0,20,21;,
+   4;2,1,21,22;,
+   4;3,400,401,23;,
+   4;4,3,23,24;,
+   4;5,4,24,25;,
+   4;6,5,25,26;,
+   4;7,6,26,27;,
+   4;8,402,403,28;,
+   4;9,8,28,29;,
+   4;10,9,29,30;,
+   4;11,10,30,31;,
+   4;12,11,31,32;,
+   4;13,404,405,33;,
+   4;14,13,33,34;,
+   4;15,14,34,35;,
+   4;16,15,35,36;,
+   4;17,406,407,37;,
+   4;18,17,37,38;,
+   4;19,18,38,39;,
+   4;0,19,39,20;,
+   4;21,20,40,41;,
+   4;22,21,41,42;,
+   4;23,401,408,43;,
+   4;24,23,43,44;,
+   4;25,24,44,45;,
+   4;26,25,45,46;,
+   4;27,26,46,47;,
+   4;28,403,409,48;,
+   4;29,28,48,49;,
+   4;30,29,49,50;,
+   4;31,30,50,51;,
+   4;32,31,51,52;,
+   4;33,405,410,53;,
+   4;34,33,53,54;,
+   4;35,34,54,55;,
+   4;36,35,55,56;,
+   4;37,407,411,57;,
+   4;38,37,57,58;,
+   4;39,38,58,59;,
+   4;20,39,59,40;,
+   4;41,40,60,61;,
+   4;42,41,61,62;,
+   4;43,408,412,63;,
+   4;44,43,63,64;,
+   4;45,44,64,65;,
+   4;46,45,65,66;,
+   4;47,46,66,67;,
+   4;48,409,413,68;,
+   4;49,48,68,69;,
+   4;50,49,69,70;,
+   4;51,50,70,71;,
+   4;52,51,71,72;,
+   4;53,410,414,73;,
+   4;54,53,73,74;,
+   4;55,54,74,75;,
+   4;56,55,75,76;,
+   4;57,411,415,77;,
+   4;58,57,77,78;,
+   4;59,58,78,79;,
+   4;40,59,79,60;,
+   4;416,417,80,81;,
+   4;418,416,81,82;,
+   4;419,418,82,83;,
+   4;420,419,83,84;,
+   4;421,420,84,85;,
+   4;422,421,85,86;,
+   4;423,422,86,87;,
+   4;424,423,87,88;,
+   4;425,424,88,89;,
+   4;426,425,89,90;,
+   4;427,426,90,91;,
+   4;428,427,91,92;,
+   4;429,428,92,93;,
+   4;430,429,93,94;,
+   4;431,430,94,95;,
+   4;432,431,95,96;,
+   4;433,432,96,97;,
+   4;434,433,97,98;,
+   4;435,434,98,99;,
+   4;417,435,99,80;,
+   4;81,80,100,101;,
+   4;82,81,101,102;,
+   4;83,82,102,103;,
+   4;84,83,103,104;,
+   4;85,84,104,105;,
+   4;86,85,105,106;,
+   4;87,86,106,107;,
+   4;88,87,107,108;,
+   4;89,88,108,109;,
+   4;90,89,109,110;,
+   4;91,90,110,111;,
+   4;92,91,111,112;,
+   4;93,92,112,113;,
+   4;94,93,113,114;,
+   4;95,94,114,115;,
+   4;96,95,115,116;,
+   4;97,96,116,117;,
+   4;98,97,117,118;,
+   4;99,98,118,119;,
+   4;80,99,119,100;,
+   4;101,100,120,121;,
+   4;102,101,121,122;,
+   4;103,102,122,123;,
+   4;104,103,123,124;,
+   4;105,104,124,125;,
+   4;106,105,125,126;,
+   4;107,106,126,127;,
+   4;108,107,127,128;,
+   4;109,108,128,129;,
+   4;110,109,129,130;,
+   4;111,110,130,131;,
+   4;112,111,131,132;,
+   4;113,112,132,133;,
+   4;114,113,133,134;,
+   4;115,114,134,135;,
+   4;116,115,135,136;,
+   4;117,116,136,137;,
+   4;118,117,137,138;,
+   4;119,118,138,139;,
+   4;100,119,139,120;,
+   4;121,120,140,141;,
+   4;122,121,141,142;,
+   4;123,122,142,143;,
+   4;124,123,143,144;,
+   4;125,124,144,145;,
+   4;126,125,145,146;,
+   4;127,126,146,147;,
+   4;128,127,147,148;,
+   4;129,128,148,149;,
+   4;130,129,149,150;,
+   4;131,130,150,151;,
+   4;132,131,151,152;,
+   4;133,132,152,153;,
+   4;134,133,153,154;,
+   4;135,134,154,155;,
+   4;136,135,155,156;,
+   4;137,136,156,157;,
+   4;138,137,157,158;,
+   4;139,138,158,159;,
+   4;120,139,159,140;,
+   4;141,140,160,161;,
+   4;142,141,161,162;,
+   4;143,142,162,163;,
+   4;144,143,163,164;,
+   4;145,144,164,165;,
+   4;146,145,165,166;,
+   4;147,146,166,167;,
+   4;148,147,167,168;,
+   4;149,148,168,169;,
+   4;150,149,169,170;,
+   4;151,150,170,171;,
+   4;152,151,171,172;,
+   4;153,152,172,173;,
+   4;154,153,173,174;,
+   4;155,154,174,175;,
+   4;156,155,175,176;,
+   4;157,156,176,177;,
+   4;158,157,177,178;,
+   4;159,158,178,179;,
+   4;140,159,179,160;,
+   4;436,437,180,181;,
+   4;438,436,181,182;,
+   4;439,440,441,183;,
+   4;442,439,183,184;,
+   4;443,442,184,185;,
+   4;444,443,185,186;,
+   4;445,444,186,187;,
+   4;446,447,448,188;,
+   4;449,446,188,189;,
+   4;450,449,189,190;,
+   4;451,450,190,191;,
+   4;452,451,191,192;,
+   4;453,454,455,193;,
+   4;456,453,193,194;,
+   4;457,456,194,195;,
+   4;458,457,195,196;,
+   4;459,460,461,197;,
+   4;462,459,197,198;,
+   4;463,462,198,199;,
+   4;437,463,199,180;,
+   4;181,180,200,201;,
+   4;182,181,201,202;,
+   4;183,441,464,203;,
+   4;184,183,203,204;,
+   4;185,184,204,205;,
+   4;186,185,205,206;,
+   4;187,186,206,207;,
+   4;188,448,465,208;,
+   4;189,188,208,209;,
+   4;190,189,209,210;,
+   4;191,190,210,211;,
+   4;192,191,211,212;,
+   4;193,455,466,213;,
+   4;194,193,213,214;,
+   4;195,194,214,215;,
+   4;196,195,215,216;,
+   4;197,461,467,217;,
+   4;198,197,217,218;,
+   4;199,198,218,219;,
+   4;180,199,219,200;,
+   4;201,200,220,221;,
+   4;202,201,221,222;,
+   4;203,464,468,223;,
+   4;204,203,223,224;,
+   4;205,204,224,225;,
+   4;206,205,225,226;,
+   4;207,206,226,227;,
+   4;208,465,469,228;,
+   4;209,208,228,229;,
+   4;210,209,229,230;,
+   4;211,210,230,231;,
+   4;212,211,231,232;,
+   4;213,466,470,233;,
+   4;214,213,233,234;,
+   4;215,214,234,235;,
+   4;216,215,235,236;,
+   4;217,467,471,237;,
+   4;218,217,237,238;,
+   4;219,218,238,239;,
+   4;200,219,239,220;,
+   4;221,220,240,241;,
+   4;222,221,241,242;,
+   4;223,468,472,243;,
+   4;224,223,243,244;,
+   4;225,224,244,245;,
+   4;226,225,245,246;,
+   4;227,226,246,247;,
+   4;228,469,473,248;,
+   4;229,228,248,249;,
+   4;230,229,249,250;,
+   4;231,230,250,251;,
+   4;232,231,251,252;,
+   4;233,470,474,253;,
+   4;234,233,253,254;,
+   4;235,234,254,255;,
+   4;236,235,255,256;,
+   4;237,471,475,257;,
+   4;238,237,257,258;,
+   4;239,238,258,259;,
+   4;220,239,259,240;,
+   4;241,240,260,261;,
+   4;242,241,261,262;,
+   4;243,472,476,263;,
+   4;244,243,263,264;,
+   4;245,244,264,265;,
+   4;246,245,265,266;,
+   4;247,246,266,267;,
+   4;248,473,477,268;,
+   4;249,248,268,269;,
+   4;250,249,269,270;,
+   4;251,250,270,271;,
+   4;252,251,271,272;,
+   4;253,474,478,273;,
+   4;254,253,273,274;,
+   4;255,254,274,275;,
+   4;256,255,275,276;,
+   4;257,475,479,277;,
+   4;258,257,277,278;,
+   4;259,258,278,279;,
+   4;240,259,279,260;,
+   4;480,481,280,281;,
+   4;482,480,281,282;,
+   4;483,482,282,283;,
+   4;484,483,283,284;,
+   4;485,484,284,285;,
+   4;486,485,285,286;,
+   4;487,486,286,287;,
+   4;488,487,287,288;,
+   4;489,488,288,289;,
+   4;490,489,289,290;,
+   4;491,490,290,291;,
+   4;492,491,291,292;,
+   4;493,492,292,293;,
+   4;494,493,293,294;,
+   4;495,494,294,295;,
+   4;496,495,295,296;,
+   4;497,496,296,297;,
+   4;498,497,297,298;,
+   4;499,498,298,299;,
+   4;481,499,299,280;,
+   4;281,280,300,301;,
+   4;282,281,301,302;,
+   4;283,282,302,303;,
+   4;284,283,303,304;,
+   4;285,284,304,305;,
+   4;286,285,305,306;,
+   4;287,286,306,307;,
+   4;288,287,307,308;,
+   4;289,288,308,309;,
+   4;290,289,309,310;,
+   4;291,290,310,311;,
+   4;292,291,311,312;,
+   4;293,292,312,313;,
+   4;294,293,313,314;,
+   4;295,294,314,315;,
+   4;296,295,315,316;,
+   4;297,296,316,317;,
+   4;298,297,317,318;,
+   4;299,298,318,319;,
+   4;280,299,319,300;,
+   4;301,300,320,321;,
+   4;302,301,321,322;,
+   4;303,302,322,323;,
+   4;304,303,323,324;,
+   4;305,304,324,325;,
+   4;306,305,325,326;,
+   4;307,306,326,327;,
+   4;308,307,327,328;,
+   4;309,308,328,329;,
+   4;310,309,329,330;,
+   4;311,310,330,331;,
+   4;312,311,331,332;,
+   4;313,312,332,333;,
+   4;314,313,333,334;,
+   4;315,314,334,335;,
+   4;316,315,335,336;,
+   4;317,316,336,337;,
+   4;318,317,337,338;,
+   4;319,318,338,339;,
+   4;300,319,339,320;,
+   4;321,320,340,341;,
+   4;322,321,341,342;,
+   4;323,322,342,343;,
+   4;324,323,343,344;,
+   4;325,324,344,345;,
+   4;326,325,345,346;,
+   4;327,326,346,347;,
+   4;328,327,347,348;,
+   4;329,328,348,349;,
+   4;330,329,349,350;,
+   4;331,330,350,351;,
+   4;332,331,351,352;,
+   4;333,332,352,353;,
+   4;334,333,353,354;,
+   4;335,334,354,355;,
+   4;336,335,355,356;,
+   4;337,336,356,357;,
+   4;338,337,357,358;,
+   4;339,338,358,359;,
+   4;320,339,359,340;,
+   4;500,501,360,361;,
+   4;502,500,361,362;,
+   4;503,504,505,363;,
+   4;506,503,363,364;,
+   4;507,506,364,365;,
+   4;508,507,365,366;,
+   4;509,508,366,367;,
+   4;510,511,512,368;,
+   4;513,510,368,369;,
+   4;514,513,369,370;,
+   4;515,514,370,371;,
+   4;516,515,371,372;,
+   4;517,518,519,373;,
+   4;520,517,373,374;,
+   4;521,520,374,375;,
+   4;522,521,375,376;,
+   4;523,524,525,377;,
+   4;526,523,377,378;,
+   4;527,526,378,379;,
+   4;501,527,379,360;,
+   4;361,360,380,381;,
+   4;362,361,381,382;,
+   4;363,505,528,383;,
+   4;364,363,383,384;,
+   4;365,364,384,385;,
+   4;366,365,385,386;,
+   4;367,366,386,387;,
+   4;368,512,529,388;,
+   4;369,368,388,389;,
+   4;370,369,389,390;,
+   4;371,370,390,391;,
+   4;372,371,391,392;,
+   4;373,519,530,393;,
+   4;374,373,393,394;,
+   4;375,374,394,395;,
+   4;376,375,395,396;,
+   4;377,525,531,397;,
+   4;378,377,397,398;,
+   4;379,378,398,399;,
+   4;360,379,399,380;,
+   4;381,380,0,1;,
+   4;382,381,1,2;,
+   4;383,528,400,3;,
+   4;384,383,3,4;,
+   4;385,384,4,5;,
+   4;386,385,5,6;,
+   4;387,386,6,7;,
+   4;388,529,402,8;,
+   4;389,388,8,9;,
+   4;390,389,9,10;,
+   4;391,390,10,11;,
+   4;392,391,11,12;,
+   4;393,530,404,13;,
+   4;394,393,13,14;,
+   4;395,394,14,15;,
+   4;396,395,15,16;,
+   4;397,531,406,17;,
+   4;398,397,17,18;,
+   4;399,398,18,19;,
+   4;380,399,19,0;;
+
+   MeshNormals {
+    400;
+    -1.000000;-0.000000;-0.000000;,
+    -1.000000;0.000001;-0.000001;,
+    -0.951057;0.000001;0.309016;,
+    -0.951057;-0.000000;0.309017;,
+    -0.951057;0.000000;-0.309017;,
+    -0.951057;0.000001;-0.309017;,
+    -0.951002;-0.309184;-0.000001;,
+    -0.951002;0.309185;-0.000001;,
+    -0.951002;-0.309185;0.000000;,
+    -0.951002;0.309185;-0.000000;,
+    -0.904457;-0.309184;0.293875;,
+    -0.904457;-0.309184;-0.293876;,
+    -0.904457;0.309185;0.293875;,
+    -0.904457;0.309185;-0.293876;,
+    -0.904457;-0.309185;-0.293876;,
+    -0.904457;0.309185;-0.293876;,
+    -0.904457;0.309185;0.293876;,
+    -0.904456;-0.309185;0.293876;,
+    -0.809017;0.000001;-0.587785;,
+    -0.809017;0.000000;-0.587785;,
+    -0.809017;-0.000000;0.587785;,
+    -0.809017;0.000001;0.587785;,
+    -0.808848;0.588018;-0.000001;,
+    -0.808848;-0.588018;-0.000001;,
+    -0.808848;-0.588018;0.000000;,
+    -0.808848;0.588018;0.000000;,
+    -0.769377;-0.309184;-0.558985;,
+    -0.769377;-0.309184;0.558985;,
+    -0.769377;0.309185;-0.558985;,
+    -0.769377;-0.309185;-0.558985;,
+    -0.769377;0.309185;0.558985;,
+    -0.769377;0.309185;0.558985;,
+    -0.769377;0.309185;-0.558985;,
+    -0.769377;-0.309185;0.558985;,
+    -0.769260;0.588018;0.249947;,
+    -0.769260;-0.588018;0.249947;,
+    -0.769260;0.588018;-0.249948;,
+    -0.769260;-0.588018;-0.249948;,
+    -0.769260;-0.588018;0.249948;,
+    -0.769260;-0.588018;-0.249948;,
+    -0.769260;0.588018;0.249948;,
+    -0.769260;0.588018;-0.249948;,
+    -0.654372;-0.588018;-0.475429;,
+    -0.654372;-0.588018;-0.475429;,
+    -0.654372;0.588018;-0.475429;,
+    -0.654372;-0.588018;0.475429;,
+    -0.654372;0.588018;0.475429;,
+    -0.654372;-0.588018;0.475429;,
+    -0.654372;0.588018;0.475429;,
+    -0.654372;0.588018;-0.475429;,
+    -0.587785;0.000001;-0.809017;,
+    -0.587785;-0.000000;-0.809017;,
+    -0.587785;0.000000;0.809017;,
+    -0.587785;0.000001;0.809017;,
+    -0.587551;-0.809187;-0.000000;,
+    -0.587551;0.809187;-0.000000;,
+    -0.587551;-0.809187;-0.000000;,
+    -0.587551;0.809187;0.000000;,
+    -0.558985;-0.309184;-0.769377;,
+    -0.558985;-0.309185;-0.769377;,
+    -0.558985;-0.309184;0.769377;,
+    -0.558985;0.309185;-0.769377;,
+    -0.558985;0.309185;-0.769377;,
+    -0.558985;-0.309185;0.769377;,
+    -0.558985;0.309185;0.769377;,
+    -0.558985;0.309185;0.769377;,
+    -0.558794;-0.809187;0.181563;,
+    -0.558794;0.809187;-0.181563;,
+    -0.558794;0.809187;0.181563;,
+    -0.558794;-0.809187;-0.181563;,
+    -0.558794;-0.809187;-0.181563;,
+    -0.558794;-0.809187;0.181563;,
+    -0.558794;0.809187;0.181563;,
+    -0.558794;0.809187;-0.181563;,
+    -0.475429;-0.588018;-0.654372;,
+    -0.475429;-0.588018;-0.654372;,
+    -0.475429;-0.588017;0.654372;,
+    -0.475429;0.588018;-0.654372;,
+    -0.475429;0.588018;0.654372;,
+    -0.475429;0.588018;-0.654372;,
+    -0.475429;-0.588018;0.654372;,
+    -0.475429;0.588018;0.654372;,
+    -0.475339;-0.809187;0.345354;,
+    -0.475339;-0.809187;-0.345354;,
+    -0.475339;0.809187;-0.345354;,
+    -0.475339;-0.809187;-0.345354;,
+    -0.475339;0.809187;0.345354;,
+    -0.475339;0.809187;0.345354;,
+    -0.475339;-0.809187;0.345354;,
+    -0.475339;0.809187;-0.345354;,
+    -0.345354;-0.809187;0.475339;,
+    -0.345354;-0.809187;-0.475339;,
+    -0.345354;0.809187;-0.475339;,
+    -0.345354;-0.809187;-0.475339;,
+    -0.345354;0.809187;0.475339;,
+    -0.345354;-0.809187;0.475339;,
+    -0.345354;0.809187;-0.475339;,
+    -0.345354;0.809187;0.475339;,
+    -0.309017;-0.000000;-0.951056;,
+    -0.309017;0.000001;-0.951056;,
+    -0.309017;-0.000000;0.951057;,
+    -0.309017;0.000001;0.951057;,
+    -0.308846;0.951112;-0.000000;,
+    -0.308846;-0.951112;0.000000;,
+    -0.308846;-0.951112;-0.000000;,
+    -0.308846;0.951112;-0.000000;,
+    -0.293876;-0.309184;-0.904457;,
+    -0.293876;0.309185;-0.904457;,
+    -0.293876;-0.309185;-0.904457;,
+    -0.293876;0.309185;-0.904457;,
+    -0.293876;-0.309184;0.904457;,
+    -0.293876;0.309185;0.904457;,
+    -0.293876;-0.309185;0.904457;,
+    -0.293876;0.309185;0.904457;,
+    -0.293730;0.951112;-0.095439;,
+    -0.293730;0.951112;0.095438;,
+    -0.293730;-0.951112;0.095439;,
+    -0.293730;-0.951112;-0.095439;,
+    -0.293730;-0.951112;-0.095439;,
+    -0.293730;0.951112;-0.095439;,
+    -0.293730;-0.951112;0.095438;,
+    -0.293730;0.951112;0.095439;,
+    -0.249948;-0.588018;-0.769260;,
+    -0.249948;0.588018;-0.769260;,
+    -0.249948;-0.588018;-0.769260;,
+    -0.249948;0.588018;-0.769260;,
+    -0.249948;-0.588017;0.769260;,
+    -0.249948;0.588018;0.769260;,
+    -0.249948;-0.588018;0.769260;,
+    -0.249948;0.588018;0.769260;,
+    -0.249862;0.951112;-0.181535;,
+    -0.249862;-0.951112;0.181535;,
+    -0.249862;-0.951112;-0.181535;,
+    -0.249862;0.951112;0.181535;,
+    -0.249862;-0.951112;-0.181535;,
+    -0.249861;0.951112;-0.181535;,
+    -0.249861;0.951112;0.181535;,
+    -0.249861;-0.951112;0.181535;,
+    -0.181563;-0.809187;-0.558794;,
+    -0.181563;-0.809187;-0.558794;,
+    -0.181563;0.809187;-0.558794;,
+    -0.181563;-0.809187;0.558794;,
+    -0.181563;0.809187;0.558794;,
+    -0.181563;0.809187;-0.558794;,
+    -0.181563;-0.809187;0.558794;,
+    -0.181563;0.809187;0.558794;,
+    -0.181535;0.951112;-0.249862;,
+    -0.181535;-0.951112;0.249862;,
+    -0.181535;-0.951112;-0.249862;,
+    -0.181535;0.951112;0.249862;,
+    -0.181535;-0.951112;-0.249862;,
+    -0.181535;0.951112;-0.249861;,
+    -0.181535;0.951112;0.249862;,
+    -0.181535;-0.951112;0.249861;,
+    -0.095439;0.951112;-0.293730;,
+    -0.095439;-0.951112;-0.293730;,
+    -0.095439;0.951112;-0.293730;,
+    -0.095439;-0.951112;0.293730;,
+    -0.095439;-0.951112;-0.293730;,
+    -0.095439;0.951112;0.293730;,
+    -0.095439;0.951112;0.293730;,
+    -0.095439;-0.951112;0.293730;,
+    -0.000000;-0.809187;-0.587551;,
+    -0.000000;0.000001;-1.000000;,
+    -0.000000;0.309185;-0.951002;,
+    -0.000000;-0.809187;-0.587551;,
+    -0.000000;0.309185;-0.951002;,
+    -0.000000;-1.000000;-0.000000;,
+    -0.000000;-0.000000;-1.000000;,
+    -0.000000;-0.588018;-0.808848;,
+    -0.000000;-1.000000;-0.000000;,
+    -0.000000;-1.000000;0.000000;,
+    -0.000000;0.588018;-0.808848;,
+    -0.000000;1.000000;0.000000;,
+    -0.000000;0.588018;-0.808848;,
+    -0.000000;-0.309185;-0.951002;,
+    -0.000000;1.000000;-0.000000;,
+    -0.000000;0.809187;-0.587551;,
+    -0.000000;-1.000000;0.000000;,
+    -0.000000;-1.000000;-0.000000;,
+    -0.000000;-1.000000;0.000000;,
+    -0.000000;-1.000000;0.000000;,
+    -0.000000;1.000000;0.000000;,
+    -0.000000;-0.951112;-0.308846;,
+    -0.000000;-0.951112;-0.308846;,
+    -0.000000;-1.000000;0.000000;,
+    -0.000000;0.809187;-0.587551;,
+    -0.000000;0.951112;-0.308846;,
+    -0.000000;1.000000;-0.000000;,
+    -0.000000;-0.588018;-0.808848;,
+    -0.000000;0.951112;-0.308846;,
+    -0.000000;-0.309184;-0.951002;,
+    -0.000000;1.000000;-0.000000;,
+    -0.000000;-1.000000;-0.000000;,
+    -0.000000;1.000000;-0.000000;,
+    -0.000000;1.000000;-0.000000;,
+    -0.000000;1.000000;0.000000;,
+    -0.000000;1.000000;-0.000000;,
+    -0.000000;-1.000000;0.000000;,
+    -0.000000;-1.000000;-0.000000;,
+    -0.000000;1.000000;0.000000;,
+    -0.000000;1.000000;-0.000000;,
+    0.000000;-0.951112;0.308846;,
+    0.000000;1.000000;-0.000000;,
+    0.000000;1.000000;0.000000;,
+    0.000000;0.951112;0.308846;,
+    0.000000;-0.000000;1.000000;,
+    0.000000;-1.000000;0.000000;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;0.951112;0.308846;,
+    0.000000;-0.951112;0.308846;,
+    0.000000;1.000000;-0.000000;,
+    0.000000;1.000000;0.000000;,
+    0.000000;0.809187;0.587551;,
+    0.000000;0.309185;0.951002;,
+    0.000000;1.000000;-0.000000;,
+    0.000000;-0.809187;0.587551;,
+    0.000000;-1.000000;0.000000;,
+    0.000000;0.588018;0.808848;,
+    0.000000;1.000000;0.000000;,
+    0.000000;-0.309185;0.951002;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;1.000000;0.000000;,
+    0.000000;1.000000;-0.000000;,
+    0.000000;1.000000;0.000000;,
+    0.000000;0.309185;0.951002;,
+    0.000000;-1.000000;0.000000;,
+    0.000000;0.000001;1.000000;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;-0.309184;0.951002;,
+    0.000000;-0.588018;0.808848;,
+    0.000000;-0.809187;0.587551;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;-0.588018;0.808848;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;-1.000000;0.000000;,
+    0.000000;0.809187;0.587551;,
+    0.000000;0.588018;0.808848;,
+    0.095439;-0.951112;-0.293730;,
+    0.095439;0.951112;-0.293730;,
+    0.095439;-0.951112;0.293730;,
+    0.095439;-0.951112;-0.293730;,
+    0.095439;0.951112;-0.293730;,
+    0.095439;0.951112;0.293730;,
+    0.095439;0.951112;0.293730;,
+    0.095439;-0.951112;0.293730;,
+    0.181535;-0.951112;-0.249861;,
+    0.181535;0.951112;-0.249862;,
+    0.181535;-0.951112;0.249861;,
+    0.181535;-0.951112;-0.249862;,
+    0.181535;0.951112;-0.249862;,
+    0.181535;0.951112;0.249862;,
+    0.181535;-0.951112;0.249862;,
+    0.181535;0.951112;0.249862;,
+    0.181563;0.809187;-0.558794;,
+    0.181563;-0.809187;-0.558794;,
+    0.181563;0.809187;-0.558794;,
+    0.181563;-0.809187;-0.558794;,
+    0.181563;-0.809187;0.558794;,
+    0.181563;0.809187;0.558794;,
+    0.181563;0.809187;0.558794;,
+    0.181563;-0.809187;0.558795;,
+    0.249861;-0.951112;-0.181535;,
+    0.249861;-0.951112;0.181535;,
+    0.249861;0.951112;-0.181535;,
+    0.249862;0.951112;0.181535;,
+    0.249862;0.951112;-0.181535;,
+    0.249862;-0.951112;-0.181535;,
+    0.249862;0.951112;0.181535;,
+    0.249862;-0.951112;0.181535;,
+    0.249948;0.588018;-0.769260;,
+    0.249948;0.588018;-0.769260;,
+    0.249948;-0.588018;-0.769260;,
+    0.249948;-0.588018;-0.769260;,
+    0.249948;0.588018;0.769260;,
+    0.249948;0.588018;0.769260;,
+    0.249948;-0.588018;0.769260;,
+    0.249948;-0.588018;0.769260;,
+    0.293730;-0.951112;-0.095439;,
+    0.293730;-0.951112;0.095439;,
+    0.293730;0.951112;-0.095438;,
+    0.293730;0.951112;-0.095439;,
+    0.293730;0.951112;0.095439;,
+    0.293730;-0.951112;-0.095438;,
+    0.293730;0.951112;0.095439;,
+    0.293730;-0.951112;0.095439;,
+    0.293876;0.309185;-0.904457;,
+    0.293876;-0.309185;-0.904457;,
+    0.293876;0.309185;-0.904457;,
+    0.293876;-0.309185;0.904457;,
+    0.293876;-0.309184;-0.904457;,
+    0.293876;0.309185;0.904457;,
+    0.293876;-0.309184;0.904457;,
+    0.293876;0.309185;0.904457;,
+    0.308846;-0.951112;0.000000;,
+    0.308846;0.951112;0.000000;,
+    0.308846;0.951112;0.000000;,
+    0.308846;-0.951112;0.000000;,
+    0.309017;0.000001;-0.951057;,
+    0.309017;0.000000;-0.951057;,
+    0.309017;0.000000;0.951056;,
+    0.309017;0.000001;0.951056;,
+    0.345354;0.809187;-0.475339;,
+    0.345354;-0.809187;-0.475339;,
+    0.345354;-0.809187;0.475339;,
+    0.345354;0.809187;-0.475339;,
+    0.345354;0.809187;0.475339;,
+    0.345354;-0.809187;-0.475339;,
+    0.345354;0.809187;0.475339;,
+    0.345354;-0.809187;0.475339;,
+    0.475339;0.809187;-0.345354;,
+    0.475339;-0.809187;-0.345354;,
+    0.475339;-0.809187;0.345354;,
+    0.475339;0.809187;-0.345354;,
+    0.475339;-0.809187;-0.345354;,
+    0.475339;0.809187;0.345354;,
+    0.475339;0.809187;0.345354;,
+    0.475339;-0.809187;0.345354;,
+    0.475429;0.588018;-0.654372;,
+    0.475429;-0.588018;-0.654372;,
+    0.475429;-0.588018;0.654372;,
+    0.475429;0.588018;-0.654372;,
+    0.475429;-0.588018;-0.654372;,
+    0.475429;0.588018;0.654372;,
+    0.475429;0.588018;0.654372;,
+    0.475429;-0.588017;0.654372;,
+    0.558794;-0.809187;-0.181563;,
+    0.558794;-0.809187;0.181563;,
+    0.558794;0.809187;-0.181563;,
+    0.558794;0.809187;-0.181563;,
+    0.558794;0.809187;0.181563;,
+    0.558794;0.809187;0.181563;,
+    0.558794;-0.809187;-0.181563;,
+    0.558795;-0.809187;0.181563;,
+    0.558985;-0.309185;-0.769377;,
+    0.558985;0.309185;-0.769377;,
+    0.558985;0.309185;-0.769377;,
+    0.558985;-0.309185;0.769377;,
+    0.558985;0.309185;0.769377;,
+    0.558985;-0.309184;0.769377;,
+    0.558985;-0.309184;-0.769377;,
+    0.558985;0.309185;0.769377;,
+    0.587551;-0.809187;0.000000;,
+    0.587551;0.809187;0.000000;,
+    0.587551;0.809187;0.000000;,
+    0.587551;-0.809187;0.000000;,
+    0.587785;0.000000;-0.809017;,
+    0.587785;0.000001;-0.809017;,
+    0.587785;0.000000;0.809017;,
+    0.587785;0.000001;0.809017;,
+    0.654372;0.588018;-0.475429;,
+    0.654372;-0.588018;-0.475429;,
+    0.654372;0.588018;0.475429;,
+    0.654372;-0.588018;-0.475429;,
+    0.654372;-0.588018;0.475429;,
+    0.654372;0.588018;-0.475429;,
+    0.654372;0.588018;0.475429;,
+    0.654372;-0.588017;0.475429;,
+    0.769260;0.588018;-0.249947;,
+    0.769260;-0.588018;0.249948;,
+    0.769260;-0.588018;-0.249948;,
+    0.769260;0.588018;0.249948;,
+    0.769260;0.588018;-0.249948;,
+    0.769260;0.588018;0.249948;,
+    0.769260;-0.588018;-0.249947;,
+    0.769260;-0.588017;0.249948;,
+    0.769377;-0.309185;-0.558985;,
+    0.769377;0.309185;-0.558985;,
+    0.769377;0.309185;0.558985;,
+    0.769377;-0.309185;0.558985;,
+    0.769377;0.309185;-0.558985;,
+    0.769377;0.309185;0.558985;,
+    0.769377;-0.309184;-0.558985;,
+    0.769377;-0.309184;0.558985;,
+    0.808848;-0.588018;-0.000000;,
+    0.808848;0.588018;0.000001;,
+    0.808848;0.588018;0.000000;,
+    0.808848;-0.588017;0.000001;,
+    0.809017;-0.000000;-0.587785;,
+    0.809017;0.000001;-0.587785;,
+    0.809017;0.000000;0.587785;,
+    0.809017;0.000001;0.587785;,
+    0.904457;0.309185;0.293876;,
+    0.904457;-0.309185;0.293876;,
+    0.904457;0.309185;-0.293876;,
+    0.904457;0.309185;0.293876;,
+    0.904457;-0.309185;-0.293875;,
+    0.904457;-0.309184;-0.293876;,
+    0.904457;0.309185;-0.293875;,
+    0.904457;-0.309184;0.293876;,
+    0.951002;-0.309185;0.000001;,
+    0.951002;0.309185;0.000001;,
+    0.951002;0.309185;0.000000;,
+    0.951002;-0.309184;0.000000;,
+    0.951057;0.000000;0.309017;,
+    0.951057;0.000001;-0.309017;,
+    0.951057;0.000001;0.309017;,
+    0.951057;-0.000000;-0.309016;,
+    1.000000;0.000000;0.000001;,
+    1.000000;0.000001;0.000000;;
+    400;
+    4;21,2,12,30;,
+    4;53,21,30,64;,
+    4;101,53,64,111;,
+    4;227,101,111,225;,
+    4;301,227,225,293;,
+    4;349,301,293,341;,
+    4;381,349,341,371;,
+    4;396,381,371,385;,
+    4;399,396,385,392;,
+    4;395,399,392,384;,
+    4;379,395,384,370;,
+    4;347,379,370,335;,
+    4;298,347,335,286;,
+    4;163,298,286,164;,
+    4;99,163,164,107;,
+    4;50,99,107,61;,
+    4;18,50,61,28;,
+    4;5,18,28,13;,
+    4;1,5,13,7;,
+    4;2,1,7,12;,
+    4;30,12,34,46;,
+    4;64,30,46,78;,
+    4;111,64,78,127;,
+    4;225,111,127,218;,
+    4;293,225,218,275;,
+    4;341,293,275,324;,
+    4;371,341,324,356;,
+    4;385,371,356,363;,
+    4;392,385,363,376;,
+    4;384,392,376,362;,
+    4;370,384,362,355;,
+    4;335,370,355,321;,
+    4;286,335,321,271;,
+    4;164,286,271,174;,
+    4;107,164,174,123;,
+    4;61,107,123,77;,
+    4;28,61,77,44;,
+    4;13,28,44,36;,
+    4;7,13,36,22;,
+    4;12,7,22,34;,
+    4;46,34,68,86;,
+    4;78,46,86,94;,
+    4;127,78,94,142;,
+    4;218,127,142,213;,
+    4;275,218,213,259;,
+    4;324,275,259,308;,
+    4;356,324,308,315;,
+    4;363,356,315,331;,
+    4;376,363,331,343;,
+    4;362,376,343,329;,
+    4;355,362,329,313;,
+    4;321,355,313,305;,
+    4;271,321,305,256;,
+    4;174,271,256,177;,
+    4;123,174,177,140;,
+    4;77,123,140,92;,
+    4;44,77,92,84;,
+    4;36,44,84,67;,
+    4;22,36,67,55;,
+    4;34,22,55,68;,
+    4;86,68,115,133;,
+    4;94,86,133,149;,
+    4;142,94,149,160;,
+    4;213,142,160,205;,
+    4;259,213,205,244;,
+    4;308,259,244,253;,
+    4;315,308,253,268;,
+    4;331,315,268,284;,
+    4;343,331,284,296;,
+    4;329,343,296,281;,
+    4;313,329,281,266;,
+    4;305,313,266,250;,
+    4;256,305,250,242;,
+    4;177,256,242,190;,
+    4;140,177,190,154;,
+    4;92,140,154,146;,
+    4;84,92,146,130;,
+    4;67,84,130,114;,
+    4;55,67,114,102;,
+    4;68,55,102,115;,
+    4;133,115,173,182;,
+    4;149,133,182,188;,
+    4;160,149,188,196;,
+    4;205,160,196,200;,
+    4;244,205,200,204;,
+    4;253,244,204,212;,
+    4;268,253,212,219;,
+    4;284,268,219,222;,
+    4;296,284,222,224;,
+    4;281,296,224,223;,
+    4;266,281,223,215;,
+    4;250,266,215,211;,
+    4;242,250,211,203;,
+    4;190,242,203,201;,
+    4;154,190,201,197;,
+    4;146,154,197,194;,
+    4;130,146,194,192;,
+    4;114,130,192,195;,
+    4;102,114,195,176;,
+    4;115,102,176,173;,
+    4;182,173,280,264;,
+    4;188,182,264,247;,
+    4;196,188,247,239;,
+    4;200,196,239,187;,
+    4;204,200,187,156;,
+    4;212,204,156,151;,
+    4;219,212,151,135;,
+    4;222,219,135,119;,
+    4;224,222,119,105;,
+    4;223,224,105,121;,
+    4;215,223,121,136;,
+    4;211,215,136,152;,
+    4;203,211,152,159;,
+    4;201,203,159,209;,
+    4;197,201,209,243;,
+    4;194,197,243,251;,
+    4;192,194,251,265;,
+    4;195,192,265,282;,
+    4;176,195,282,295;,
+    4;173,176,295,280;,
+    4;264,280,328,310;,
+    4;247,264,310,302;,
+    4;239,247,302,254;,
+    4;187,239,254,186;,
+    4;156,187,186,143;,
+    4;151,156,143,96;,
+    4;135,151,96,89;,
+    4;119,135,89,73;,
+    4;105,119,73,57;,
+    4;121,105,57,72;,
+    4;136,121,72,87;,
+    4;152,136,87,97;,
+    4;159,152,97,145;,
+    4;209,159,145,236;,
+    4;243,209,236,260;,
+    4;251,243,260,306;,
+    4;265,251,306,316;,
+    4;282,265,316,330;,
+    4;295,282,330,344;,
+    4;280,295,344,328;,
+    4;310,328,358,350;,
+    4;302,310,350,318;,
+    4;254,302,318,270;,
+    4;186,254,270,172;,
+    4;143,186,172,125;,
+    4;96,143,125,79;,
+    4;89,96,79,49;,
+    4;73,89,49,41;,
+    4;57,73,41,25;,
+    4;72,57,25,40;,
+    4;87,72,40,48;,
+    4;97,87,48,81;,
+    4;145,97,81,129;,
+    4;236,145,129,237;,
+    4;260,236,237,274;,
+    4;306,260,274,323;,
+    4;316,306,323,352;,
+    4;330,316,352,361;,
+    4;344,330,361,375;,
+    4;328,344,375,358;,
+    4;350,358,388,367;,
+    4;318,350,367,336;,
+    4;270,318,336,288;,
+    4;172,270,288,166;,
+    4;125,172,166,109;,
+    4;79,125,109,62;,
+    4;49,79,62,32;,
+    4;41,49,32,15;,
+    4;25,41,15,9;,
+    4;40,25,9,16;,
+    4;48,40,16,31;,
+    4;81,48,31,65;,
+    4;129,81,65,113;,
+    4;237,129,113,214;,
+    4;274,237,214,291;,
+    4;323,274,291,338;,
+    4;352,323,338,368;,
+    4;361,352,368,382;,
+    4;375,361,382,391;,
+    4;358,375,391,388;,
+    4;367,388,397,378;,
+    4;336,367,378,346;,
+    4;288,336,346,299;,
+    4;166,288,299,168;,
+    4;109,166,168,98;,
+    4;62,109,98,51;,
+    4;32,62,51,19;,
+    4;15,32,19,4;,
+    4;9,15,4,0;,
+    4;16,9,0,3;,
+    4;31,16,3,20;,
+    4;65,31,20,52;,
+    4;113,65,52,100;,
+    4;214,113,100,206;,
+    4;291,214,206,300;,
+    4;338,291,300,348;,
+    4;368,338,348,380;,
+    4;382,368,380,394;,
+    4;391,382,394,398;,
+    4;388,391,398,397;,
+    4;378,397,386,366;,
+    4;346,378,366,334;,
+    4;299,346,334,287;,
+    4;168,299,287,175;,
+    4;98,168,175,108;,
+    4;51,98,108,59;,
+    4;19,51,59,29;,
+    4;4,19,29,14;,
+    4;0,4,14,8;,
+    4;3,0,8,17;,
+    4;20,3,17,33;,
+    4;52,20,33,63;,
+    4;100,52,63,112;,
+    4;206,100,112,220;,
+    4;300,206,220,289;,
+    4;348,300,289,337;,
+    4;380,348,337,369;,
+    4;394,380,369,383;,
+    4;398,394,383,390;,
+    4;397,398,390,386;,
+    4;366,386,364,353;,
+    4;334,366,353,322;,
+    4;287,334,322,273;,
+    4;175,287,273,169;,
+    4;108,175,169,122;,
+    4;59,108,122,74;,
+    4;29,59,74,42;,
+    4;14,29,42,39;,
+    4;8,14,39,24;,
+    4;17,8,24,38;,
+    4;33,17,38,45;,
+    4;63,33,45,76;,
+    4;112,63,76,126;,
+    4;220,112,126,233;,
+    4;289,220,233,277;,
+    4;337,289,277,325;,
+    4;369,337,325,357;,
+    4;383,369,357,365;,
+    4;390,383,365,377;,
+    4;386,390,377,364;,
+    4;353,364,332,314;,
+    4;322,353,314,307;,
+    4;273,322,307,257;,
+    4;169,273,257,162;,
+    4;122,169,162,138;,
+    4;74,122,138,91;,
+    4;42,74,91,83;,
+    4;39,42,83,70;,
+    4;24,39,70,54;,
+    4;38,24,54,66;,
+    4;45,38,66,82;,
+    4;76,45,82,90;,
+    4;126,76,90,141;,
+    4;233,126,141,231;,
+    4;277,233,231,261;,
+    4;325,277,261,309;,
+    4;357,325,309,317;,
+    4;365,357,317,333;,
+    4;377,365,333,345;,
+    4;364,377,345,332;,
+    4;314,332,283,267;,
+    4;307,314,267,249;,
+    4;257,307,249,241;,
+    4;162,257,241,184;,
+    4;138,162,184,155;,
+    4;91,138,155,148;,
+    4;83,91,148,132;,
+    4;70,83,132,117;,
+    4;54,70,117,103;,
+    4;66,54,103,116;,
+    4;82,66,116,131;,
+    4;90,82,131,147;,
+    4;141,90,147,157;,
+    4;231,141,157,210;,
+    4;261,231,210,245;,
+    4;309,261,245,252;,
+    4;317,309,252,269;,
+    4;333,317,269,285;,
+    4;345,333,285,297;,
+    4;332,345,297,283;,
+    4;267,283,232,234;,
+    4;249,267,234,221;,
+    4;241,249,221,208;,
+    4;184,241,208,199;,
+    4;155,184,199,193;,
+    4;148,155,193,179;,
+    4;132,148,179,170;,
+    4;117,132,170,167;,
+    4;103,117,167,171;,
+    4;116,103,171,181;,
+    4;131,116,181,180;,
+    4;147,131,180,178;,
+    4;157,147,178,185;,
+    4;210,157,185,198;,
+    4;245,210,198,207;,
+    4;252,245,207,217;,
+    4;269,252,217,226;,
+    4;285,269,226,235;,
+    4;297,285,235,228;,
+    4;283,297,228,232;,
+    4;234,232,120,137;,
+    4;221,234,137,153;,
+    4;208,221,153,161;,
+    4;199,208,161,202;,
+    4;193,199,202,240;,
+    4;179,193,240,248;,
+    4;170,179,248,263;,
+    4;167,170,263,279;,
+    4;171,167,279,294;,
+    4;181,171,294,278;,
+    4;180,181,278,262;,
+    4;178,180,262,246;,
+    4;185,178,246,238;,
+    4;198,185,238,183;,
+    4;207,198,183,158;,
+    4;217,207,158,150;,
+    4;226,217,150,134;,
+    4;235,226,134,118;,
+    4;228,235,118,104;,
+    4;232,228,104,120;,
+    4;137,120,71,88;,
+    4;153,137,88,95;,
+    4;161,153,95,144;,
+    4;202,161,144,216;,
+    4;240,202,216,258;,
+    4;248,240,258,304;,
+    4;263,248,304,312;,
+    4;279,263,312,327;,
+    4;294,279,327,342;,
+    4;278,294,342,326;,
+    4;262,278,326,311;,
+    4;246,262,311,303;,
+    4;238,246,303,255;,
+    4;183,238,255,165;,
+    4;158,183,165,139;,
+    4;150,158,139,93;,
+    4;134,150,93,85;,
+    4;118,134,85,69;,
+    4;104,118,69,56;,
+    4;120,104,56,71;,
+    4;88,71,35,47;,
+    4;95,88,47,80;,
+    4;144,95,80,128;,
+    4;216,144,128,230;,
+    4;258,216,230,276;,
+    4;304,258,276,320;,
+    4;312,304,320,354;,
+    4;327,312,354,359;,
+    4;342,327,359,374;,
+    4;326,342,374,360;,
+    4;311,326,360,351;,
+    4;303,311,351,319;,
+    4;255,303,319,272;,
+    4;165,255,272,189;,
+    4;139,165,189,124;,
+    4;93,139,124,75;,
+    4;85,93,75,43;,
+    4;69,85,43,37;,
+    4;56,69,37,23;,
+    4;71,56,23,35;,
+    4;47,35,10,27;,
+    4;80,47,27,60;,
+    4;128,80,60,110;,
+    4;230,128,110,229;,
+    4;276,230,229,292;,
+    4;320,276,292,339;,
+    4;354,320,339,373;,
+    4;359,354,373,389;,
+    4;374,359,389,393;,
+    4;360,374,393,387;,
+    4;351,360,387,372;,
+    4;319,351,372,340;,
+    4;272,319,340,290;,
+    4;189,272,290,191;,
+    4;124,189,191,106;,
+    4;75,124,106,58;,
+    4;43,75,58,26;,
+    4;37,43,26,11;,
+    4;23,37,11,6;,
+    4;35,23,6,10;,
+    4;27,10,2,21;,
+    4;60,27,21,53;,
+    4;110,60,53,101;,
+    4;229,110,101,227;,
+    4;292,229,227,301;,
+    4;339,292,301,349;,
+    4;373,339,349,381;,
+    4;389,373,381,396;,
+    4;393,389,396,399;,
+    4;387,393,399,395;,
+    4;372,387,395,379;,
+    4;340,372,379,347;,
+    4;290,340,347,298;,
+    4;191,290,298,163;,
+    4;106,191,163,99;,
+    4;58,106,99,50;,
+    4;26,58,50,18;,
+    4;11,26,18,5;,
+    4;6,11,5,1;,
+    4;10,6,1,2;;
+   }
+
+   MeshTextureCoords {
+    532;
+    0.395315;-0.644827;,
+    0.395315;-0.670025;,
+    0.395315;-0.690022;,
+    0.242926;-0.560723;,
+    0.242926;-0.588655;,
+    0.242926;-0.616587;,
+    0.242926;-0.641785;,
+    0.242926;-0.661782;,
+    0.090537;-0.560723;,
+    0.090537;-0.588655;,
+    0.090537;-0.616587;,
+    0.090537;-0.641785;,
+    0.090537;-0.661782;,
+    0.075119;-0.798880;,
+    0.075119;-0.770948;,
+    0.075119;-0.743016;,
+    0.075119;-0.717818;,
+    0.395315;-0.563765;,
+    0.395315;-0.588963;,
+    0.395315;-0.616895;,
+    0.423247;-0.646194;,
+    0.423247;-0.672625;,
+    0.423247;-0.693601;,
+    0.270858;-0.559356;,
+    0.270858;-0.588655;,
+    0.270858;-0.617954;,
+    0.270858;-0.644385;,
+    0.270858;-0.665361;,
+    0.118469;-0.559356;,
+    0.118469;-0.588655;,
+    0.118469;-0.617954;,
+    0.118469;-0.644385;,
+    0.118469;-0.665361;,
+    0.047187;-0.800247;,
+    0.047187;-0.770948;,
+    0.047187;-0.741649;,
+    0.047187;-0.715218;,
+    0.423247;-0.561165;,
+    0.423247;-0.587596;,
+    0.423247;-0.616895;,
+    0.448444;-0.650162;,
+    0.448444;-0.680172;,
+    0.448444;-0.703988;,
+    0.296056;-0.555389;,
+    0.296056;-0.588655;,
+    0.296056;-0.621921;,
+    0.296056;-0.651932;,
+    0.296056;-0.675748;,
+    0.143667;-0.555389;,
+    0.143667;-0.588655;,
+    0.143667;-0.621921;,
+    0.143667;-0.651931;,
+    0.143667;-0.675748;,
+    0.021989;-0.804214;,
+    0.021989;-0.770948;,
+    0.021989;-0.737681;,
+    0.021989;-0.707671;,
+    0.448444;-0.553619;,
+    0.448444;-0.583629;,
+    0.448444;-0.616895;,
+    0.468441;-0.656341;,
+    0.468441;-0.691926;,
+    0.468441;-0.720166;,
+    0.316053;-0.549209;,
+    0.316053;-0.588655;,
+    0.316053;-0.628101;,
+    0.316053;-0.663686;,
+    0.316053;-0.691926;,
+    0.163664;-0.549209;,
+    0.163664;-0.588655;,
+    0.163664;-0.628101;,
+    0.163664;-0.663685;,
+    0.163664;-0.691926;,
+    0.001992;-0.810393;,
+    0.001992;-0.770948;,
+    0.001992;-0.731502;,
+    0.001992;-0.695917;,
+    0.468441;-0.541865;,
+    0.468441;-0.577449;,
+    0.468441;-0.616895;,
+    0.401264;-0.302960;,
+    0.379554;-0.345568;,
+    0.345739;-0.379383;,
+    0.303130;-0.401093;,
+    0.255898;-0.408574;,
+    0.208666;-0.401093;,
+    0.166057;-0.379383;,
+    0.132242;-0.345568;,
+    0.110532;-0.302960;,
+    0.103051;-0.255727;,
+    0.110532;-0.208495;,
+    0.132242;-0.165886;,
+    0.166057;-0.132071;,
+    0.208666;-0.110361;,
+    0.255898;-0.102880;,
+    0.303130;-0.110361;,
+    0.345739;-0.132071;,
+    0.379554;-0.165886;,
+    0.401264;-0.208495;,
+    0.408745;-0.255727;,
+    0.427829;-0.311591;,
+    0.402151;-0.361986;,
+    0.362157;-0.401981;,
+    0.311762;-0.427658;,
+    0.255898;-0.436506;,
+    0.200034;-0.427658;,
+    0.149639;-0.401981;,
+    0.109645;-0.361986;,
+    0.083967;-0.311591;,
+    0.075119;-0.255727;,
+    0.083967;-0.199863;,
+    0.109645;-0.149468;,
+    0.149639;-0.109474;,
+    0.200034;-0.083796;,
+    0.255898;-0.074948;,
+    0.311762;-0.083796;,
+    0.362157;-0.109474;,
+    0.402151;-0.149468;,
+    0.427829;-0.199863;,
+    0.436677;-0.255727;,
+    0.454394;-0.320222;,
+    0.424749;-0.378404;,
+    0.378575;-0.424578;,
+    0.320393;-0.454223;,
+    0.255898;-0.464438;,
+    0.191403;-0.454223;,
+    0.133221;-0.424578;,
+    0.087047;-0.378404;,
+    0.057402;-0.320222;,
+    0.047187;-0.255727;,
+    0.057402;-0.191232;,
+    0.087047;-0.133050;,
+    0.133221;-0.086876;,
+    0.191403;-0.057231;,
+    0.255898;-0.047016;,
+    0.320393;-0.057231;,
+    0.378575;-0.086876;,
+    0.424749;-0.133050;,
+    0.454394;-0.191232;,
+    0.464609;-0.255727;,
+    0.478359;-0.328009;,
+    0.445134;-0.393215;,
+    0.393386;-0.444963;,
+    0.328180;-0.478188;,
+    0.255898;-0.489636;,
+    0.183616;-0.478188;,
+    0.118410;-0.444963;,
+    0.066662;-0.393215;,
+    0.033437;-0.328009;,
+    0.021989;-0.255727;,
+    0.033437;-0.183445;,
+    0.066662;-0.118239;,
+    0.118410;-0.066491;,
+    0.183616;-0.033267;,
+    0.255898;-0.021818;,
+    0.328180;-0.033267;,
+    0.393386;-0.066491;,
+    0.445134;-0.118239;,
+    0.478359;-0.183445;,
+    0.489807;-0.255727;,
+    0.497377;-0.334188;,
+    0.461312;-0.404969;,
+    0.405140;-0.461141;,
+    0.334359;-0.497206;,
+    0.255898;-0.509633;,
+    0.177437;-0.497206;,
+    0.106656;-0.461141;,
+    0.050484;-0.404969;,
+    0.014419;-0.334188;,
+    0.001992;-0.255727;,
+    0.014419;-0.177266;,
+    0.050484;-0.106485;,
+    0.106656;-0.050313;,
+    0.177437;-0.014248;,
+    0.255898;-0.001821;,
+    0.334359;-0.014248;,
+    0.405140;-0.050313;,
+    0.461312;-0.106485;,
+    0.497377;-0.177266;,
+    0.509804;-0.255727;,
+    0.972810;-0.610582;,
+    0.972810;-0.536222;,
+    0.972810;-0.477210;,
+    0.764558;-0.550591;,
+    0.764558;-0.633020;,
+    0.764558;-0.715448;,
+    0.764558;-0.789808;,
+    0.764558;-0.848821;,
+    0.708027;-0.775439;,
+    0.708027;-0.693011;,
+    0.708027;-0.610582;,
+    0.708027;-0.536222;,
+    0.708027;-0.477210;,
+    0.575635;-0.755442;,
+    0.575635;-0.673013;,
+    0.575635;-0.590585;,
+    0.575635;-0.516225;,
+    0.972810;-0.849799;,
+    0.972810;-0.775439;,
+    0.972810;-0.693011;,
+    0.944878;-0.609215;,
+    0.944878;-0.533622;,
+    0.944878;-0.473630;,
+    0.792489;-0.549224;,
+    0.792489;-0.633020;,
+    0.792489;-0.716815;,
+    0.792489;-0.792409;,
+    0.792489;-0.852400;,
+    0.680095;-0.776806;,
+    0.680095;-0.693011;,
+    0.680095;-0.609215;,
+    0.680095;-0.533622;,
+    0.680095;-0.473630;,
+    0.547703;-0.756809;,
+    0.547703;-0.673013;,
+    0.547703;-0.589218;,
+    0.547703;-0.513624;,
+    0.944878;-0.852400;,
+    0.944878;-0.776806;,
+    0.944878;-0.693011;,
+    0.916946;-0.610582;,
+    0.916946;-0.536222;,
+    0.916946;-0.477210;,
+    0.820421;-0.550591;,
+    0.820421;-0.633020;,
+    0.820421;-0.715448;,
+    0.820421;-0.789808;,
+    0.820421;-0.848821;,
+    0.652163;-0.775439;,
+    0.652163;-0.693011;,
+    0.652163;-0.610582;,
+    0.652163;-0.536222;,
+    0.652163;-0.477210;,
+    0.519771;-0.755442;,
+    0.519771;-0.673013;,
+    0.519771;-0.590585;,
+    0.519771;-0.516225;,
+    0.916946;-0.849799;,
+    0.916946;-0.775439;,
+    0.916946;-0.693011;,
+    0.891749;-0.614549;,
+    0.891749;-0.543769;,
+    0.891749;-0.487596;,
+    0.845619;-0.554558;,
+    0.845619;-0.633020;,
+    0.845619;-0.711481;,
+    0.845619;-0.782262;,
+    0.845619;-0.838434;,
+    0.626965;-0.771472;,
+    0.626965;-0.693011;,
+    0.626965;-0.614549;,
+    0.626965;-0.543768;,
+    0.626965;-0.487596;,
+    0.494574;-0.751475;,
+    0.494574;-0.673013;,
+    0.494574;-0.594552;,
+    0.494574;-0.523771;,
+    0.891749;-0.842253;,
+    0.891749;-0.771472;,
+    0.891749;-0.693011;,
+    0.871752;-0.620729;,
+    0.871752;-0.555523;,
+    0.871752;-0.503774;,
+    0.865616;-0.560738;,
+    0.865616;-0.633020;,
+    0.865616;-0.705301;,
+    0.865616;-0.770508;,
+    0.865616;-0.822256;,
+    0.606968;-0.765292;,
+    0.606968;-0.693011;,
+    0.606968;-0.620729;,
+    0.606968;-0.555522;,
+    0.606968;-0.503774;,
+    0.474577;-0.745295;,
+    0.474577;-0.673013;,
+    0.474577;-0.600732;,
+    0.474577;-0.535525;,
+    0.871752;-0.830499;,
+    0.871752;-0.765293;,
+    0.871752;-0.693011;,
+    0.949115;-0.171235;,
+    0.919470;-0.113053;,
+    0.873297;-0.066879;,
+    0.815115;-0.037234;,
+    0.750619;-0.027019;,
+    0.686124;-0.037234;,
+    0.627942;-0.066879;,
+    0.581768;-0.113053;,
+    0.552123;-0.171235;,
+    0.541908;-0.235730;,
+    0.552123;-0.300225;,
+    0.581768;-0.358407;,
+    0.627942;-0.404581;,
+    0.686124;-0.434226;,
+    0.750619;-0.444441;,
+    0.815114;-0.434226;,
+    0.873297;-0.404581;,
+    0.919470;-0.358407;,
+    0.949115;-0.300225;,
+    0.959330;-0.235730;,
+    0.922550;-0.179866;,
+    0.896873;-0.129471;,
+    0.856879;-0.089477;,
+    0.806483;-0.063799;,
+    0.750619;-0.054951;,
+    0.694755;-0.063799;,
+    0.644360;-0.089477;,
+    0.604366;-0.129471;,
+    0.578688;-0.179866;,
+    0.569840;-0.235730;,
+    0.578688;-0.291594;,
+    0.604366;-0.341989;,
+    0.644360;-0.381984;,
+    0.694755;-0.407661;,
+    0.750619;-0.416509;,
+    0.806483;-0.407661;,
+    0.856879;-0.381984;,
+    0.896873;-0.341989;,
+    0.922550;-0.291594;,
+    0.931398;-0.235730;,
+    0.895985;-0.188498;,
+    0.874275;-0.145889;,
+    0.840460;-0.112074;,
+    0.797851;-0.090364;,
+    0.750619;-0.082883;,
+    0.703387;-0.090364;,
+    0.660778;-0.112074;,
+    0.626963;-0.145889;,
+    0.605253;-0.188498;,
+    0.597772;-0.235730;,
+    0.605253;-0.282963;,
+    0.626963;-0.325571;,
+    0.660778;-0.359386;,
+    0.703387;-0.381096;,
+    0.750619;-0.388577;,
+    0.797851;-0.381096;,
+    0.840460;-0.359386;,
+    0.874275;-0.325571;,
+    0.895985;-0.282963;,
+    0.903466;-0.235730;,
+    0.872021;-0.196284;,
+    0.853890;-0.160700;,
+    0.825650;-0.132459;,
+    0.790065;-0.114328;,
+    0.750619;-0.108081;,
+    0.711173;-0.114328;,
+    0.675589;-0.132459;,
+    0.647349;-0.160700;,
+    0.629217;-0.196284;,
+    0.622970;-0.235730;,
+    0.629217;-0.275176;,
+    0.647349;-0.310761;,
+    0.675589;-0.339001;,
+    0.711173;-0.357132;,
+    0.750619;-0.363380;,
+    0.790065;-0.357132;,
+    0.825650;-0.339001;,
+    0.853890;-0.310761;,
+    0.872021;-0.275176;,
+    0.878269;-0.235730;,
+    0.342185;-0.650162;,
+    0.342185;-0.680172;,
+    0.342185;-0.703988;,
+    0.189796;-0.555389;,
+    0.189796;-0.588655;,
+    0.189796;-0.621921;,
+    0.189796;-0.651932;,
+    0.189796;-0.675748;,
+    0.037407;-0.555389;,
+    0.037407;-0.588655;,
+    0.037407;-0.621921;,
+    0.037407;-0.651931;,
+    0.037407;-0.675748;,
+    0.128248;-0.804214;,
+    0.128248;-0.770948;,
+    0.128248;-0.737681;,
+    0.128248;-0.707671;,
+    0.342185;-0.553619;,
+    0.342185;-0.583629;,
+    0.342185;-0.616895;,
+    0.367383;-0.646194;,
+    0.367383;-0.672625;,
+    0.367383;-0.693601;,
+    0.214994;-0.559356;,
+    0.214994;-0.588655;,
+    0.214994;-0.617954;,
+    0.214994;-0.644385;,
+    0.214994;-0.665361;,
+    0.062605;-0.559356;,
+    0.062605;-0.588655;,
+    0.062605;-0.617954;,
+    0.062605;-0.644385;,
+    0.062605;-0.665361;,
+    0.103051;-0.800247;,
+    0.103051;-0.770948;,
+    0.103051;-0.741649;,
+    0.103051;-0.715218;,
+    0.367383;-0.561165;,
+    0.367383;-0.587596;,
+    0.367383;-0.616895;,
+    0.242926;-0.535525;,
+    0.270858;-0.532925;,
+    0.090537;-0.535525;,
+    0.118469;-0.532925;,
+    0.075119;-0.824077;,
+    0.047187;-0.826678;,
+    0.395315;-0.543768;,
+    0.423247;-0.540189;,
+    0.296056;-0.525378;,
+    0.143667;-0.525378;,
+    0.021989;-0.834224;,
+    0.448444;-0.529802;,
+    0.316053;-0.513624;,
+    0.163664;-0.513624;,
+    0.001992;-0.845978;,
+    0.468441;-0.513624;,
+    0.359169;-0.330758;,
+    0.377300;-0.295173;,
+    0.330929;-0.358998;,
+    0.295344;-0.377129;,
+    0.255898;-0.383377;,
+    0.216452;-0.377129;,
+    0.180868;-0.358998;,
+    0.152627;-0.330758;,
+    0.134496;-0.295173;,
+    0.128248;-0.255727;,
+    0.134496;-0.216281;,
+    0.152627;-0.180697;,
+    0.180868;-0.152456;,
+    0.216452;-0.134325;,
+    0.255898;-0.128078;,
+    0.295344;-0.134325;,
+    0.330929;-0.152456;,
+    0.359169;-0.180697;,
+    0.377300;-0.216281;,
+    0.383548;-0.255727;,
+    0.998008;-0.543769;,
+    0.998008;-0.614549;,
+    0.998008;-0.487596;,
+    0.739360;-0.554558;,
+    0.739360;-0.483777;,
+    0.764558;-0.476231;,
+    0.739360;-0.633020;,
+    0.739360;-0.711481;,
+    0.739360;-0.782262;,
+    0.739360;-0.838434;,
+    0.733225;-0.771472;,
+    0.733225;-0.842253;,
+    0.708027;-0.849799;,
+    0.733225;-0.693011;,
+    0.733225;-0.614549;,
+    0.733225;-0.543768;,
+    0.733225;-0.487596;,
+    0.600833;-0.751475;,
+    0.600833;-0.822256;,
+    0.575635;-0.829802;,
+    0.600833;-0.673013;,
+    0.600833;-0.594552;,
+    0.600833;-0.523771;,
+    0.998008;-0.842253;,
+    0.998008;-0.898425;,
+    0.972810;-0.908812;,
+    0.998008;-0.771472;,
+    0.998008;-0.693011;,
+    0.792489;-0.473630;,
+    0.680095;-0.852400;,
+    0.547703;-0.832402;,
+    0.944878;-0.912391;,
+    0.820421;-0.476231;,
+    0.652163;-0.849799;,
+    0.519771;-0.829802;,
+    0.916946;-0.908812;,
+    0.845619;-0.483777;,
+    0.626965;-0.842253;,
+    0.494574;-0.822256;,
+    0.891749;-0.898425;,
+    0.865616;-0.495531;,
+    0.606968;-0.830499;,
+    0.474577;-0.810502;,
+    0.871752;-0.882247;,
+    0.939855;-0.098242;,
+    0.973080;-0.163448;,
+    0.888107;-0.046494;,
+    0.822901;-0.013269;,
+    0.750619;-0.001821;,
+    0.678337;-0.013269;,
+    0.613131;-0.046494;,
+    0.561383;-0.098242;,
+    0.528159;-0.163448;,
+    0.516710;-0.235730;,
+    0.528159;-0.308012;,
+    0.561383;-0.373218;,
+    0.613131;-0.424966;,
+    0.678337;-0.458191;,
+    0.750619;-0.469639;,
+    0.822901;-0.458191;,
+    0.888107;-0.424966;,
+    0.939855;-0.373218;,
+    0.973080;-0.308012;,
+    0.984528;-0.235730;,
+    0.322188;-0.691926;,
+    0.322188;-0.656341;,
+    0.322188;-0.720166;,
+    0.169799;-0.549209;,
+    0.169799;-0.513624;,
+    0.189796;-0.525378;,
+    0.169799;-0.588655;,
+    0.169799;-0.628101;,
+    0.169799;-0.663686;,
+    0.169799;-0.691926;,
+    0.017410;-0.549209;,
+    0.017410;-0.513624;,
+    0.037407;-0.525378;,
+    0.017410;-0.588655;,
+    0.017410;-0.628101;,
+    0.017410;-0.663685;,
+    0.017410;-0.691926;,
+    0.148245;-0.810393;,
+    0.148245;-0.845978;,
+    0.128248;-0.834224;,
+    0.148245;-0.770948;,
+    0.148245;-0.731502;,
+    0.148245;-0.695917;,
+    0.322188;-0.541865;,
+    0.322188;-0.513624;,
+    0.342185;-0.529802;,
+    0.322188;-0.577449;,
+    0.322188;-0.616895;,
+    0.214994;-0.532925;,
+    0.062605;-0.532925;,
+    0.103051;-0.826678;,
+    0.367383;-0.540189;;
+   }
+
+   MeshMaterialList {
+    1;
+    400;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material surfaceShader1SG {
+     0.500000;0.500000;0.500000;1.000000;;
+     1.000000;
+     0.500000;0.500000;0.500000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    532;
+    400;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    182,
+    183,
+    184,
+    185,
+    186,
+    187,
+    188,
+    189,
+    190,
+    191,
+    192,
+    193,
+    194,
+    195,
+    196,
+    197,
+    198,
+    199,
+    200,
+    201,
+    202,
+    203,
+    204,
+    205,
+    206,
+    207,
+    208,
+    209,
+    210,
+    211,
+    212,
+    213,
+    214,
+    215,
+    216,
+    217,
+    218,
+    219,
+    220,
+    221,
+    222,
+    223,
+    224,
+    225,
+    226,
+    227,
+    228,
+    229,
+    230,
+    231,
+    232,
+    233,
+    234,
+    235,
+    236,
+    237,
+    238,
+    239,
+    240,
+    241,
+    242,
+    243,
+    244,
+    245,
+    246,
+    247,
+    248,
+    249,
+    250,
+    251,
+    252,
+    253,
+    254,
+    255,
+    256,
+    257,
+    258,
+    259,
+    260,
+    261,
+    262,
+    263,
+    264,
+    265,
+    266,
+    267,
+    268,
+    269,
+    270,
+    271,
+    272,
+    273,
+    274,
+    275,
+    276,
+    277,
+    278,
+    279,
+    280,
+    281,
+    282,
+    283,
+    284,
+    285,
+    286,
+    287,
+    288,
+    289,
+    290,
+    291,
+    292,
+    293,
+    294,
+    295,
+    296,
+    297,
+    298,
+    299,
+    300,
+    301,
+    302,
+    303,
+    304,
+    305,
+    306,
+    307,
+    308,
+    309,
+    310,
+    311,
+    312,
+    313,
+    314,
+    315,
+    316,
+    317,
+    318,
+    319,
+    320,
+    321,
+    322,
+    323,
+    324,
+    325,
+    326,
+    327,
+    328,
+    329,
+    330,
+    331,
+    332,
+    333,
+    334,
+    335,
+    336,
+    337,
+    338,
+    339,
+    340,
+    341,
+    342,
+    343,
+    344,
+    345,
+    346,
+    347,
+    348,
+    349,
+    350,
+    351,
+    352,
+    353,
+    354,
+    355,
+    356,
+    357,
+    358,
+    359,
+    360,
+    361,
+    362,
+    363,
+    364,
+    365,
+    366,
+    367,
+    368,
+    369,
+    370,
+    371,
+    372,
+    373,
+    374,
+    375,
+    376,
+    377,
+    378,
+    379,
+    380,
+    381,
+    382,
+    383,
+    384,
+    385,
+    386,
+    387,
+    388,
+    389,
+    390,
+    391,
+    392,
+    393,
+    394,
+    395,
+    396,
+    397,
+    398,
+    399,
+    2,
+    22,
+    7,
+    27,
+    12,
+    32,
+    16,
+    36,
+    42,
+    47,
+    52,
+    56,
+    62,
+    67,
+    72,
+    76,
+    61,
+    60,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    161,
+    160,
+    162,
+    163,
+    162,
+    182,
+    164,
+    165,
+    166,
+    167,
+    168,
+    167,
+    187,
+    169,
+    170,
+    171,
+    172,
+    173,
+    172,
+    192,
+    174,
+    175,
+    176,
+    177,
+    176,
+    196,
+    178,
+    179,
+    202,
+    207,
+    212,
+    216,
+    222,
+    227,
+    232,
+    236,
+    242,
+    247,
+    252,
+    256,
+    262,
+    267,
+    272,
+    276,
+    261,
+    260,
+    262,
+    263,
+    264,
+    265,
+    266,
+    267,
+    268,
+    269,
+    270,
+    271,
+    272,
+    273,
+    274,
+    275,
+    276,
+    277,
+    278,
+    279,
+    341,
+    340,
+    342,
+    343,
+    342,
+    362,
+    344,
+    345,
+    346,
+    347,
+    348,
+    347,
+    367,
+    349,
+    350,
+    351,
+    352,
+    353,
+    352,
+    372,
+    354,
+    355,
+    356,
+    357,
+    356,
+    376,
+    358,
+    359,
+    382,
+    387,
+    392,
+    396;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/mediumtorus.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/mediumtorus.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/mediumtorus.x	(revision 1481)
@@ -0,0 +1,2212 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.224951,0.000000,-0.974370,0.000000,-0.973692,-0.037313,0.224794,0.000000,-0.036356,0.999304,0.008394,0.000000,-2.067545,9.202328,1.895029,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsCube1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsToPoly1 {
+  
+
+  FrameTransformMatrix {
+   0.684701,-0.527070,0.503370,0.000000,-0.459347,0.224140,0.859513,0.000000,-0.565849,-0.819731,-0.088639,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh nurbsToPolyShape1 {
+   231;
+   1.000000;-0.500000;-0.000000;,
+   -1.000000;-0.500000;0.000000;,
+   -0.000000;-0.500000;1.000000;,
+   1.000000;0.500000;-0.000000;,
+   -0.000000;0.500000;1.000000;,
+   0.808603;0.500000;0.587565;,
+   0.808603;-0.500000;0.587565;,
+   1.470761;-0.151268;-0.000000;,
+   1.189262;-0.151268;0.864167;,
+   1.397312;-0.151268;0.453955;,
+   0.950061;-0.500000;0.308653;,
+   1.285606;-0.394772;-0.000000;,
+   1.221404;-0.394772;0.396806;,
+   1.039545;-0.394772;0.755377;,
+   1.470761;0.151268;-0.000000;,
+   1.189262;0.151268;0.864167;,
+   1.397312;0.151268;0.453955;,
+   0.950061;0.500000;0.308653;,
+   1.285606;0.394772;-0.000000;,
+   1.221404;0.394772;0.396806;,
+   1.039545;0.394772;0.755377;,
+   -0.000000;-0.151268;1.470761;,
+   0.587565;-0.500000;0.808603;,
+   0.864167;-0.151268;1.189262;,
+   0.755377;-0.394772;1.039545;,
+   0.308653;-0.500000;0.950061;,
+   0.453955;-0.151268;1.397312;,
+   0.396806;-0.394772;1.221404;,
+   -0.000000;-0.394772;1.285606;,
+   0.587565;0.500000;0.808603;,
+   0.864167;0.151268;1.189262;,
+   0.755377;0.394772;1.039545;,
+   -0.000000;0.151268;1.470761;,
+   0.453955;0.151268;1.397312;,
+   0.308653;0.500000;0.950061;,
+   0.396806;0.394772;1.221404;,
+   -0.000000;0.394772;1.285606;,
+   0.529239;0.151268;-0.000000;,
+   0.427944;0.151268;0.310962;,
+   0.502809;0.151268;0.163351;,
+   0.714394;0.394772;-0.000000;,
+   0.678717;0.394772;0.220500;,
+   0.577661;0.394772;0.419753;,
+   0.529239;-0.151268;-0.000000;,
+   0.427944;-0.151268;0.310962;,
+   0.502809;-0.151268;0.163351;,
+   0.714394;-0.394772;-0.000000;,
+   0.678717;-0.394772;0.220500;,
+   0.577661;-0.394772;0.419753;,
+   -0.000000;0.151268;0.529239;,
+   0.310962;0.151268;0.427944;,
+   0.419753;0.394772;0.577661;,
+   0.163351;0.151268;0.502809;,
+   0.220500;0.394772;0.678717;,
+   -0.000000;0.394772;0.714394;,
+   0.310962;-0.151268;0.427944;,
+   0.419753;-0.394772;0.577661;,
+   -0.000000;-0.151268;0.529239;,
+   0.163351;-0.151268;0.502809;,
+   0.220500;-0.394772;0.678717;,
+   -0.000000;-0.394772;0.714394;,
+   -1.000000;0.500000;0.000000;,
+   -0.587565;-0.500000;0.808603;,
+   -0.587565;0.500000;0.808603;,
+   -0.864167;-0.151268;1.189262;,
+   -0.308653;-0.500000;0.950061;,
+   -0.453955;-0.151268;1.397312;,
+   -0.396806;-0.394772;1.221404;,
+   -0.755377;-0.394772;1.039545;,
+   -0.864167;0.151268;1.189262;,
+   -0.453955;0.151268;1.397312;,
+   -0.308653;0.500000;0.950061;,
+   -0.396806;0.394772;1.221404;,
+   -0.755377;0.394772;1.039545;,
+   -1.470761;-0.151268;0.000000;,
+   -0.808603;-0.500000;0.587565;,
+   -1.189262;-0.151268;0.864167;,
+   -1.039545;-0.394772;0.755377;,
+   -0.950061;-0.500000;0.308653;,
+   -1.397312;-0.151268;0.453955;,
+   -1.221404;-0.394772;0.396806;,
+   -1.285606;-0.394772;0.000000;,
+   -0.808603;0.500000;0.587565;,
+   -1.189262;0.151268;0.864167;,
+   -1.039545;0.394772;0.755377;,
+   -1.470761;0.151268;0.000000;,
+   -1.397312;0.151268;0.453955;,
+   -0.950061;0.500000;0.308653;,
+   -1.221404;0.394772;0.396806;,
+   -1.285606;0.394772;0.000000;,
+   -0.310962;0.151268;0.427944;,
+   -0.163351;0.151268;0.502809;,
+   -0.220500;0.394772;0.678717;,
+   -0.419753;0.394772;0.577661;,
+   -0.310962;-0.151268;0.427944;,
+   -0.163351;-0.151268;0.502809;,
+   -0.220500;-0.394772;0.678717;,
+   -0.419753;-0.394772;0.577661;,
+   -0.529239;0.151268;0.000000;,
+   -0.427944;0.151268;0.310962;,
+   -0.577661;0.394772;0.419753;,
+   -0.502809;0.151268;0.163351;,
+   -0.678717;0.394772;0.220500;,
+   -0.714394;0.394772;0.000000;,
+   -0.427944;-0.151268;0.310962;,
+   -0.577661;-0.394772;0.419753;,
+   -0.529239;-0.151268;0.000000;,
+   -0.502809;-0.151268;0.163351;,
+   -0.678717;-0.394772;0.220500;,
+   -0.714394;-0.394772;0.000000;,
+   -0.000000;-0.500000;-1.000000;,
+   -0.000000;0.500000;-1.000000;,
+   -0.808603;-0.500000;-0.587565;,
+   -0.808603;0.500000;-0.587565;,
+   -1.189262;-0.151268;-0.864167;,
+   -0.950061;-0.500000;-0.308653;,
+   -1.397312;-0.151268;-0.453955;,
+   -1.221404;-0.394772;-0.396806;,
+   -1.039545;-0.394772;-0.755377;,
+   -1.189262;0.151268;-0.864167;,
+   -1.397312;0.151268;-0.453955;,
+   -0.950061;0.500000;-0.308653;,
+   -1.221404;0.394772;-0.396806;,
+   -1.039545;0.394772;-0.755377;,
+   -0.000000;-0.151268;-1.470761;,
+   -0.587565;-0.500000;-0.808603;,
+   -0.864167;-0.151268;-1.189262;,
+   -0.755377;-0.394772;-1.039545;,
+   -0.308653;-0.500000;-0.950061;,
+   -0.453955;-0.151268;-1.397312;,
+   -0.396806;-0.394772;-1.221404;,
+   -0.000000;-0.394772;-1.285606;,
+   -0.587565;0.500000;-0.808603;,
+   -0.864167;0.151268;-1.189262;,
+   -0.755377;0.394772;-1.039545;,
+   -0.000000;0.151268;-1.470761;,
+   -0.453955;0.151268;-1.397312;,
+   -0.308653;0.500000;-0.950061;,
+   -0.396806;0.394772;-1.221404;,
+   -0.000000;0.394772;-1.285606;,
+   -0.427944;0.151268;-0.310962;,
+   -0.502809;0.151268;-0.163351;,
+   -0.678717;0.394772;-0.220500;,
+   -0.577661;0.394772;-0.419753;,
+   -0.427944;-0.151268;-0.310962;,
+   -0.502809;-0.151268;-0.163351;,
+   -0.678717;-0.394772;-0.220500;,
+   -0.577661;-0.394772;-0.419753;,
+   -0.000000;0.151268;-0.529239;,
+   -0.310962;0.151268;-0.427944;,
+   -0.419753;0.394772;-0.577661;,
+   -0.163351;0.151268;-0.502809;,
+   -0.220500;0.394772;-0.678717;,
+   -0.000000;0.394772;-0.714394;,
+   -0.310962;-0.151268;-0.427944;,
+   -0.419753;-0.394772;-0.577661;,
+   -0.000000;-0.151268;-0.529239;,
+   -0.163351;-0.151268;-0.502809;,
+   -0.220500;-0.394772;-0.678717;,
+   -0.000000;-0.394772;-0.714394;,
+   0.587565;-0.500000;-0.808603;,
+   0.587565;0.500000;-0.808603;,
+   0.864167;-0.151268;-1.189262;,
+   0.308653;-0.500000;-0.950061;,
+   0.453955;-0.151268;-1.397312;,
+   0.396806;-0.394772;-1.221404;,
+   0.755377;-0.394772;-1.039545;,
+   0.864167;0.151268;-1.189262;,
+   0.453955;0.151268;-1.397312;,
+   0.308653;0.500000;-0.950061;,
+   0.396806;0.394772;-1.221404;,
+   0.755377;0.394772;-1.039545;,
+   0.808603;-0.500000;-0.587565;,
+   1.189262;-0.151268;-0.864167;,
+   1.039545;-0.394772;-0.755377;,
+   0.950061;-0.500000;-0.308653;,
+   1.397312;-0.151268;-0.453955;,
+   1.221404;-0.394772;-0.396806;,
+   0.808603;0.500000;-0.587565;,
+   1.189262;0.151268;-0.864167;,
+   1.039545;0.394772;-0.755377;,
+   1.397312;0.151268;-0.453955;,
+   0.950061;0.500000;-0.308653;,
+   1.221404;0.394772;-0.396806;,
+   0.310962;0.151268;-0.427944;,
+   0.163351;0.151268;-0.502809;,
+   0.220500;0.394772;-0.678717;,
+   0.419753;0.394772;-0.577661;,
+   0.310962;-0.151268;-0.427944;,
+   0.163351;-0.151268;-0.502809;,
+   0.220500;-0.394772;-0.678717;,
+   0.419753;-0.394772;-0.577661;,
+   0.427944;0.151268;-0.310962;,
+   0.577661;0.394772;-0.419753;,
+   0.502809;0.151268;-0.163351;,
+   0.678717;0.394772;-0.220500;,
+   0.427944;-0.151268;-0.310962;,
+   0.577661;-0.394772;-0.419753;,
+   0.502809;-0.151268;-0.163351;,
+   0.678717;-0.394772;-0.220500;,
+   1.000000;-0.500000;-0.000000;,
+   0.308653;-0.500000;0.950061;,
+   0.950061;-0.500000;0.308653;,
+   0.808603;-0.500000;0.587565;,
+   1.000000;-0.500000;-0.000000;,
+   0.587565;-0.500000;0.808603;,
+   -0.000000;-0.500000;1.000000;,
+   -0.950061;-0.500000;0.308653;,
+   -0.308653;-0.500000;0.950061;,
+   -0.587565;-0.500000;0.808603;,
+   -0.808603;-0.500000;0.587565;,
+   -1.000000;-0.500000;0.000000;,
+   -0.308653;-0.500000;-0.950061;,
+   -0.950061;-0.500000;-0.308653;,
+   -0.808603;-0.500000;-0.587565;,
+   -0.587565;-0.500000;-0.808603;,
+   1.000000;0.500000;-0.000000;,
+   -0.000000;-0.500000;-1.000000;,
+   1.470761;-0.151268;-0.000000;,
+   0.950061;-0.500000;-0.308653;,
+   1.285606;-0.394772;-0.000000;,
+   1.470761;0.151268;-0.000000;,
+   1.285606;0.394772;-0.000000;,
+   0.308653;-0.500000;-0.950061;,
+   0.587565;-0.500000;-0.808603;,
+   0.529239;0.151268;-0.000000;,
+   0.714394;0.394772;-0.000000;,
+   0.808603;-0.500000;-0.587565;,
+   0.529239;-0.151268;-0.000000;,
+   0.714394;-0.394772;-0.000000;,
+   1.000000;-0.500000;-0.000000;;
+   400;
+   3;175,0,199;,
+   3;78,1,108;,
+   3;25,2,59;,
+   3;34,4,35;,
+   3;17,5,19;,
+   3;9,8,12;,
+   3;11,7,9;,
+   3;200,11,12;,
+   3;10,12,13;,
+   3;16,15,9;,
+   3;7,14,16;,
+   3;18,3,17;,
+   3;14,18,19;,
+   3;16,19,20;,
+   3;27,26,21;,
+   3;13,8,23;,
+   3;6,13,24;,
+   3;24,23,26;,
+   3;22,24,27;,
+   3;201,27,28;,
+   3;5,29,20;,
+   3;8,15,30;,
+   3;15,20,31;,
+   3;26,33,32;,
+   3;23,30,33;,
+   3;29,34,31;,
+   3;30,31,35;,
+   3;33,35,36;,
+   3;202,203,47;,
+   3;39,38,41;,
+   3;40,37,39;,
+   3;3,40,41;,
+   3;17,41,42;,
+   3;45,44,39;,
+   3;37,43,45;,
+   3;46,204,202;,
+   3;43,46,47;,
+   3;45,47,48;,
+   3;53,52,49;,
+   3;42,38,50;,
+   3;5,42,51;,
+   3;51,50,52;,
+   3;29,51,53;,
+   3;34,53,54;,
+   3;203,205,48;,
+   3;38,44,55;,
+   3;44,48,56;,
+   3;52,58,57;,
+   3;50,55,58;,
+   3;205,25,56;,
+   3;55,56,59;,
+   3;58,59,60;,
+   3;88,87,61;,
+   3;71,63,72;,
+   3;67,66,64;,
+   3;28,21,66;,
+   3;206,28,67;,
+   3;65,67,68;,
+   3;70,69,66;,
+   3;21,32,70;,
+   3;36,4,71;,
+   3;32,36,72;,
+   3;70,72,73;,
+   3;80,79,74;,
+   3;68,64,76;,
+   3;62,68,77;,
+   3;77,76,79;,
+   3;75,77,80;,
+   3;207,80,81;,
+   3;73,63,82;,
+   3;64,69,83;,
+   3;69,73,84;,
+   3;79,86,85;,
+   3;76,83,86;,
+   3;84,82,87;,
+   3;83,84,88;,
+   3;86,88,89;,
+   3;208,209,96;,
+   3;92,91,90;,
+   3;54,49,91;,
+   3;4,54,92;,
+   3;71,92,93;,
+   3;91,95,94;,
+   3;49,57,95;,
+   3;2,208,60;,
+   3;57,60,96;,
+   3;95,96,97;,
+   3;102,101,98;,
+   3;93,90,99;,
+   3;63,93,100;,
+   3;100,99,101;,
+   3;82,100,102;,
+   3;87,102,103;,
+   3;209,210,97;,
+   3;90,94,104;,
+   3;94,97,105;,
+   3;101,107,106;,
+   3;99,104,107;,
+   3;210,78,105;,
+   3;104,105,108;,
+   3;107,108,109;,
+   3;128,110,158;,
+   3;138,137,111;,
+   3;121,113,122;,
+   3;117,116,114;,
+   3;81,74,116;,
+   3;211,81,117;,
+   3;115,117,118;,
+   3;120,119,116;,
+   3;74,85,120;,
+   3;89,61,121;,
+   3;85,89,122;,
+   3;120,122,123;,
+   3;130,129,124;,
+   3;118,114,126;,
+   3;112,118,127;,
+   3;127,126,129;,
+   3;125,127,130;,
+   3;212,130,131;,
+   3;123,113,132;,
+   3;114,119,133;,
+   3;119,123,134;,
+   3;129,136,135;,
+   3;126,133,136;,
+   3;134,132,137;,
+   3;133,134,138;,
+   3;136,138,139;,
+   3;213,214,146;,
+   3;142,141,140;,
+   3;103,98,141;,
+   3;61,103,142;,
+   3;121,142,143;,
+   3;141,145,144;,
+   3;98,106,145;,
+   3;1,213,109;,
+   3;106,109,146;,
+   3;145,146,147;,
+   3;152,151,148;,
+   3;143,140,149;,
+   3;113,143,150;,
+   3;150,149,151;,
+   3;132,150,152;,
+   3;137,152,153;,
+   3;214,215,147;,
+   3;140,144,154;,
+   3;144,147,155;,
+   3;151,157,156;,
+   3;149,154,157;,
+   3;215,128,155;,
+   3;154,155,158;,
+   3;157,158,159;,
+   3;183,182,216;,
+   3;169,161,170;,
+   3;165,164,162;,
+   3;131,124,164;,
+   3;217,131,165;,
+   3;163,165,166;,
+   3;168,167,164;,
+   3;124,135,168;,
+   3;139,111,169;,
+   3;135,139,170;,
+   3;168,170,171;,
+   3;177,176,218;,
+   3;166,162,173;,
+   3;160,166,174;,
+   3;174,173,176;,
+   3;172,174,177;,
+   3;219,177,220;,
+   3;171,161,178;,
+   3;162,167,179;,
+   3;167,171,180;,
+   3;176,181,221;,
+   3;173,179,181;,
+   3;180,178,182;,
+   3;179,180,183;,
+   3;181,183,222;,
+   3;223,224,190;,
+   3;186,185,184;,
+   3;153,148,185;,
+   3;111,153,186;,
+   3;169,186,187;,
+   3;185,189,188;,
+   3;148,156,189;,
+   3;110,223,159;,
+   3;156,159,190;,
+   3;189,190,191;,
+   3;195,194,225;,
+   3;187,184,192;,
+   3;161,187,193;,
+   3;193,192,194;,
+   3;178,193,195;,
+   3;182,195,226;,
+   3;224,227,191;,
+   3;184,188,196;,
+   3;188,191,197;,
+   3;194,198,228;,
+   3;192,196,198;,
+   3;227,175,197;,
+   3;196,197,199;,
+   3;198,199,229;,
+   3;0,229,199;,
+   3;1,109,108;,
+   3;2,60,59;,
+   3;4,36,35;,
+   3;5,20,19;,
+   3;8,13,12;,
+   3;9,12,11;,
+   3;12,10,200;,
+   3;13,6,10;,
+   3;15,8,9;,
+   3;16,9,7;,
+   3;17,19,18;,
+   3;19,16,14;,
+   3;20,15,16;,
+   3;21,28,27;,
+   3;23,24,13;,
+   3;24,22,6;,
+   3;26,27,24;,
+   3;27,201,22;,
+   3;28,206,201;,
+   3;29,31,20;,
+   3;30,23,8;,
+   3;31,30,15;,
+   3;32,21,26;,
+   3;33,26,23;,
+   3;34,35,31;,
+   3;35,33,30;,
+   3;36,32,33;,
+   3;203,48,47;,
+   3;38,42,41;,
+   3;39,41,40;,
+   3;41,17,3;,
+   3;42,5,17;,
+   3;44,38,39;,
+   3;45,39,37;,
+   3;202,47,46;,
+   3;47,45,43;,
+   3;48,44,45;,
+   3;49,54,53;,
+   3;50,51,42;,
+   3;51,29,5;,
+   3;52,53,51;,
+   3;53,34,29;,
+   3;54,4,34;,
+   3;205,56,48;,
+   3;55,50,38;,
+   3;56,55,44;,
+   3;57,49,52;,
+   3;58,52,50;,
+   3;25,59,56;,
+   3;59,58,55;,
+   3;60,57,58;,
+   3;61,89,88;,
+   3;63,73,72;,
+   3;64,68,67;,
+   3;66,67,28;,
+   3;67,65,206;,
+   3;68,62,65;,
+   3;69,64,66;,
+   3;70,66,21;,
+   3;71,72,36;,
+   3;72,70,32;,
+   3;73,69,70;,
+   3;74,81,80;,
+   3;76,77,68;,
+   3;77,75,62;,
+   3;79,80,77;,
+   3;80,207,75;,
+   3;81,211,207;,
+   3;82,84,73;,
+   3;83,76,64;,
+   3;84,83,69;,
+   3;85,74,79;,
+   3;86,79,76;,
+   3;87,88,84;,
+   3;88,86,83;,
+   3;89,85,86;,
+   3;209,97,96;,
+   3;90,93,92;,
+   3;91,92,54;,
+   3;92,71,4;,
+   3;93,63,71;,
+   3;94,90,91;,
+   3;95,91,49;,
+   3;208,96,60;,
+   3;96,95,57;,
+   3;97,94,95;,
+   3;98,103,102;,
+   3;99,100,93;,
+   3;100,82,63;,
+   3;101,102,100;,
+   3;102,87,82;,
+   3;103,61,87;,
+   3;210,105,97;,
+   3;104,99,90;,
+   3;105,104,94;,
+   3;106,98,101;,
+   3;107,101,99;,
+   3;78,108,105;,
+   3;108,107,104;,
+   3;109,106,107;,
+   3;110,159,158;,
+   3;111,139,138;,
+   3;113,123,122;,
+   3;114,118,117;,
+   3;116,117,81;,
+   3;117,115,211;,
+   3;118,112,115;,
+   3;119,114,116;,
+   3;120,116,74;,
+   3;121,122,89;,
+   3;122,120,85;,
+   3;123,119,120;,
+   3;124,131,130;,
+   3;126,127,118;,
+   3;127,125,112;,
+   3;129,130,127;,
+   3;130,212,125;,
+   3;131,217,212;,
+   3;132,134,123;,
+   3;133,126,114;,
+   3;134,133,119;,
+   3;135,124,129;,
+   3;136,129,126;,
+   3;137,138,134;,
+   3;138,136,133;,
+   3;139,135,136;,
+   3;214,147,146;,
+   3;140,143,142;,
+   3;141,142,103;,
+   3;142,121,61;,
+   3;143,113,121;,
+   3;144,140,141;,
+   3;145,141,98;,
+   3;213,146,109;,
+   3;146,145,106;,
+   3;147,144,145;,
+   3;148,153,152;,
+   3;149,150,143;,
+   3;150,132,113;,
+   3;151,152,150;,
+   3;152,137,132;,
+   3;153,111,137;,
+   3;215,155,147;,
+   3;154,149,140;,
+   3;155,154,144;,
+   3;156,148,151;,
+   3;157,151,149;,
+   3;128,158,155;,
+   3;158,157,154;,
+   3;159,156,157;,
+   3;216,222,183;,
+   3;161,171,170;,
+   3;162,166,165;,
+   3;164,165,131;,
+   3;165,163,217;,
+   3;166,160,163;,
+   3;167,162,164;,
+   3;168,164,124;,
+   3;169,170,139;,
+   3;170,168,135;,
+   3;171,167,168;,
+   3;218,220,177;,
+   3;173,174,166;,
+   3;174,172,160;,
+   3;176,177,174;,
+   3;177,219,172;,
+   3;220,230,219;,
+   3;178,180,171;,
+   3;179,173,162;,
+   3;180,179,167;,
+   3;221,218,176;,
+   3;181,176,173;,
+   3;182,183,180;,
+   3;183,181,179;,
+   3;222,221,181;,
+   3;224,191,190;,
+   3;184,187,186;,
+   3;185,186,153;,
+   3;186,169,111;,
+   3;187,161,169;,
+   3;188,184,185;,
+   3;189,185,148;,
+   3;223,190,159;,
+   3;190,189,156;,
+   3;191,188,189;,
+   3;225,226,195;,
+   3;192,193,187;,
+   3;193,178,161;,
+   3;194,195,193;,
+   3;195,182,178;,
+   3;226,216,182;,
+   3;227,197,191;,
+   3;196,192,184;,
+   3;197,196,188;,
+   3;228,225,194;,
+   3;198,194,192;,
+   3;175,199,197;,
+   3;199,198,196;,
+   3;229,228,198;;
+
+   MeshNormals {
+    200;
+    -0.947365;-0.320105;-0.005685;,
+    -0.947365;0.320105;-0.005685;,
+    -0.947365;0.320105;0.005685;,
+    -0.947365;-0.320105;0.005685;,
+    -0.902577;-0.319799;0.288244;,
+    -0.902577;-0.319799;-0.288244;,
+    -0.902577;0.319799;0.288244;,
+    -0.902577;0.319799;-0.288244;,
+    -0.899182;-0.319817;-0.298645;,
+    -0.899182;0.319817;0.298645;,
+    -0.899182;-0.319817;0.298645;,
+    -0.899182;0.319817;-0.298645;,
+    -0.770274;0.319988;0.551620;,
+    -0.770274;0.319988;-0.551620;,
+    -0.770274;-0.319988;0.551620;,
+    -0.770274;-0.319988;-0.551620;,
+    -0.763709;-0.319964;0.560689;,
+    -0.763709;-0.319964;-0.560689;,
+    -0.763709;0.319964;-0.560689;,
+    -0.763709;0.319964;0.560689;,
+    -0.593834;-0.804490;0.012541;,
+    -0.593834;-0.804489;-0.012541;,
+    -0.593834;0.804489;-0.012541;,
+    -0.593834;0.804489;0.012541;,
+    -0.568756;-0.804200;-0.172564;,
+    -0.568756;-0.804200;0.172564;,
+    -0.568756;0.804200;-0.172564;,
+    -0.568756;0.804200;0.172564;,
+    -0.561280;-0.804197;-0.195533;,
+    -0.561280;-0.804197;0.195533;,
+    -0.561280;0.804197;0.195533;,
+    -0.561280;0.804197;-0.195533;,
+    -0.560689;-0.319964;0.763709;,
+    -0.560689;-0.319964;-0.763709;,
+    -0.560689;0.319964;-0.763709;,
+    -0.560689;0.319964;0.763709;,
+    -0.551620;-0.319988;0.770274;,
+    -0.551620;0.319988;-0.770274;,
+    -0.551620;-0.319988;-0.770274;,
+    -0.551620;0.319988;0.770274;,
+    -0.488149;-0.804361;0.338696;,
+    -0.488149;-0.804361;-0.338696;,
+    -0.488149;0.804361;-0.338696;,
+    -0.488149;0.804361;0.338696;,
+    -0.473639;-0.804366;0.358694;,
+    -0.473639;-0.804366;-0.358694;,
+    -0.473639;0.804366;-0.358694;,
+    -0.473639;0.804366;0.358694;,
+    -0.358694;-0.804366;-0.473640;,
+    -0.358694;-0.804366;0.473639;,
+    -0.358694;0.804366;-0.473639;,
+    -0.358694;0.804366;0.473639;,
+    -0.338696;-0.804361;0.488149;,
+    -0.338696;0.804361;-0.488149;,
+    -0.338696;-0.804361;-0.488149;,
+    -0.338696;0.804361;0.488149;,
+    -0.298645;-0.319817;-0.899182;,
+    -0.298645;0.319817;0.899182;,
+    -0.298645;0.319817;-0.899182;,
+    -0.298645;-0.319817;0.899182;,
+    -0.288244;-0.319798;0.902577;,
+    -0.288244;0.319798;-0.902577;,
+    -0.288244;-0.319799;-0.902577;,
+    -0.288244;0.319799;0.902577;,
+    -0.195533;-0.804197;-0.561280;,
+    -0.195533;0.804197;-0.561279;,
+    -0.195533;-0.804197;0.561279;,
+    -0.195533;0.804197;0.561280;,
+    -0.172564;-0.804200;-0.568756;,
+    -0.172564;0.804200;0.568756;,
+    -0.172564;-0.804200;0.568756;,
+    -0.172564;0.804200;-0.568756;,
+    -0.019867;0.999803;0.000000;,
+    -0.019867;-0.999803;-0.000000;,
+    -0.018204;0.999817;-0.005916;,
+    -0.018204;0.999817;0.005916;,
+    -0.018204;-0.999817;-0.005916;,
+    -0.018204;-0.999817;0.005916;,
+    -0.015837;0.999808;-0.011505;,
+    -0.015837;-0.999808;-0.011505;,
+    -0.015837;0.999808;0.011505;,
+    -0.015837;-0.999808;0.011505;,
+    -0.012541;0.804490;0.593834;,
+    -0.012541;-0.804489;0.593834;,
+    -0.012541;0.804489;-0.593834;,
+    -0.012541;-0.804489;-0.593834;,
+    -0.011505;-0.999808;0.015837;,
+    -0.011505;0.999808;-0.015837;,
+    -0.011505;0.999808;0.015837;,
+    -0.011505;-0.999808;-0.015837;,
+    -0.005916;-0.999817;0.018204;,
+    -0.005916;0.999817;0.018204;,
+    -0.005916;0.999817;-0.018204;,
+    -0.005916;-0.999817;-0.018204;,
+    -0.005685;0.320105;0.947365;,
+    -0.005685;-0.320105;-0.947365;,
+    -0.005685;-0.320105;0.947365;,
+    -0.005685;0.320105;-0.947365;,
+    -0.000000;-0.999803;0.019867;,
+    -0.000000;0.999803;-0.019867;,
+    0.000000;0.999803;0.019867;,
+    0.000000;-0.999803;-0.019867;,
+    0.005685;-0.320105;-0.947365;,
+    0.005685;0.320105;0.947365;,
+    0.005685;-0.320105;0.947365;,
+    0.005685;0.320105;-0.947365;,
+    0.005916;-0.999817;0.018204;,
+    0.005916;0.999817;0.018204;,
+    0.005916;-0.999817;-0.018204;,
+    0.005916;0.999817;-0.018204;,
+    0.011505;-0.999808;0.015837;,
+    0.011505;0.999808;-0.015837;,
+    0.011505;0.999808;0.015837;,
+    0.011505;-0.999808;-0.015837;,
+    0.012541;-0.804489;0.593834;,
+    0.012541;-0.804489;-0.593834;,
+    0.012541;0.804489;0.593834;,
+    0.012541;0.804490;-0.593834;,
+    0.015837;-0.999808;-0.011505;,
+    0.015837;-0.999808;0.011505;,
+    0.015837;0.999808;-0.011505;,
+    0.015837;0.999808;0.011505;,
+    0.018204;-0.999817;-0.005916;,
+    0.018204;-0.999817;0.005916;,
+    0.018204;0.999817;0.005916;,
+    0.018204;0.999817;-0.005916;,
+    0.019867;-0.999803;0.000000;,
+    0.019867;0.999803;-0.000000;,
+    0.172564;-0.804200;-0.568756;,
+    0.172564;0.804200;0.568756;,
+    0.172564;-0.804200;0.568756;,
+    0.172564;0.804200;-0.568756;,
+    0.195533;-0.804197;-0.561280;,
+    0.195533;0.804197;-0.561280;,
+    0.195533;-0.804197;0.561280;,
+    0.195533;0.804197;0.561280;,
+    0.288244;-0.319799;0.902577;,
+    0.288244;0.319799;-0.902577;,
+    0.288244;0.319798;0.902577;,
+    0.288244;-0.319798;-0.902577;,
+    0.298645;-0.319817;-0.899182;,
+    0.298645;0.319817;0.899182;,
+    0.298645;-0.319817;0.899182;,
+    0.298645;0.319817;-0.899182;,
+    0.338696;0.804361;-0.488149;,
+    0.338696;-0.804361;0.488149;,
+    0.338696;-0.804361;-0.488149;,
+    0.338696;0.804361;0.488149;,
+    0.358694;0.804366;-0.473639;,
+    0.358694;-0.804366;-0.473639;,
+    0.358694;-0.804366;0.473640;,
+    0.358694;0.804366;0.473639;,
+    0.473639;0.804366;-0.358694;,
+    0.473639;-0.804366;0.358694;,
+    0.473639;0.804366;0.358694;,
+    0.473639;-0.804366;-0.358694;,
+    0.488149;-0.804361;-0.338696;,
+    0.488149;-0.804361;0.338696;,
+    0.488149;0.804361;-0.338696;,
+    0.488149;0.804361;0.338696;,
+    0.551620;0.319988;-0.770274;,
+    0.551620;-0.319988;0.770274;,
+    0.551620;-0.319988;-0.770274;,
+    0.551620;0.319988;0.770274;,
+    0.560689;0.319964;-0.763709;,
+    0.560689;-0.319964;-0.763709;,
+    0.560689;-0.319964;0.763709;,
+    0.560689;0.319964;0.763709;,
+    0.561280;-0.804197;-0.195533;,
+    0.561280;-0.804197;0.195533;,
+    0.561280;0.804197;-0.195533;,
+    0.561280;0.804197;0.195533;,
+    0.568756;-0.804200;-0.172564;,
+    0.568756;-0.804200;0.172564;,
+    0.568756;0.804200;-0.172564;,
+    0.568756;0.804200;0.172564;,
+    0.593834;-0.804490;-0.012541;,
+    0.593834;0.804489;0.012541;,
+    0.593834;-0.804489;0.012541;,
+    0.593834;0.804489;-0.012541;,
+    0.763709;-0.319964;0.560689;,
+    0.763709;0.319964;0.560689;,
+    0.763709;0.319964;-0.560689;,
+    0.763709;-0.319964;-0.560689;,
+    0.770274;-0.319988;-0.551620;,
+    0.770274;-0.319988;0.551620;,
+    0.770274;0.319988;-0.551620;,
+    0.770274;0.319988;0.551620;,
+    0.899182;-0.319817;-0.298645;,
+    0.899182;0.319817;0.298645;,
+    0.899182;-0.319817;0.298645;,
+    0.899182;0.319817;-0.298645;,
+    0.902577;-0.319799;-0.288244;,
+    0.902577;-0.319799;0.288244;,
+    0.902577;0.319799;-0.288244;,
+    0.902577;0.319799;0.288244;,
+    0.947365;-0.320105;0.005685;,
+    0.947365;-0.320105;-0.005685;,
+    0.947365;0.320105;-0.005685;,
+    0.947365;0.320105;0.005685;;
+    400;
+    3;106,98,29;,
+    3;93,101,168;,
+    3;77,73,64;,
+    3;125,127,135;,
+    3;109,111,175;,
+    3;190,180,169;,
+    3;178,196,190;,
+    3;98,178,169;,
+    3;90,169,153;,
+    3;195,187,190;,
+    3;196,198,195;,
+    3;179,99,109;,
+    3;198,179,175;,
+    3;195,175,159;,
+    3;130,136,96;,
+    3;153,180,161;,
+    3;86,153,145;,
+    3;145,161,136;,
+    3;81,145,130;,
+    3;77,130,83;,
+    3;111,120,159;,
+    3;180,187,167;,
+    3;187,159,151;,
+    3;136,141,103;,
+    3;161,167,141;,
+    3;120,125,151;,
+    3;167,151,135;,
+    3;141,135,116;,
+    3;90,86,24;,
+    3;11,18,31;,
+    3;22,1,11;,
+    3;99,22,31;,
+    3;109,31,46;,
+    3;5,15,11;,
+    3;1,3,5;,
+    3;20,98,90;,
+    3;3,20,24;,
+    3;5,24,41;,
+    3;71,61,105;,
+    3;46,18,37;,
+    3;111,46,53;,
+    3;53,37,61;,
+    3;120,53,71;,
+    3;125,71,117;,
+    3;86,81,41;,
+    3;18,15,33;,
+    3;15,41,48;,
+    3;61,56,95;,
+    3;37,33,56;,
+    3;81,77,48;,
+    3;33,48,64;,
+    3;56,64,85;,
+    3;30,107,100;,
+    3;124,121,69;,
+    3;66,59,32;,
+    3;83,96,59;,
+    3;73,83,66;,
+    3;76,66,49;,
+    3;63,39,59;,
+    3;96,103,63;,
+    3;116,127,124;,
+    3;103,116,69;,
+    3;63,69,55;,
+    3;25,4,0;,
+    3;49,32,14;,
+    3;79,49,40;,
+    3;40,14,4;,
+    3;89,40,25;,
+    3;93,25,21;,
+    3;55,121,112;,
+    3;32,39,19;,
+    3;39,55,47;,
+    3;4,9,2;,
+    3;14,19,9;,
+    3;47,112,107;,
+    3;19,47,30;,
+    3;9,30,23;,
+    3;76,79,128;,
+    3;133,143,164;,
+    3;117,105,143;,
+    3;127,117,133;,
+    3;124,133,148;,
+    3;143,139,162;,
+    3;105,95,139;,
+    3;73,76,85;,
+    3;95,85,128;,
+    3;139,128,146;,
+    3;174,194,199;,
+    3;148,164,186;,
+    3;121,148,158;,
+    3;158,186,194;,
+    3;112,158,174;,
+    3;107,174,177;,
+    3;79,89,146;,
+    3;164,162,183;,
+    3;162,146,155;,
+    3;194,188,197;,
+    3;186,183,188;,
+    3;89,93,155;,
+    3;183,155,168;,
+    3;188,168,176;,
+    3;122,126,134;,
+    3;65,75,72;,
+    3;91,88,26;,
+    3;28,8,17;,
+    3;21,0,8;,
+    3;101,21,28;,
+    3;108,28,45;,
+    3;7,13,8;,
+    3;0,2,7;,
+    3;23,100,91;,
+    3;2,23,26;,
+    3;7,26,42;,
+    3;68,62,102;,
+    3;45,17,38;,
+    3;113,45,54;,
+    3;54,38,62;,
+    3;118,54,68;,
+    3;122,68,115;,
+    3;42,88,80;,
+    3;17,13,34;,
+    3;13,42,50;,
+    3;62,58,97;,
+    3;38,34,58;,
+    3;50,80,75;,
+    3;34,50,65;,
+    3;58,65,84;,
+    3;108,113,173;,
+    3;171,189,181;,
+    3;177,199,189;,
+    3;100,177,171;,
+    3;91,171,154;,
+    3;189,193,185;,
+    3;199,197,193;,
+    3;101,108,176;,
+    3;197,176,173;,
+    3;193,173,157;,
+    3;129,138,94;,
+    3;154,181,163;,
+    3;88,154,147;,
+    3;147,163,138;,
+    3;80,147,129;,
+    3;75,129,82;,
+    3;113,118,157;,
+    3;181,185,166;,
+    3;185,157,150;,
+    3;138,142,104;,
+    3;163,166,142;,
+    3;118,122,150;,
+    3;166,150,134;,
+    3;142,134,114;,
+    3;170,92,99;,
+    3;74,78,131;,
+    3;132,140,165;,
+    3;115,102,140;,
+    3;126,115,132;,
+    3;123,132,149;,
+    3;137,160,140;,
+    3;102,97,137;,
+    3;84,72,74;,
+    3;97,84,131;,
+    3;137,131,144;,
+    3;172,192,196;,
+    3;149,165,184;,
+    3;119,149,156;,
+    3;156,184,192;,
+    3;110,156,172;,
+    3;106,172,178;,
+    3;144,78,87;,
+    3;165,160,182;,
+    3;160,144,152;,
+    3;192,191,198;,
+    3;184,182,191;,
+    3;152,87,92;,
+    3;182,152,170;,
+    3;191,170,179;,
+    3;123,119,70;,
+    3;67,57,35;,
+    3;82,94,57;,
+    3;72,82,67;,
+    3;74,67,51;,
+    3;57,60,36;,
+    3;94,104,60;,
+    3;126,123,114;,
+    3;104,114,70;,
+    3;60,70,52;,
+    3;27,6,1;,
+    3;51,35,12;,
+    3;78,51,43;,
+    3;43,12,6;,
+    3;87,43,27;,
+    3;92,27,22;,
+    3;119,110,52;,
+    3;35,36,16;,
+    3;36,52,44;,
+    3;6,10,3;,
+    3;12,16,10;,
+    3;110,106,44;,
+    3;16,44,29;,
+    3;10,29,20;,
+    3;98,20,29;,
+    3;101,176,168;,
+    3;73,85,64;,
+    3;127,116,135;,
+    3;111,159,175;,
+    3;180,153,169;,
+    3;190,169,178;,
+    3;169,90,98;,
+    3;153,86,90;,
+    3;187,180,190;,
+    3;195,190,196;,
+    3;109,175,179;,
+    3;175,195,198;,
+    3;159,187,195;,
+    3;96,83,130;,
+    3;161,145,153;,
+    3;145,81,86;,
+    3;136,130,145;,
+    3;130,77,81;,
+    3;83,73,77;,
+    3;120,151,159;,
+    3;167,161,180;,
+    3;151,167,187;,
+    3;103,96,136;,
+    3;141,136,161;,
+    3;125,135,151;,
+    3;135,141,167;,
+    3;116,103,141;,
+    3;86,41,24;,
+    3;18,46,31;,
+    3;11,31,22;,
+    3;31,109,99;,
+    3;46,111,109;,
+    3;15,18,11;,
+    3;5,11,1;,
+    3;90,24,20;,
+    3;24,5,3;,
+    3;41,15,5;,
+    3;105,117,71;,
+    3;37,53,46;,
+    3;53,120,111;,
+    3;61,71,53;,
+    3;71,125,120;,
+    3;117,127,125;,
+    3;81,48,41;,
+    3;33,37,18;,
+    3;48,33,15;,
+    3;95,105,61;,
+    3;56,61,37;,
+    3;77,64,48;,
+    3;64,56,33;,
+    3;85,95,56;,
+    3;100,23,30;,
+    3;121,55,69;,
+    3;32,49,66;,
+    3;59,66,83;,
+    3;66,76,73;,
+    3;49,79,76;,
+    3;39,32,59;,
+    3;63,59,96;,
+    3;124,69,116;,
+    3;69,63,103;,
+    3;55,39,63;,
+    3;0,21,25;,
+    3;14,40,49;,
+    3;40,89,79;,
+    3;4,25,40;,
+    3;25,93,89;,
+    3;21,101,93;,
+    3;112,47,55;,
+    3;19,14,32;,
+    3;47,19,39;,
+    3;2,0,4;,
+    3;9,4,14;,
+    3;107,30,47;,
+    3;30,9,19;,
+    3;23,2,9;,
+    3;79,146,128;,
+    3;164,148,133;,
+    3;143,133,117;,
+    3;133,124,127;,
+    3;148,121,124;,
+    3;162,164,143;,
+    3;139,143,105;,
+    3;76,128,85;,
+    3;128,139,95;,
+    3;146,162,139;,
+    3;199,177,174;,
+    3;186,158,148;,
+    3;158,112,121;,
+    3;194,174,158;,
+    3;174,107,112;,
+    3;177,100,107;,
+    3;89,155,146;,
+    3;183,186,164;,
+    3;155,183,162;,
+    3;197,199,194;,
+    3;188,194,186;,
+    3;93,168,155;,
+    3;168,188,183;,
+    3;176,197,188;,
+    3;126,114,134;,
+    3;72,84,65;,
+    3;88,42,26;,
+    3;17,45,28;,
+    3;8,28,21;,
+    3;28,108,101;,
+    3;45,113,108;,
+    3;13,17,8;,
+    3;7,8,0;,
+    3;91,26,23;,
+    3;26,7,2;,
+    3;42,13,7;,
+    3;102,115,68;,
+    3;38,54,45;,
+    3;54,118,113;,
+    3;62,68,54;,
+    3;68,122,118;,
+    3;115,126,122;,
+    3;80,50,42;,
+    3;34,38,17;,
+    3;50,34,13;,
+    3;97,102,62;,
+    3;58,62,38;,
+    3;75,65,50;,
+    3;65,58,34;,
+    3;84,97,58;,
+    3;113,157,173;,
+    3;181,154,171;,
+    3;189,171,177;,
+    3;171,91,100;,
+    3;154,88,91;,
+    3;185,181,189;,
+    3;193,189,199;,
+    3;108,173,176;,
+    3;173,193,197;,
+    3;157,185,193;,
+    3;94,82,129;,
+    3;163,147,154;,
+    3;147,80,88;,
+    3;138,129,147;,
+    3;129,75,80;,
+    3;82,72,75;,
+    3;118,150,157;,
+    3;166,163,181;,
+    3;150,166,185;,
+    3;104,94,138;,
+    3;142,138,163;,
+    3;122,134,150;,
+    3;134,142,166;,
+    3;114,104,142;,
+    3;99,179,170;,
+    3;78,144,131;,
+    3;165,149,132;,
+    3;140,132,115;,
+    3;132,123,126;,
+    3;149,119,123;,
+    3;160,165,140;,
+    3;137,140,102;,
+    3;74,131,84;,
+    3;131,137,97;,
+    3;144,160,137;,
+    3;196,178,172;,
+    3;184,156,149;,
+    3;156,110,119;,
+    3;192,172,156;,
+    3;172,106,110;,
+    3;178,98,106;,
+    3;87,152,144;,
+    3;182,184,165;,
+    3;152,182,160;,
+    3;198,196,192;,
+    3;191,192,184;,
+    3;92,170,152;,
+    3;170,191,182;,
+    3;179,198,191;,
+    3;119,52,70;,
+    3;35,51,67;,
+    3;57,67,82;,
+    3;67,74,72;,
+    3;51,78,74;,
+    3;36,35,57;,
+    3;60,57,94;,
+    3;123,70,114;,
+    3;70,60,104;,
+    3;52,36,60;,
+    3;1,22,27;,
+    3;12,43,51;,
+    3;43,87,78;,
+    3;6,27,43;,
+    3;27,92,87;,
+    3;22,99,92;,
+    3;110,44,52;,
+    3;16,12,35;,
+    3;44,16,36;,
+    3;3,1,6;,
+    3;10,6,12;,
+    3;106,29,44;,
+    3;29,10,16;,
+    3;20,3,10;;
+   }
+
+   MeshTextureCoords {
+    231;
+    1.000000;-1.000000;,
+    1.000000;-0.500000;,
+    1.000000;-0.250000;,
+    0.500000;0.000000;,
+    0.500000;-0.250000;,
+    0.500000;-0.099970;,
+    0.000000;-0.099970;,
+    0.198864;0.000000;,
+    0.198864;-0.099970;,
+    0.198864;-0.050018;,
+    0.000000;-0.050018;,
+    0.100638;0.000000;,
+    0.100638;-0.050018;,
+    0.100638;-0.099970;,
+    0.301136;0.000000;,
+    0.301136;-0.099970;,
+    0.301136;-0.050018;,
+    0.500000;-0.050018;,
+    0.399362;0.000000;,
+    0.399362;-0.050018;,
+    0.399362;-0.099970;,
+    0.198864;-0.250000;,
+    0.000000;-0.150030;,
+    0.198864;-0.150030;,
+    0.100638;-0.150030;,
+    1.000000;-0.199982;,
+    0.198864;-0.199982;,
+    0.100638;-0.199982;,
+    0.100638;-0.250000;,
+    0.500000;-0.150030;,
+    0.301136;-0.150030;,
+    0.399362;-0.150030;,
+    0.301136;-0.250000;,
+    0.301136;-0.199982;,
+    0.500000;-0.199982;,
+    0.399362;-0.199982;,
+    0.399362;-0.250000;,
+    0.698864;0.000000;,
+    0.698864;-0.099970;,
+    0.698864;-0.050018;,
+    0.600638;0.000000;,
+    0.600638;-0.050018;,
+    0.600638;-0.099970;,
+    0.801136;0.000000;,
+    0.801136;-0.099970;,
+    0.801136;-0.050018;,
+    0.899362;0.000000;,
+    0.899362;-0.050018;,
+    0.899362;-0.099970;,
+    0.698864;-0.250000;,
+    0.698864;-0.150030;,
+    0.600638;-0.150030;,
+    0.698864;-0.199982;,
+    0.600638;-0.199982;,
+    0.600638;-0.250000;,
+    0.801136;-0.150030;,
+    0.899362;-0.150030;,
+    0.801136;-0.250000;,
+    0.801136;-0.199982;,
+    0.899362;-0.199982;,
+    0.899362;-0.250000;,
+    0.500000;-0.500000;,
+    0.000000;-0.349970;,
+    0.500000;-0.349970;,
+    0.198864;-0.349970;,
+    0.000000;-0.300018;,
+    0.198864;-0.300018;,
+    0.100638;-0.300018;,
+    0.100638;-0.349970;,
+    0.301136;-0.349970;,
+    0.301136;-0.300018;,
+    0.500000;-0.300018;,
+    0.399362;-0.300018;,
+    0.399362;-0.349970;,
+    0.198864;-0.500000;,
+    0.000000;-0.400030;,
+    0.198864;-0.400030;,
+    0.100638;-0.400030;,
+    1.000000;-0.449982;,
+    0.198864;-0.449982;,
+    0.100638;-0.449982;,
+    0.100638;-0.500000;,
+    0.500000;-0.400030;,
+    0.301136;-0.400030;,
+    0.399362;-0.400030;,
+    0.301136;-0.500000;,
+    0.301136;-0.449982;,
+    0.500000;-0.449982;,
+    0.399362;-0.449982;,
+    0.399362;-0.500000;,
+    0.698864;-0.349970;,
+    0.698864;-0.300018;,
+    0.600638;-0.300018;,
+    0.600638;-0.349970;,
+    0.801136;-0.349970;,
+    0.801136;-0.300018;,
+    0.899362;-0.300018;,
+    0.899362;-0.349970;,
+    0.698864;-0.500000;,
+    0.698864;-0.400030;,
+    0.600638;-0.400030;,
+    0.698864;-0.449982;,
+    0.600638;-0.449982;,
+    0.600638;-0.500000;,
+    0.801136;-0.400030;,
+    0.899362;-0.400030;,
+    0.801136;-0.500000;,
+    0.801136;-0.449982;,
+    0.899362;-0.449982;,
+    0.899362;-0.500000;,
+    1.000000;-0.750000;,
+    0.500000;-0.750000;,
+    0.000000;-0.599970;,
+    0.500000;-0.599970;,
+    0.198864;-0.599970;,
+    0.000000;-0.550017;,
+    0.198864;-0.550017;,
+    0.100638;-0.550017;,
+    0.100638;-0.599970;,
+    0.301136;-0.599970;,
+    0.301136;-0.550017;,
+    0.500000;-0.550017;,
+    0.399362;-0.550017;,
+    0.399362;-0.599970;,
+    0.198864;-0.750000;,
+    0.000000;-0.650030;,
+    0.198864;-0.650030;,
+    0.100638;-0.650030;,
+    1.000000;-0.699983;,
+    0.198864;-0.699983;,
+    0.100638;-0.699983;,
+    0.100638;-0.750000;,
+    0.500000;-0.650030;,
+    0.301136;-0.650030;,
+    0.399362;-0.650030;,
+    0.301136;-0.750000;,
+    0.301136;-0.699983;,
+    0.500000;-0.699983;,
+    0.399362;-0.699983;,
+    0.399362;-0.750000;,
+    0.698864;-0.599970;,
+    0.698864;-0.550017;,
+    0.600638;-0.550017;,
+    0.600638;-0.599970;,
+    0.801136;-0.599970;,
+    0.801136;-0.550017;,
+    0.899362;-0.550017;,
+    0.899362;-0.599970;,
+    0.698864;-0.750000;,
+    0.698864;-0.650030;,
+    0.600638;-0.650030;,
+    0.698864;-0.699983;,
+    0.600638;-0.699983;,
+    0.600638;-0.750000;,
+    0.801136;-0.650030;,
+    0.899362;-0.650030;,
+    0.801136;-0.750000;,
+    0.801136;-0.699983;,
+    0.899362;-0.699983;,
+    0.899362;-0.750000;,
+    0.000000;-0.849970;,
+    0.500000;-0.849970;,
+    0.198864;-0.849970;,
+    0.000000;-0.800017;,
+    0.198864;-0.800017;,
+    0.100638;-0.800017;,
+    0.100638;-0.849970;,
+    0.301136;-0.849970;,
+    0.301136;-0.800017;,
+    0.500000;-0.800017;,
+    0.399362;-0.800017;,
+    0.399362;-0.849970;,
+    0.000000;-0.900030;,
+    0.198864;-0.900030;,
+    0.100638;-0.900030;,
+    1.000000;-0.949983;,
+    0.198864;-0.949983;,
+    0.100638;-0.949983;,
+    0.500000;-0.900030;,
+    0.301136;-0.900030;,
+    0.399362;-0.900030;,
+    0.301136;-0.949983;,
+    0.500000;-0.949983;,
+    0.399362;-0.949983;,
+    0.698864;-0.849970;,
+    0.698864;-0.800017;,
+    0.600638;-0.800017;,
+    0.600638;-0.849970;,
+    0.801136;-0.849970;,
+    0.801136;-0.800017;,
+    0.899362;-0.800017;,
+    0.899362;-0.849970;,
+    0.698864;-0.900030;,
+    0.600638;-0.900030;,
+    0.698864;-0.949983;,
+    0.600638;-0.949983;,
+    0.801136;-0.900030;,
+    0.899362;-0.900030;,
+    0.801136;-0.949983;,
+    0.899362;-0.949983;,
+    0.000000;0.000000;,
+    0.000000;-0.199982;,
+    1.000000;-0.050018;,
+    1.000000;-0.099970;,
+    1.000000;0.000000;,
+    1.000000;-0.150030;,
+    0.000000;-0.250000;,
+    0.000000;-0.449982;,
+    1.000000;-0.300018;,
+    1.000000;-0.349970;,
+    1.000000;-0.400030;,
+    0.000000;-0.500000;,
+    0.000000;-0.699983;,
+    1.000000;-0.550017;,
+    1.000000;-0.599970;,
+    1.000000;-0.650030;,
+    0.500000;-1.000000;,
+    0.000000;-0.750000;,
+    0.198864;-1.000000;,
+    0.000000;-0.949983;,
+    0.100638;-1.000000;,
+    0.301136;-1.000000;,
+    0.399362;-1.000000;,
+    1.000000;-0.800017;,
+    1.000000;-0.849970;,
+    0.698864;-1.000000;,
+    0.600638;-1.000000;,
+    1.000000;-0.900030;,
+    0.801136;-1.000000;,
+    0.899362;-1.000000;,
+    0.000000;-1.000000;;
+   }
+
+   MeshMaterialList {
+    1;
+    400;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    231;
+    200;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    182,
+    183,
+    184,
+    185,
+    186,
+    187,
+    188,
+    189,
+    190,
+    191,
+    192,
+    193,
+    194,
+    195,
+    196,
+    197,
+    198,
+    199,
+    0,
+    25,
+    10,
+    6,
+    0,
+    22,
+    2,
+    78,
+    65,
+    62,
+    75,
+    1,
+    128,
+    115,
+    112,
+    125,
+    3,
+    110,
+    7,
+    175,
+    11,
+    14,
+    18,
+    163,
+    160,
+    37,
+    40,
+    172,
+    43,
+    46,
+    0;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/blob.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/blob.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/blob.x	(revision 1481)
@@ -0,0 +1,4723 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.094108,0.000000,-0.995562,0.000000,-0.362260,0.931448,-0.034244,0.000000,0.927314,0.363875,0.087657,0.000000,6.717309,2.635849,0.634973,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pSphere1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pSphereShape1 {
+   806;
+   0.096852;-0.772374;-0.048480;,
+   0.076151;-0.784363;-0.089864;,
+   0.053225;-0.814665;-0.120902;,
+   0.024939;-0.852224;-0.139645;,
+   -0.000652;-0.915067;-0.144833;,
+   -0.046018;-0.942497;-0.141630;,
+   -0.090452;-0.972369;-0.124497;,
+   -0.125940;-0.983093;-0.091501;,
+   -0.148778;-0.987688;-0.048341;,
+   -0.156435;-0.987688;-0.000000;,
+   -0.153748;-0.943601;0.043772;,
+   -0.134637;-0.915428;0.084411;,
+   -0.105831;-0.889582;0.116500;,
+   -0.055333;-0.887442;0.135117;,
+   -0.000000;-0.882753;0.138981;,
+   0.041806;-0.860541;0.128666;,
+   0.077648;-0.841392;0.106873;,
+   0.104296;-0.822243;0.075776;,
+   0.111853;-0.796698;0.038327;,
+   0.108040;-0.775885;-0.003912;,
+   0.200901;-0.667290;-0.098709;,
+   0.162249;-0.686598;-0.182441;,
+   0.110111;-0.736226;-0.250366;,
+   0.056569;-0.820956;-0.287361;,
+   -0.004586;-0.927550;-0.306602;,
+   -0.095492;-0.951057;-0.293893;,
+   -0.181475;-0.949558;-0.249625;,
+   -0.243280;-0.922896;-0.175943;,
+   -0.285430;-0.923761;-0.092541;,
+   -0.293903;-0.922033;0.006632;,
+   -0.260096;-0.847230;0.087472;,
+   -0.226923;-0.805640;0.153724;,
+   -0.183612;-0.787744;0.215438;,
+   -0.125652;-0.790994;0.264073;,
+   -0.032506;-0.802723;0.282406;,
+   0.080471;-0.837298;0.260959;,
+   0.153361;-0.806670;0.211084;,
+   0.203936;-0.780151;0.148168;,
+   0.219686;-0.720620;0.075735;,
+   0.219432;-0.680955;-0.008381;,
+   0.323615;-0.599639;-0.144821;,
+   0.266629;-0.618287;-0.268842;,
+   0.191901;-0.686964;-0.356757;,
+   0.111184;-0.783396;-0.403865;,
+   -0.000831;-0.872724;-0.445469;,
+   -0.140291;-0.891007;-0.431771;,
+   -0.245217;-0.820001;-0.337512;,
+   -0.319012;-0.775881;-0.231776;,
+   -0.380118;-0.786222;-0.123508;,
+   -0.419197;-0.831068;0.005806;,
+   -0.365676;-0.781257;0.141071;,
+   -0.300222;-0.731072;0.218124;,
+   -0.219233;-0.714748;0.294781;,
+   -0.133652;-0.730353;0.365455;,
+   -0.025954;-0.765469;0.415603;,
+   0.123903;-0.810483;0.397762;,
+   0.233456;-0.781396;0.321324;,
+   0.307738;-0.748995;0.223585;,
+   0.340348;-0.680499;0.114273;,
+   0.346064;-0.623294;-0.010766;,
+   0.449387;-0.564770;-0.181398;,
+   0.377089;-0.586614;-0.327168;,
+   0.281116;-0.654393;-0.425835;,
+   0.161789;-0.727293;-0.507523;,
+   0.000000;-0.809017;-0.587785;,
+   -0.181636;-0.809017;-0.559017;,
+   -0.309086;-0.717072;-0.421706;,
+   -0.423093;-0.654742;-0.282469;,
+   -0.517945;-0.649299;-0.161289;,
+   -0.555276;-0.726532;-0.010624;,
+   -0.498726;-0.718597;0.179163;,
+   -0.393222;-0.670828;0.285693;,
+   -0.280822;-0.659572;0.386519;,
+   -0.153166;-0.675407;0.467176;,
+   -0.007817;-0.721890;0.534374;,
+   0.177084;-0.789008;0.545007;,
+   0.318433;-0.746488;0.438286;,
+   0.420409;-0.716474;0.305445;,
+   0.476206;-0.677004;0.155836;,
+   0.479170;-0.595465;-0.010579;,
+   0.579665;-0.559449;-0.206384;,
+   0.483834;-0.573209;-0.369186;,
+   0.353652;-0.599090;-0.492965;,
+   0.205714;-0.666155;-0.633121;,
+   0.000000;-0.707107;-0.707107;,
+   -0.218508;-0.707107;-0.672499;,
+   -0.397448;-0.609318;-0.516070;,
+   -0.571479;-0.547036;-0.364057;,
+   -0.713616;-0.678522;-0.236422;,
+   -0.711403;-0.689889;-0.017336;,
+   -0.625489;-0.650441;0.206868;,
+   -0.491670;-0.608822;0.357219;,
+   -0.351378;-0.598994;0.483630;,
+   -0.188313;-0.610460;0.579567;,
+   -0.000851;-0.655867;0.657340;,
+   0.218508;-0.707107;0.672499;,
+   0.403296;-0.686358;0.555090;,
+   0.536332;-0.663425;0.389668;,
+   0.618420;-0.650866;0.200937;,
+   0.627291;-0.595399;-0.005158;,
+   0.705235;-0.528167;-0.232703;,
+   0.570031;-0.509074;-0.416516;,
+   0.422554;-0.522930;-0.581595;,
+   0.245326;-0.576900;-0.755036;,
+   0.000000;-0.587785;-0.809017;,
+   -0.250000;-0.587785;-0.769421;,
+   -0.506406;-0.565029;-0.657732;,
+   -0.738682;-0.649151;-0.531915;,
+   -0.822213;-0.613644;-0.276545;,
+   -0.822119;-0.593123;-0.012360;,
+   -0.740368;-0.564202;0.239654;,
+   -0.580640;-0.521183;0.422768;,
+   -0.415316;-0.510841;0.571634;,
+   -0.224535;-0.525776;0.688833;,
+   0.000000;-0.566923;0.780026;,
+   0.250000;-0.587785;0.769421;,
+   0.475528;-0.587785;0.654509;,
+   0.643291;-0.577808;0.467378;,
+   0.752038;-0.574633;0.244352;,
+   0.801554;-0.582230;-0.000031;,
+   0.802677;-0.429866;-0.260987;,
+   0.649069;-0.409181;-0.471576;,
+   0.484612;-0.420383;-0.667012;,
+   0.275336;-0.453991;-0.847398;,
+   0.000000;-0.453991;-0.891007;,
+   -0.275336;-0.453991;-0.847398;,
+   -0.596505;-0.554613;-0.881935;,
+   -0.834642;-0.530347;-0.612013;,
+   -0.943002;-0.508008;-0.308316;,
+   -0.918638;-0.466236;-0.009209;,
+   -0.832882;-0.445371;0.269510;,
+   -0.657709;-0.408884;0.484443;,
+   -0.483004;-0.399960;0.664820;,
+   -0.257819;-0.409678;0.776513;,
+   0.000000;-0.443838;0.870907;,
+   0.275336;-0.453991;0.847398;,
+   0.523721;-0.453991;0.720840;,
+   0.720840;-0.453991;0.523721;,
+   0.847398;-0.453991;0.275336;,
+   0.891007;-0.453991;0.000000;,
+   0.874286;-0.298775;-0.284073;,
+   0.711425;-0.285914;-0.516881;,
+   0.536863;-0.296870;-0.738929;,
+   0.293893;-0.309017;-0.904509;,
+   0.000000;-0.309017;-0.951057;,
+   -0.304332;-0.323469;-0.952524;,
+   -0.632164;-0.357713;-0.920974;,
+   -0.919627;-0.381616;-0.687414;,
+   -1.079466;-0.383085;-0.342799;,
+   -1.012647;-0.328624;-0.002930;,
+   -0.899252;-0.306596;0.291636;,
+   -0.705889;-0.270789;0.529041;,
+   -0.597972;-0.337334;0.822888;,
+   -0.283885;-0.271526;0.828420;,
+   -0.000130;-0.304512;0.937827;,
+   0.293893;-0.309017;0.904509;,
+   0.559017;-0.309017;0.769421;,
+   0.769421;-0.309017;0.559017;,
+   0.904509;-0.309017;0.293893;,
+   0.951057;-0.309017;0.000000;,
+   0.911626;-0.151854;-0.296205;,
+   0.751894;-0.147273;-0.546283;,
+   0.562063;-0.151492;-0.773614;,
+   0.305213;-0.156434;-0.939348;,
+   0.000000;-0.156434;-0.987689;,
+   -0.310411;-0.157562;-0.969339;,
+   -0.638490;-0.166959;-0.924136;,
+   -0.973890;-0.199466;-0.746141;,
+   -1.218017;-0.225839;-0.378972;,
+   -1.087703;-0.174183;0.005267;,
+   -0.941355;-0.156766;0.305865;,
+   -0.781999;-0.137941;0.583591;,
+   -0.676894;-0.233538;0.930617;,
+   -0.310271;-0.120120;0.883290;,
+   -0.001460;-0.151560;0.970570;,
+   0.305213;-0.156434;0.939348;,
+   0.580549;-0.156434;0.799057;,
+   0.799057;-0.156434;0.580549;,
+   0.939348;-0.156434;0.305212;,
+   0.987688;-0.156434;0.000000;,
+   0.951057;0.000000;-0.309017;,
+   0.809017;0.000000;-0.587786;,
+   0.587785;0.000000;-0.809017;,
+   0.309017;0.000000;-0.951057;,
+   0.000000;0.000000;-1.000000;,
+   -0.309017;0.000000;-0.951057;,
+   -0.624421;0.010289;-0.895396;,
+   -0.999670;0.012936;-0.792055;,
+   -1.342725;0.000723;-0.410040;,
+   -1.182216;-0.011723;0.035710;,
+   -0.962935;0.002713;0.313019;,
+   -0.948986;-0.042621;0.670552;,
+   -0.728249;-0.068069;1.005351;,
+   -0.345846;-0.009627;1.091118;,
+   -0.008725;0.006144;0.961059;,
+   0.309017;0.000000;0.951057;,
+   0.587785;0.000000;0.809017;,
+   0.809017;0.000000;0.587785;,
+   0.951057;0.000000;0.309017;,
+   1.000000;0.000000;0.000000;,
+   0.939348;0.156434;-0.305213;,
+   0.799057;0.156434;-0.580549;,
+   0.580549;0.156434;-0.799057;,
+   0.305213;0.156434;-0.939348;,
+   0.000000;0.156434;-0.987689;,
+   -0.305213;0.156434;-0.939348;,
+   -0.590906;0.165880;-0.826071;,
+   -0.949946;0.237680;-0.753045;,
+   -1.321332;0.313318;-0.401448;,
+   -1.152343;0.176696;0.017488;,
+   -1.026335;0.160872;0.327272;,
+   -1.051221;0.121561;0.743882;,
+   -0.743914;0.153264;1.053918;,
+   -0.338067;0.184178;1.170953;,
+   0.000000;0.156434;0.987688;,
+   0.305213;0.156434;0.939348;,
+   0.580549;0.156434;0.799057;,
+   0.799057;0.156434;0.580549;,
+   0.939348;0.156434;0.305212;,
+   0.987688;0.156434;0.000000;,
+   0.944218;0.330584;-0.315957;,
+   0.787794;0.326984;-0.619757;,
+   0.559017;0.309017;-0.769421;,
+   0.293893;0.309017;-0.904509;,
+   0.000000;0.309017;-0.951057;,
+   -0.293893;0.309017;-0.904509;,
+   -0.559017;0.309017;-0.769421;,
+   -0.839373;0.390377;-0.641976;,
+   -1.099404;0.487272;-0.344839;,
+   -1.015842;0.335652;-0.004587;,
+   -1.165886;0.344716;0.326915;,
+   -1.103637;0.361139;0.808920;,
+   -0.717950;0.386516;1.063790;,
+   -0.316220;0.382286;1.181760;,
+   0.000000;0.309017;0.951057;,
+   0.293893;0.309017;0.904509;,
+   0.559017;0.309017;0.769421;,
+   0.769421;0.309017;0.559017;,
+   0.904509;0.309017;0.293893;,
+   0.951057;0.309017;0.000000;,
+   0.887911;0.475186;-0.297272;,
+   0.739469;0.471699;-0.584965;,
+   0.523721;0.453991;-0.720840;,
+   0.275336;0.453991;-0.847398;,
+   -0.000072;0.455402;-0.895039;,
+   -0.275336;0.453991;-0.847398;,
+   -0.523721;0.453991;-0.720840;,
+   -0.727666;0.464043;-0.530992;,
+   -0.886876;0.501477;-0.287671;,
+   -0.911779;0.464530;-0.000259;,
+   -1.194680;0.624376;0.291186;,
+   -1.049494;0.677251;0.796915;,
+   -0.645069;0.616585;0.993725;,
+   -0.295260;0.572095;1.069047;,
+   0.011660;0.501668;0.991228;,
+   0.275336;0.453991;0.847398;,
+   0.523721;0.453991;0.720840;,
+   0.720840;0.453991;0.523721;,
+   0.847398;0.453991;0.275336;,
+   0.891007;0.453991;0.000000;,
+   0.769421;0.587785;-0.250000;,
+   0.654509;0.587785;-0.475529;,
+   0.475528;0.587785;-0.654509;,
+   0.266506;0.618013;-0.817747;,
+   -0.004633;0.606280;-0.872217;,
+   -0.258278;0.594213;-0.790626;,
+   -0.481059;0.590693;-0.661678;,
+   -0.654509;0.587785;-0.475528;,
+   -0.769421;0.587785;-0.250000;,
+   -0.823143;0.598367;-0.000480;,
+   -0.950896;0.773295;0.254423;,
+   -0.848565;0.895646;0.643337;,
+   -0.540413;0.790975;0.839478;,
+   -0.257790;0.721602;0.898045;,
+   0.017834;0.662728;0.883149;,
+   0.250000;0.587785;0.769421;,
+   0.475528;0.587785;0.654509;,
+   0.654509;0.587785;0.475528;,
+   0.769421;0.587785;0.250000;,
+   0.809017;0.587785;0.000000;,
+   0.672499;0.707107;-0.218508;,
+   0.572062;0.707107;-0.415627;,
+   0.415627;0.707107;-0.572062;,
+   0.282164;0.811697;-0.813636;,
+   -0.013210;0.780767;-0.867572;,
+   -0.267888;0.754941;-0.800108;,
+   -0.496761;0.746066;-0.670102;,
+   -0.663822;0.743677;-0.464825;,
+   -0.695577;0.719287;-0.221846;,
+   -0.707107;0.707107;-0.000000;,
+   -0.722926;0.771710;0.229417;,
+   -0.639667;0.884290;0.470052;,
+   -0.437580;0.845690;0.645204;,
+   -0.219591;0.776863;0.717028;,
+   0.000350;0.709182;0.708499;,
+   0.218508;0.707107;0.672499;,
+   0.415627;0.707107;0.572061;,
+   0.572061;0.707107;0.415627;,
+   0.672499;0.707107;0.218508;,
+   0.707107;0.707107;0.000000;,
+   0.559017;0.809017;-0.181636;,
+   0.475528;0.809017;-0.345492;,
+   0.359365;0.841076;-0.494623;,
+   0.289725;1.003513;-0.748532;,
+   -0.007055;0.984268;-0.795401;,
+   -0.255730;0.969841;-0.775959;,
+   -0.517983;0.959981;-0.674020;,
+   -0.703719;0.925476;-0.435357;,
+   -0.688270;0.878708;-0.174604;,
+   -0.597181;0.817710;0.002122;,
+   -0.565709;0.819533;0.183630;,
+   -0.487887;0.835116;0.355068;,
+   -0.350979;0.824942;0.484319;,
+   -0.181636;0.809017;0.559017;,
+   0.000000;0.809017;0.587785;,
+   0.181636;0.809017;0.559017;,
+   0.345492;0.809017;0.475528;,
+   0.475528;0.809017;0.345492;,
+   0.559017;0.809017;0.181636;,
+   0.587785;0.809017;0.000000;,
+   0.431771;0.891007;-0.140291;,
+   0.382252;0.926696;-0.277722;,
+   0.350739;1.047850;-0.439239;,
+   0.228296;1.155085;-0.591854;,
+   0.011254;1.165849;-0.634673;,
+   -0.196928;1.241637;-0.645287;,
+   -0.420363;1.260062;-0.559648;,
+   -0.635131;1.182476;-0.332592;,
+   -0.618189;1.045040;-0.087904;,
+   -0.507861;0.945705;0.033050;,
+   -0.431771;0.891007;0.140291;,
+   -0.367286;0.891007;0.266849;,
+   -0.266849;0.891007;0.367286;,
+   -0.140291;0.891007;0.431771;,
+   0.000000;0.891007;0.453991;,
+   0.140291;0.891007;0.431771;,
+   0.266849;0.891007;0.367286;,
+   0.367286;0.891007;0.266849;,
+   0.431771;0.891007;0.140291;,
+   0.453991;0.891007;0.000000;,
+   0.350005;1.065951;-0.102674;,
+   0.340691;1.135862;-0.205626;,
+   0.284887;1.229061;-0.304797;,
+   0.149063;1.256425;-0.379915;,
+   0.022658;1.272123;-0.410026;,
+   -0.115015;1.350450;-0.419525;,
+   -0.258332;1.363966;-0.346760;,
+   -0.381036;1.286092;-0.176433;,
+   -0.428383;1.181713;-0.019302;,
+   -0.382597;1.069271;0.070972;,
+   -0.313158;0.987038;0.120117;,
+   -0.250193;0.951548;0.181882;,
+   -0.181636;0.951057;0.250000;,
+   -0.095492;0.951056;0.293893;,
+   0.000000;0.951056;0.309017;,
+   0.095492;0.951056;0.293893;,
+   0.181636;0.951057;0.250000;,
+   0.260245;0.985266;0.196068;,
+   0.337607;1.045666;0.128429;,
+   0.367643;1.064003;0.011503;,
+   0.194197;1.199672;-0.018645;,
+   0.170414;1.224795;-0.071976;,
+   0.126681;1.251627;-0.120888;,
+   0.075097;1.266778;-0.152400;,
+   0.021464;1.278977;-0.162125;,
+   -0.040620;1.283879;-0.149594;,
+   -0.103836;1.276874;-0.113260;,
+   -0.159194;1.254298;-0.052829;,
+   -0.194572;1.206183;0.019884;,
+   -0.197347;1.145772;0.073488;,
+   -0.178588;1.103067;0.109496;,
+   -0.144559;1.067880;0.131983;,
+   -0.098948;1.043482;0.152916;,
+   -0.050815;1.022465;0.165589;,
+   -0.002325;1.021381;0.171477;,
+   0.048554;1.036186;0.170141;,
+   0.097430;1.057843;0.159047;,
+   0.138549;1.087397;0.135981;,
+   0.171330;1.122820;0.096720;,
+   0.192533;1.164353;0.041170;,
+   -0.000000;-0.891294;-0.000000;,
+   0.000671;1.176610;0.054894;,
+   -0.260728;1.857828;-0.836961;,
+   -0.375768;1.871071;-0.793575;,
+   -0.294316;1.929204;-0.665899;,
+   -0.200124;1.917971;-0.707886;,
+   -0.114378;1.071031;-0.712431;,
+   -0.131392;0.977054;-0.785680;,
+   -0.228159;1.075450;-0.693916;,
+   -0.091133;1.161297;-0.625642;,
+   0.002100;1.075059;-0.715037;,
+   -0.351808;1.077534;-0.657986;,
+   -0.386856;0.964911;-0.724989;,
+   -0.466435;1.079211;-0.595021;,
+   -0.325200;1.270486;-0.650875;,
+   -0.570012;1.069381;-0.498772;,
+   -0.610851;0.942728;-0.554688;,
+   -0.669425;1.053976;-0.383975;,
+   -0.516351;1.176099;-0.433454;,
+   -0.070684;1.224914;-0.526176;,
+   -0.136359;1.338989;-0.560083;,
+   -0.046653;1.268476;-0.405746;,
+   0.016956;1.218986;-0.522350;,
+   -0.301371;2.074235;-0.838185;,
+   -0.336590;1.934059;-0.873546;,
+   -0.359262;1.982237;-0.758080;,
+   -0.240702;2.013895;-0.700240;,
+   -0.218030;1.965716;-0.815706;,
+   -0.434320;1.242593;-0.353148;,
+   -0.508083;1.234284;-0.254513;,
+   -0.325798;1.281300;-0.257161;,
+   -0.368500;1.359929;-0.459199;,
+   -0.028805;1.282500;-0.291714;,
+   -0.078007;1.288458;-0.273591;,
+   -0.009578;1.281428;-0.155859;,
+   0.022061;1.275550;-0.286076;,
+   -0.132822;1.293083;-0.257989;,
+   -0.174565;1.404210;-0.377570;,
+   -0.181123;1.291618;-0.217578;,
+   -0.072228;1.280376;-0.131427;,
+   -0.236654;1.284644;-0.177685;,
+   -0.270115;1.270195;-0.114631;,
+   -0.131515;1.265586;-0.083044;,
+   -0.332330;1.611068;-0.766919;,
+   -0.398691;1.633766;-0.708434;,
+   -0.234005;1.614982;-0.767635;,
+   -0.362559;1.675307;-0.612964;,
+   -0.279349;1.711340;-0.536702;,
+   -0.204479;1.717517;-0.535844;,
+   -0.161572;1.697082;-0.592755;,
+   -0.174250;1.653279;-0.689799;,
+   1.334559;0.557999;-0.588984;,
+   1.288634;0.577822;-0.899299;,
+   1.251398;0.686552;-0.874396;,
+   1.304252;0.638539;-0.575884;,
+   0.604318;0.412193;-1.389627;,
+   0.567882;0.520923;-1.363155;,
+   1.023470;0.730111;-1.595289;,
+   1.059906;0.621381;-1.621761;,
+   0.058043;0.393579;-1.769262;,
+   0.021607;0.502309;-1.742790;,
+   0.477195;0.711497;-1.974923;,
+   0.513631;0.602767;-2.001396;,
+   -0.596858;0.189129;-1.696639;,
+   -0.633294;0.297859;-1.670167;,
+   -0.177706;0.507047;-1.902301;,
+   -0.141270;0.398317;-1.928773;,
+   -1.138304;0.479568;-1.764408;,
+   -1.165294;0.560109;-1.744799;,
+   -0.827821;0.715062;-1.916750;,
+   -0.800831;0.634522;-1.936359;,
+   0.853285;0.231776;-0.434770;,
+   0.869202;0.156434;-0.442881;,
+   0.774733;0.232251;-0.562877;,
+   0.916976;0.324571;-0.467223;,
+   0.910754;0.232251;-0.295922;,
+   0.677170;0.231776;-0.677170;,
+   0.689803;0.156434;-0.689803;,
+   0.569783;0.232726;-0.784239;,
+   0.662325;0.307446;-0.662325;,
+   0.945873;0.231776;-0.149812;,
+   0.963518;0.156434;-0.152606;,
+   0.925137;0.307446;-0.146527;,
+   0.969372;0.232726;0.000000;,
+   1.418550;0.658891;-0.722788;,
+   1.362018;0.570808;-0.693983;,
+   1.346052;0.666765;-0.925590;,
+   1.322383;0.679539;-0.673788;,
+   1.391259;0.625173;-0.587603;,
+   0.643692;0.379974;-0.643692;,
+   0.541369;0.381504;-0.745131;,
+   0.620693;0.451703;-0.620693;,
+   0.696749;0.387848;-0.673682;,
+   0.899111;0.379974;-0.142405;,
+   0.957674;0.415986;-0.287751;,
+   0.866985;0.451703;-0.137317;,
+   0.921032;0.381504;0.000000;,
+   0.749136;0.518859;-0.381704;,
+   0.851305;0.505072;-0.433761;,
+   0.679751;0.519873;-0.493868;,
+   0.711965;0.587785;-0.362764;,
+   0.799095;0.519873;-0.259642;,
+   0.594518;0.518859;-0.594518;,
+   0.499625;0.520888;-0.687674;,
+   0.565019;0.587785;-0.565019;,
+   0.830424;0.518859;-0.131526;,
+   0.789219;0.587785;-0.125000;,
+   0.850012;0.520888;0.000000;,
+   1.140690;0.448475;-0.581211;,
+   1.067011;0.455202;-0.787365;,
+   1.184209;0.466597;-0.479470;,
+   -1.158511;0.697120;-1.862175;,
+   -1.287615;0.536386;-1.733960;,
+   -1.078039;0.695345;-1.836791;,
+   -0.832027;0.745573;-1.966094;,
+   -1.041603;0.586615;-1.863263;,
+   1.087844;0.593449;-0.554284;,
+   1.142442;0.575327;-0.463460;,
+   1.017363;0.600176;-0.754161;,
+   1.179679;0.520962;-0.439370;,
+   0.653043;0.408412;-0.968299;,
+   0.710756;0.497641;-0.993752;,
+   0.510169;0.431694;-1.337702;,
+   0.747193;0.388911;-1.020224;,
+   0.932478;0.620357;-1.105407;,
+   1.166345;0.706829;-1.225886;,
+   0.789604;0.643639;-1.474810;,
+   1.260494;0.687329;-1.277811;,
+   1.202781;0.598099;-1.252358;,
+   1.117620;0.710611;-1.647214;,
+   0.981059;0.475383;-1.140703;,
+   0.838185;0.498665;-1.510106;,
+   0.265721;0.447724;-1.592050;,
+   0.323434;0.536954;-1.617503;,
+   -0.036106;0.413080;-1.717337;,
+   0.359870;0.428224;-1.643976;,
+   0.545155;0.659670;-1.729158;,
+   0.779022;0.746142;-1.849637;,
+   0.243329;0.625025;-1.854444;,
+   0.873172;0.726641;-1.901562;,
+   0.815458;0.637412;-1.876109;,
+   0.571345;0.691996;-2.026849;,
+   0.593737;0.514696;-1.764455;,
+   0.291910;0.480051;-1.889741;,
+   -0.351116;0.284335;-1.699554;,
+   -0.293403;0.373565;-1.725007;,
+   -0.691007;0.208630;-1.644714;,
+   -0.256967;0.264835;-1.751480;,
+   -0.071681;0.496280;-1.836662;,
+   0.162185;0.582752;-1.957141;,
+   -0.411573;0.420575;-1.781822;,
+   0.256335;0.563252;-2.009066;,
+   0.198621;0.474022;-1.983613;,
+   -0.083556;0.487546;-1.954226;,
+   -0.023100;0.351307;-1.871959;,
+   -0.362991;0.275601;-1.817118;,
+   -1.067477;0.333101;-1.658828;,
+   -1.009764;0.422331;-1.684281;,
+   -0.973328;0.313601;-1.710753;,
+   -0.788043;0.545046;-1.795936;,
+   -0.554176;0.631518;-1.916415;,
+   -0.460026;0.612018;-1.968340;,
+   -0.517740;0.522788;-1.942887;,
+   -0.739461;0.400073;-1.831232;,
+   -0.000652;-0.915067;-0.144833;,
+   -0.004586;-0.927550;-0.306602;,
+   0.104296;-0.822243;0.075776;,
+   0.203936;-0.780151;0.148168;,
+   0.200901;-0.667290;-0.098709;,
+   0.162249;-0.686598;-0.182441;,
+   0.266629;-0.618287;-0.268842;,
+   -0.000831;-0.872724;-0.445469;,
+   0.219686;-0.720620;0.075735;,
+   0.219432;-0.680955;-0.008381;,
+   0.191901;-0.686964;-0.356757;,
+   0.281116;-0.654393;-0.425835;,
+   0.000000;-0.809017;-0.587785;,
+   0.353652;-0.599090;-0.492965;,
+   0.161789;-0.727293;-0.507523;,
+   0.205714;-0.666155;-0.633121;,
+   0.422554;-0.522930;-0.581595;,
+   0.245326;-0.576900;-0.755036;,
+   0.705235;-0.528167;-0.232703;,
+   0.570031;-0.509074;-0.416516;,
+   0.275336;-0.453991;-0.847398;,
+   0.475528;-0.587785;0.654509;,
+   0.643291;-0.577808;0.467378;,
+   0.523721;-0.453991;0.720840;,
+   0.752038;-0.574633;0.244352;,
+   0.801554;-0.582230;-0.000031;,
+   0.275336;-0.453991;-0.847398;,
+   0.000000;-0.453991;-0.891007;,
+   0.293893;-0.309017;-0.904509;,
+   0.000000;-0.309017;-0.951057;,
+   -0.275336;-0.453991;-0.847398;,
+   -0.596505;-0.554613;-0.881935;,
+   -0.304332;-0.323469;-0.952524;,
+   -0.834642;-0.530347;-0.612013;,
+   -0.919627;-0.381616;-0.687414;,
+   -0.832882;-0.445371;0.269510;,
+   -0.657709;-0.408884;0.484443;,
+   -0.899252;-0.306596;0.291636;,
+   -0.705889;-0.270789;0.529041;,
+   -0.257819;-0.409678;0.776513;,
+   0.000000;-0.443838;0.870907;,
+   -0.283885;-0.271526;0.828420;,
+   0.275336;-0.453991;0.847398;,
+   0.523721;-0.453991;0.720840;,
+   0.559017;-0.309017;0.769421;,
+   0.305213;-0.156434;-0.939348;,
+   -0.973890;-0.199466;-0.746141;,
+   -1.012647;-0.328624;-0.002930;,
+   -1.087703;-0.174183;0.005267;,
+   -0.781999;-0.137941;0.583591;,
+   -0.597972;-0.337334;0.822888;,
+   -0.676894;-0.233538;0.930617;,
+   0.580549;-0.156434;0.799057;,
+   0.562063;-0.151492;-0.773614;,
+   0.587785;0.000000;-0.809017;,
+   -1.218017;-0.225839;-0.378972;,
+   -1.218017;-0.225839;-0.378972;,
+   -1.342725;0.000723;-0.410040;,
+   -0.941355;-0.156766;0.305865;,
+   -0.962935;0.002713;0.313019;,
+   -0.310271;-0.120120;0.883290;,
+   -0.001460;-0.151560;0.970570;,
+   -0.008725;0.006144;0.961059;,
+   0.587785;0.000000;0.809017;,
+   0.580549;0.156434;-0.799057;,
+   -1.321332;0.313318;-0.401448;,
+   -0.948986;-0.042621;0.670552;,
+   -0.948986;-0.042621;0.670552;,
+   -0.728249;-0.068069;1.005351;,
+   -1.051221;0.121561;0.743882;,
+   -0.345846;-0.009627;1.091118;,
+   0.580549;0.156434;0.799057;,
+   -1.099404;0.487272;-0.344839;,
+   -1.103637;0.361139;0.808920;,
+   0.559017;0.309017;0.769421;,
+   -0.839373;0.390377;-0.641976;,
+   -1.099404;0.487272;-0.344839;,
+   -0.727666;0.464043;-0.530992;,
+   -1.015842;0.335652;-0.004587;,
+   -0.911779;0.464530;-0.000259;,
+   -1.049494;0.677251;0.796915;,
+   0.523721;0.453991;0.720840;,
+   0.523721;0.453991;-0.720840;,
+   0.275336;0.453991;-0.847398;,
+   0.266506;0.618013;-0.817747;,
+   -0.727666;0.464043;-0.530992;,
+   -0.886876;0.501477;-0.287671;,
+   -0.654509;0.587785;-0.475528;,
+   -0.848565;0.895646;0.643337;,
+   0.475528;0.587785;0.654509;,
+   0.282164;0.811697;-0.813636;,
+   -0.663822;0.743677;-0.464825;,
+   -0.823143;0.598367;-0.000480;,
+   -0.950896;0.773295;0.254423;,
+   -0.707107;0.707107;-0.000000;,
+   -0.848565;0.895646;0.643337;,
+   -0.540413;0.790975;0.839478;,
+   -0.257790;0.721602;0.898045;,
+   0.017834;0.662728;0.883149;,
+   0.250000;0.587785;0.769421;,
+   0.218508;0.707107;0.672499;,
+   0.415627;0.707107;0.572061;,
+   0.289725;1.003513;-0.748532;,
+   -0.703719;0.925476;-0.435357;,
+   -0.722926;0.771710;0.229417;,
+   -0.565709;0.819533;0.183630;,
+   0.000350;0.709182;0.708499;,
+   0.000000;0.809017;0.587785;,
+   0.415627;0.707107;0.572061;,
+   0.572061;0.707107;0.415627;,
+   0.345492;0.809017;0.475528;,
+   0.475528;0.809017;0.345492;,
+   0.228296;1.155085;-0.591854;,
+   -0.431771;0.891007;0.140291;,
+   -0.181636;0.809017;0.559017;,
+   -0.140291;0.891007;0.431771;,
+   0.181636;0.809017;0.559017;,
+   0.140291;0.891007;0.431771;,
+   0.559017;0.809017;0.181636;,
+   0.431771;0.891007;0.140291;,
+   0.228296;1.155085;-0.591854;,
+   0.011254;1.165849;-0.634673;,
+   0.149063;1.256425;-0.379915;,
+   -0.507861;0.945705;0.033050;,
+   -0.431771;0.891007;0.140291;,
+   -0.382597;1.069271;0.070972;,
+   -0.313158;0.987038;0.120117;,
+   0.000000;0.891007;0.453991;,
+   0.367286;0.891007;0.266849;,
+   0.260245;0.985266;0.196068;,
+   0.284887;1.229061;-0.304797;,
+   0.126681;1.251627;-0.120888;,
+   -0.381036;1.286092;-0.176433;,
+   -0.428383;1.181713;-0.019302;,
+   -0.382597;1.069271;0.070972;,
+   -0.197347;1.145772;0.073488;,
+   -0.178588;1.103067;0.109496;,
+   0.337607;1.045666;0.128429;,
+   0.367643;1.064003;0.011503;,
+   0.192533;1.164353;0.041170;,
+   -0.046018;-0.942497;-0.141630;,
+   -0.090452;-0.972369;-0.124497;,
+   -0.000000;-0.891294;-0.000000;,
+   0.077648;-0.841392;0.106873;,
+   0.194197;1.199672;-0.018645;,
+   0.170414;1.224795;-0.071976;,
+   -0.420363;1.260062;-0.559648;,
+   -0.368500;1.359929;-0.459199;,
+   -0.258332;1.363966;-0.346760;,
+   -0.174565;1.404210;-0.377570;,
+   -0.115015;1.350450;-0.419525;,
+   -0.091133;1.161297;-0.625642;,
+   -0.420363;1.260062;-0.559648;,
+   -0.669425;1.053976;-0.383975;,
+   -0.635131;1.182476;-0.332592;,
+   -0.516351;1.176099;-0.433454;,
+   -0.516351;1.176099;-0.433454;,
+   -0.420363;1.260062;-0.559648;,
+   -0.466435;1.079211;-0.595021;,
+   -0.570012;1.069381;-0.498772;,
+   -0.136359;1.338989;-0.560083;,
+   -0.070684;1.224914;-0.526176;,
+   -0.136359;1.338989;-0.560083;,
+   -0.336590;1.934059;-0.873546;,
+   -0.301371;2.074235;-0.838185;,
+   -0.359262;1.982237;-0.758080;,
+   -0.301371;2.074235;-0.838185;,
+   -0.240702;2.013895;-0.700240;,
+   -0.218030;1.965716;-0.815706;,
+   -0.301371;2.074235;-0.838185;,
+   -0.635131;1.182476;-0.332592;,
+   -0.508083;1.234284;-0.254513;,
+   -0.398691;1.633766;-0.708434;,
+   -0.375768;1.871071;-0.793575;,
+   -0.258332;1.363966;-0.346760;,
+   -0.279349;1.711340;-0.536702;,
+   -0.294316;1.929204;-0.665899;,
+   -0.115015;1.350450;-0.419525;,
+   -0.161572;1.697082;-0.592755;,
+   -0.204479;1.717517;-0.535844;,
+   -0.174250;1.653279;-0.689799;,
+   0.739469;0.471699;-0.584965;,
+   0.851305;0.505072;-0.433761;,
+   0.887911;0.475186;-0.297272;,
+   0.787794;0.326984;-0.619757;,
+   0.696749;0.387848;-0.673682;,
+   0.787794;0.326984;-0.619757;,
+   0.916976;0.324571;-0.467223;,
+   0.944218;0.330584;-0.315957;,
+   0.569783;0.232726;-0.784239;,
+   0.559017;0.309017;-0.769421;,
+   0.662325;0.307446;-0.662325;,
+   1.288634;0.577822;-0.899299;,
+   0.541369;0.381504;-0.745131;,
+   0.643692;0.379974;-0.643692;,
+   0.620693;0.451703;-0.620693;,
+   0.739469;0.471699;-0.584965;,
+   0.957674;0.415986;-0.287751;,
+   0.787794;0.326984;-0.619757;,
+   1.362018;0.570808;-0.693983;,
+   1.334559;0.557999;-0.588984;,
+   -1.287615;0.536386;-1.733960;,
+   -1.158511;0.697120;-1.862175;,
+   -1.078039;0.695345;-1.836791;,
+   0.887911;0.475186;-0.297272;,
+   1.142442;0.575327;-0.463460;,
+   1.304252;0.638539;-0.575884;,
+   1.322383;0.679539;-0.673788;,
+   1.251398;0.686552;-0.874396;,
+   0.944218;0.330584;-0.315957;,
+   1.184209;0.466597;-0.479470;,
+   1.334559;0.557999;-0.588984;,
+   1.391259;0.625173;-0.587603;,
+   1.304252;0.638539;-0.575884;,
+   0.739469;0.471699;-0.584965;,
+   0.710756;0.497641;-0.993752;,
+   0.567882;0.520923;-1.363155;,
+   1.166345;0.706829;-1.225886;,
+   1.023470;0.730111;-1.595289;,
+   1.202781;0.598099;-1.252358;,
+   1.059906;0.621381;-1.621761;,
+   0.747193;0.388911;-1.020224;,
+   0.604318;0.412193;-1.389627;,
+   0.323434;0.536954;-1.617503;,
+   0.021607;0.502309;-1.742790;,
+   -0.036106;0.413080;-1.717337;,
+   0.058043;0.393579;-1.769262;,
+   0.779022;0.746142;-1.849637;,
+   0.477195;0.711497;-1.974923;,
+   0.815458;0.637412;-1.876109;,
+   0.513631;0.602767;-2.001396;,
+   0.571345;0.691996;-2.026849;,
+   0.477195;0.711497;-1.974923;,
+   0.359870;0.428224;-1.643976;,
+   0.058043;0.393579;-1.769262;,
+   0.021607;0.502309;-1.742790;,
+   -0.293403;0.373565;-1.725007;,
+   -0.633294;0.297859;-1.670167;,
+   -0.691007;0.208630;-1.644714;,
+   -0.596858;0.189129;-1.696639;,
+   0.162185;0.582752;-1.957141;,
+   -0.177706;0.507047;-1.902301;,
+   0.513631;0.602767;-2.001396;,
+   0.198621;0.474022;-1.983613;,
+   -0.141270;0.398317;-1.928773;,
+   -0.256967;0.264835;-1.751480;,
+   -0.596858;0.189129;-1.696639;,
+   -1.009764;0.422331;-1.684281;,
+   -1.067477;0.333101;-1.658828;,
+   -1.165294;0.560109;-1.744799;,
+   -1.287615;0.536386;-1.733960;,
+   -1.138304;0.479568;-1.764408;,
+   -0.973328;0.313601;-1.710753;,
+   -0.554176;0.631518;-1.916415;,
+   -0.827821;0.715062;-1.916750;,
+   -1.078039;0.695345;-1.836791;,
+   -1.165294;0.560109;-1.744799;,
+   -0.517740;0.522788;-1.942887;,
+   -0.973328;0.313601;-1.710753;,
+   -1.138304;0.479568;-1.764408;,
+   -1.041603;0.586615;-1.863263;,
+   -0.800831;0.634522;-1.936359;;
+   550;
+   4;0,1,21,20;,
+   4;1,2,22,21;,
+   4;2,3,23,22;,
+   4;3,4,24,23;,
+   4;544,5,25,545;,
+   4;5,6,26,25;,
+   4;6,7,27,26;,
+   4;7,8,28,27;,
+   4;8,9,29,28;,
+   4;9,10,30,29;,
+   4;10,11,31,30;,
+   4;11,12,32,31;,
+   4;12,13,33,32;,
+   4;13,14,34,33;,
+   4;14,15,35,34;,
+   4;15,16,36,35;,
+   4;16,17,37,36;,
+   4;546,18,38,547;,
+   4;18,19,39,38;,
+   4;19,0,20,39;,
+   4;548,549,41,40;,
+   4;21,22,42,550;,
+   4;22,23,43,42;,
+   4;23,24,44,43;,
+   4;545,25,45,551;,
+   4;25,26,46,45;,
+   4;26,27,47,46;,
+   4;27,28,48,47;,
+   4;28,29,49,48;,
+   4;29,30,50,49;,
+   4;30,31,51,50;,
+   4;31,32,52,51;,
+   4;32,33,53,52;,
+   4;33,34,54,53;,
+   4;34,35,55,54;,
+   4;35,36,56,55;,
+   4;36,37,57,56;,
+   4;37,552,58,57;,
+   4;552,553,59,58;,
+   4;553,548,40,59;,
+   4;40,41,61,60;,
+   4;41,554,62,61;,
+   4;42,43,63,555;,
+   4;43,44,64,63;,
+   4;551,45,65,556;,
+   4;45,46,66,65;,
+   4;46,47,67,66;,
+   4;47,48,68,67;,
+   4;48,49,69,68;,
+   4;49,50,70,69;,
+   4;50,51,71,70;,
+   4;51,52,72,71;,
+   4;52,53,73,72;,
+   4;53,54,74,73;,
+   4;54,55,75,74;,
+   4;55,56,76,75;,
+   4;56,57,77,76;,
+   4;57,58,78,77;,
+   4;58,59,79,78;,
+   4;59,40,60,79;,
+   4;60,61,81,80;,
+   4;61,62,82,81;,
+   4;555,63,83,557;,
+   4;558,556,84,559;,
+   4;556,65,85,84;,
+   4;65,66,86,85;,
+   4;66,67,87,86;,
+   4;67,68,88,87;,
+   4;68,69,89,88;,
+   4;69,70,90,89;,
+   4;70,71,91,90;,
+   4;71,72,92,91;,
+   4;72,73,93,92;,
+   4;73,74,94,93;,
+   4;74,75,95,94;,
+   4;75,76,96,95;,
+   4;76,77,97,96;,
+   4;77,78,98,97;,
+   4;78,79,99,98;,
+   4;79,60,80,99;,
+   4;80,81,101,100;,
+   4;81,82,102,101;,
+   4;557,83,103,560;,
+   4;559,84,104,561;,
+   4;84,85,105,104;,
+   4;85,86,106,105;,
+   4;86,87,107,106;,
+   4;87,88,108,107;,
+   4;88,89,109,108;,
+   4;89,90,110,109;,
+   4;90,91,111,110;,
+   4;91,92,112,111;,
+   4;92,93,113,112;,
+   4;93,94,114,113;,
+   4;94,95,115,114;,
+   4;95,96,116,115;,
+   4;96,97,117,116;,
+   4;97,98,118,117;,
+   4;98,99,119,118;,
+   4;99,80,100,119;,
+   4;562,563,121,120;,
+   4;563,560,122,121;,
+   4;560,103,123,122;,
+   4;561,104,124,564;,
+   4;104,105,125,124;,
+   4;105,106,126,125;,
+   4;106,107,127,126;,
+   4;107,108,128,127;,
+   4;108,109,129,128;,
+   4;109,110,130,129;,
+   4;110,111,131,130;,
+   4;111,112,132,131;,
+   4;112,113,133,132;,
+   4;113,114,134,133;,
+   4;114,115,135,134;,
+   4;115,116,136,135;,
+   4;565,566,137,567;,
+   4;566,568,138,137;,
+   4;568,569,139,138;,
+   4;569,562,120,139;,
+   4;120,121,141,140;,
+   4;121,122,142,141;,
+   4;122,123,143,142;,
+   4;570,571,144,572;,
+   4;124,125,145,573;,
+   4;574,575,146,576;,
+   4;575,577,147,146;,
+   4;127,128,148,578;,
+   4;128,129,149,148;,
+   4;129,130,150,149;,
+   4;579,580,151,581;,
+   4;131,132,152,582;,
+   4;132,133,153,152;,
+   4;583,584,154,585;,
+   4;584,586,155,154;,
+   4;586,587,156,155;,
+   4;567,137,157,588;,
+   4;137,138,158,157;,
+   4;138,139,159,158;,
+   4;139,120,140,159;,
+   4;140,141,161,160;,
+   4;141,142,162,161;,
+   4;142,143,163,162;,
+   4;572,144,164,589;,
+   4;144,576,165,164;,
+   4;576,146,166,165;,
+   4;146,147,167,166;,
+   4;578,148,168,590;,
+   4;148,149,169,168;,
+   4;591,581,170,592;,
+   4;581,151,171,170;,
+   4;582,152,172,593;,
+   4;594,585,173,595;,
+   4;585,154,174,173;,
+   4;154,155,175,174;,
+   4;155,156,176,175;,
+   4;588,157,177,596;,
+   4;157,158,178,177;,
+   4;158,159,179,178;,
+   4;159,140,160,179;,
+   4;160,161,181,180;,
+   4;161,162,182,181;,
+   4;597,589,183,598;,
+   4;589,164,184,183;,
+   4;164,165,185,184;,
+   4;165,166,186,185;,
+   4;166,167,187,186;,
+   4;167,599,188,187;,
+   4;600,592,189,601;,
+   4;592,170,190,189;,
+   4;602,593,191,603;,
+   4;593,172,192,191;,
+   4;172,604,193,192;,
+   4;604,605,194,193;,
+   4;174,175,195,606;,
+   4;175,176,196,195;,
+   4;596,177,197,607;,
+   4;177,178,198,197;,
+   4;178,179,199,198;,
+   4;179,160,180,199;,
+   5;180,181,201,452,200;,
+   5;181,182,202,457,201;,
+   4;598,183,203,608;,
+   4;183,184,204,203;,
+   4;184,185,205,204;,
+   4;185,186,206,205;,
+   4;186,187,207,206;,
+   4;187,188,208,207;,
+   4;601,189,209,609;,
+   4;189,190,210,209;,
+   4;190,610,211,210;,
+   4;611,612,212,613;,
+   4;612,614,213,212;,
+   4;614,606,214,213;,
+   4;606,195,215,214;,
+   4;195,196,216,215;,
+   4;607,197,217,615;,
+   4;197,198,218,217;,
+   4;198,199,219,218;,
+   5;199,180,200,461,219;,
+   4;455,200,452,451;,
+   4;453,201,457,456;,
+   5;608,203,223,222,458;,
+   4;203,204,224,223;,
+   4;204,205,225,224;,
+   4;205,206,226,225;,
+   4;206,207,227,226;,
+   4;207,208,228,227;,
+   4;609,209,229,616;,
+   4;209,210,230,229;,
+   4;210,211,231,230;,
+   4;613,212,232,617;,
+   4;212,213,233,232;,
+   4;213,214,234,233;,
+   4;214,215,235,234;,
+   4;215,216,236,235;,
+   4;615,217,237,618;,
+   4;217,218,238,237;,
+   5;218,219,463,239,238;,
+   4;463,219,461,460;,
+   4;468,431,465,464;,
+   4;472,221,459,469;,
+   5;222,223,243,242,470;,
+   4;223,224,244,243;,
+   4;224,225,245,244;,
+   4;225,226,246,245;,
+   4;226,227,247,246;,
+   4;619,620,248,621;,
+   4;620,622,249,248;,
+   4;229,230,250,623;,
+   4;230,231,251,250;,
+   4;617,232,252,624;,
+   4;232,233,253,252;,
+   4;233,234,254,253;,
+   4;234,235,255,254;,
+   4;235,236,256,255;,
+   4;618,237,257,625;,
+   4;237,238,258,257;,
+   5;238,239,476,259,258;,
+   4;476,239,462,473;,
+   4;481,240,478,477;,
+   4;479,241,471,482;,
+   5;626,627,263,262,483;,
+   4;243,244,264,628;,
+   4;244,245,265,264;,
+   4;245,246,266,265;,
+   4;246,247,267,266;,
+   4;629,630,268,631;,
+   4;630,623,269,268;,
+   4;623,250,270,269;,
+   4;250,251,271,270;,
+   4;624,252,272,632;,
+   4;252,253,273,272;,
+   4;253,254,274,273;,
+   4;254,255,275,274;,
+   4;255,256,276,275;,
+   4;625,257,277,633;,
+   4;257,258,278,277;,
+   5;258,259,487,279,278;,
+   4;487,259,475,485;,
+   5;260,480,261,281,280;,
+   5;261,484,262,282,281;,
+   4;262,263,283,282;,
+   4;628,264,284,634;,
+   4;264,265,285,284;,
+   4;265,266,286,285;,
+   4;266,267,287,286;,
+   4;631,268,288,635;,
+   4;268,269,289,288;,
+   4;636,637,290,638;,
+   4;637,639,291,290;,
+   4;639,640,292,291;,
+   4;640,641,293,292;,
+   4;641,642,294,293;,
+   4;642,643,295,294;,
+   4;275,276,296,644;,
+   4;633,277,297,645;,
+   4;277,278,298,297;,
+   4;278,279,299,298;,
+   5;279,486,260,280,299;,
+   4;280,281,301,300;,
+   4;281,282,302,301;,
+   4;282,283,303,302;,
+   4;634,284,304,646;,
+   5;284,285,305,387,304;,
+   5;285,286,306,392,305;,
+   5;286,287,307,396,306;,
+   4;635,288,308,647;,
+   4;288,289,309,308;,
+   4;289,648,310,309;,
+   4;290,291,311,649;,
+   4;291,292,312,311;,
+   4;292,293,313,312;,
+   4;293,294,314,313;,
+   4;650,644,315,651;,
+   4;644,296,316,315;,
+   4;652,653,317,654;,
+   4;297,298,318,655;,
+   4;298,299,319,318;,
+   4;299,280,300,319;,
+   4;300,301,321,320;,
+   4;301,302,322,321;,
+   4;302,303,323,322;,
+   5;646,304,390,324,656;,
+   4;390,304,387,386;,
+   4;388,305,392,391;,
+   4;393,306,396,395;,
+   5;647,308,328,327,397;,
+   4;308,309,329,328;,
+   4;309,310,330,329;,
+   4;649,311,331,657;,
+   4;311,312,332,331;,
+   4;312,313,333,332;,
+   4;658,651,334,659;,
+   4;651,315,335,334;,
+   4;660,654,336,661;,
+   4;654,317,337,336;,
+   4;317,662,338,337;,
+   4;318,319,339,663;,
+   4;319,300,320,339;,
+   4;320,321,341,340;,
+   4;321,322,342,341;,
+   4;322,323,343,342;,
+   5;664,665,402,344,666;,
+   4;402,665,389,399;,
+   4;407,382,404,403;,
+   4;411,326,398,408;,
+   5;327,328,348,347,409;,
+   4;328,329,349,348;,
+   4;667,668,350,669;,
+   4;657,331,351,670;,
+   4;331,332,352,351;,
+   4;332,333,353,352;,
+   4;333,671,354,353;,
+   4;671,661,355,354;,
+   4;661,336,356,355;,
+   4;336,337,357,356;,
+   4;672,663,358,673;,
+   4;663,339,359,358;,
+   4;339,320,340,359;,
+   4;340,341,361,360;,
+   4;341,342,362,361;,
+   4;674,666,363,675;,
+   5;666,344,415,364,363;,
+   4;415,344,401,412;,
+   4;413,345,417,416;,
+   4;418,346,410,420;,
+   5;676,677,368,367,421;,
+   4;677,678,369,368;,
+   4;669,350,370,679;,
+   4;670,351,371,680;,
+   4;351,352,372,371;,
+   4;352,353,373,372;,
+   4;353,354,374,373;,
+   4;354,355,375,374;,
+   4;355,356,376,375;,
+   4;356,357,377,376;,
+   4;357,681,378,377;,
+   4;681,682,379,378;,
+   4;359,340,360,683;,
+   3;1,0,380;,
+   3;2,1,380;,
+   3;3,2,380;,
+   3;4,3,380;,
+   3;684,4,380;,
+   3;685,684,380;,
+   3;7,6,686;,
+   3;8,7,686;,
+   3;9,8,686;,
+   3;10,9,686;,
+   3;11,10,686;,
+   3;12,11,686;,
+   3;13,12,686;,
+   3;14,13,686;,
+   3;15,14,686;,
+   3;16,15,686;,
+   3;546,687,380;,
+   3;18,546,380;,
+   3;19,18,380;,
+   3;0,19,380;,
+   3;688,689,381;,
+   3;689,675,381;,
+   3;675,363,381;,
+   3;363,364,381;,
+   4;364,414,365,381;,
+   4;365,419,366,381;,
+   4;366,422,367,381;,
+   3;367,368,381;,
+   3;368,369,381;,
+   3;369,680,381;,
+   3;680,371,381;,
+   3;371,372,381;,
+   3;372,373,381;,
+   3;373,374,381;,
+   3;374,375,381;,
+   3;375,376,381;,
+   3;376,377,381;,
+   3;377,378,381;,
+   3;378,379,381;,
+   3;379,688,381;,
+   4;425,325,394,423;,
+   4;424,690,691,426;,
+   4;427,692,693,428;,
+   4;429,694,400,430;,
+   4;387,305,388,386;,
+   4;388,325,695,386;,
+   4;695,324,390,386;,
+   4;392,306,393,391;,
+   4;393,696,394,391;,
+   4;394,325,388,391;,
+   4;396,307,697,395;,
+   4;697,698,699,395;,
+   4;700,701,702,703;,
+   4;695,325,704,705;,
+   4;706,345,401,399;,
+   4;401,344,402,399;,
+   4;707,383,405,708;,
+   4;709,384,406,710;,
+   4;711,385,712,713;,
+   4;398,714,715,408;,
+   4;715,676,410,408;,
+   4;410,346,411,408;,
+   4;401,345,413,412;,
+   4;413,365,414,412;,
+   4;414,364,415,412;,
+   4;417,346,418,416;,
+   4;418,366,419,416;,
+   4;419,365,413,416;,
+   4;410,676,421,420;,
+   4;421,367,422,420;,
+   4;422,366,418,420;,
+   4;394,696,716,423;,
+   4;716,717,404,423;,
+   4;404,382,425,423;,
+   4;691,718,719,426;,
+   4;719,720,405,426;,
+   4;405,383,424,426;,
+   4;693,721,722,428;,
+   4;429,385,711,723;,
+   4;406,384,427,428;,
+   4;704,325,425,724;,
+   4;425,382,407,724;,
+   4;712,385,429,430;,
+   4;490,220,454,488;,
+   4;495,447,492,491;,
+   4;498,725,726,496;,
+   4;497,727,474,499;,
+   4;503,728,729,500;,
+   4;501,725,498,504;,
+   4;505,433,466,507;,
+   4;508,432,489,510;,
+   4;515,435,502,512;,
+   4;513,436,506,516;,
+   4;517,437,509,519;,
+   4;520,438,511,522;,
+   4;527,439,514,524;,
+   4;525,440,518,528;,
+   4;529,441,521,531;,
+   4;532,442,523,534;,
+   4;538,443,526,536;,
+   4;537,444,530,539;,
+   4;540,445,533,541;,
+   4;542,446,535,543;,
+   4;452,201,453,451;,
+   4;453,730,731,451;,
+   4;731,732,455,451;,
+   4;457,202,733,456;,
+   4;733,734,735,456;,
+   4;735,730,453,456;,
+   4;461,200,455,460;,
+   4;455,732,462,460;,
+   4;462,239,463,460;,
+   4;465,736,466,464;,
+   4;466,433,467,464;,
+   4;467,434,468,464;,
+   4;735,734,737,738;,
+   4;737,626,471,738;,
+   4;739,740,472,469;,
+   4;462,732,741,473;,
+   4;741,240,475,473;,
+   4;475,259,476,473;,
+   4;478,241,479,477;,
+   4;479,261,480,477;,
+   4;480,260,481,477;,
+   4;471,626,483,482;,
+   4;483,262,484,482;,
+   4;484,261,479,482;,
+   4;475,240,481,485;,
+   4;481,260,486,485;,
+   4;486,279,487,485;,
+   4;454,742,489,488;,
+   4;489,432,743,488;,
+   4;743,744,490,488;,
+   4;745,448,493,746;,
+   4;747,449,494,491;,
+   4;494,450,495,491;,
+   4;726,748,749,496;,
+   4;749,750,751,496;,
+   4;751,752,498,496;,
+   4;474,753,754,499;,
+   4;754,755,756,499;,
+   4;756,757,497,499;,
+   4;729,758,759,500;,
+   4;759,760,502,500;,
+   4;502,435,503,500;,
+   4;498,752,761,504;,
+   4;761,762,506,504;,
+   4;506,436,501,504;,
+   4;466,736,763,507;,
+   4;763,764,509,507;,
+   4;509,437,505,507;,
+   4;489,742,765,510;,
+   4;765,766,511,510;,
+   4;511,438,508,510;,
+   4;502,760,767,512;,
+   4;767,768,769,512;,
+   4;769,770,515,512;,
+   4;506,762,771,516;,
+   4;771,772,518,516;,
+   4;518,440,513,516;,
+   4;509,764,773,519;,
+   4;773,774,775,519;,
+   4;775,776,517,519;,
+   4;511,766,777,522;,
+   4;777,778,523,522;,
+   4;523,442,520,522;,
+   4;514,779,780,524;,
+   4;780,781,782,524;,
+   4;782,783,527,524;,
+   4;518,772,784,528;,
+   4;784,785,530,528;,
+   4;530,444,525,528;,
+   4;521,786,787,531;,
+   4;787,788,533,531;,
+   4;533,445,529,531;,
+   4;523,778,789,534;,
+   4;789,790,535,534;,
+   4;535,446,532,534;,
+   4;782,781,791,792;,
+   4;791,793,794,792;,
+   4;794,795,796,792;,
+   4;530,785,797,539;,
+   4;797,798,799,539;,
+   4;799,800,537,539;,
+   4;533,788,801,541;,
+   4;801,450,494,541;,
+   4;494,449,540,541;,
+   4;535,790,802,543;,
+   4;802,803,804,543;,
+   4;804,805,542,543;;
+
+   MeshNormals {
+    544;
+    -0.991744;-0.071731;-0.106293;,
+    -0.971061;-0.036996;-0.235950;,
+    -0.967986;-0.171237;-0.183526;,
+    -0.963327;0.081132;-0.255769;,
+    -0.961787;-0.248962;0.113944;,
+    -0.952799;0.299739;-0.048288;,
+    -0.950871;0.178474;0.252965;,
+    -0.946969;0.142209;-0.288142;,
+    -0.945662;-0.323883;0.028693;,
+    -0.921373;0.174192;0.347461;,
+    -0.919614;-0.351075;0.176230;,
+    -0.907145;0.006700;-0.420764;,
+    -0.890209;0.400411;0.217251;,
+    -0.876779;0.479456;0.037153;,
+    -0.875510;0.278821;-0.394640;,
+    -0.875458;-0.202382;0.438879;,
+    -0.868998;-0.393041;0.300601;,
+    -0.858267;0.396017;0.326418;,
+    -0.852731;0.421573;-0.308425;,
+    -0.850116;-0.385144;0.359120;,
+    -0.849547;0.244949;0.467194;,
+    -0.848801;-0.516214;-0.114282;,
+    -0.848136;0.509314;-0.145823;,
+    -0.846944;-0.078971;0.525784;,
+    -0.827747;0.436004;-0.353179;,
+    -0.821002;-0.424683;0.381577;,
+    -0.806539;-0.506889;0.304234;,
+    -0.792105;-0.447779;0.414806;,
+    -0.791354;-0.564225;0.235390;,
+    -0.788225;0.498503;0.360827;,
+    -0.781807;-0.621237;-0.053323;,
+    -0.779165;0.586613;-0.220880;,
+    -0.773850;-0.382274;0.504998;,
+    -0.768902;-0.432721;0.470683;,
+    -0.767417;0.566460;0.300325;,
+    -0.765072;0.382012;-0.518394;,
+    -0.763252;0.396740;0.509946;,
+    -0.760628;-0.606966;0.230298;,
+    -0.754236;-0.601076;0.264266;,
+    -0.748570;0.310650;-0.585781;,
+    -0.740320;0.406069;0.535755;,
+    -0.725089;-0.688054;-0.028758;,
+    -0.719297;-0.571133;0.395499;,
+    -0.719004;0.623551;-0.306948;,
+    -0.711781;0.695427;-0.098739;,
+    -0.700306;-0.548317;0.457078;,
+    -0.693700;-0.624588;-0.358706;,
+    -0.688204;0.484719;-0.539835;,
+    -0.681290;-0.667556;-0.300355;,
+    -0.680679;0.721261;-0.128292;,
+    -0.677609;0.522635;0.517396;,
+    -0.668360;-0.483363;-0.565381;,
+    -0.667762;-0.721414;0.183457;,
+    -0.664644;-0.706438;-0.243298;,
+    -0.651504;0.664963;-0.365195;,
+    -0.647318;-0.526493;-0.551167;,
+    -0.633433;-0.666762;-0.392671;,
+    -0.625956;-0.048615;-0.778342;,
+    -0.618441;0.432551;0.656072;,
+    -0.614748;-0.304315;-0.727652;,
+    -0.611354;0.703203;-0.362977;,
+    -0.603815;0.454815;-0.654638;,
+    -0.600021;0.214310;-0.770743;,
+    -0.593936;0.290695;-0.750157;,
+    -0.582963;-0.634281;0.507780;,
+    -0.572473;-0.818797;0.042960;,
+    -0.567697;-0.699265;0.434453;,
+    -0.567454;-0.736458;-0.368274;,
+    -0.557702;-0.793693;-0.242939;,
+    -0.547713;-0.786300;-0.285907;,
+    -0.540349;0.237250;0.807301;,
+    -0.533987;0.015439;-0.845352;,
+    -0.527247;-0.363659;0.767960;,
+    -0.520429;0.798927;-0.301446;,
+    -0.506194;0.363237;0.782194;,
+    -0.499655;-0.863500;0.068652;,
+    -0.497712;0.867278;-0.010567;,
+    -0.496121;0.858429;-0.130247;,
+    -0.489527;-0.871067;-0.040067;,
+    -0.488497;-0.829615;0.270388;,
+    -0.485653;-0.801792;-0.348239;,
+    -0.484298;0.050367;-0.873452;,
+    -0.480939;0.521902;-0.704497;,
+    -0.476844;0.758199;0.444696;,
+    -0.473914;-0.226601;0.850916;,
+    -0.473374;0.055408;-0.879117;,
+    -0.451802;-0.712212;0.537242;,
+    -0.447502;0.893339;-0.041074;,
+    -0.445412;0.515402;0.732099;,
+    -0.445037;0.513836;-0.733427;,
+    -0.444442;0.893277;-0.067288;,
+    -0.432409;0.901056;0.033472;,
+    -0.419855;-0.886382;-0.195059;,
+    -0.418814;-0.590834;0.689572;,
+    -0.415533;0.818015;-0.397723;,
+    -0.412467;0.750528;-0.516312;,
+    -0.409234;0.128908;0.903278;,
+    -0.408139;-0.733139;0.543995;,
+    -0.404029;-0.914270;0.029524;,
+    -0.403865;-0.803059;-0.438166;,
+    -0.401836;-0.833259;0.379746;,
+    -0.401835;0.915496;-0.019900;,
+    -0.398743;0.515324;0.758581;,
+    -0.398730;0.659349;0.637395;,
+    -0.398343;0.916189;0.043832;,
+    -0.397400;-0.739644;0.543138;,
+    -0.395261;0.426047;0.813789;,
+    -0.388570;-0.045494;-0.920295;,
+    -0.388565;-0.829702;0.400763;,
+    -0.387865;-0.884779;-0.258314;,
+    -0.386153;-0.918645;0.083531;,
+    -0.379215;0.452719;-0.806995;,
+    -0.379083;-0.847723;0.371027;,
+    -0.375458;-0.708904;0.597065;,
+    -0.372004;-0.745816;0.552605;,
+    -0.372001;-0.285946;-0.883091;,
+    -0.371807;0.148051;-0.916428;,
+    -0.371210;-0.771829;0.516220;,
+    -0.370905;-0.052381;-0.927192;,
+    -0.366902;0.456802;0.810380;,
+    -0.364458;-0.826080;0.429840;,
+    -0.362981;-0.815097;0.451510;,
+    -0.361181;0.422866;-0.831103;,
+    -0.357546;-0.932882;-0.043497;,
+    -0.355808;0.924753;0.135030;,
+    -0.354973;-0.741742;0.569046;,
+    -0.353593;-0.844092;0.403089;,
+    -0.353190;-0.772317;-0.528000;,
+    -0.351429;0.036610;-0.935498;,
+    -0.351238;0.572990;0.740483;,
+    -0.349864;-0.242239;-0.904940;,
+    -0.346668;0.925343;0.153500;,
+    -0.337823;0.405642;-0.849311;,
+    -0.337381;0.925539;0.171904;,
+    -0.333816;-0.834414;0.438543;,
+    -0.328636;0.774776;0.540111;,
+    -0.326754;-0.887447;0.325070;,
+    -0.325662;0.119228;-0.937939;,
+    -0.325167;-0.813303;0.482499;,
+    -0.322279;0.903654;0.282039;,
+    -0.321527;-0.933800;0.156966;,
+    -0.316367;0.490869;-0.811763;,
+    -0.313871;0.363019;-0.877327;,
+    -0.313461;-0.294011;-0.902939;,
+    -0.311608;-0.743297;0.591954;,
+    -0.311333;-0.832181;0.458854;,
+    -0.310804;-0.856006;0.413104;,
+    -0.308956;-0.864699;-0.396033;,
+    -0.306617;-0.791586;0.528562;,
+    -0.303462;-0.612976;0.729500;,
+    -0.302638;-0.712283;0.633295;,
+    -0.296658;-0.879156;0.372933;,
+    -0.295920;-0.048357;-0.953988;,
+    -0.294524;-0.786177;0.543306;,
+    -0.291631;-0.317417;0.902329;,
+    -0.289966;0.707357;0.644644;,
+    -0.289534;0.920755;0.261497;,
+    -0.288364;-0.865073;-0.410481;,
+    -0.280454;0.328383;-0.901948;,
+    -0.269913;0.914527;-0.301310;,
+    -0.263933;0.940348;0.214674;,
+    -0.254897;0.386841;-0.886218;,
+    -0.251330;0.947199;0.199115;,
+    -0.244153;0.170126;-0.954697;,
+    -0.243062;0.363643;-0.899269;,
+    -0.242740;0.746922;-0.619020;,
+    -0.242299;-0.810229;0.533685;,
+    -0.238478;0.228033;-0.943996;,
+    -0.238131;0.956311;0.169597;,
+    -0.235414;0.539853;0.808170;,
+    -0.231258;-0.851237;0.471079;,
+    -0.228692;-0.931042;0.284361;,
+    -0.227056;0.901998;0.367212;,
+    -0.221268;0.863599;0.453031;,
+    -0.217353;0.897972;0.382629;,
+    -0.216162;0.914054;0.343191;,
+    -0.214692;-0.671808;0.708930;,
+    -0.204728;0.714465;0.669049;,
+    -0.193500;0.786630;-0.586320;,
+    -0.189788;-0.514567;-0.836182;,
+    -0.174379;-0.909824;0.376579;,
+    -0.173371;-0.739972;-0.649911;,
+    -0.168320;0.128946;-0.977262;,
+    -0.164736;0.790601;-0.589756;,
+    -0.164734;-0.763144;-0.624879;,
+    -0.163070;0.614475;0.771900;,
+    -0.162775;-0.498627;0.851396;,
+    -0.152879;-0.497230;0.854043;,
+    -0.146030;0.988823;0.030063;,
+    -0.140324;-0.053536;-0.988657;,
+    -0.138038;0.543670;0.827870;,
+    -0.132349;-0.335863;0.932566;,
+    -0.131297;-0.982176;-0.134507;,
+    -0.130249;0.586311;0.799546;,
+    -0.121035;0.896763;0.425637;,
+    -0.120040;0.510942;-0.851193;,
+    -0.116362;0.343995;0.931733;,
+    -0.112974;-0.270624;0.956033;,
+    -0.107866;0.698928;0.707011;,
+    -0.105516;-0.959454;-0.261372;,
+    -0.100296;0.746170;0.658157;,
+    -0.099813;0.894358;0.436074;,
+    -0.099767;-0.015516;-0.994890;,
+    -0.099363;0.203830;-0.973951;,
+    -0.091817;-0.973797;-0.208060;,
+    -0.084898;-0.953616;0.288807;,
+    -0.083185;0.750889;0.655169;,
+    -0.075287;0.470300;-0.879290;,
+    -0.064741;-0.914475;0.399429;,
+    -0.062679;-0.980314;-0.187232;,
+    -0.061399;0.957573;0.281574;,
+    -0.061268;0.915969;-0.396544;,
+    -0.060418;0.967790;0.244401;,
+    -0.058109;0.112490;0.991952;,
+    -0.053387;0.739490;0.671047;,
+    -0.039452;0.939763;0.339541;,
+    -0.038755;0.109896;-0.993187;,
+    -0.037642;0.723641;0.689150;,
+    -0.037070;0.139294;-0.989557;,
+    -0.032306;-0.287428;0.957257;,
+    -0.025384;-0.288465;-0.957154;,
+    -0.022445;0.899341;0.436672;,
+    -0.017990;0.230824;-0.972829;,
+    -0.015849;0.603233;-0.797407;,
+    -0.014631;0.297850;-0.954500;,
+    -0.009893;-0.602460;-0.798088;,
+    -0.009601;0.894660;0.446644;,
+    -0.008802;0.979093;0.203223;,
+    -0.007250;0.675986;-0.736879;,
+    -0.001842;0.488501;-0.872561;,
+    -0.000011;0.302751;-0.953070;,
+    -0.000000;0.156457;-0.987685;,
+    0.000000;0.891035;0.453935;,
+    0.002440;-0.529214;0.848485;,
+    0.006204;0.684424;-0.729058;,
+    0.012140;0.024529;-0.999625;,
+    0.013601;0.863649;0.503911;,
+    0.014558;0.921853;0.387266;,
+    0.017990;-0.230826;0.972829;,
+    0.019761;-0.970478;-0.240377;,
+    0.020531;0.993774;-0.109509;,
+    0.020560;0.952454;0.303989;,
+    0.022366;-0.845440;0.533602;,
+    0.025241;-0.985100;0.170120;,
+    0.029023;0.767682;0.640174;,
+    0.031581;-0.500937;-0.864908;,
+    0.031644;0.679019;0.733439;,
+    0.031873;-0.947853;0.317111;,
+    0.041274;-0.767409;0.639828;,
+    0.044186;-0.628267;-0.776742;,
+    0.044817;-0.114951;-0.992360;,
+    0.049923;0.803774;-0.592836;,
+    0.053787;0.903398;-0.425417;,
+    0.057082;-0.328064;-0.942929;,
+    0.058109;-0.112491;-0.991952;,
+    0.059250;0.843693;0.533547;,
+    0.064666;-0.908846;0.412089;,
+    0.064736;0.950621;0.303527;,
+    0.065661;0.673760;0.736027;,
+    0.069038;0.976761;0.202907;,
+    0.072538;-0.997365;0.001431;,
+    0.078170;0.668761;0.739356;,
+    0.084403;0.878808;0.469652;,
+    0.089555;0.970654;-0.223185;,
+    0.092255;-0.486804;0.868626;,
+    0.096545;-0.995126;0.020061;,
+    0.097542;-0.821170;0.562286;,
+    0.099395;0.994448;-0.034555;,
+    0.112974;0.270622;-0.956034;,
+    0.114669;0.964873;0.236369;,
+    0.115274;-0.959902;0.255540;,
+    0.116362;-0.343996;-0.931733;,
+    0.122453;-0.154302;0.980406;,
+    0.126300;-0.755906;-0.642382;,
+    0.128140;0.981564;0.141820;,
+    0.128834;0.966730;0.220988;,
+    0.129211;0.920778;-0.368066;,
+    0.131398;-0.948743;-0.287438;,
+    0.133533;0.505180;0.852621;,
+    0.134102;-0.975416;0.174872;,
+    0.140274;0.891035;0.431718;,
+    0.141678;0.966204;0.215355;,
+    0.141842;-0.978452;-0.150041;,
+    0.142067;-0.967903;-0.207319;,
+    0.143561;0.155988;0.977271;,
+    0.147111;-0.986031;-0.078114;,
+    0.155579;-0.243839;0.957255;,
+    0.164736;-0.790602;0.589755;,
+    0.168236;0.974723;0.147012;,
+    0.168518;0.817555;0.550641;,
+    0.169978;0.828950;0.532870;,
+    0.172227;-0.644321;0.745109;,
+    0.174650;0.943076;0.283028;,
+    0.182003;0.939020;0.291748;,
+    0.182859;0.810120;0.557018;,
+    0.187177;0.754076;0.629551;,
+    0.189788;0.514568;0.836182;,
+    0.193500;-0.786631;0.586319;,
+    0.197876;0.865597;0.459986;,
+    0.203353;0.644913;-0.736706;,
+    0.204729;-0.714465;-0.669049;,
+    0.215445;0.929612;0.299007;,
+    0.217353;-0.897971;-0.382629;,
+    0.217935;0.975786;-0.018595;,
+    0.225920;-0.935770;-0.270730;,
+    0.227057;-0.901998;-0.367213;,
+    0.228693;0.931041;-0.284362;,
+    0.232403;-0.472030;0.850398;,
+    0.243793;-0.843158;-0.479217;,
+    0.249012;-0.968204;0.023942;,
+    0.256792;0.873242;0.414133;,
+    0.264471;0.757922;0.596330;,
+    0.266100;-0.313765;0.911451;,
+    0.269772;0.712270;0.647992;,
+    0.271468;-0.136242;0.952756;,
+    0.271582;-0.014329;0.962309;,
+    0.279512;0.949521;-0.142418;,
+    0.289534;-0.920755;-0.261497;,
+    0.291183;0.125010;0.948465;,
+    0.291630;0.317415;-0.902330;,
+    0.293927;-0.904256;-0.309724;,
+    0.295769;0.305746;-0.905008;,
+    0.296920;-0.951182;0.084205;,
+    0.301711;0.936215;-0.180199;,
+    0.305211;0.156457;-0.939344;,
+    0.306431;-0.020499;0.951672;,
+    0.311670;-0.948278;-0.060246;,
+    0.314508;0.846074;0.430399;,
+    0.320556;-0.025539;-0.946885;,
+    0.321212;-0.938916;-0.123526;,
+    0.321527;0.933800;-0.156967;,
+    0.323192;0.322185;-0.889800;,
+    0.325663;-0.119228;0.937938;,
+    0.325765;-0.944354;-0.045520;,
+    0.326845;-0.864700;-0.381401;,
+    0.329609;-0.944117;0.001230;,
+    0.337200;0.748559;0.570925;,
+    0.337381;-0.925539;-0.171904;,
+    0.340069;0.934284;0.107080;,
+    0.340264;0.226884;0.912548;,
+    0.342546;-0.188948;-0.920305;,
+    0.344560;0.922202;-0.175562;,
+    0.344888;0.863745;0.367420;,
+    0.345457;0.809060;0.475481;,
+    0.345709;-0.930504;-0.121028;,
+    0.346668;-0.925343;-0.153500;,
+    0.350987;-0.928379;0.122149;,
+    0.355808;-0.924753;-0.135030;,
+    0.359643;-0.925233;0.120835;,
+    0.359976;0.134427;-0.923226;,
+    0.361960;-0.910453;-0.200149;,
+    0.362116;-0.345126;-0.865887;,
+    0.370445;0.861354;0.347621;,
+    0.375267;0.921137;-0.103353;,
+    0.375309;0.686203;0.623112;,
+    0.375693;0.111719;0.919986;,
+    0.382665;-0.534839;-0.753336;,
+    0.388557;0.662384;0.640524;,
+    0.388902;0.634074;0.668360;,
+    0.391498;-0.919966;-0.019819;,
+    0.391620;-0.863396;-0.318090;,
+    0.398343;-0.916189;-0.043833;,
+    0.398743;-0.515324;-0.758581;,
+    0.400685;0.336326;0.852254;,
+    0.404028;0.914270;-0.029524;,
+    0.406394;0.893527;-0.190930;,
+    0.409436;0.809195;0.421386;,
+    0.410179;-0.911540;0.029139;,
+    0.412607;-0.840351;0.351520;,
+    0.415241;-0.699621;-0.581468;,
+    0.415595;0.707161;0.572018;,
+    0.416827;0.367532;0.831370;,
+    0.418323;-0.893480;0.163401;,
+    0.418863;0.761738;-0.494276;,
+    0.429093;0.471465;0.770454;,
+    0.432979;0.055407;0.899699;,
+    0.438865;0.213328;-0.872862;,
+    0.443502;-0.829177;-0.340252;,
+    0.452497;-0.120756;-0.883552;,
+    0.456943;-0.886381;0.074373;,
+    0.467041;-0.232814;-0.853036;,
+    0.471096;-0.790247;-0.391892;,
+    0.474481;-0.664141;0.577740;,
+    0.475481;0.809060;0.345457;,
+    0.475503;0.587844;0.654474;,
+    0.479917;-0.842368;-0.245144;,
+    0.480940;-0.521902;0.704496;,
+    0.482494;-0.792247;-0.373557;,
+    0.484788;-0.874614;-0.005578;,
+    0.496890;-0.845642;-0.194909;,
+    0.499655;0.863500;-0.068653;,
+    0.499800;-0.864786;0.048425;,
+    0.506194;-0.363237;-0.782193;,
+    0.509101;0.727695;-0.459648;,
+    0.511838;-0.847741;-0.139130;,
+    0.512655;-0.803904;-0.301536;,
+    0.518942;-0.758502;-0.394174;,
+    0.520429;-0.798927;0.301445;,
+    0.521018;0.769754;0.368808;,
+    0.523666;0.677894;0.515977;,
+    0.523704;0.454045;0.720817;,
+    0.525358;-0.466689;0.711477;,
+    0.527248;0.363657;-0.767960;,
+    0.552394;-0.734735;-0.393732;,
+    0.553576;-0.816152;-0.165681;,
+    0.554948;0.410612;-0.723485;,
+    0.558961;0.809060;0.181617;,
+    0.559009;0.309059;-0.769410;,
+    0.559009;-0.309059;0.769410;,
+    0.559009;0.309059;0.769410;,
+    0.561802;-0.634563;0.530761;,
+    0.562039;-0.804220;-0.193241;,
+    0.571915;-0.817841;0.063630;,
+    0.572018;0.707161;0.415595;,
+    0.577792;-0.808701;-0.110269;,
+    0.578013;0.243755;-0.778771;,
+    0.580128;0.465524;-0.668386;,
+    0.580546;0.156457;-0.799054;,
+    0.580547;-0.156457;0.799054;,
+    0.580547;0.156457;0.799054;,
+    0.581452;-0.725898;0.367404;,
+    0.581812;0.382229;-0.717911;,
+    0.585040;0.561655;-0.585040;,
+    0.585803;-0.783714;-0.206462;,
+    0.587726;0.809060;0.000001;,
+    0.587785;-0.000000;0.809017;,
+    0.588718;-0.791883;0.162272;,
+    0.593207;0.787780;-0.165858;,
+    0.601944;-0.593629;-0.534105;,
+    0.602578;0.682939;-0.412909;,
+    0.602660;-0.096935;-0.792089;,
+    0.603876;-0.780681;0.160845;,
+    0.604932;0.517798;-0.604932;,
+    0.612270;0.233138;-0.755495;,
+    0.619327;-0.613479;-0.489978;,
+    0.620417;0.728881;0.289509;,
+    0.621969;0.466590;-0.628847;,
+    0.622943;0.454426;-0.636741;,
+    0.625502;-0.276518;-0.729579;,
+    0.631612;0.449591;-0.631612;,
+    0.636417;-0.770592;-0.034078;,
+    0.638675;-0.402316;-0.655923;,
+    0.639638;-0.676590;-0.364813;,
+    0.642938;0.765714;-0.017648;,
+    0.644997;-0.442764;-0.622848;,
+    0.654455;0.378651;-0.654455;,
+    0.654474;0.587844;-0.475503;,
+    0.654474;0.587844;0.475503;,
+    0.655712;-0.692582;-0.300619;,
+    0.672447;0.707161;0.218491;,
+    0.672447;0.707161;-0.218491;,
+    0.673276;0.305612;-0.673276;,
+    0.685620;-0.701765;-0.193523;,
+    0.687700;-0.725976;-0.005309;,
+    0.688028;0.230725;-0.688028;,
+    0.688263;0.659916;-0.301338;,
+    0.689800;0.522499;-0.501169;,
+    0.695540;0.180131;-0.695540;,
+    0.707053;0.707161;0.000000;,
+    0.707937;-0.569564;-0.417639;,
+    0.708824;-0.493548;0.503963;,
+    0.713129;-0.697895;0.066258;,
+    0.720817;0.454045;0.523704;,
+    0.726626;-0.416383;-0.546480;,
+    0.728181;0.685122;0.018992;,
+    0.729097;0.666213;0.156775;,
+    0.732922;0.670810;0.113314;,
+    0.737193;0.561655;-0.375619;,
+    0.737489;-0.670898;0.077495;,
+    0.740320;-0.406070;-0.535755;,
+    0.741122;0.476470;-0.472985;,
+    0.743112;-0.662791;-0.092152;,
+    0.762238;-0.326262;-0.559059;,
+    0.762258;0.517799;-0.388390;,
+    0.769380;0.587844;0.249987;,
+    0.769380;0.587844;-0.249986;,
+    0.769410;-0.309059;0.559009;,
+    0.769410;0.309059;0.559009;,
+    0.770930;0.624376;-0.125785;,
+    0.773851;0.382272;-0.504999;,
+    0.786664;0.233445;-0.571545;,
+    0.792440;-0.457176;-0.403768;,
+    0.797276;-0.603522;-0.010594;,
+    0.799054;-0.156457;0.580546;,
+    0.799054;0.156457;-0.580547;,
+    0.799054;0.156457;0.580546;,
+    0.800415;-0.141119;-0.582599;,
+    0.806123;0.589988;0.045605;,
+    0.808616;-0.585478;0.057937;,
+    0.808974;0.587844;0.000001;,
+    0.809017;-0.000000;0.587785;,
+    0.810909;0.522499;-0.263480;,
+    0.817185;0.561656;-0.129428;,
+    0.820714;-0.503571;0.269897;,
+    0.820926;0.560924;0.106977;,
+    0.821688;-0.386708;-0.418671;,
+    0.824661;0.378652;-0.420186;,
+    0.828800;0.549352;0.106310;,
+    0.832317;-0.374376;-0.408768;,
+    0.839815;0.270598;0.470624;,
+    0.844492;-0.527745;-0.091207;,
+    0.844970;0.517798;-0.133829;,
+    0.847371;0.454045;0.275327;,
+    0.851778;0.521970;-0.044968;,
+    0.859455;0.157156;-0.486457;,
+    0.859559;0.412349;-0.301872;,
+    0.861077;-0.395860;-0.319125;,
+    0.863407;-0.503530;0.031403;,
+    0.866966;0.230725;-0.441741;,
+    0.874126;0.434205;-0.217644;,
+    0.876432;0.180132;-0.446564;,
+    0.876821;0.457051;-0.149299;,
+    0.879023;0.228044;-0.418706;,
+    0.879791;0.368065;-0.300825;,
+    0.882238;0.449590;-0.139731;,
+    0.889286;0.306926;0.339067;,
+    0.889642;-0.267221;-0.370309;,
+    0.890209;-0.400413;-0.217252;,
+    0.890979;0.454045;0.000001;,
+    0.904495;0.309059;0.293888;,
+    0.904495;-0.309059;0.293888;,
+    0.914145;0.378651;-0.144785;,
+    0.919614;0.351074;-0.176231;,
+    0.922782;0.382230;-0.048717;,
+    0.924779;0.233445;-0.300478;,
+    0.926403;-0.021347;-0.375928;,
+    0.938117;0.335802;0.084694;,
+    0.939344;-0.156457;0.305211;,
+    0.939344;0.156457;0.305211;,
+    0.939344;0.156457;-0.305211;,
+    0.939832;-0.289593;0.181252;,
+    0.939873;-0.093330;-0.328524;,
+    0.940434;0.305611;-0.148949;,
+    0.942087;-0.329547;-0.062222;,
+    0.951043;0.309059;0.000001;,
+    0.951057;0.000000;0.309017;,
+    0.957162;0.228283;0.178124;,
+    0.961040;0.230725;-0.152212;,
+    0.971091;0.233138;-0.051268;,
+    0.971532;0.180132;-0.153874;,
+    0.982254;-0.183848;-0.037094;,
+    0.987685;0.156457;0.000001;,
+    0.999655;-0.023662;-0.011375;,
+    0.999959;-0.008549;-0.003115;;
+    550;
+    4;452,471,440,404;,
+    4;471,482,468,440;,
+    4;482,507,488,468;,
+    4;507,461,414,488;,
+    4;461,367,239,414;,
+    4;367,309,109,239;,
+    4;309,265,69,109;,
+    4;265,260,68,69;,
+    4;260,256,79,68;,
+    4;256,248,150,79;,
+    4;248,242,144,150;,
+    4;242,208,117,144;,
+    4;208,205,145,117;,
+    4;205,270,180,145;,
+    4;270,348,279,180;,
+    4;348,388,359,279;,
+    4;388,423,385,359;,
+    4;423,442,396,385;,
+    4;442,448,395,396;,
+    4;448,452,404,395;,
+    4;404,440,379,344;,
+    4;440,468,431,379;,
+    4;468,488,453,431;,
+    4;488,414,360,453;,
+    4;414,239,147,360;,
+    4;239,109,48,147;,
+    4;109,69,46,48;,
+    4;69,68,56,46;,
+    4;68,79,65,56;,
+    4;79,150,148,65;,
+    4;150,144,166,148;,
+    4;144,117,120,166;,
+    4;117,145,100,120;,
+    4;145,180,136,100;,
+    4;180,279,243,136;,
+    4;279,359,335,243;,
+    4;359,385,350,335;,
+    4;385,396,334,350;,
+    4;396,395,320,334;,
+    4;395,404,344,320;,
+    4;344,379,322,285;,
+    4;379,431,391,322;,
+    4;431,453,411,391;,
+    4;453,360,308,411;,
+    4;360,147,99,308;,
+    4;147,48,53,99;,
+    4;48,46,80,53;,
+    4;46,56,157,80;,
+    4;56,65,123,157;,
+    4;65,148,146,123;,
+    4;148,166,170,146;,
+    4;166,120,151,170;,
+    4;120,100,112,151;,
+    4;100,136,126,112;,
+    4;136,243,247,126;,
+    4;243,335,346,247;,
+    4;335,350,333,346;,
+    4;350,334,304,333;,
+    4;334,320,277,304;,
+    4;320,344,285,277;,
+    4;285,322,329,282;,
+    4;322,391,389,329;,
+    4;391,411,381,389;,
+    4;411,308,273,381;,
+    4;308,99,127,273;,
+    4;99,53,92,127;,
+    4;53,80,209,92;,
+    4;80,157,204,209;,
+    4;157,123,110,204;,
+    4;123,146,108,110;,
+    4;146,170,138,108;,
+    4;170,151,134,138;,
+    4;151,112,121,134;,
+    4;112,126,153,121;,
+    4;126,247,266,153;,
+    4;247,346,368,266;,
+    4;346,333,372,368;,
+    4;333,304,326,372;,
+    4;304,277,283,326;,
+    4;277,285,282,283;,
+    4;282,329,387,377;,
+    4;329,389,403,387;,
+    4;389,381,369,403;,
+    4;381,273,249,369;,
+    4;273,127,184,249;,
+    4;127,92,199,184;,
+    4;92,209,192,199;,
+    4;209,204,78,192;,
+    4;204,110,52,78;,
+    4;110,108,66,52;,
+    4;108,138,86,66;,
+    4;138,134,97,86;,
+    4;134,121,113,97;,
+    4;121,153,176,113;,
+    4;153,266,291,176;,
+    4;266,368,382,291;,
+    4;368,372,420,382;,
+    4;372,326,426,420;,
+    4;326,283,394,426;,
+    4;283,282,377,394;,
+    4;377,387,434,459;,
+    4;387,403,428,434;,
+    4;403,369,356,428;,
+    4;369,249,245,356;,
+    4;249,184,225,245;,
+    4;184,199,181,225;,
+    4;199,192,67,181;,
+    4;192,78,41,67;,
+    4;78,52,37,41;,
+    4;52,66,45,37;,
+    4;66,86,64,45;,
+    4;86,97,105,64;,
+    4;97,113,149,105;,
+    4;113,176,186,149;,
+    4;176,291,307,186;,
+    4;291,382,401,307;,
+    4;382,420,460,401;,
+    4;420,426,493,460;,
+    4;426,394,500,493;,
+    4;394,377,459,500;,
+    4;459,434,463,498;,
+    4;434,428,441,463;,
+    4;428,356,351,441;,
+    4;356,245,253,351;,
+    4;245,225,220,253;,
+    4;225,181,143,220;,
+    4;181,67,51,143;,
+    4;67,41,30,51;,
+    4;41,37,26,30;,
+    4;37,45,33,26;,
+    4;45,64,42,33;,
+    4;64,105,114,42;,
+    4;105,149,187,114;,
+    4;149,186,191,187;,
+    4;186,307,312,191;,
+    4;307,401,408,312;,
+    4;401,460,476,408;,
+    4;460,493,520,476;,
+    4;493,500,533,520;,
+    4;500,459,498,533;,
+    4;498,463,472,516;,
+    4;463,441,438,472;,
+    4;441,351,340,438;,
+    4;351,253,250,340;,
+    4;253,220,202,250;,
+    4;220,143,152,202;,
+    4;143,51,59,152;,
+    4;51,30,21,59;,
+    4;30,26,25,21;,
+    4;26,33,27,25;,
+    4;33,42,38,27;,
+    4;42,114,125,38;,
+    4;114,187,233,125;,
+    4;187,191,219,233;,
+    4;191,312,314,219;,
+    4;312,408,418,314;,
+    4;408,476,483,418;,
+    4;476,520,527,483;,
+    4;520,533,540,527;,
+    4;533,498,516,540;,
+    4;516,472,486,531;,
+    4;472,438,430,486;,
+    4;438,340,328,430;,
+    4;340,250,235,328;,
+    4;250,202,182,235;,
+    4;202,152,163,182;,
+    4;152,59,71,163;,
+    4;59,21,2,71;,
+    4;21,25,15,2;,
+    4;25,27,16,15;,
+    4;27,38,28,16;,
+    4;38,125,93,28;,
+    4;125,233,264,93;,
+    4;233,219,286,264;,
+    4;219,314,315,286;,
+    4;314,418,425,315;,
+    4;418,483,490,425;,
+    4;483,527,535,490;,
+    4;527,540,542,535;,
+    4;540,516,531,542;,
+    5;531,486,484,510,529;,
+    5;486,430,417,457,484;,
+    4;430,328,324,417;,
+    4;328,235,231,324;,
+    4;235,182,167,231;,
+    4;182,163,164,167;,
+    4;163,71,111,164;,
+    4;71,2,22,111;,
+    4;2,15,9,22;,
+    4;15,16,4,9;,
+    4;16,28,19,4;,
+    4;28,93,84,19;,
+    4;93,264,272,84;,
+    4;264,286,325,272;,
+    4;286,315,318,325;,
+    4;315,425,419,318;,
+    4;425,490,485,419;,
+    4;490,535,528,485;,
+    4;535,542,541,528;,
+    5;542,531,529,539,541;,
+    4;524,529,510,508;,
+    4;480,484,457,454;,
+    5;417,324,321,407,433;,
+    4;324,231,230,321;,
+    4;231,167,158,230;,
+    4;167,164,141,158;,
+    4;164,111,165,141;,
+    4;111,22,87,165;,
+    4;22,9,13,87;,
+    4;9,4,0,13;,
+    4;4,19,23,0;,
+    4;19,84,96,23;,
+    4;84,272,284,96;,
+    4;272,325,355,284;,
+    4;325,318,339,355;,
+    4;318,419,409,339;,
+    4;419,485,477,409;,
+    4;485,528,519,477;,
+    5;528,541,538,534,519;,
+    4;538,541,539,537;,
+    4;515,530,495,496;,
+    4;81,444,451,445;,
+    5;407,321,331,405,421;,
+    4;321,230,224,331;,
+    4;230,158,142,224;,
+    4;158,141,89,142;,
+    4;141,165,95,89;,
+    4;165,87,77,95;,
+    4;87,13,43,77;,
+    4;13,0,18,43;,
+    4;0,23,50,18;,
+    4;23,96,169,50;,
+    4;96,284,278,169;,
+    4;284,355,363,278;,
+    4;355,339,371,363;,
+    4;339,409,400,371;,
+    4;409,477,462,400;,
+    4;477,519,502,462;,
+    5;519,534,523,518,502;,
+    4;523,534,532,521;,
+    4;491,466,316,473;,
+    4;456,276,439,432;,
+    5;405,331,376,437,416;,
+    4;331,224,216,376;,
+    4;224,142,116,216;,
+    4;142,89,62,116;,
+    4;89,95,35,62;,
+    4;95,77,31,35;,
+    4;77,43,60,31;,
+    4;43,18,94,60;,
+    4;18,50,168,94;,
+    4;50,169,236,168;,
+    4;169,278,290,236;,
+    4;278,363,336,290;,
+    4;363,371,358,336;,
+    4;371,400,384,358;,
+    4;400,462,447,384;,
+    4;462,502,474,447;,
+    5;502,518,503,489,474;,
+    4;503,518,514,501;,
+    5;475,467,446,429,450;,
+    5;446,422,437,470,429;,
+    4;437,376,415,470;,
+    4;376,216,218,415;,
+    4;216,116,128,218;,
+    4;116,62,57,128;,
+    4;62,35,11,57;,
+    4;35,31,5,11;,
+    4;31,60,49,5;,
+    4;60,94,159,49;,
+    4;94,168,240,159;,
+    4;168,236,288,240;,
+    4;236,290,293,288;,
+    4;290,336,298,293;,
+    4;336,358,311,298;,
+    4;358,384,370,311;,
+    4;384,447,413,370;,
+    4;447,474,449,413;,
+    4;474,489,458,449;,
+    5;489,492,475,450,458;,
+    4;450,429,455,427;,
+    4;429,470,505,455;,
+    4;470,415,436,505;,
+    4;415,218,229,436;,
+    5;218,128,161,195,229;,
+    5;128,57,63,122,161;,
+    5;57,11,7,39,63;,
+    4;11,5,6,7;,
+    4;5,49,34,6;,
+    4;49,159,91,34;,
+    4;159,240,188,91;,
+    4;240,288,227,188;,
+    4;288,293,237,227;,
+    4;293,298,255,237;,
+    4;298,311,294,255;,
+    4;311,370,343,294;,
+    4;370,413,383,343;,
+    4;413,449,406,383;,
+    4;449,458,424,406;,
+    4;458,450,427,424;,
+    4;427,455,511,478;,
+    4;455,505,509,511;,
+    4;505,436,393,509;,
+    5;436,229,228,251,393;,
+    4;228,229,195,223;,
+    4;207,161,122,132;,
+    4;61,63,39,47;,
+    5;7,6,36,44,24;,
+    4;6,34,58,36;,
+    4;34,91,83,58;,
+    4;91,188,139,83;,
+    4;188,227,175,139;,
+    4;227,237,194,175;,
+    4;237,255,232,194;,
+    4;255,294,280,232;,
+    4;294,343,310,280;,
+    4;343,383,366,310;,
+    4;383,406,435,366;,
+    4;406,424,464,435;,
+    4;424,427,478,464;,
+    4;478,511,494,487;,
+    4;511,509,443,494;,
+    4;509,393,323,443;,
+    5;393,251,252,263,323;,
+    4;252,251,299,373;,
+    4;504,378,107,211;,
+    4;29,14,54,76;,
+    5;44,36,103,160,101;,
+    4;36,58,119,103;,
+    4;58,83,129,119;,
+    4;83,139,135,129;,
+    4;139,175,173,135;,
+    4;175,194,201,173;,
+    4;194,232,221,201;,
+    4;232,280,262,221;,
+    4;280,310,289,262;,
+    4;310,366,313,289;,
+    4;366,435,399,313;,
+    4;435,464,465,399;,
+    4;464,478,487,465;,
+    4;487,494,342,352;,
+    4;494,443,301,342;,
+    4;443,323,275,301;,
+    5;323,263,267,281,275;,
+    4;267,263,365,303;,
+    4;338,497,357,292;,
+    4;215,155,162,212;,
+    5;160,103,200,226,210;,
+    4;103,119,193,200;,
+    4;119,129,190,193;,
+    4;129,135,185,190;,
+    4;135,173,198,185;,
+    4;173,201,214,198;,
+    4;201,221,206,214;,
+    4;221,262,217,206;,
+    4;262,289,246,217;,
+    4;289,313,261,246;,
+    4;313,399,295,261;,
+    4;399,465,327,295;,
+    4;465,487,352,327;,
+    3;471,452,412;,
+    3;482,471,412;,
+    3;507,482,412;,
+    3;461,507,412;,
+    3;367,461,412;,
+    3;309,367,412;,
+    3;265,309,412;,
+    3;260,265,412;,
+    3;256,260,412;,
+    3;248,256,412;,
+    3;242,248,412;,
+    3;208,242,412;,
+    3;205,208,412;,
+    3;270,205,412;,
+    3;348,270,412;,
+    3;388,348,412;,
+    3;423,388,412;,
+    3;442,423,412;,
+    3;448,442,412;,
+    3;452,448,412;,
+    3;352,342,244;,
+    3;342,301,244;,
+    3;301,275,244;,
+    3;275,281,244;,
+    4;281,274,269,244;,
+    4;269,259,257,244;,
+    4;257,241,226,244;,
+    3;226,200,244;,
+    3;200,193,244;,
+    3;193,190,244;,
+    3;190,185,244;,
+    3;185,198,244;,
+    3;198,214,244;,
+    3;214,206,244;,
+    3;206,217,244;,
+    3;217,246,244;,
+    3;246,261,244;,
+    3;261,295,244;,
+    3;295,327,244;,
+    3;327,352,244;,
+    4;380,349,118,115;,
+    4;1,14,29,20;,
+    4;106,155,357,374;,
+    4;536,497,512,525;,
+    4;195,161,207,223;,
+    4;207,349,299,223;,
+    4;299,251,228,223;,
+    4;122,63,61,132;,
+    4;61,14,118,132;,
+    4;118,349,207,132;,
+    4;39,7,24,47;,
+    4;24,44,54,47;,
+    4;54,14,61,47;,
+    4;299,349,512,373;,
+    4;512,497,365,373;,
+    4;365,263,252,373;,
+    4;107,3,17,211;,
+    4;17,88,354,211;,
+    4;354,526,504,211;,
+    4;54,44,101,76;,
+    4;101,160,162,76;,
+    4;162,155,29,76;,
+    4;365,497,338,303;,
+    4;338,269,274,303;,
+    4;274,281,267,303;,
+    4;357,155,215,292;,
+    4;215,257,259,292;,
+    4;259,269,338,292;,
+    4;162,160,210,212;,
+    4;210,226,241,212;,
+    4;241,257,215,212;,
+    4;118,14,1,115;,
+    4;1,3,107,115;,
+    4;107,378,380,115;,
+    4;29,155,106,20;,
+    4;106,88,17,20;,
+    4;17,3,1,20;,
+    4;357,497,536,374;,
+    4;536,526,354,374;,
+    4;354,88,106,374;,
+    4;512,349,380,525;,
+    4;380,378,504,525;,
+    4;504,526,536,525;,
+    4;410,543,481,337;,
+    4;130,55,8,85;,
+    4;131,276,316,133;,
+    4;258,466,499,375;,
+    4;98,444,81,10;,
+    4;12,276,131,124;,
+    4;364,353,513,522;,
+    4;517,506,345,347;,
+    4;171,140,32,72;,
+    4;74,40,156,174;,
+    4;306,330,479,402;,
+    4;392,469,317,302;,
+    4;386,297,197,332;,
+    4;177,102,104,73;,
+    4;82,178,268,137;,
+    4;300,362,361,397;,
+    4;75,287,238,154;,
+    4;213,196,172,296;,
+    4;390,183,222,319;,
+    4;254,271,305,179;,
+    4;510,484,480,508;,
+    4;480,444,481,508;,
+    4;481,543,524,508;,
+    4;457,417,433,454;,
+    4;433,407,451,454;,
+    4;451,444,480,454;,
+    4;539,529,524,537;,
+    4;524,543,532,537;,
+    4;532,534,538,537;,
+    4;495,506,513,496;,
+    4;513,353,341,496;,
+    4;341,398,515,496;,
+    4;451,407,421,445;,
+    4;421,405,439,445;,
+    4;439,276,81,445;,
+    4;532,543,499,521;,
+    4;499,466,514,521;,
+    4;514,518,523,521;,
+    4;316,276,456,473;,
+    4;456,446,467,473;,
+    4;467,475,491,473;,
+    4;439,405,416,432;,
+    4;416,437,422,432;,
+    4;422,446,456,432;,
+    4;514,466,491,501;,
+    4;491,475,492,501;,
+    4;492,489,503,501;,
+    4;481,444,345,337;,
+    4;345,506,495,337;,
+    4;495,530,410,337;,
+    4;8,70,90,85;,
+    4;90,234,203,85;,
+    4;203,189,130,85;,
+    4;316,466,258,133;,
+    4;258,398,341,133;,
+    4;341,353,131,133;,
+    4;499,543,410,375;,
+    4;410,530,515,375;,
+    4;515,398,258,375;,
+    4;81,276,12,10;,
+    4;12,40,32,10;,
+    4;32,140,98,10;,
+    4;131,353,364,124;,
+    4;364,330,156,124;,
+    4;156,40,12,124;,
+    4;513,506,517,522;,
+    4;517,469,479,522;,
+    4;479,330,364,522;,
+    4;345,444,98,347;,
+    4;98,140,317,347;,
+    4;317,469,517,347;,
+    4;32,40,74,72;,
+    4;74,102,197,72;,
+    4;197,297,171,72;,
+    4;156,330,306,174;,
+    4;306,178,104,174;,
+    4;104,102,74,174;,
+    4;479,469,392,402;,
+    4;392,362,268,402;,
+    4;268,178,306,402;,
+    4;317,140,171,302;,
+    4;171,297,361,302;,
+    4;361,362,392,302;,
+    4;197,102,177,332;,
+    4;177,196,238,332;,
+    4;238,287,386,332;,
+    4;104,178,82,73;,
+    4;82,183,172,73;,
+    4;172,196,177,73;,
+    4;268,362,300,137;,
+    4;300,271,222,137;,
+    4;222,183,82,137;,
+    4;361,297,386,397;,
+    4;386,287,305,397;,
+    4;305,271,300,397;,
+    4;238,196,213,154;,
+    4;213,70,8,154;,
+    4;8,55,75,154;,
+    4;172,183,390,296;,
+    4;390,234,90,296;,
+    4;90,70,213,296;,
+    4;222,271,254,319;,
+    4;254,189,203,319;,
+    4;203,234,390,319;,
+    4;305,287,75,179;,
+    4;75,55,130,179;,
+    4;130,189,254,179;;
+   }
+
+   MeshTextureCoords {
+    806;
+    0.821218;-0.442969;,
+    0.827949;-0.441019;,
+    0.832997;-0.436091;,
+    0.836045;-0.429982;,
+    0.836889;-0.419762;,
+    0.537973;-0.544379;,
+    0.530746;-0.547166;,
+    0.524975;-0.552532;,
+    0.521261;-0.559552;,
+    0.520015;-0.567414;,
+    0.520452;-0.574533;,
+    0.523560;-0.581142;,
+    0.528245;-0.586361;,
+    0.536458;-0.589388;,
+    0.545457;-0.590017;,
+    0.552256;-0.588339;,
+    0.558086;-0.584795;,
+    0.562420;-0.579737;,
+    0.807100;-0.439013;,
+    0.813970;-0.442398;,
+    0.829387;-0.460059;,
+    0.843005;-0.456919;,
+    0.854052;-0.448848;,
+    0.860069;-0.435068;,
+    0.863198;-0.417732;,
+    0.529927;-0.519616;,
+    0.515943;-0.526816;,
+    0.505891;-0.538799;,
+    0.499036;-0.552363;,
+    0.497658;-0.568492;,
+    0.503156;-0.581640;,
+    0.508551;-0.592415;,
+    0.515595;-0.602452;,
+    0.525022;-0.610361;,
+    0.540171;-0.613343;,
+    0.558545;-0.609855;,
+    0.570399;-0.601743;,
+    0.578625;-0.591511;,
+    0.801016;-0.451386;,
+    0.814697;-0.457837;,
+    0.598089;-0.543860;,
+    0.588821;-0.523690;,
+    0.871355;-0.456860;,
+    0.879017;-0.441176;,
+    0.885783;-0.426648;,
+    0.522641;-0.497192;,
+    0.505576;-0.512522;,
+    0.493574;-0.529718;,
+    0.483636;-0.547327;,
+    0.477281;-0.568358;,
+    0.485985;-0.590357;,
+    0.496630;-0.602888;,
+    0.509802;-0.615356;,
+    0.523721;-0.626850;,
+    0.541236;-0.635006;,
+    0.565608;-0.632104;,
+    0.583426;-0.619672;,
+    0.595507;-0.603776;,
+    0.600810;-0.585999;,
+    0.601740;-0.565663;,
+    0.618544;-0.537912;,
+    0.606786;-0.514204;,
+    0.591177;-0.498157;,
+    0.895875;-0.450301;,
+    0.908929;-0.437009;,
+    0.515917;-0.476497;,
+    0.495189;-0.498829;,
+    0.476647;-0.521474;,
+    0.461221;-0.541182;,
+    0.455149;-0.565686;,
+    0.464346;-0.596552;,
+    0.481505;-0.613877;,
+    0.499785;-0.630275;,
+    0.520547;-0.643393;,
+    0.544186;-0.654322;,
+    0.574257;-0.656051;,
+    0.597246;-0.638695;,
+    0.613831;-0.617090;,
+    0.622906;-0.592758;,
+    0.623388;-0.565693;,
+    0.639732;-0.533848;,
+    0.624146;-0.507371;,
+    0.602974;-0.487240;,
+    0.916302;-0.460244;,
+    0.545457;-0.452412;,
+    0.509920;-0.458041;,
+    0.480818;-0.483482;,
+    0.452514;-0.508205;,
+    0.429398;-0.528963;,
+    0.429758;-0.564594;,
+    0.443730;-0.601058;,
+    0.465494;-0.625510;,
+    0.488310;-0.646069;,
+    0.514831;-0.661672;,
+    0.545319;-0.674321;,
+    0.580995;-0.676786;,
+    0.611048;-0.657691;,
+    0.632684;-0.630788;,
+    0.646035;-0.600093;,
+    0.647477;-0.566575;,
+    0.660154;-0.529567;,
+    0.638165;-0.499673;,
+    0.614180;-0.472825;,
+    0.936130;-0.474760;,
+    0.545457;-0.435838;,
+    0.504798;-0.442278;,
+    0.463097;-0.460442;,
+    0.425321;-0.480905;,
+    0.411736;-0.522437;,
+    0.411751;-0.565403;,
+    0.425047;-0.606390;,
+    0.451024;-0.636171;,
+    0.477912;-0.660382;,
+    0.508940;-0.679443;,
+    0.545457;-0.694274;,
+    0.586116;-0.692549;,
+    0.622795;-0.673860;,
+    0.650080;-0.643426;,
+    0.667766;-0.607154;,
+    0.675819;-0.567409;,
+    0.855779;-0.498673;,
+    0.890029;-0.502037;,
+    0.921814;-0.500215;,
+    0.951151;-0.494750;,
+    0.545457;-0.422504;,
+    0.500678;-0.429596;,
+    0.448444;-0.423979;,
+    0.409714;-0.467878;,
+    0.392091;-0.517270;,
+    0.396054;-0.565916;,
+    0.410001;-0.611246;,
+    0.438490;-0.646201;,
+    0.466903;-0.675537;,
+    0.503527;-0.693703;,
+    0.545457;-0.709055;,
+    0.590237;-0.705231;,
+    0.630633;-0.684648;,
+    0.728158;-0.494750;,
+    0.768554;-0.494750;,
+    0.813334;-0.494750;,
+    0.859534;-0.519993;,
+    0.897397;-0.522085;,
+    0.933510;-0.520303;,
+    0.960439;-0.518327;,
+    0.220304;-0.389595;,
+    0.495962;-0.412499;,
+    0.117491;-0.397515;,
+    0.070739;-0.401402;,
+    0.369897;-0.511662;,
+    0.380764;-0.566937;,
+    0.399206;-0.614844;,
+    0.233491;-0.461795;,
+    0.448205;-0.701245;,
+    0.499287;-0.702145;,
+    0.026239;-0.814480;,
+    0.025506;-0.766662;,
+    0.025506;-0.723543;,
+    0.722417;-0.518327;,
+    0.765536;-0.518327;,
+    0.813334;-0.518327;,
+    0.861507;-0.543888;,
+    0.902179;-0.544633;,
+    0.939151;-0.543947;,
+    0.966105;-0.543143;,
+    0.220304;-0.364780;,
+    0.169820;-0.364963;,
+    0.116462;-0.366491;,
+    0.061914;-0.371778;,
+    0.347364;-0.505779;,
+    0.368557;-0.568270;,
+    0.197194;-0.480339;,
+    0.242362;-0.483401;,
+    0.435370;-0.718765;,
+    0.056228;-0.864920;,
+    0.051114;-0.814697;,
+    0.050322;-0.764821;,
+    0.050322;-0.720041;,
+    0.718915;-0.543143;,
+    0.763695;-0.543143;,
+    0.813334;-0.543143;,
+    0.863591;-0.568585;,
+    0.908929;-0.568585;,
+    0.944909;-0.568585;,
+    0.270561;-0.339338;,
+    0.220304;-0.339338;,
+    0.170047;-0.339338;,
+    0.118751;-0.337664;,
+    0.057721;-0.337234;,
+    0.001928;-0.339220;,
+    0.153257;-0.503929;,
+    0.198358;-0.506276;,
+    0.391118;-0.676470;,
+    0.427018;-0.730920;,
+    0.489210;-0.744869;,
+    0.544038;-0.723716;,
+    0.075764;-0.764202;,
+    0.075764;-0.718864;,
+    0.717738;-0.568585;,
+    0.763076;-0.568585;,
+    0.813334;-0.568585;,
+    0.862972;-0.594027;,
+    0.907752;-0.594027;,
+    0.943289;-0.594027;,
+    0.269943;-0.313896;,
+    0.220304;-0.313896;,
+    0.170665;-0.313896;,
+    0.124201;-0.312360;,
+    0.065809;-0.300682;,
+    0.005408;-0.288381;,
+    0.150294;-0.534572;,
+    0.200675;-0.531999;,
+    0.268431;-0.525605;,
+    0.100690;-0.935447;,
+    0.105718;-0.869441;,
+    0.101205;-0.814459;,
+    0.101205;-0.764821;,
+    0.101205;-0.720041;,
+    0.718915;-0.594027;,
+    0.763695;-0.594027;,
+    0.813334;-0.594027;,
+    0.596961;-0.069941;,
+    0.816312;-0.901544;,
+    0.311220;-0.289080;,
+    0.268102;-0.289080;,
+    0.220304;-0.289080;,
+    0.172506;-0.289080;,
+    0.129388;-0.289080;,
+    0.083792;-0.275848;,
+    0.041501;-0.260090;,
+    0.146703;-0.560424;,
+    0.200618;-0.561898;,
+    0.279009;-0.564569;,
+    0.138625;-0.931224;,
+    0.137937;-0.865888;,
+    0.126021;-0.814459;,
+    0.126021;-0.766662;,
+    0.126021;-0.723543;,
+    0.722417;-0.618842;,
+    0.765536;-0.618842;,
+    0.813334;-0.618842;,
+    0.861681;-0.645867;,
+    0.908470;-0.645300;,
+    0.305480;-0.265502;,
+    0.265084;-0.265502;,
+    0.220292;-0.265273;,
+    0.175524;-0.265502;,
+    0.135128;-0.265502;,
+    0.101959;-0.263867;,
+    0.880015;-0.823532;,
+    0.875965;-0.776789;,
+    0.194807;-0.607381;,
+    0.277057;-0.615981;,
+    0.176043;-0.919371;,
+    0.168807;-0.862479;,
+    0.157353;-0.812563;,
+    0.149599;-0.769680;,
+    0.149599;-0.729283;,
+    0.728158;-0.642420;,
+    0.768554;-0.642420;,
+    0.813334;-0.642420;,
+    0.853993;-0.664180;,
+    0.890672;-0.664180;,
+    0.919780;-0.664180;,
+    0.946329;-0.669096;,
+    0.219551;-0.240735;,
+    0.178299;-0.242697;,
+    0.142066;-0.243270;,
+    0.113857;-0.243743;,
+    0.106790;-0.601430;,
+    0.147371;-0.603151;,
+    0.188828;-0.631601;,
+    0.252079;-0.651500;,
+    0.204405;-0.902350;,
+    0.193122;-0.856385;,
+    0.183547;-0.811559;,
+    0.171359;-0.773800;,
+    0.171359;-0.737121;,
+    0.735995;-0.664180;,
+    0.772675;-0.664180;,
+    0.813334;-0.664180;,
+    0.848871;-0.683586;,
+    0.880930;-0.683586;,
+    0.906371;-0.683586;,
+    0.945660;-0.700596;,
+    0.218156;-0.212357;,
+    0.176736;-0.216557;,
+    0.139513;-0.218000;,
+    0.112342;-0.218389;,
+    0.111369;-0.622817;,
+    0.147449;-0.620836;,
+    0.265591;-0.857476;,
+    0.279132;-0.818340;,
+    0.311999;-0.789854;,
+    0.347452;-0.778172;,
+    0.383222;-0.779560;,
+    0.418703;-0.785415;,
+    0.190765;-0.746863;,
+    0.745738;-0.683586;,
+    0.777796;-0.683586;,
+    0.813334;-0.683586;,
+    0.842874;-0.700160;,
+    0.869523;-0.700160;,
+    0.893777;-0.705374;,
+    0.935072;-0.731792;,
+    0.219157;-0.179260;,
+    0.178713;-0.181606;,
+    0.136061;-0.183210;,
+    0.105854;-0.188822;,
+    0.119052;-0.648745;,
+    0.147794;-0.638824;,
+    0.177314;-0.639121;,
+    0.303817;-0.837040;,
+    0.326083;-0.816019;,
+    0.353625;-0.803871;,
+    0.383165;-0.799192;,
+    0.207339;-0.784919;,
+    0.207339;-0.758270;,
+    0.460503;-0.838598;,
+    0.783793;-0.700160;,
+    0.813334;-0.700160;,
+    0.836150;-0.713495;,
+    0.858501;-0.719299;,
+    0.884770;-0.739003;,
+    0.909590;-0.756443;,
+    0.222134;-0.149728;,
+    0.188276;-0.137403;,
+    0.314799;-0.985806;,
+    0.093358;-0.698148;,
+    0.133153;-0.675796;,
+    0.152824;-0.659641;,
+    0.170266;-0.650745;,
+    0.323431;-0.851388;,
+    0.339766;-0.835053;,
+    0.360349;-0.824566;,
+    0.220673;-0.814459;,
+    0.220673;-0.791643;,
+    0.426565;-0.835053;,
+    0.442899;-0.851388;,
+    0.453387;-0.871971;,
+    0.813334;-0.713495;,
+    0.830032;-0.741947;,
+    0.846776;-0.753317;,
+    0.862905;-0.768475;,
+    0.875121;-0.772925;,
+    0.386850;-0.961472;,
+    0.364460;-0.963017;,
+    0.341151;-0.951183;,
+    0.118755;-0.715000;,
+    0.144310;-0.698024;,
+    0.158992;-0.679737;,
+    0.910935;-0.906905;,
+    0.342475;-0.865207;,
+    0.353625;-0.854128;,
+    0.367635;-0.846990;,
+    0.383165;-0.844530;,
+    0.398696;-0.846990;,
+    0.412706;-0.854128;,
+    0.425491;-0.862899;,
+    0.792446;-0.738648;,
+    0.811463;-0.741630;,
+    0.816366;-0.763695;,
+    0.825039;-0.767781;,
+    0.832994;-0.772145;,
+    0.395379;-0.919573;,
+    0.386656;-0.921155;,
+    0.376559;-0.919116;,
+    0.366278;-0.913207;,
+    0.357275;-0.903379;,
+    0.351521;-0.891553;,
+    0.351070;-0.882835;,
+    0.929806;-0.885019;,
+    0.359655;-0.873322;,
+    0.367073;-0.869918;,
+    0.374901;-0.867857;,
+    0.382787;-0.866899;,
+    0.391062;-0.867116;,
+    0.399011;-0.868920;,
+    0.405698;-0.872672;,
+    0.411030;-0.879057;,
+    0.414478;-0.888091;,
+    0.813334;-0.423628;,
+    0.383274;-0.885859;,
+    0.177900;-0.037188;,
+    0.643378;-0.876161;,
+    0.808847;-0.870915;,
+    0.769716;-0.870952;,
+    0.201702;-0.165149;,
+    0.198935;-0.180433;,
+    0.183197;-0.164431;,
+    0.368344;-0.996539;,
+    0.220645;-0.164494;,
+    0.163087;-0.164092;,
+    0.157387;-0.182408;,
+    0.144445;-0.163819;,
+    0.167415;-0.132711;,
+    0.127599;-0.165418;,
+    0.120958;-0.186016;,
+    0.085001;-0.677250;,
+    0.299188;-0.965282;,
+    0.371669;-0.980362;,
+    0.745678;-0.776789;,
+    0.375578;-0.960776;,
+    0.385923;-0.979740;,
+    0.171290;-0.001992;,
+    0.165562;-0.024790;,
+    0.649151;-0.894241;,
+    0.817566;-0.884689;,
+    0.184844;-0.019641;,
+    0.312529;-0.952222;,
+    0.106056;-0.706574;,
+    0.330179;-0.936611;,
+    0.323234;-0.969470;,
+    0.378481;-0.942230;,
+    0.370479;-0.939283;,
+    0.381608;-0.920136;,
+    0.386753;-0.941313;,
+    0.361564;-0.936746;,
+    0.354775;-0.956194;,
+    0.353708;-0.930173;,
+    0.371419;-0.916162;,
+    0.344677;-0.923685;,
+    0.339235;-0.913430;,
+    0.361776;-0.908293;,
+    0.166255;-0.077320;,
+    0.657225;-0.837567;,
+    0.182246;-0.076683;,
+    0.672752;-0.844323;,
+    0.811281;-0.835483;,
+    0.823457;-0.836487;,
+    0.750992;-0.835028;,
+    0.766775;-0.827904;,
+    0.483213;-0.982581;,
+    0.502089;-0.013927;,
+    0.504121;-0.936163;,
+    0.496312;-0.984712;,
+    0.602724;-0.879600;,
+    0.777310;-0.124701;,
+    0.511205;-0.818920;,
+    0.384590;-0.051126;,
+    0.554197;-0.748733;,
+    0.839052;-0.213545;,
+    0.290490;-0.448714;,
+    0.322848;-0.139970;,
+    0.966105;-0.862516;,
+    0.827241;-0.320056;,
+    0.323741;-0.555224;,
+    0.334659;-0.246481;,
+    0.328210;-0.711452;,
+    0.867095;-0.899210;,
+    0.289910;-0.660957;,
+    0.303009;-0.656567;,
+    0.884043;-0.606280;,
+    0.885362;-0.594027;,
+    0.904878;-0.606357;,
+    0.572360;-0.074372;,
+    0.861461;-0.606357;,
+    0.923466;-0.606280;,
+    0.925520;-0.594027;,
+    0.312971;-0.301488;,
+    0.823235;-0.898366;,
+    0.837698;-0.606280;,
+    0.838153;-0.594027;,
+    0.837164;-0.618587;,
+    0.813334;-0.606434;,
+    0.499622;-0.960820;,
+    0.485297;-0.965505;,
+    0.500903;-0.927837;,
+    0.502980;-0.968789;,
+    0.494138;-0.982806;,
+    0.820204;-0.910162;,
+    0.308350;-0.277291;,
+    0.914281;-0.642048;,
+    0.825082;-0.911443;,
+    0.836494;-0.630382;,
+    0.927259;-0.847306;,
+    0.835666;-0.642048;,
+    0.813334;-0.630631;,
+    0.875412;-0.652970;,
+    0.883879;-0.650728;,
+    0.893654;-0.653135;,
+    0.872332;-0.664180;,
+    0.855561;-0.653135;,
+    0.910024;-0.652970;,
+    0.925174;-0.653300;,
+    0.905226;-0.664180;,
+    0.834724;-0.652970;,
+    0.833663;-0.664180;,
+    0.813334;-0.653300;,
+    0.553821;-0.037988;,
+    0.520293;-0.049971;,
+    0.570368;-0.030910;,
+    0.292828;-0.714739;,
+    0.318969;-0.735736;,
+    0.889090;-0.885019;,
+    0.284948;-0.661641;,
+    0.310800;-0.695725;,
+    0.645758;-0.040137;,
+    0.953174;-0.817256;,
+    0.678265;-0.051600;,
+    0.944332;-0.811200;,
+    0.602109;-0.811077;,
+    0.717232;-0.101465;,
+    0.605895;-0.871155;,
+    0.598937;-0.819521;,
+    0.735391;-0.065405;,
+    0.507418;-0.878998;,
+    0.795469;-0.088641;,
+    0.504247;-0.870553;,
+    0.444669;-0.027890;,
+    0.508033;-0.810475;,
+    0.462828;-0.063950;,
+    0.402749;-0.087186;,
+    0.608502;-0.912521;,
+    0.818676;-0.164457;,
+    0.557369;-0.764045;,
+    0.605331;-0.920966;,
+    0.836835;-0.128398;,
+    0.513812;-0.777554;,
+    0.857212;-0.177486;,
+    0.510640;-0.769109;,
+    0.343224;-0.090882;,
+    0.293662;-0.433402;,
+    0.361383;-0.126942;,
+    0.341007;-0.176030;,
+    0.536430;-0.815277;,
+    0.836160;-0.264777;,
+    0.962934;-0.877828;,
+    0.533258;-0.799965;,
+    0.854319;-0.228718;,
+    0.311429;-0.499946;,
+    0.845400;-0.283996;,
+    0.314600;-0.484634;,
+    0.325740;-0.191202;,
+    0.326912;-0.539912;,
+    0.343899;-0.227262;,
+    0.352818;-0.282541;,
+    0.942691;-0.939056;,
+    0.829537;-0.381284;,
+    0.945862;-0.923743;,
+    0.847696;-0.345224;,
+    0.303497;-0.616452;,
+    0.306669;-0.601140;,
+    0.332364;-0.307709;,
+    0.350523;-0.343769;,
+    0.545351;-0.543858;,
+    0.544712;-0.517549;,
+    0.801010;-0.434858;,
+    0.789236;-0.441704;,
+    0.578131;-0.551360;,
+    0.571845;-0.537742;,
+    0.857057;-0.468029;,
+    0.545322;-0.494964;,
+    0.581186;-0.579731;,
+    0.581145;-0.566051;,
+    0.576667;-0.509392;,
+    0.882590;-0.462157;,
+    0.545457;-0.471818;,
+    0.893507;-0.471151;,
+    0.571770;-0.484872;,
+    0.578914;-0.464445;,
+    0.907922;-0.483537;,
+    0.585356;-0.444617;,
+    0.851180;-0.482686;,
+    0.881074;-0.485791;,
+    0.590237;-0.429596;,
+    0.706887;-0.472990;,
+    0.737321;-0.474612;,
+    0.696099;-0.494750;,
+    0.773593;-0.475129;,
+    0.813339;-0.473893;,
+    0.265084;-0.413173;,
+    0.220304;-0.413173;,
+    0.268102;-0.389595;,
+    0.545457;-0.412737;,
+    0.175524;-0.413173;,
+    0.123291;-0.429538;,
+    0.170809;-0.391945;,
+    0.084561;-0.425591;,
+    0.395893;-0.455615;,
+    0.191281;-0.433402;,
+    0.226237;-0.439336;,
+    0.194880;-0.455972;,
+    0.430654;-0.653455;,
+    0.009135;-0.856390;,
+    0.003579;-0.814459;,
+    0.031604;-0.860629;,
+    0.001928;-0.769680;,
+    0.001928;-0.729283;,
+    0.688198;-0.518327;,
+    0.269943;-0.364780;,
+    0.387068;-0.446064;,
+    0.146973;-0.452389;,
+    0.148306;-0.477507;,
+    0.418276;-0.662327;,
+    0.020901;-0.911711;,
+    0.037782;-0.924547;,
+    0.683378;-0.543143;,
+    0.311716;-0.363976;,
+    0.315899;-0.339338;,
+    0.022210;-0.376067;,
+    0.085815;-0.469106;,
+    0.080762;-0.505953;,
+    0.392359;-0.617158;,
+    0.388849;-0.618322;,
+    0.494996;-0.711068;,
+    0.545220;-0.725263;,
+    0.076763;-0.815878;,
+    0.681758;-0.568585;,
+    0.314722;-0.313896;,
+    0.082159;-0.556792;,
+    0.256505;-0.498904;,
+    0.068832;-0.968799;,
+    0.064693;-0.932899;,
+    0.095534;-0.985426;,
+    0.074198;-0.870706;,
+    0.683378;-0.594027;,
+    0.091366;-0.585083;,
+    0.134498;-0.993950;,
+    0.688198;-0.618842;,
+    0.887741;-0.881155;,
+    0.845450;-0.832830;,
+    0.905908;-0.863105;,
+    0.859041;-0.777493;,
+    0.147407;-0.581384;,
+    0.185909;-0.985145;,
+    0.696099;-0.642420;,
+    0.930568;-0.642420;,
+    0.951151;-0.642420;,
+    0.263648;-0.238826;,
+    0.061091;-0.581305;,
+    0.100664;-0.587393;,
+    0.070111;-0.601430;,
+    0.221428;-0.952467;,
+    0.706887;-0.664180;,
+    0.266194;-0.207326;,
+    0.071852;-0.626784;,
+    0.249292;-0.894865;,
+    0.228515;-0.853409;,
+    0.268164;-0.894787;,
+    0.245158;-0.790157;,
+    0.295275;-0.758258;,
+    0.341239;-0.748733;,
+    0.386066;-0.751155;,
+    0.423824;-0.769651;,
+    0.190765;-0.778922;,
+    0.720296;-0.683586;,
+    0.267424;-0.176130;,
+    0.076645;-0.656351;,
+    0.184761;-0.631343;,
+    0.291161;-0.864922;,
+    0.191102;-0.814402;,
+    0.207339;-0.814459;,
+    0.450761;-0.801749;,
+    0.476203;-0.827191;,
+    0.439355;-0.817449;,
+    0.757144;-0.700160;,
+    0.257433;-0.151479;,
+    0.312944;-0.871971;,
+    0.207339;-0.844000;,
+    0.220673;-0.837276;,
+    0.412706;-0.803871;,
+    0.405982;-0.824566;,
+    0.474082;-0.865247;,
+    0.790517;-0.713495;,
+    0.420295;-0.991044;,
+    0.384996;-0.998008;,
+    0.407408;-0.956575;,
+    0.904213;-0.938571;,
+    0.895317;-0.926196;,
+    0.924309;-0.918198;,
+    0.332234;-0.875252;,
+    0.383165;-0.820952;,
+    0.769934;-0.713495;,
+    0.781446;-0.728825;,
+    0.429498;-0.944358;,
+    0.403768;-0.914448;,
+    0.321195;-0.923481;,
+    0.313495;-0.897926;,
+    0.320941;-0.883245;,
+    0.936751;-0.888070;,
+    0.354120;-0.876979;,
+    0.438072;-0.873900;,
+    0.442957;-0.892916;,
+    0.806638;-0.757951;,
+    0.836368;-0.415301;,
+    0.833581;-0.410442;,
+    0.545457;-0.567414;,
+    0.795952;-0.431744;,
+    0.414749;-0.897819;,
+    0.410881;-0.906493;,
+    0.681423;-0.776789;,
+    0.697760;-0.793031;,
+    0.814699;-0.778987;,
+    0.828322;-0.785532;,
+    0.722818;-0.778653;,
+    0.205483;-0.150469;,
+    0.151938;-0.134406;,
+    0.111431;-0.167923;,
+    0.117009;-0.147024;,
+    0.136327;-0.148061;,
+    0.857298;-0.915723;,
+    0.836774;-0.929378;,
+    0.831021;-0.899965;,
+    0.846675;-0.898366;,
+    0.198127;-0.121570;,
+    0.208808;-0.140122;,
+    0.360988;-0.985877;,
+    0.630372;-0.886405;,
+    0.636123;-0.909203;,
+    0.798284;-0.879540;,
+    0.807699;-0.894503;,
+    0.768473;-0.886553;,
+    0.787252;-0.878717;,
+    0.790907;-0.896366;,
+    0.279870;-0.948879;,
+    0.300533;-0.936180;,
+    0.155462;-0.073628;,
+    0.159191;-0.035034;,
+    0.716046;-0.793687;,
+    0.685155;-0.850183;,
+    0.664143;-0.885615;,
+    0.838007;-0.776789;,
+    0.830436;-0.833164;,
+    0.741736;-0.838351;,
+    0.191965;-0.070455;,
+    0.650748;-0.096795;,
+    0.626157;-0.078606;,
+    0.936887;-0.858652;,
+    0.588866;-0.754391;,
+    0.598764;-0.763161;,
+    0.914128;-0.621764;,
+    0.889321;-0.621372;,
+    0.864720;-0.622350;,
+    0.940879;-0.606434;,
+    0.938469;-0.618842;,
+    0.921052;-0.618587;,
+    0.486437;-0.932113;,
+    0.934519;-0.630631;,
+    0.918021;-0.630382;,
+    0.816464;-0.921828;,
+    0.810653;-0.925080;,
+    0.860132;-0.636239;,
+    0.547552;-0.095382;,
+    0.535480;-0.001992;,
+    0.552557;-0.006458;,
+    0.863237;-0.919104;,
+    0.889378;-0.898107;,
+    0.293117;-0.701651;,
+    0.603959;-0.072653;,
+    0.630987;-0.031257;,
+    0.649271;-0.004941;,
+    0.665194;-0.001992;,
+    0.697820;-0.013537;,
+    0.913370;-0.849494;,
+    0.935490;-0.810463;,
+    0.950356;-0.786011;,
+    0.961281;-0.776789;,
+    0.963455;-0.790939;,
+    0.612401;-0.748733;,
+    0.616621;-0.815216;,
+    0.620407;-0.875295;,
+    0.754985;-0.027370;,
+    0.815063;-0.050606;,
+    0.489735;-0.874693;,
+    0.493521;-0.814615;,
+    0.482422;-0.101985;,
+    0.422344;-0.125221;,
+    0.623014;-0.916661;,
+    0.617380;-0.937037;,
+    0.602868;-0.932897;,
+    0.599696;-0.941342;,
+    0.856430;-0.090362;,
+    0.876806;-0.139450;,
+    0.496128;-0.773248;,
+    0.490494;-0.752872;,
+    0.505006;-0.748733;,
+    0.508177;-0.757178;,
+    0.380977;-0.164978;,
+    0.360601;-0.214066;,
+    0.571880;-0.754658;,
+    0.550942;-0.805891;,
+    0.538630;-0.861169;,
+    0.524118;-0.870555;,
+    0.520946;-0.855243;,
+    0.873914;-0.190682;,
+    0.864995;-0.245961;,
+    0.308174;-0.442788;,
+    0.329112;-0.494020;,
+    0.341424;-0.549298;,
+    0.363493;-0.265298;,
+    0.372412;-0.320576;,
+    0.558873;-0.922397;,
+    0.544361;-0.931783;,
+    0.581281;-0.947692;,
+    0.577423;-0.967585;,
+    0.568182;-0.943302;,
+    0.541190;-0.916471;,
+    0.867290;-0.307189;,
+    0.867345;-0.351693;,
+    0.854340;-0.392388;,
+    0.839379;-0.406579;,
+    0.321181;-0.610526;,
+    0.370117;-0.381804;,
+    0.361391;-0.408635;,
+    0.345313;-0.392908;,
+    0.333425;-0.353750;;
+   }
+
+   MeshMaterialList {
+    1;
+    550;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material surfaceShader1SG {
+     0.500000;0.500000;0.500000;1.000000;;
+     1.000000;
+     0.500000;0.500000;0.500000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    806;
+    544;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    182,
+    183,
+    184,
+    185,
+    186,
+    187,
+    188,
+    189,
+    190,
+    191,
+    192,
+    193,
+    194,
+    195,
+    196,
+    197,
+    198,
+    199,
+    200,
+    201,
+    202,
+    203,
+    204,
+    205,
+    206,
+    207,
+    208,
+    209,
+    210,
+    211,
+    212,
+    213,
+    214,
+    215,
+    216,
+    217,
+    218,
+    219,
+    220,
+    221,
+    222,
+    223,
+    224,
+    225,
+    226,
+    227,
+    228,
+    229,
+    230,
+    231,
+    232,
+    233,
+    234,
+    235,
+    236,
+    237,
+    238,
+    239,
+    240,
+    241,
+    242,
+    243,
+    244,
+    245,
+    246,
+    247,
+    248,
+    249,
+    250,
+    251,
+    252,
+    253,
+    254,
+    255,
+    256,
+    257,
+    258,
+    259,
+    260,
+    261,
+    262,
+    263,
+    264,
+    265,
+    266,
+    267,
+    268,
+    269,
+    270,
+    271,
+    272,
+    273,
+    274,
+    275,
+    276,
+    277,
+    278,
+    279,
+    280,
+    281,
+    282,
+    283,
+    284,
+    285,
+    286,
+    287,
+    288,
+    289,
+    290,
+    291,
+    292,
+    293,
+    294,
+    295,
+    296,
+    297,
+    298,
+    299,
+    300,
+    301,
+    302,
+    303,
+    304,
+    305,
+    306,
+    307,
+    308,
+    309,
+    310,
+    311,
+    312,
+    313,
+    314,
+    315,
+    316,
+    317,
+    318,
+    319,
+    320,
+    321,
+    322,
+    323,
+    324,
+    325,
+    326,
+    327,
+    328,
+    329,
+    330,
+    331,
+    332,
+    333,
+    334,
+    335,
+    336,
+    337,
+    338,
+    339,
+    340,
+    341,
+    342,
+    343,
+    344,
+    345,
+    346,
+    347,
+    348,
+    349,
+    350,
+    351,
+    352,
+    353,
+    354,
+    355,
+    356,
+    357,
+    358,
+    359,
+    360,
+    361,
+    362,
+    363,
+    364,
+    365,
+    366,
+    367,
+    368,
+    369,
+    370,
+    371,
+    372,
+    373,
+    374,
+    375,
+    376,
+    377,
+    378,
+    379,
+    380,
+    381,
+    382,
+    383,
+    384,
+    385,
+    386,
+    387,
+    388,
+    389,
+    390,
+    391,
+    392,
+    393,
+    394,
+    395,
+    396,
+    397,
+    398,
+    399,
+    400,
+    401,
+    402,
+    403,
+    404,
+    405,
+    406,
+    407,
+    408,
+    409,
+    410,
+    411,
+    412,
+    413,
+    414,
+    415,
+    416,
+    417,
+    418,
+    419,
+    420,
+    421,
+    422,
+    423,
+    424,
+    425,
+    426,
+    427,
+    428,
+    429,
+    430,
+    431,
+    432,
+    433,
+    434,
+    435,
+    436,
+    437,
+    438,
+    439,
+    440,
+    441,
+    442,
+    443,
+    444,
+    445,
+    446,
+    447,
+    448,
+    449,
+    450,
+    451,
+    452,
+    453,
+    454,
+    455,
+    456,
+    457,
+    458,
+    459,
+    460,
+    461,
+    462,
+    463,
+    464,
+    465,
+    466,
+    467,
+    468,
+    469,
+    470,
+    471,
+    472,
+    473,
+    474,
+    475,
+    476,
+    477,
+    478,
+    479,
+    480,
+    481,
+    482,
+    483,
+    484,
+    485,
+    486,
+    487,
+    488,
+    489,
+    490,
+    491,
+    492,
+    493,
+    494,
+    495,
+    496,
+    497,
+    498,
+    499,
+    500,
+    501,
+    502,
+    503,
+    504,
+    505,
+    506,
+    507,
+    508,
+    509,
+    510,
+    511,
+    512,
+    513,
+    514,
+    515,
+    516,
+    517,
+    518,
+    519,
+    520,
+    521,
+    522,
+    523,
+    524,
+    525,
+    526,
+    527,
+    528,
+    529,
+    530,
+    531,
+    532,
+    533,
+    534,
+    535,
+    536,
+    537,
+    538,
+    539,
+    540,
+    541,
+    542,
+    543,
+    4,
+    24,
+    17,
+    37,
+    20,
+    21,
+    41,
+    44,
+    38,
+    39,
+    42,
+    62,
+    64,
+    82,
+    63,
+    83,
+    102,
+    103,
+    100,
+    101,
+    123,
+    116,
+    117,
+    136,
+    118,
+    119,
+    123,
+    124,
+    143,
+    144,
+    125,
+    126,
+    145,
+    127,
+    147,
+    130,
+    131,
+    150,
+    151,
+    133,
+    134,
+    153,
+    135,
+    136,
+    156,
+    163,
+    167,
+    149,
+    169,
+    171,
+    152,
+    172,
+    176,
+    162,
+    182,
+    168,
+    168,
+    188,
+    170,
+    190,
+    173,
+    174,
+    194,
+    196,
+    202,
+    208,
+    191,
+    191,
+    192,
+    211,
+    193,
+    216,
+    228,
+    231,
+    236,
+    227,
+    228,
+    247,
+    229,
+    249,
+    251,
+    256,
+    242,
+    243,
+    263,
+    247,
+    248,
+    267,
+    271,
+    276,
+    283,
+    287,
+    269,
+    270,
+    289,
+    271,
+    272,
+    273,
+    274,
+    275,
+    295,
+    296,
+    303,
+    307,
+    290,
+    310,
+    294,
+    314,
+    296,
+    297,
+    316,
+    317,
+    323,
+    330,
+    313,
+    333,
+    315,
+    335,
+    318,
+    338,
+    323,
+    324,
+    343,
+    329,
+    330,
+    349,
+    350,
+    334,
+    337,
+    357,
+    342,
+    362,
+    347,
+    348,
+    349,
+    369,
+    370,
+    358,
+    359,
+    379,
+    5,
+    6,
+    380,
+    16,
+    360,
+    361,
+    326,
+    411,
+    346,
+    417,
+    345,
+    389,
+    326,
+    397,
+    327,
+    398,
+    398,
+    326,
+    393,
+    395,
+    400,
+    399,
+    400,
+    404,
+    403,
+    405,
+    403,
+    406,
+    407,
+    403,
+    327,
+    409,
+    424,
+    383,
+    346,
+    427,
+    384,
+    345,
+    429,
+    428,
+    430,
+    241,
+    478,
+    240,
+    221,
+    472,
+    221,
+    454,
+    220,
+    458,
+    222,
+    459,
+    432,
+    470,
+    469,
+    471,
+    241,
+    474,
+    221,
+    465,
+    431,
+    492,
+    491,
+    493,
+    240,
+    497,
+    434,
+    467,
+    433,
+    220,
+    490,
+    431,
+    468,
+    434,
+    241,
+    501,
+    436,
+    505,
+    437,
+    508,
+    438,
+    503,
+    435,
+    513,
+    440,
+    514,
+    439,
+    517,
+    441,
+    520,
+    442,
+    521,
+    441,
+    515,
+    439,
+    440,
+    525,
+    444,
+    526,
+    443,
+    529,
+    445,
+    442,
+    532,
+    446,
+    527,
+    443,
+    537,
+    536,
+    448,
+    492,
+    447,
+    538,
+    540,
+    449,
+    493,
+    448,
+    542,
+    538,
+    447,
+    495,
+    450;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/cube.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/cube.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/cube.x	(revision 1481)
@@ -0,0 +1,219 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.707107,0.000000,-0.707107,0.000000,-0.331295,0.883452,-0.331295,0.000000,0.624695,0.468521,0.624695,0.000000,5.239926,3.929945,5.239926,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsCube1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pCube1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pCubeShape1 {
+   24;
+   -0.500000;-0.500000;0.500000;,
+   0.500000;-0.500000;0.500000;,
+   -0.500000;0.500000;0.500000;,
+   0.500000;0.500000;0.500000;,
+   -0.500000;0.500000;-0.500000;,
+   0.500000;0.500000;-0.500000;,
+   -0.500000;-0.500000;-0.500000;,
+   0.500000;-0.500000;-0.500000;,
+   -0.500000;0.500000;0.500000;,
+   0.500000;0.500000;0.500000;,
+   -0.500000;0.500000;-0.500000;,
+   0.500000;0.500000;-0.500000;,
+   -0.500000;-0.500000;-0.500000;,
+   0.500000;-0.500000;-0.500000;,
+   0.500000;-0.500000;0.500000;,
+   -0.500000;-0.500000;0.500000;,
+   0.500000;-0.500000;0.500000;,
+   0.500000;-0.500000;-0.500000;,
+   0.500000;0.500000;-0.500000;,
+   0.500000;0.500000;0.500000;,
+   -0.500000;-0.500000;-0.500000;,
+   -0.500000;-0.500000;0.500000;,
+   -0.500000;0.500000;0.500000;,
+   -0.500000;0.500000;-0.500000;;
+   6;
+   4;0,1,3,2;,
+   4;8,9,5,4;,
+   4;10,11,7,6;,
+   4;12,13,14,15;,
+   4;16,17,18,19;,
+   4;20,21,22,23;;
+
+   MeshNormals {
+    6;
+    -1.000000;0.000000;0.000000;,
+    0.000000;-1.000000;0.000000;,
+    0.000000;0.000000;-1.000000;,
+    0.000000;0.000000;1.000000;,
+    0.000000;1.000000;0.000000;,
+    1.000000;0.000000;0.000000;;
+    6;
+    4;3,3,3,3;,
+    4;4,4,4,4;,
+    4;2,2,2,2;,
+    4;1,1,1,1;,
+    4;5,5,5,5;,
+    4;0,0,0,0;;
+   }
+
+   MeshTextureCoords {
+    24;
+    0.001890;-0.001992;,
+    0.331370;-0.001992;,
+    0.001890;-0.331472;,
+    0.331370;-0.331472;,
+    0.338705;-0.331472;,
+    0.668185;-0.331472;,
+    0.617659;-0.664740;,
+    0.947139;-0.664740;,
+    0.338705;-0.001992;,
+    0.668185;-0.001992;,
+    0.617659;-0.335260;,
+    0.947139;-0.335260;,
+    0.282356;-0.335260;,
+    0.611836;-0.335260;,
+    0.611836;-0.664740;,
+    0.282356;-0.664740;,
+    0.001891;-0.668528;,
+    0.331370;-0.668528;,
+    0.331370;-0.998008;,
+    0.001891;-0.998008;,
+    0.338705;-0.668528;,
+    0.668185;-0.668528;,
+    0.668185;-0.998008;,
+    0.338705;-0.998008;;
+   }
+
+   MeshMaterialList {
+    1;
+    6;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.800000;0.800000;0.800000;1.000000;;
+     0.000000;
+     0.000000;0.000000;0.000000;;
+     0.000000;0.000000;0.000000;;
+
+     TextureFilename {
+      "C:/home/blade/EnvMapDemo3/doom3.bmp";
+     }
+    }
+   }
+
+   VertexDuplicationIndices {
+    24;
+    8;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    1,
+    0,
+    1,
+    7,
+    5,
+    3,
+    6,
+    0,
+    2,
+    4;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/medisphere.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/medisphere.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/medisphere.x	(revision 1481)
@@ -0,0 +1,2010 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.218143,-0.000000,-0.975917,0.000000,-0.457238,0.883452,0.102205,0.000000,0.862176,0.468521,-0.192719,0.000000,23.940504,12.920952,-3.921186,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsCube1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsToPoly1 {
+  
+
+  FrameTransformMatrix {
+   3.708640,0.000000,0.000000,0.000000,0.000000,3.211225,0.000000,0.000000,0.000000,0.000000,3.582347,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh nurbsToPolyShape1 {
+   219;
+   1.000000;-0.000000;0.000000;,
+   -1.000000;-0.000000;-0.000000;,
+   0.000000;-0.000000;1.000000;,
+   0.707371;-0.706844;-0.000000;,
+   0.000000;-0.706844;0.707371;,
+   0.500187;-0.706844;0.500187;,
+   0.258357;-0.964280;-0.000000;,
+   0.182686;-0.964280;0.182686;,
+   0.238416;-0.964280;0.098755;,
+   0.652773;-0.706844;0.270388;,
+   0.499333;-0.864208;-0.000000;,
+   0.460792;-0.864208;0.190866;,
+   0.353082;-0.864208;0.353082;,
+   0.000000;-0.964280;0.258357;,
+   0.098755;-0.964280;0.238416;,
+   0.270388;-0.706844;0.652773;,
+   0.190866;-0.864208;0.460792;,
+   0.000000;-0.864208;0.499333;,
+   0.707107;-0.000000;0.707107;,
+   0.865839;-0.499683;0.000000;,
+   0.612240;-0.499683;0.612240;,
+   0.799009;-0.499683;0.330961;,
+   0.922816;-0.000000;0.382243;,
+   0.965400;-0.258545;0.000000;,
+   0.890886;-0.258545;0.369017;,
+   0.682641;-0.258545;0.682641;,
+   0.000000;-0.499683;0.865839;,
+   0.330961;-0.499683;0.799009;,
+   0.382243;-0.000000;0.922816;,
+   0.369017;-0.258545;0.890886;,
+   0.000000;-0.258545;0.965400;,
+   -0.707371;-0.706844;-0.000000;,
+   -0.500187;-0.706844;0.500187;,
+   -0.182686;-0.964280;0.182686;,
+   -0.098755;-0.964280;0.238416;,
+   -0.270388;-0.706844;0.652773;,
+   -0.190866;-0.864208;0.460792;,
+   -0.353082;-0.864208;0.353082;,
+   -0.258357;-0.964280;-0.000000;,
+   -0.238416;-0.964280;0.098755;,
+   -0.652773;-0.706844;0.270388;,
+   -0.460792;-0.864208;0.190866;,
+   -0.499333;-0.864208;-0.000000;,
+   -0.707107;-0.000000;0.707107;,
+   -0.612240;-0.499683;0.612240;,
+   -0.330961;-0.499683;0.799009;,
+   -0.382243;-0.000000;0.922816;,
+   -0.369017;-0.258545;0.890886;,
+   -0.682641;-0.258545;0.682641;,
+   -0.865839;-0.499683;-0.000000;,
+   -0.799009;-0.499683;0.330961;,
+   -0.922816;-0.000000;0.382243;,
+   -0.890886;-0.258545;0.369017;,
+   -0.965400;-0.258545;-0.000000;,
+   0.707371;0.706844;0.000000;,
+   -0.000000;0.706844;0.707371;,
+   0.500187;0.706844;0.500187;,
+   0.965400;0.258545;0.000000;,
+   0.682641;0.258545;0.682641;,
+   0.890886;0.258545;0.369017;,
+   0.652773;0.706844;0.270388;,
+   0.865839;0.499683;0.000000;,
+   0.799009;0.499683;0.330961;,
+   0.612240;0.499683;0.612240;,
+   0.000000;0.258545;0.965400;,
+   0.369017;0.258545;0.890886;,
+   0.270388;0.706844;0.652773;,
+   0.330961;0.499683;0.799009;,
+   0.000000;0.499683;0.865839;,
+   0.499333;0.864208;0.000000;,
+   0.353082;0.864208;0.353082;,
+   0.460792;0.864208;0.190866;,
+   0.258357;0.964280;0.000000;,
+   0.238416;0.964280;0.098755;,
+   0.182686;0.964280;0.182686;,
+   -0.000000;0.864208;0.499333;,
+   0.190866;0.864208;0.460792;,
+   0.098755;0.964280;0.238416;,
+   -0.000000;0.964280;0.258357;,
+   -0.707371;0.706844;-0.000000;,
+   -0.500187;0.706844;0.500187;,
+   -0.682641;0.258545;0.682641;,
+   -0.369017;0.258545;0.890886;,
+   -0.270388;0.706844;0.652773;,
+   -0.330961;0.499683;0.799009;,
+   -0.612240;0.499683;0.612240;,
+   -0.965400;0.258545;-0.000000;,
+   -0.890886;0.258545;0.369017;,
+   -0.652773;0.706844;0.270388;,
+   -0.799009;0.499683;0.330961;,
+   -0.865839;0.499683;-0.000000;,
+   -0.353082;0.864208;0.353082;,
+   -0.190866;0.864208;0.460792;,
+   -0.098755;0.964280;0.238416;,
+   -0.182686;0.964280;0.182686;,
+   -0.499333;0.864208;-0.000000;,
+   -0.460792;0.864208;0.190866;,
+   -0.238416;0.964280;0.098755;,
+   -0.258357;0.964280;-0.000000;,
+   -0.000000;-0.000000;-1.000000;,
+   -0.000000;-0.706844;-0.707371;,
+   -0.500187;-0.706844;-0.500187;,
+   -0.182686;-0.964280;-0.182686;,
+   -0.238416;-0.964280;-0.098755;,
+   -0.652773;-0.706844;-0.270388;,
+   -0.460792;-0.864208;-0.190866;,
+   -0.353082;-0.864208;-0.353082;,
+   -0.000000;-0.964280;-0.258357;,
+   -0.098755;-0.964280;-0.238416;,
+   -0.270388;-0.706844;-0.652773;,
+   -0.190866;-0.864208;-0.460792;,
+   -0.000000;-0.864208;-0.499333;,
+   -0.707107;-0.000000;-0.707107;,
+   -0.612240;-0.499683;-0.612240;,
+   -0.799009;-0.499683;-0.330961;,
+   -0.922816;-0.000000;-0.382243;,
+   -0.890886;-0.258545;-0.369017;,
+   -0.682641;-0.258545;-0.682641;,
+   -0.000000;-0.499683;-0.865839;,
+   -0.330961;-0.499683;-0.799009;,
+   -0.382243;-0.000000;-0.922816;,
+   -0.369017;-0.258545;-0.890886;,
+   -0.000000;-0.258545;-0.965400;,
+   0.500187;-0.706844;-0.500187;,
+   0.182686;-0.964280;-0.182686;,
+   0.098755;-0.964280;-0.238416;,
+   0.270388;-0.706844;-0.652773;,
+   0.190866;-0.864208;-0.460792;,
+   0.353082;-0.864208;-0.353082;,
+   0.000000;-1.000000;-0.000000;,
+   0.238416;-0.964280;-0.098755;,
+   0.652773;-0.706844;-0.270388;,
+   0.460792;-0.864208;-0.190866;,
+   0.707107;-0.000000;-0.707107;,
+   0.612240;-0.499683;-0.612240;,
+   0.330961;-0.499683;-0.799009;,
+   0.382243;-0.000000;-0.922816;,
+   0.369017;-0.258545;-0.890886;,
+   0.682641;-0.258545;-0.682641;,
+   0.799009;-0.499683;-0.330961;,
+   0.922816;-0.000000;-0.382243;,
+   0.890886;-0.258545;-0.369017;,
+   -0.000000;0.706844;-0.707371;,
+   -0.500187;0.706844;-0.500187;,
+   -0.682641;0.258545;-0.682641;,
+   -0.890886;0.258545;-0.369017;,
+   -0.652773;0.706844;-0.270388;,
+   -0.799009;0.499683;-0.330961;,
+   -0.612240;0.499683;-0.612240;,
+   -0.000000;0.258545;-0.965400;,
+   -0.369017;0.258545;-0.890886;,
+   -0.270388;0.706844;-0.652773;,
+   -0.330961;0.499683;-0.799009;,
+   -0.000000;0.499683;-0.865839;,
+   -0.353082;0.864208;-0.353082;,
+   -0.460792;0.864208;-0.190866;,
+   -0.238416;0.964280;-0.098755;,
+   -0.182686;0.964280;-0.182686;,
+   -0.000000;0.864208;-0.499333;,
+   -0.190866;0.864208;-0.460792;,
+   -0.098755;0.964280;-0.238416;,
+   -0.000000;0.964280;-0.258357;,
+   0.500187;0.706844;-0.500187;,
+   0.682641;0.258545;-0.682641;,
+   0.369017;0.258545;-0.890886;,
+   0.270388;0.706844;-0.652773;,
+   0.330961;0.499683;-0.799009;,
+   0.612240;0.499683;-0.612240;,
+   0.890886;0.258545;-0.369017;,
+   0.652773;0.706844;-0.270388;,
+   0.799009;0.499683;-0.330961;,
+   0.353082;0.864208;-0.353082;,
+   0.190866;0.864208;-0.460792;,
+   0.098755;0.964280;-0.238416;,
+   0.182686;0.964280;-0.182686;,
+   0.460792;0.864208;-0.190866;,
+   0.000000;1.000000;0.000000;,
+   0.238416;0.964280;-0.098755;,
+   0.000000;1.000000;0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.258357;0.964280;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   1.000000;-0.000000;0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.707371;-0.706844;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.258357;-0.964280;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.499333;-0.864208;-0.000000;,
+   0.865839;-0.499683;0.000000;,
+   0.965400;-0.258545;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.707371;0.706844;0.000000;,
+   0.965400;0.258545;0.000000;,
+   0.865839;0.499683;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.499333;0.864208;0.000000;,
+   0.000000;1.000000;0.000000;;
+   352;
+   3;176,72,177;,
+   3;178,98,97;,
+   3;51,1,52;,
+   3;28,2,29;,
+   3;15,4,16;,
+   3;9,5,11;,
+   3;8,7,129;,
+   3;179,6,8;,
+   3;10,3,9;,
+   3;6,10,11;,
+   3;8,11,12;,
+   3;13,180,14;,
+   3;181,7,14;,
+   3;5,15,12;,
+   3;7,12,16;,
+   3;14,16,17;,
+   3;22,18,24;,
+   3;21,20,9;,
+   3;3,19,21;,
+   3;23,0,22;,
+   3;19,23,24;,
+   3;21,24,25;,
+   3;15,27,26;,
+   3;5,20,27;,
+   3;18,28,25;,
+   3;20,25,29;,
+   3;27,29,30;,
+   3;41,40,31;,
+   3;35,32,36;,
+   3;182,34,33;,
+   3;183,13,34;,
+   3;17,4,35;,
+   3;13,17,36;,
+   3;34,36,37;,
+   3;38,184,39;,
+   3;185,33,39;,
+   3;37,32,40;,
+   3;33,37,41;,
+   3;39,41,42;,
+   3;46,43,47;,
+   3;35,45,44;,
+   3;4,26,45;,
+   3;2,46,30;,
+   3;26,30,47;,
+   3;45,47,48;,
+   3;40,50,49;,
+   3;32,44,50;,
+   3;43,51,48;,
+   3;44,48,52;,
+   3;50,52,53;,
+   3;186,78,77;,
+   3;66,55,67;,
+   3;60,56,62;,
+   3;59,58,22;,
+   3;0,57,59;,
+   3;61,54,60;,
+   3;57,61,62;,
+   3;59,62,63;,
+   3;28,65,64;,
+   3;18,58,65;,
+   3;56,66,63;,
+   3;58,63,67;,
+   3;65,67,68;,
+   3;187,74,73;,
+   3;71,70,60;,
+   3;54,69,71;,
+   3;188,189,73;,
+   3;69,188,73;,
+   3;71,73,74;,
+   3;66,76,75;,
+   3;56,70,76;,
+   3;190,77,74;,
+   3;70,74,77;,
+   3;76,77,78;,
+   3;89,88,79;,
+   3;83,80,84;,
+   3;46,82,81;,
+   3;2,64,82;,
+   3;68,55,83;,
+   3;64,68,84;,
+   3;82,84,85;,
+   3;51,87,86;,
+   3;43,81,87;,
+   3;85,80,88;,
+   3;81,85,89;,
+   3;87,89,90;,
+   3;191,94,93;,
+   3;83,92,91;,
+   3;55,75,92;,
+   3;192,93,78;,
+   3;75,78,93;,
+   3;92,93,94;,
+   3;88,96,95;,
+   3;80,91,96;,
+   3;193,97,94;,
+   3;91,94,97;,
+   3;96,97,98;,
+   3;141,140,194;,
+   3;120,99,121;,
+   3;109,100,110;,
+   3;104,101,105;,
+   3;195,103,102;,
+   3;196,38,103;,
+   3;42,31,104;,
+   3;38,42,105;,
+   3;103,105,106;,
+   3;197,108,107;,
+   3;198,102,108;,
+   3;106,101,109;,
+   3;102,106,110;,
+   3;108,110,111;,
+   3;115,112,116;,
+   3;114,113,104;,
+   3;31,49,114;,
+   3;53,1,115;,
+   3;49,53,116;,
+   3;114,116,117;,
+   3;109,119,118;,
+   3;101,113,119;,
+   3;112,120,117;,
+   3;113,117,121;,
+   3;119,121,122;,
+   3;132,131,199;,
+   3;126,123,127;,
+   3;200,125,124;,
+   3;201,107,125;,
+   3;111,100,126;,
+   3;107,111,127;,
+   3;125,127,128;,
+   3;202,203,130;,
+   3;204,124,130;,
+   3;128,123,131;,
+   3;124,128,132;,
+   3;130,132,205;,
+   3;136,133,137;,
+   3;126,135,134;,
+   3;100,118,135;,
+   3;122,99,136;,
+   3;118,122,137;,
+   3;135,137,138;,
+   3;131,139,206;,
+   3;123,134,139;,
+   3;138,133,140;,
+   3;134,138,141;,
+   3;139,141,207;,
+   3;208,161,160;,
+   3;152,151,142;,
+   3;146,143,147;,
+   3;115,145,144;,
+   3;1,86,145;,
+   3;90,79,146;,
+   3;86,90,147;,
+   3;145,147,148;,
+   3;120,150,149;,
+   3;112,144,150;,
+   3;148,143,151;,
+   3;144,148,152;,
+   3;150,152,153;,
+   3;209,157,156;,
+   3;146,155,154;,
+   3;79,95,155;,
+   3;210,156,98;,
+   3;95,98,156;,
+   3;155,156,157;,
+   3;151,159,158;,
+   3;143,154,159;,
+   3;211,160,157;,
+   3;154,157,160;,
+   3;159,160,161;,
+   3;170,169,212;,
+   3;165,162,166;,
+   3;136,164,163;,
+   3;99,149,164;,
+   3;153,142,165;,
+   3;149,153,166;,
+   3;164,166,167;,
+   3;140,168,213;,
+   3;133,163,168;,
+   3;167,162,169;,
+   3;163,167,170;,
+   3;168,170,214;,
+   3;215,174,173;,
+   3;165,172,171;,
+   3;142,158,172;,
+   3;216,173,161;,
+   3;158,161,173;,
+   3;172,173,174;,
+   3;169,175,217;,
+   3;162,171,175;,
+   3;218,177,174;,
+   3;171,174,177;,
+   3;175,177,72;,
+   3;1,53,52;,
+   3;2,30,29;,
+   3;4,17,16;,
+   3;5,12,11;,
+   3;9,11,10;,
+   3;11,8,6;,
+   3;12,7,8;,
+   3;15,16,12;,
+   3;16,14,7;,
+   3;17,13,14;,
+   3;18,25,24;,
+   3;20,5,9;,
+   3;21,9,3;,
+   3;22,24,23;,
+   3;24,21,19;,
+   3;25,20,21;,
+   3;26,4,15;,
+   3;27,15,5;,
+   3;28,29,25;,
+   3;29,27,20;,
+   3;30,26,27;,
+   3;31,42,41;,
+   3;32,37,36;,
+   3;35,36,17;,
+   3;36,34,13;,
+   3;37,33,34;,
+   3;40,41,37;,
+   3;41,39,33;,
+   3;42,38,39;,
+   3;43,48,47;,
+   3;44,32,35;,
+   3;45,35,4;,
+   3;46,47,30;,
+   3;47,45,26;,
+   3;48,44,45;,
+   3;49,31,40;,
+   3;50,40,32;,
+   3;51,52,48;,
+   3;52,50,44;,
+   3;53,49,50;,
+   3;55,68,67;,
+   3;56,63,62;,
+   3;58,18,22;,
+   3;59,22,0;,
+   3;60,62,61;,
+   3;62,59,57;,
+   3;63,58,59;,
+   3;64,2,28;,
+   3;65,28,18;,
+   3;66,67,63;,
+   3;67,65,58;,
+   3;68,64,65;,
+   3;70,56,60;,
+   3;71,60,54;,
+   3;73,71,69;,
+   3;74,70,71;,
+   3;75,55,66;,
+   3;76,66,56;,
+   3;77,76,70;,
+   3;78,75,76;,
+   3;79,90,89;,
+   3;80,85,84;,
+   3;81,43,46;,
+   3;82,46,2;,
+   3;83,84,68;,
+   3;84,82,64;,
+   3;85,81,82;,
+   3;86,1,51;,
+   3;87,51,43;,
+   3;88,89,85;,
+   3;89,87,81;,
+   3;90,86,87;,
+   3;91,80,83;,
+   3;92,83,55;,
+   3;93,92,75;,
+   3;94,91,92;,
+   3;95,79,88;,
+   3;96,88,80;,
+   3;97,96,91;,
+   3;98,95,96;,
+   3;194,207,141;,
+   3;99,122,121;,
+   3;100,111,110;,
+   3;101,106,105;,
+   3;104,105,42;,
+   3;105,103,38;,
+   3;106,102,103;,
+   3;109,110,106;,
+   3;110,108,102;,
+   3;111,107,108;,
+   3;112,117,116;,
+   3;113,101,104;,
+   3;114,104,31;,
+   3;115,116,53;,
+   3;116,114,49;,
+   3;117,113,114;,
+   3;118,100,109;,
+   3;119,109,101;,
+   3;120,121,117;,
+   3;121,119,113;,
+   3;122,118,119;,
+   3;199,205,132;,
+   3;123,128,127;,
+   3;126,127,111;,
+   3;127,125,107;,
+   3;128,124,125;,
+   3;131,132,128;,
+   3;132,130,124;,
+   3;205,202,130;,
+   3;133,138,137;,
+   3;134,123,126;,
+   3;135,126,100;,
+   3;136,137,122;,
+   3;137,135,118;,
+   3;138,134,135;,
+   3;206,199,131;,
+   3;139,131,123;,
+   3;140,141,138;,
+   3;141,139,134;,
+   3;207,206,139;,
+   3;142,153,152;,
+   3;143,148,147;,
+   3;144,112,115;,
+   3;145,115,1;,
+   3;146,147,90;,
+   3;147,145,86;,
+   3;148,144,145;,
+   3;149,99,120;,
+   3;150,120,112;,
+   3;151,152,148;,
+   3;152,150,144;,
+   3;153,149,150;,
+   3;154,143,146;,
+   3;155,146,79;,
+   3;156,155,95;,
+   3;157,154,155;,
+   3;158,142,151;,
+   3;159,151,143;,
+   3;160,159,154;,
+   3;161,158,159;,
+   3;212,214,170;,
+   3;162,167,166;,
+   3;163,133,136;,
+   3;164,136,99;,
+   3;165,166,153;,
+   3;166,164,149;,
+   3;167,163,164;,
+   3;213,194,140;,
+   3;168,140,133;,
+   3;169,170,167;,
+   3;170,168,163;,
+   3;214,213,168;,
+   3;171,162,165;,
+   3;172,165,142;,
+   3;173,172,158;,
+   3;174,171,172;,
+   3;217,212,169;,
+   3;175,169,162;,
+   3;177,175,171;,
+   3;72,217,175;;
+
+   MeshNormals {
+    178;
+    -1.000000;0.000000;0.000000;,
+    -0.965752;0.259458;0.002187;,
+    -0.965752;-0.259458;-0.002187;,
+    -0.923880;-0.000000;-0.382683;,
+    -0.923880;0.000000;0.382683;,
+    -0.893120;-0.259179;0.367646;,
+    -0.893120;0.259179;-0.367646;,
+    -0.891496;-0.259179;-0.371566;,
+    -0.891496;0.259179;0.371566;,
+    -0.866531;-0.499104;-0.004285;,
+    -0.866531;0.499104;0.004285;,
+    -0.802392;-0.498673;0.327860;,
+    -0.802392;0.498673;-0.327860;,
+    -0.799209;-0.498673;-0.335545;,
+    -0.799209;0.498673;0.335545;,
+    -0.707107;0.000000;0.707107;,
+    -0.707107;-0.000000;-0.707107;,
+    -0.704923;-0.709256;-0.006360;,
+    -0.704923;0.709256;0.006360;,
+    -0.684436;-0.259458;0.681343;,
+    -0.684436;0.259458;-0.681343;,
+    -0.681343;0.259458;0.684436;,
+    -0.681343;-0.259458;-0.684436;,
+    -0.654005;-0.708850;0.264215;,
+    -0.654005;0.708850;-0.264215;,
+    -0.649279;-0.708850;-0.275623;,
+    -0.649279;0.708850;0.275623;,
+    -0.615760;-0.499104;0.609700;,
+    -0.615760;0.499104;-0.609700;,
+    -0.609700;-0.499104;-0.615760;,
+    -0.609700;0.499104;0.615760;,
+    -0.502953;-0.709256;0.493958;,
+    -0.502953;0.709256;-0.493958;,
+    -0.497147;-0.867635;-0.007382;,
+    -0.497147;0.867635;0.007382;,
+    -0.493958;0.709256;0.502953;,
+    -0.493958;-0.709256;-0.502953;,
+    -0.462446;-0.867389;0.183793;,
+    -0.462446;0.867389;-0.183793;,
+    -0.456960;0.867389;0.197038;,
+    -0.456960;-0.867389;-0.197038;,
+    -0.382683;-0.000000;0.923880;,
+    -0.382683;0.000000;-0.923880;,
+    -0.371566;-0.259179;0.891496;,
+    -0.371566;0.259179;-0.891496;,
+    -0.367646;-0.259179;-0.893120;,
+    -0.367646;0.259179;0.893120;,
+    -0.356756;-0.867635;0.346316;,
+    -0.356756;0.867635;-0.346316;,
+    -0.346316;0.867635;0.356756;,
+    -0.346316;-0.867635;-0.356756;,
+    -0.335545;0.498673;-0.799209;,
+    -0.335545;-0.498673;0.799209;,
+    -0.327860;-0.498673;-0.802392;,
+    -0.327860;0.498673;0.802392;,
+    -0.286965;-0.957814;-0.015593;,
+    -0.286965;0.957814;0.015593;,
+    -0.275623;0.708850;-0.649279;,
+    -0.275623;-0.708850;0.649279;,
+    -0.271199;0.957730;-0.095942;,
+    -0.271199;-0.957730;0.095942;,
+    -0.264215;0.708850;0.654005;,
+    -0.264215;-0.708850;-0.654005;,
+    -0.259608;-0.957730;-0.123925;,
+    -0.259608;0.957730;0.123925;,
+    -0.213941;-0.957814;0.191889;,
+    -0.213941;0.957814;-0.191889;,
+    -0.197038;-0.867389;0.456960;,
+    -0.197038;0.867389;-0.456960;,
+    -0.191888;-0.957814;-0.213941;,
+    -0.191888;0.957814;0.213941;,
+    -0.183793;0.867389;0.462446;,
+    -0.183793;-0.867389;-0.462446;,
+    -0.123925;-0.957730;0.259608;,
+    -0.123925;0.957730;-0.259608;,
+    -0.095942;0.957730;0.271199;,
+    -0.095942;-0.957730;-0.271199;,
+    -0.015593;0.957814;-0.286965;,
+    -0.015593;-0.957814;0.286965;,
+    -0.007382;-0.867635;0.497147;,
+    -0.007382;0.867635;-0.497147;,
+    -0.006360;0.709256;-0.704923;,
+    -0.006360;-0.709256;0.704923;,
+    -0.004285;-0.499104;0.866531;,
+    -0.004285;0.499104;-0.866531;,
+    -0.002187;-0.259458;0.965752;,
+    -0.002187;0.259458;-0.965752;,
+    -0.000000;0.000000;-1.000000;,
+    -0.000000;1.000000;0.000000;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;0.000000;1.000000;,
+    0.002187;0.259458;0.965752;,
+    0.002187;-0.259458;-0.965752;,
+    0.004285;-0.499104;-0.866531;,
+    0.004285;0.499104;0.866531;,
+    0.006360;0.709256;0.704923;,
+    0.006360;-0.709256;-0.704923;,
+    0.007382;0.867635;0.497147;,
+    0.007382;-0.867635;-0.497147;,
+    0.015593;0.957814;0.286965;,
+    0.015593;-0.957814;-0.286965;,
+    0.095942;-0.957730;0.271199;,
+    0.095942;0.957730;-0.271199;,
+    0.123925;-0.957730;-0.259608;,
+    0.123925;0.957730;0.259608;,
+    0.183793;-0.867389;0.462446;,
+    0.183793;0.867389;-0.462446;,
+    0.191888;-0.957814;0.213941;,
+    0.191888;0.957814;-0.213941;,
+    0.197038;-0.867389;-0.456960;,
+    0.197038;0.867389;0.456960;,
+    0.213941;0.957814;0.191889;,
+    0.213941;-0.957814;-0.191889;,
+    0.259608;0.957730;-0.123925;,
+    0.259608;-0.957730;0.123925;,
+    0.264215;-0.708850;0.654005;,
+    0.264215;0.708850;-0.654005;,
+    0.271199;-0.957730;-0.095942;,
+    0.271199;0.957730;0.095942;,
+    0.275623;0.708850;0.649279;,
+    0.275623;-0.708850;-0.649279;,
+    0.286965;-0.957814;0.015593;,
+    0.286965;0.957814;-0.015593;,
+    0.327860;-0.498673;0.802392;,
+    0.327860;0.498673;-0.802392;,
+    0.335545;-0.498673;-0.799209;,
+    0.335545;0.498673;0.799209;,
+    0.346316;-0.867635;0.356756;,
+    0.346316;0.867635;-0.356756;,
+    0.356756;0.867635;0.346316;,
+    0.356756;-0.867635;-0.346316;,
+    0.367646;0.259179;-0.893120;,
+    0.367646;-0.259179;0.893120;,
+    0.371566;0.259179;0.891496;,
+    0.371566;-0.259179;-0.891496;,
+    0.382683;-0.000000;-0.923880;,
+    0.382683;0.000000;0.923880;,
+    0.456960;-0.867389;0.197038;,
+    0.456960;0.867389;-0.197038;,
+    0.462446;0.867389;0.183793;,
+    0.462446;-0.867389;-0.183793;,
+    0.493958;-0.709256;0.502953;,
+    0.493958;0.709256;-0.502953;,
+    0.497147;0.867635;-0.007382;,
+    0.497147;-0.867635;0.007382;,
+    0.502953;0.709256;0.493958;,
+    0.502953;-0.709256;-0.493958;,
+    0.609700;-0.499104;0.615760;,
+    0.609700;0.499104;-0.615760;,
+    0.615760;-0.499104;-0.609700;,
+    0.615760;0.499104;0.609700;,
+    0.649279;-0.708850;0.275623;,
+    0.649279;0.708850;-0.275623;,
+    0.654005;-0.708850;-0.264215;,
+    0.654005;0.708850;0.264215;,
+    0.681343;-0.259458;0.684436;,
+    0.681343;0.259458;-0.684436;,
+    0.684436;-0.259458;-0.681343;,
+    0.684436;0.259458;0.681343;,
+    0.704923;0.709256;-0.006360;,
+    0.704923;-0.709256;0.006360;,
+    0.707107;-0.000000;0.707107;,
+    0.707107;0.000000;-0.707107;,
+    0.799209;-0.498673;0.335545;,
+    0.799209;0.498673;-0.335545;,
+    0.802392;-0.498673;-0.327860;,
+    0.802392;0.498673;0.327860;,
+    0.866531;-0.499104;0.004285;,
+    0.866531;0.499104;-0.004285;,
+    0.891496;-0.259179;0.371566;,
+    0.891496;0.259179;-0.371566;,
+    0.893120;-0.259179;-0.367646;,
+    0.893120;0.259179;0.367646;,
+    0.923880;-0.000000;0.382683;,
+    0.923880;-0.000000;-0.382683;,
+    0.965752;0.259458;-0.002187;,
+    0.965752;-0.259458;0.002187;,
+    1.000000;0.000000;0.000000;;
+    352;
+    3;88,122,113;,
+    3;88,56,64;,
+    3;4,0,5;,
+    3;136,90,132;,
+    3;115,82,105;,
+    3;151,141,137;,
+    3;114,107,89;,
+    3;89,121,114;,
+    3;144,160,151;,
+    3;121,144,137;,
+    3;114,137,127;,
+    3;78,89,101;,
+    3;89,107,101;,
+    3;141,115,127;,
+    3;107,127,105;,
+    3;101,105,79;,
+    3;173,161,169;,
+    3;163,147,151;,
+    3;160,167,163;,
+    3;176,177,173;,
+    3;167,176,169;,
+    3;163,169,155;,
+    3;115,123,83;,
+    3;141,147,123;,
+    3;161,136,155;,
+    3;147,155,132;,
+    3;123,132,85;,
+    3;37,23,17;,
+    3;58,31,67;,
+    3;89,73,65;,
+    3;89,78,73;,
+    3;79,82,58;,
+    3;78,79,67;,
+    3;73,67,47;,
+    3;55,89,60;,
+    3;89,65,60;,
+    3;47,31,23;,
+    3;65,47,37;,
+    3;60,37,33;,
+    3;41,15,43;,
+    3;58,52,27;,
+    3;82,83,52;,
+    3;90,41,85;,
+    3;83,85,43;,
+    3;52,43,19;,
+    3;23,11,9;,
+    3;31,27,11;,
+    3;15,4,19;,
+    3;27,19,5;,
+    3;11,5,2;,
+    3;88,99,104;,
+    3;119,95,126;,
+    3;154,145,166;,
+    3;172,158,173;,
+    3;177,175,172;,
+    3;168,159,154;,
+    3;175,168,166;,
+    3;172,166,150;,
+    3;136,133,91;,
+    3;161,158,133;,
+    3;145,119,150;,
+    3;158,150,126;,
+    3;133,126,94;,
+    3;88,111,118;,
+    3;139,129,154;,
+    3;159,143,139;,
+    3;122,88,118;,
+    3;143,122,118;,
+    3;139,118,111;,
+    3;119,110,97;,
+    3;145,129,110;,
+    3;88,104,111;,
+    3;129,111,104;,
+    3;110,104,99;,
+    3;14,26,18;,
+    3;61,35,54;,
+    3;41,46,21;,
+    3;90,91,46;,
+    3;94,95,61;,
+    3;91,94,54;,
+    3;46,54,30;,
+    3;4,8,1;,
+    3;15,21,8;,
+    3;30,35,26;,
+    3;21,30,14;,
+    3;8,14,10;,
+    3;88,70,75;,
+    3;61,71,49;,
+    3;95,97,71;,
+    3;88,75,99;,
+    3;97,99,75;,
+    3;71,75,70;,
+    3;26,39,34;,
+    3;35,49,39;,
+    3;88,64,70;,
+    3;49,70,64;,
+    3;39,64,56;,
+    3;171,174,177;,
+    3;42,87,45;,
+    3;62,96,72;,
+    3;25,36,40;,
+    3;89,63,69;,
+    3;89,55,63;,
+    3;33,17,25;,
+    3;55,33,40;,
+    3;63,40,50;,
+    3;89,76,100;,
+    3;89,69,76;,
+    3;50,36,62;,
+    3;69,50,72;,
+    3;76,72,98;,
+    3;3,16,7;,
+    3;13,29,25;,
+    3;17,9,13;,
+    3;2,0,3;,
+    3;9,2,7;,
+    3;13,7,22;,
+    3;62,53,93;,
+    3;36,29,53;,
+    3;16,42,22;,
+    3;29,22,45;,
+    3;53,45,92;,
+    3;140,153,160;,
+    3;120,146,109;,
+    3;89,103,112;,
+    3;89,100,103;,
+    3;98,96,120;,
+    3;100,98,109;,
+    3;103,109,130;,
+    3;121,89,117;,
+    3;89,112,117;,
+    3;130,146,153;,
+    3;112,130,140;,
+    3;117,140,144;,
+    3;135,162,134;,
+    3;120,125,149;,
+    3;96,93,125;,
+    3;92,87,135;,
+    3;93,92,134;,
+    3;125,134,157;,
+    3;153,165,167;,
+    3;146,149,165;,
+    3;157,162,174;,
+    3;149,157,171;,
+    3;165,171,176;,
+    3;88,77,74;,
+    3;51,57,81;,
+    3;24,32,12;,
+    3;3,6,20;,
+    3;0,1,6;,
+    3;10,18,24;,
+    3;1,10,12;,
+    3;6,12,28;,
+    3;42,44,86;,
+    3;16,20,44;,
+    3;28,32,57;,
+    3;20,28,51;,
+    3;44,51,84;,
+    3;88,66,59;,
+    3;24,38,48;,
+    3;18,34,38;,
+    3;88,59,56;,
+    3;34,56,59;,
+    3;38,59,66;,
+    3;57,68,80;,
+    3;32,48,68;,
+    3;88,74,66;,
+    3;48,66,74;,
+    3;68,74,77;,
+    3;164,152,159;,
+    3;116,142,124;,
+    3;135,131,156;,
+    3;87,86,131;,
+    3;84,81,116;,
+    3;86,84,124;,
+    3;131,124,148;,
+    3;174,170,175;,
+    3;162,156,170;,
+    3;148,142,152;,
+    3;156,148,164;,
+    3;170,164,168;,
+    3;88,108,102;,
+    3;116,106,128;,
+    3;81,80,106;,
+    3;88,102,77;,
+    3;80,77,102;,
+    3;106,102,108;,
+    3;152,138,143;,
+    3;142,128,138;,
+    3;88,113,108;,
+    3;128,108,113;,
+    3;138,113,122;,
+    3;0,2,5;,
+    3;90,85,132;,
+    3;82,79,105;,
+    3;141,127,137;,
+    3;151,137,144;,
+    3;137,114,121;,
+    3;127,107,114;,
+    3;115,105,127;,
+    3;105,101,107;,
+    3;79,78,101;,
+    3;161,155,169;,
+    3;147,141,151;,
+    3;163,151,160;,
+    3;173,169,176;,
+    3;169,163,167;,
+    3;155,147,163;,
+    3;83,82,115;,
+    3;123,115,141;,
+    3;136,132,155;,
+    3;132,123,147;,
+    3;85,83,123;,
+    3;17,33,37;,
+    3;31,47,67;,
+    3;58,67,79;,
+    3;67,73,78;,
+    3;47,65,73;,
+    3;23,37,47;,
+    3;37,60,65;,
+    3;33,55,60;,
+    3;15,19,43;,
+    3;27,31,58;,
+    3;52,58,82;,
+    3;41,43,85;,
+    3;43,52,83;,
+    3;19,27,52;,
+    3;9,17,23;,
+    3;11,23,31;,
+    3;4,5,19;,
+    3;5,11,27;,
+    3;2,9,11;,
+    3;95,94,126;,
+    3;145,150,166;,
+    3;158,161,173;,
+    3;172,173,177;,
+    3;154,166,168;,
+    3;166,172,175;,
+    3;150,158,172;,
+    3;91,90,136;,
+    3;133,136,161;,
+    3;119,126,150;,
+    3;126,133,158;,
+    3;94,91,133;,
+    3;129,145,154;,
+    3;139,154,159;,
+    3;118,139,143;,
+    3;111,129,139;,
+    3;97,95,119;,
+    3;110,119,145;,
+    3;104,110,129;,
+    3;99,97,110;,
+    3;18,10,14;,
+    3;35,30,54;,
+    3;21,15,41;,
+    3;46,41,90;,
+    3;61,54,94;,
+    3;54,46,91;,
+    3;30,21,46;,
+    3;1,0,4;,
+    3;8,4,15;,
+    3;26,14,30;,
+    3;14,8,21;,
+    3;10,1,8;,
+    3;49,35,61;,
+    3;71,61,95;,
+    3;75,71,97;,
+    3;70,49,71;,
+    3;34,18,26;,
+    3;39,26,35;,
+    3;64,39,49;,
+    3;56,34,39;,
+    3;177,176,171;,
+    3;87,92,45;,
+    3;96,98,72;,
+    3;36,50,40;,
+    3;25,40,33;,
+    3;40,63,55;,
+    3;50,69,63;,
+    3;62,72,50;,
+    3;72,76,69;,
+    3;98,100,76;,
+    3;16,22,7;,
+    3;29,36,25;,
+    3;13,25,17;,
+    3;3,7,2;,
+    3;7,13,9;,
+    3;22,29,13;,
+    3;93,96,62;,
+    3;53,62,36;,
+    3;42,45,22;,
+    3;45,53,29;,
+    3;92,93,53;,
+    3;160,144,140;,
+    3;146,130,109;,
+    3;120,109,98;,
+    3;109,103,100;,
+    3;130,112,103;,
+    3;153,140,130;,
+    3;140,117,112;,
+    3;144,121,117;,
+    3;162,157,134;,
+    3;149,146,120;,
+    3;125,120,96;,
+    3;135,134,92;,
+    3;134,125,93;,
+    3;157,149,125;,
+    3;167,160,153;,
+    3;165,153,146;,
+    3;174,171,157;,
+    3;171,165,149;,
+    3;176,167,165;,
+    3;81,84,51;,
+    3;32,28,12;,
+    3;20,16,3;,
+    3;6,3,0;,
+    3;24,12,10;,
+    3;12,6,1;,
+    3;28,20,6;,
+    3;86,87,42;,
+    3;44,42,16;,
+    3;57,51,28;,
+    3;51,44,20;,
+    3;84,86,44;,
+    3;48,32,24;,
+    3;38,24,18;,
+    3;59,38,34;,
+    3;66,48,38;,
+    3;80,81,57;,
+    3;68,57,32;,
+    3;74,68,48;,
+    3;77,80,68;,
+    3;159,168,164;,
+    3;142,148,124;,
+    3;156,162,135;,
+    3;131,135,87;,
+    3;116,124,84;,
+    3;124,131,86;,
+    3;148,156,131;,
+    3;175,177,174;,
+    3;170,174,162;,
+    3;152,164,148;,
+    3;164,170,156;,
+    3;168,175,170;,
+    3;128,142,116;,
+    3;106,116,81;,
+    3;102,106,80;,
+    3;108,128,106;,
+    3;143,159,152;,
+    3;138,152,142;,
+    3;113,138,128;,
+    3;122,143,138;;
+   }
+
+   MeshTextureCoords {
+    219;
+    0.500000;0.000000;,
+    0.500000;-0.500000;,
+    0.500000;-0.250000;,
+    0.250118;0.000000;,
+    0.250118;-0.250000;,
+    0.250118;-0.125000;,
+    0.084334;0.000000;,
+    0.084334;-0.125000;,
+    0.084334;-0.062500;,
+    0.250118;-0.062500;,
+    0.167256;0.000000;,
+    0.167256;-0.062500;,
+    0.167256;-0.125000;,
+    0.084334;-0.250000;,
+    0.084334;-0.187500;,
+    0.250118;-0.187500;,
+    0.167256;-0.187500;,
+    0.167256;-0.250000;,
+    0.500000;-0.125000;,
+    0.333354;0.000000;,
+    0.333354;-0.125000;,
+    0.333354;-0.062500;,
+    0.500000;-0.062500;,
+    0.416609;0.000000;,
+    0.416609;-0.062500;,
+    0.416609;-0.125000;,
+    0.333354;-0.250000;,
+    0.333354;-0.187500;,
+    0.500000;-0.187500;,
+    0.416609;-0.187500;,
+    0.416609;-0.250000;,
+    0.250118;-0.500000;,
+    0.250118;-0.375000;,
+    0.084334;-0.375000;,
+    0.084334;-0.312500;,
+    0.250118;-0.312500;,
+    0.167256;-0.312500;,
+    0.167256;-0.375000;,
+    0.084334;-0.500000;,
+    0.084334;-0.437500;,
+    0.250118;-0.437500;,
+    0.167256;-0.437500;,
+    0.167256;-0.500000;,
+    0.500000;-0.375000;,
+    0.333354;-0.375000;,
+    0.333354;-0.312500;,
+    0.500000;-0.312500;,
+    0.416609;-0.312500;,
+    0.416609;-0.375000;,
+    0.333354;-0.500000;,
+    0.333354;-0.437500;,
+    0.500000;-0.437500;,
+    0.416609;-0.437500;,
+    0.416609;-0.500000;,
+    0.749882;0.000000;,
+    0.749882;-0.250000;,
+    0.749882;-0.125000;,
+    0.583391;0.000000;,
+    0.583391;-0.125000;,
+    0.583391;-0.062500;,
+    0.749882;-0.062500;,
+    0.666646;0.000000;,
+    0.666646;-0.062500;,
+    0.666646;-0.125000;,
+    0.583391;-0.250000;,
+    0.583391;-0.187500;,
+    0.749882;-0.187500;,
+    0.666646;-0.187500;,
+    0.666646;-0.250000;,
+    0.832744;0.000000;,
+    0.832744;-0.125000;,
+    0.832744;-0.062500;,
+    0.915666;-1.000000;,
+    0.915666;-0.062500;,
+    0.915666;-0.125000;,
+    0.832744;-0.250000;,
+    0.832744;-0.187500;,
+    0.915666;-0.187500;,
+    0.915666;-0.250000;,
+    0.749882;-0.500000;,
+    0.749882;-0.375000;,
+    0.583391;-0.375000;,
+    0.583391;-0.312500;,
+    0.749882;-0.312500;,
+    0.666646;-0.312500;,
+    0.666646;-0.375000;,
+    0.583391;-0.500000;,
+    0.583391;-0.437500;,
+    0.749882;-0.437500;,
+    0.666646;-0.437500;,
+    0.666646;-0.500000;,
+    0.832744;-0.375000;,
+    0.832744;-0.312500;,
+    0.915666;-0.312500;,
+    0.915666;-0.375000;,
+    0.832744;-0.500000;,
+    0.832744;-0.437500;,
+    0.915666;-0.437500;,
+    0.915666;-0.500000;,
+    0.500000;-0.750000;,
+    0.250118;-0.750000;,
+    0.250118;-0.625000;,
+    0.084334;-0.625000;,
+    0.084334;-0.562500;,
+    0.250118;-0.562500;,
+    0.167256;-0.562500;,
+    0.167256;-0.625000;,
+    0.084334;-0.750000;,
+    0.084334;-0.687500;,
+    0.250118;-0.687500;,
+    0.167256;-0.687500;,
+    0.167256;-0.750000;,
+    0.500000;-0.625000;,
+    0.333354;-0.625000;,
+    0.333354;-0.562500;,
+    0.500000;-0.562500;,
+    0.416609;-0.562500;,
+    0.416609;-0.625000;,
+    0.333354;-0.750000;,
+    0.333354;-0.687500;,
+    0.500000;-0.687500;,
+    0.416609;-0.687500;,
+    0.416609;-0.750000;,
+    0.250118;-0.875000;,
+    0.084334;-0.875000;,
+    0.084334;-0.812500;,
+    0.250118;-0.812500;,
+    0.167256;-0.812500;,
+    0.167256;-0.875000;,
+    0.000000;-0.062500;,
+    0.084334;-0.937500;,
+    0.250118;-0.937500;,
+    0.167256;-0.937500;,
+    0.500000;-0.875000;,
+    0.333354;-0.875000;,
+    0.333354;-0.812500;,
+    0.500000;-0.812500;,
+    0.416609;-0.812500;,
+    0.416609;-0.875000;,
+    0.333354;-0.937500;,
+    0.500000;-0.937500;,
+    0.416609;-0.937500;,
+    0.749882;-0.750000;,
+    0.749882;-0.625000;,
+    0.583391;-0.625000;,
+    0.583391;-0.562500;,
+    0.749882;-0.562500;,
+    0.666646;-0.562500;,
+    0.666646;-0.625000;,
+    0.583391;-0.750000;,
+    0.583391;-0.687500;,
+    0.749882;-0.687500;,
+    0.666646;-0.687500;,
+    0.666646;-0.750000;,
+    0.832744;-0.625000;,
+    0.832744;-0.562500;,
+    0.915666;-0.562500;,
+    0.915666;-0.625000;,
+    0.832744;-0.750000;,
+    0.832744;-0.687500;,
+    0.915666;-0.687500;,
+    0.915666;-0.750000;,
+    0.749882;-0.875000;,
+    0.583391;-0.875000;,
+    0.583391;-0.812500;,
+    0.749882;-0.812500;,
+    0.666646;-0.812500;,
+    0.666646;-0.875000;,
+    0.583391;-0.937500;,
+    0.749882;-0.937500;,
+    0.666646;-0.937500;,
+    0.832744;-0.875000;,
+    0.832744;-0.812500;,
+    0.915666;-0.812500;,
+    0.915666;-0.875000;,
+    0.832744;-0.937500;,
+    1.000000;-1.000000;,
+    0.915666;-0.937500;,
+    1.000000;-0.500000;,
+    0.000000;0.000000;,
+    0.000000;-0.187500;,
+    0.000000;-0.125000;,
+    0.000000;-0.312500;,
+    0.000000;-0.250000;,
+    0.000000;-0.437500;,
+    0.000000;-0.375000;,
+    1.000000;-0.250000;,
+    1.000000;-0.125000;,
+    0.915666;0.000000;,
+    1.000000;-0.062500;,
+    1.000000;-0.187500;,
+    1.000000;-0.375000;,
+    1.000000;-0.312500;,
+    1.000000;-0.437500;,
+    0.500000;-1.000000;,
+    0.000000;-0.562500;,
+    0.000000;-0.500000;,
+    0.000000;-0.687500;,
+    0.000000;-0.625000;,
+    0.250118;-1.000000;,
+    0.000000;-0.812500;,
+    0.000000;-0.750000;,
+    0.084334;-1.000000;,
+    0.000000;-0.937500;,
+    0.000000;-0.875000;,
+    0.167256;-1.000000;,
+    0.333354;-1.000000;,
+    0.416609;-1.000000;,
+    1.000000;-0.750000;,
+    1.000000;-0.625000;,
+    1.000000;-0.562500;,
+    1.000000;-0.687500;,
+    0.749882;-1.000000;,
+    0.583391;-1.000000;,
+    0.666646;-1.000000;,
+    1.000000;-0.875000;,
+    1.000000;-0.812500;,
+    0.832744;-1.000000;,
+    1.000000;-0.937500;;
+   }
+
+   MeshMaterialList {
+    1;
+    352;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    219;
+    178;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    176,
+    129,
+    129,
+    129,
+    129,
+    129,
+    129,
+    129,
+    176,
+    176,
+    72,
+    176,
+    176,
+    176,
+    176,
+    176,
+    0,
+    129,
+    129,
+    129,
+    129,
+    3,
+    129,
+    129,
+    6,
+    129,
+    129,
+    10,
+    19,
+    23,
+    176,
+    176,
+    176,
+    176,
+    54,
+    57,
+    61,
+    176,
+    176,
+    69,
+    176;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/simple.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/simple.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/simple.x	(revision 1481)
@@ -0,0 +1,691 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.532876,0.000000,-0.846193,0.000000,-0.756219,0.448721,-0.476217,0.000000,0.379705,0.893672,0.239113,0.000000,2.283076,5.373444,1.437730,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pTorus1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pTorusShape1 {
+   144;
+   0.000000;0.000000;-0.500000;,
+   -0.500000;0.000000;-0.000000;,
+   -0.000000;0.000000;0.500000;,
+   0.500000;0.000000;0.000000;,
+   0.000000;0.321394;-0.616978;,
+   -0.616978;0.321394;-0.000000;,
+   -0.000000;0.321394;0.616978;,
+   0.616978;0.321394;0.000000;,
+   0.000000;0.492404;-0.913176;,
+   -0.913176;0.492404;-0.000000;,
+   -0.000000;0.492404;0.913176;,
+   0.913176;0.492404;0.000000;,
+   0.000000;0.433013;-1.250000;,
+   -1.250000;0.433013;-0.000000;,
+   -0.000000;0.433013;1.250000;,
+   1.250000;0.433013;0.000000;,
+   0.000000;0.171010;-1.469846;,
+   -1.469846;0.171010;-0.000000;,
+   -0.000000;0.171010;1.469846;,
+   1.469846;0.171010;0.000000;,
+   0.000000;-0.171010;-1.469846;,
+   -1.469846;-0.171010;-0.000000;,
+   -0.000000;-0.171010;1.469846;,
+   1.469846;-0.171010;0.000000;,
+   0.000000;-0.433013;-1.250000;,
+   -1.250000;-0.433013;-0.000000;,
+   -0.000000;-0.433013;1.250000;,
+   1.250000;-0.433013;0.000000;,
+   0.000000;-0.492404;-0.913176;,
+   -0.913176;-0.492404;-0.000000;,
+   -0.000000;-0.492404;0.913176;,
+   0.913176;-0.492404;0.000000;,
+   0.000000;-0.321394;-0.616978;,
+   -0.616978;-0.321394;-0.000000;,
+   -0.000000;-0.321394;0.616978;,
+   0.616978;-0.321394;0.000000;,
+   -0.500000;0.000000;-0.000000;,
+   -0.616978;0.321394;-0.000000;,
+   -0.000000;0.000000;0.500000;,
+   -0.000000;0.321394;0.616978;,
+   0.000000;0.000000;-0.500000;,
+   0.500000;0.000000;0.000000;,
+   0.616978;0.321394;0.000000;,
+   0.000000;0.321394;-0.616978;,
+   -0.616978;0.321394;-0.000000;,
+   0.000000;0.321394;-0.616978;,
+   -0.000000;0.321394;0.616978;,
+   -0.616978;0.321394;-0.000000;,
+   -0.913176;0.492404;-0.000000;,
+   0.616978;0.321394;0.000000;,
+   -0.000000;0.321394;0.616978;,
+   -0.000000;0.492404;0.913176;,
+   0.000000;0.321394;-0.616978;,
+   0.616978;0.321394;0.000000;,
+   0.913176;0.492404;0.000000;,
+   0.000000;0.492404;-0.913176;,
+   -0.913176;0.492404;-0.000000;,
+   0.000000;0.492404;-0.913176;,
+   -0.000000;0.492404;0.913176;,
+   -0.913176;0.492404;-0.000000;,
+   -1.250000;0.433013;-0.000000;,
+   0.913176;0.492404;0.000000;,
+   -0.000000;0.492404;0.913176;,
+   -0.000000;0.433013;1.250000;,
+   0.000000;0.492404;-0.913176;,
+   0.913176;0.492404;0.000000;,
+   1.250000;0.433013;0.000000;,
+   0.000000;0.433013;-1.250000;,
+   -1.250000;0.433013;-0.000000;,
+   0.000000;0.433013;-1.250000;,
+   -0.000000;0.433013;1.250000;,
+   -1.250000;0.433013;-0.000000;,
+   -1.469846;0.171010;-0.000000;,
+   1.250000;0.433013;0.000000;,
+   -0.000000;0.433013;1.250000;,
+   -0.000000;0.171010;1.469846;,
+   0.000000;0.433013;-1.250000;,
+   1.250000;0.433013;0.000000;,
+   1.469846;0.171010;0.000000;,
+   0.000000;0.171010;-1.469846;,
+   -1.469846;0.171010;-0.000000;,
+   0.000000;0.171010;-1.469846;,
+   -0.000000;0.171010;1.469846;,
+   -1.469846;0.171010;-0.000000;,
+   -1.469846;-0.171010;-0.000000;,
+   1.469846;0.171010;0.000000;,
+   -0.000000;0.171010;1.469846;,
+   -0.000000;-0.171010;1.469846;,
+   0.000000;0.171010;-1.469846;,
+   1.469846;0.171010;0.000000;,
+   1.469846;-0.171010;0.000000;,
+   0.000000;-0.171010;-1.469846;,
+   -1.469846;-0.171010;-0.000000;,
+   0.000000;-0.171010;-1.469846;,
+   -0.000000;-0.171010;1.469846;,
+   -1.469846;-0.171010;-0.000000;,
+   -1.250000;-0.433013;-0.000000;,
+   1.469846;-0.171010;0.000000;,
+   -0.000000;-0.171010;1.469846;,
+   -0.000000;-0.433013;1.250000;,
+   0.000000;-0.171010;-1.469846;,
+   1.469846;-0.171010;0.000000;,
+   1.250000;-0.433013;0.000000;,
+   0.000000;-0.433013;-1.250000;,
+   -1.250000;-0.433013;-0.000000;,
+   0.000000;-0.433013;-1.250000;,
+   -0.000000;-0.433013;1.250000;,
+   -1.250000;-0.433013;-0.000000;,
+   -0.913176;-0.492404;-0.000000;,
+   1.250000;-0.433013;0.000000;,
+   -0.000000;-0.433013;1.250000;,
+   -0.000000;-0.492404;0.913176;,
+   0.000000;-0.433013;-1.250000;,
+   1.250000;-0.433013;0.000000;,
+   0.913176;-0.492404;0.000000;,
+   0.000000;-0.492404;-0.913176;,
+   -0.913176;-0.492404;-0.000000;,
+   0.000000;-0.492404;-0.913176;,
+   -0.000000;-0.492404;0.913176;,
+   -0.913176;-0.492404;-0.000000;,
+   -0.616978;-0.321394;-0.000000;,
+   0.913176;-0.492404;0.000000;,
+   -0.000000;-0.492404;0.913176;,
+   -0.000000;-0.321394;0.616978;,
+   0.000000;-0.492404;-0.913176;,
+   0.913176;-0.492404;0.000000;,
+   0.616978;-0.321394;0.000000;,
+   0.000000;-0.321394;-0.616978;,
+   -0.616978;-0.321394;-0.000000;,
+   0.000000;-0.321394;-0.616978;,
+   0.000000;0.000000;-0.500000;,
+   -0.500000;0.000000;-0.000000;,
+   -0.000000;-0.321394;0.616978;,
+   -0.616978;-0.321394;-0.000000;,
+   -0.500000;0.000000;-0.000000;,
+   -0.000000;0.000000;0.500000;,
+   0.616978;-0.321394;0.000000;,
+   -0.000000;-0.321394;0.616978;,
+   -0.000000;0.000000;0.500000;,
+   0.500000;0.000000;0.000000;,
+   0.000000;-0.321394;-0.616978;,
+   0.616978;-0.321394;0.000000;,
+   0.500000;0.000000;0.000000;,
+   0.000000;0.000000;-0.500000;;
+   36;
+   4;1,0,4,5;,
+   4;2,36,37,6;,
+   4;3,38,39,7;,
+   4;40,41,42,43;,
+   4;44,45,8,9;,
+   4;46,47,48,10;,
+   4;49,50,51,11;,
+   4;52,53,54,55;,
+   4;56,57,12,13;,
+   4;58,59,60,14;,
+   4;61,62,63,15;,
+   4;64,65,66,67;,
+   4;68,69,16,17;,
+   4;70,71,72,18;,
+   4;73,74,75,19;,
+   4;76,77,78,79;,
+   4;80,81,20,21;,
+   4;82,83,84,22;,
+   4;85,86,87,23;,
+   4;88,89,90,91;,
+   4;92,93,24,25;,
+   4;94,95,96,26;,
+   4;97,98,99,27;,
+   4;100,101,102,103;,
+   4;104,105,28,29;,
+   4;106,107,108,30;,
+   4;109,110,111,31;,
+   4;112,113,114,115;,
+   4;116,117,32,33;,
+   4;118,119,120,34;,
+   4;121,122,123,35;,
+   4;124,125,126,127;,
+   4;128,129,130,131;,
+   4;132,133,134,135;,
+   4;136,137,138,139;,
+   4;140,141,142,143;;
+
+   MeshNormals {
+    36;
+    -0.707107;-0.000000;0.707107;,
+    -0.707107;-0.000000;-0.707107;,
+    -0.684791;-0.249243;0.684791;,
+    -0.684791;-0.249243;-0.684791;,
+    -0.684791;0.249244;-0.684791;,
+    -0.684791;0.249244;0.684791;,
+    -0.608120;-0.510274;0.608120;,
+    -0.608120;-0.510274;-0.608121;,
+    -0.608120;0.510274;0.608120;,
+    -0.608120;0.510274;-0.608120;,
+    -0.447214;-0.774597;-0.447214;,
+    -0.447214;-0.774597;0.447214;,
+    -0.447214;0.774597;-0.447214;,
+    -0.447214;0.774597;0.447214;,
+    -0.171088;0.970288;0.171088;,
+    -0.171088;0.970288;-0.171088;,
+    -0.171088;-0.970288;0.171088;,
+    -0.171088;-0.970288;-0.171088;,
+    0.171088;-0.970288;-0.171088;,
+    0.171088;-0.970288;0.171088;,
+    0.171088;0.970288;-0.171088;,
+    0.171088;0.970288;0.171088;,
+    0.447214;0.774597;0.447214;,
+    0.447214;0.774597;-0.447214;,
+    0.447214;-0.774597;0.447214;,
+    0.447214;-0.774597;-0.447214;,
+    0.608120;0.510274;0.608120;,
+    0.608120;-0.510274;-0.608120;,
+    0.608120;-0.510273;0.608120;,
+    0.608120;0.510274;-0.608120;,
+    0.684791;-0.249243;0.684791;,
+    0.684791;0.249244;0.684791;,
+    0.684791;-0.249243;-0.684791;,
+    0.684791;0.249244;-0.684791;,
+    0.707107;-0.000000;0.707107;,
+    0.707107;-0.000000;-0.707107;;
+    36;
+    4;31,31,31,31;,
+    4;33,33,33,33;,
+    4;4,4,4,4;,
+    4;5,5,5,5;,
+    4;22,22,22,22;,
+    4;23,23,23,23;,
+    4;12,12,12,12;,
+    4;13,13,13,13;,
+    4;15,15,15,15;,
+    4;14,14,14,14;,
+    4;21,21,21,21;,
+    4;20,20,20,20;,
+    4;9,9,9,9;,
+    4;8,8,8,8;,
+    4;26,26,26,26;,
+    4;29,29,29,29;,
+    4;1,1,1,1;,
+    4;0,0,0,0;,
+    4;34,34,34,34;,
+    4;35,35,35,35;,
+    4;7,7,7,7;,
+    4;6,6,6,6;,
+    4;28,28,28,28;,
+    4;27,27,27,27;,
+    4;17,17,17,17;,
+    4;16,16,16,16;,
+    4;19,19,19,19;,
+    4;18,18,18,18;,
+    4;24,24,24,24;,
+    4;25,25,25,25;,
+    4;10,10,10,10;,
+    4;11,11,11,11;,
+    4;30,30,30,30;,
+    4;32,32,32,32;,
+    4;3,3,3,3;,
+    4;2,2,2,2;;
+   }
+
+   MeshTextureCoords {
+    144;
+    0.311801;-0.605993;,
+    0.311801;-0.690380;,
+    0.311801;-0.605993;,
+    0.147702;-0.556106;,
+    0.366044;-0.605993;,
+    0.366044;-0.710123;,
+    0.366044;-0.605993;,
+    0.147702;-0.610349;,
+    0.313772;-0.404186;,
+    0.159651;-0.250065;,
+    0.313772;-0.095944;,
+    0.467893;-0.250065;,
+    0.313772;-0.461033;,
+    0.102804;-0.250065;,
+    0.313772;-0.039097;,
+    0.524740;-0.250065;,
+    0.313772;-0.498138;,
+    0.065699;-0.250065;,
+    0.313772;-0.001992;,
+    0.561845;-0.250065;,
+    0.001859;-0.498138;,
+    0.001859;-0.250065;,
+    0.001859;-0.001992;,
+    0.371770;-0.501862;,
+    0.683292;-0.538967;,
+    0.472324;-0.749935;,
+    0.683292;-0.960903;,
+    0.894260;-0.749935;,
+    0.683292;-0.595814;,
+    0.529171;-0.749935;,
+    0.683292;-0.904056;,
+    0.837413;-0.749935;,
+    0.683292;-0.645805;,
+    0.579162;-0.749935;,
+    0.683292;-0.854065;,
+    0.787422;-0.749935;,
+    0.311801;-0.690380;,
+    0.366044;-0.710123;,
+    0.232089;-0.556106;,
+    0.251832;-0.610349;,
+    0.311801;-0.605993;,
+    0.311801;-0.521605;,
+    0.366044;-0.501862;,
+    0.366044;-0.605993;,
+    0.209642;-0.250065;,
+    0.313772;-0.354195;,
+    0.313772;-0.145935;,
+    0.209642;-0.250065;,
+    0.159651;-0.250065;,
+    0.417902;-0.250065;,
+    0.313772;-0.145935;,
+    0.313772;-0.095944;,
+    0.313772;-0.354195;,
+    0.417902;-0.250065;,
+    0.467893;-0.250065;,
+    0.313772;-0.404186;,
+    0.159651;-0.250065;,
+    0.313772;-0.404186;,
+    0.313772;-0.095944;,
+    0.159651;-0.250065;,
+    0.102804;-0.250065;,
+    0.467893;-0.250065;,
+    0.313772;-0.095944;,
+    0.313772;-0.039097;,
+    0.313772;-0.404186;,
+    0.467893;-0.250065;,
+    0.524740;-0.250065;,
+    0.313772;-0.461033;,
+    0.102804;-0.250065;,
+    0.313772;-0.461033;,
+    0.313772;-0.039097;,
+    0.102804;-0.250065;,
+    0.065699;-0.250065;,
+    0.524740;-0.250065;,
+    0.313772;-0.039097;,
+    0.313772;-0.001992;,
+    0.313772;-0.461033;,
+    0.524740;-0.250065;,
+    0.561845;-0.250065;,
+    0.313772;-0.498138;,
+    0.059583;-0.250065;,
+    0.059583;-0.498138;,
+    0.059583;-0.001992;,
+    0.059583;-0.250065;,
+    0.001859;-0.250065;,
+    0.429494;-0.501862;,
+    0.429494;-0.749935;,
+    0.371770;-0.749935;,
+    0.059583;-0.498138;,
+    0.059583;-0.250065;,
+    0.001859;-0.250065;,
+    0.001859;-0.498138;,
+    0.435219;-0.749935;,
+    0.683292;-0.501862;,
+    0.683292;-0.998008;,
+    0.435219;-0.749935;,
+    0.472324;-0.749935;,
+    0.931365;-0.749935;,
+    0.683292;-0.998008;,
+    0.683292;-0.960903;,
+    0.683292;-0.501862;,
+    0.931365;-0.749935;,
+    0.894260;-0.749935;,
+    0.683292;-0.538967;,
+    0.472324;-0.749935;,
+    0.683292;-0.538967;,
+    0.683292;-0.960903;,
+    0.472324;-0.749935;,
+    0.529171;-0.749935;,
+    0.894260;-0.749935;,
+    0.683292;-0.960903;,
+    0.683292;-0.904056;,
+    0.683292;-0.538967;,
+    0.894260;-0.749935;,
+    0.837413;-0.749935;,
+    0.683292;-0.595814;,
+    0.529171;-0.749935;,
+    0.683292;-0.595814;,
+    0.683292;-0.904056;,
+    0.529171;-0.749935;,
+    0.579162;-0.749935;,
+    0.837413;-0.749935;,
+    0.683292;-0.904056;,
+    0.683292;-0.854065;,
+    0.683292;-0.595814;,
+    0.837413;-0.749935;,
+    0.787422;-0.749935;,
+    0.683292;-0.645805;,
+    0.257558;-0.710123;,
+    0.257558;-0.605993;,
+    0.311801;-0.605993;,
+    0.311801;-0.690380;,
+    0.257558;-0.605993;,
+    0.257558;-0.710123;,
+    0.311801;-0.690380;,
+    0.311801;-0.605993;,
+    0.147702;-0.501862;,
+    0.251832;-0.501862;,
+    0.232089;-0.556106;,
+    0.147702;-0.556106;,
+    0.257558;-0.605993;,
+    0.257558;-0.501862;,
+    0.311801;-0.521605;,
+    0.311801;-0.605993;;
+   }
+
+   MeshMaterialList {
+    1;
+    36;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    144;
+    36;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    1,
+    5,
+    2,
+    6,
+    0,
+    3,
+    7,
+    4,
+    5,
+    4,
+    6,
+    5,
+    9,
+    7,
+    6,
+    10,
+    4,
+    7,
+    11,
+    8,
+    9,
+    8,
+    10,
+    9,
+    13,
+    11,
+    10,
+    14,
+    8,
+    11,
+    15,
+    12,
+    13,
+    12,
+    14,
+    13,
+    17,
+    15,
+    14,
+    18,
+    12,
+    15,
+    19,
+    16,
+    17,
+    16,
+    18,
+    17,
+    21,
+    19,
+    18,
+    22,
+    16,
+    19,
+    23,
+    20,
+    21,
+    20,
+    22,
+    21,
+    25,
+    23,
+    22,
+    26,
+    20,
+    23,
+    27,
+    24,
+    25,
+    24,
+    26,
+    25,
+    29,
+    27,
+    26,
+    30,
+    24,
+    27,
+    31,
+    28,
+    29,
+    28,
+    30,
+    29,
+    33,
+    31,
+    30,
+    34,
+    28,
+    31,
+    35,
+    32,
+    33,
+    32,
+    0,
+    1,
+    34,
+    33,
+    1,
+    2,
+    35,
+    34,
+    2,
+    3,
+    32,
+    35,
+    3,
+    0;
+   }
+  }
+ }
+}
+
+AnimationSet {
+ 
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/lens.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/lens.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/lens.x	(revision 1481)
@@ -0,0 +1,2010 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.867765,0.000000,-0.496974,0.000000,-0.259952,0.852290,0.453901,0.000000,0.423566,0.523069,-0.739588,0.000000,10.898597,14.542914,-20.182140,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsCube1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsToPoly1 {
+  
+
+  FrameTransformMatrix {
+   0.711825,0.000000,0.000000,0.000000,0.000000,1.441729,0.000000,0.000000,0.000000,0.000000,1.618954,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh nurbsToPolyShape1 {
+   219;
+   1.000000;-0.000000;0.000000;,
+   -1.000000;-0.000000;-0.000000;,
+   0.000000;-0.000000;1.000000;,
+   0.707371;-0.706844;-0.000000;,
+   0.000000;-0.706844;0.707371;,
+   0.500187;-0.706844;0.500187;,
+   0.258357;-0.964280;-0.000000;,
+   0.182686;-0.964280;0.182686;,
+   0.238416;-0.964280;0.098755;,
+   0.652773;-0.706844;0.270388;,
+   0.499333;-0.864208;-0.000000;,
+   0.460792;-0.864208;0.190866;,
+   0.353082;-0.864208;0.353082;,
+   0.000000;-0.964280;0.258357;,
+   0.098755;-0.964280;0.238416;,
+   0.270388;-0.706844;0.652773;,
+   0.190866;-0.864208;0.460792;,
+   0.000000;-0.864208;0.499333;,
+   0.707107;-0.000000;0.707107;,
+   0.865839;-0.499683;0.000000;,
+   0.612240;-0.499683;0.612240;,
+   0.799009;-0.499683;0.330961;,
+   0.922816;-0.000000;0.382243;,
+   0.965400;-0.258545;0.000000;,
+   0.890886;-0.258545;0.369017;,
+   0.682641;-0.258545;0.682641;,
+   0.000000;-0.499683;0.865839;,
+   0.330961;-0.499683;0.799009;,
+   0.382243;-0.000000;0.922816;,
+   0.369017;-0.258545;0.890886;,
+   0.000000;-0.258545;0.965400;,
+   -0.707371;-0.706844;-0.000000;,
+   -0.500187;-0.706844;0.500187;,
+   -0.182686;-0.964280;0.182686;,
+   -0.098755;-0.964280;0.238416;,
+   -0.270388;-0.706844;0.652773;,
+   -0.190866;-0.864208;0.460792;,
+   -0.353082;-0.864208;0.353082;,
+   -0.258357;-0.964280;-0.000000;,
+   -0.238416;-0.964280;0.098755;,
+   -0.652773;-0.706844;0.270388;,
+   -0.460792;-0.864208;0.190866;,
+   -0.499333;-0.864208;-0.000000;,
+   -0.707107;-0.000000;0.707107;,
+   -0.612240;-0.499683;0.612240;,
+   -0.330961;-0.499683;0.799009;,
+   -0.382243;-0.000000;0.922816;,
+   -0.369017;-0.258545;0.890886;,
+   -0.682641;-0.258545;0.682641;,
+   -0.865839;-0.499683;-0.000000;,
+   -0.799009;-0.499683;0.330961;,
+   -0.922816;-0.000000;0.382243;,
+   -0.890886;-0.258545;0.369017;,
+   -0.965400;-0.258545;-0.000000;,
+   0.707371;0.706844;0.000000;,
+   -0.000000;0.706844;0.707371;,
+   0.500187;0.706844;0.500187;,
+   0.965400;0.258545;0.000000;,
+   0.682641;0.258545;0.682641;,
+   0.890886;0.258545;0.369017;,
+   0.652773;0.706844;0.270388;,
+   0.865839;0.499683;0.000000;,
+   0.799009;0.499683;0.330961;,
+   0.612240;0.499683;0.612240;,
+   0.000000;0.258545;0.965400;,
+   0.369017;0.258545;0.890886;,
+   0.270388;0.706844;0.652773;,
+   0.330961;0.499683;0.799009;,
+   0.000000;0.499683;0.865839;,
+   0.499333;0.864208;0.000000;,
+   0.353082;0.864208;0.353082;,
+   0.460792;0.864208;0.190866;,
+   0.258357;0.964280;0.000000;,
+   0.238416;0.964280;0.098755;,
+   0.182686;0.964280;0.182686;,
+   -0.000000;0.864208;0.499333;,
+   0.190866;0.864208;0.460792;,
+   0.098755;0.964280;0.238416;,
+   -0.000000;0.964280;0.258357;,
+   -0.707371;0.706844;-0.000000;,
+   -0.500187;0.706844;0.500187;,
+   -0.682641;0.258545;0.682641;,
+   -0.369017;0.258545;0.890886;,
+   -0.270388;0.706844;0.652773;,
+   -0.330961;0.499683;0.799009;,
+   -0.612240;0.499683;0.612240;,
+   -0.965400;0.258545;-0.000000;,
+   -0.890886;0.258545;0.369017;,
+   -0.652773;0.706844;0.270388;,
+   -0.799009;0.499683;0.330961;,
+   -0.865839;0.499683;-0.000000;,
+   -0.353082;0.864208;0.353082;,
+   -0.190866;0.864208;0.460792;,
+   -0.098755;0.964280;0.238416;,
+   -0.182686;0.964280;0.182686;,
+   -0.499333;0.864208;-0.000000;,
+   -0.460792;0.864208;0.190866;,
+   -0.238416;0.964280;0.098755;,
+   -0.258357;0.964280;-0.000000;,
+   -0.000000;-0.000000;-1.000000;,
+   -0.000000;-0.706844;-0.707371;,
+   -0.500187;-0.706844;-0.500187;,
+   -0.182686;-0.964280;-0.182686;,
+   -0.238416;-0.964280;-0.098755;,
+   -0.652773;-0.706844;-0.270388;,
+   -0.460792;-0.864208;-0.190866;,
+   -0.353082;-0.864208;-0.353082;,
+   -0.000000;-0.964280;-0.258357;,
+   -0.098755;-0.964280;-0.238416;,
+   -0.270388;-0.706844;-0.652773;,
+   -0.190866;-0.864208;-0.460792;,
+   -0.000000;-0.864208;-0.499333;,
+   -0.707107;-0.000000;-0.707107;,
+   -0.612240;-0.499683;-0.612240;,
+   -0.799009;-0.499683;-0.330961;,
+   -0.922816;-0.000000;-0.382243;,
+   -0.890886;-0.258545;-0.369017;,
+   -0.682641;-0.258545;-0.682641;,
+   -0.000000;-0.499683;-0.865839;,
+   -0.330961;-0.499683;-0.799009;,
+   -0.382243;-0.000000;-0.922816;,
+   -0.369017;-0.258545;-0.890886;,
+   -0.000000;-0.258545;-0.965400;,
+   0.500187;-0.706844;-0.500187;,
+   0.182686;-0.964280;-0.182686;,
+   0.098755;-0.964280;-0.238416;,
+   0.270388;-0.706844;-0.652773;,
+   0.190866;-0.864208;-0.460792;,
+   0.353082;-0.864208;-0.353082;,
+   0.000000;-1.000000;-0.000000;,
+   0.238416;-0.964280;-0.098755;,
+   0.652773;-0.706844;-0.270388;,
+   0.460792;-0.864208;-0.190866;,
+   0.707107;-0.000000;-0.707107;,
+   0.612240;-0.499683;-0.612240;,
+   0.330961;-0.499683;-0.799009;,
+   0.382243;-0.000000;-0.922816;,
+   0.369017;-0.258545;-0.890886;,
+   0.682641;-0.258545;-0.682641;,
+   0.799009;-0.499683;-0.330961;,
+   0.922816;-0.000000;-0.382243;,
+   0.890886;-0.258545;-0.369017;,
+   -0.000000;0.706844;-0.707371;,
+   -0.500187;0.706844;-0.500187;,
+   -0.682641;0.258545;-0.682641;,
+   -0.890886;0.258545;-0.369017;,
+   -0.652773;0.706844;-0.270388;,
+   -0.799009;0.499683;-0.330961;,
+   -0.612240;0.499683;-0.612240;,
+   -0.000000;0.258545;-0.965400;,
+   -0.369017;0.258545;-0.890886;,
+   -0.270388;0.706844;-0.652773;,
+   -0.330961;0.499683;-0.799009;,
+   -0.000000;0.499683;-0.865839;,
+   -0.353082;0.864208;-0.353082;,
+   -0.460792;0.864208;-0.190866;,
+   -0.238416;0.964280;-0.098755;,
+   -0.182686;0.964280;-0.182686;,
+   -0.000000;0.864208;-0.499333;,
+   -0.190866;0.864208;-0.460792;,
+   -0.098755;0.964280;-0.238416;,
+   -0.000000;0.964280;-0.258357;,
+   0.500187;0.706844;-0.500187;,
+   0.682641;0.258545;-0.682641;,
+   0.369017;0.258545;-0.890886;,
+   0.270388;0.706844;-0.652773;,
+   0.330961;0.499683;-0.799009;,
+   0.612240;0.499683;-0.612240;,
+   0.890886;0.258545;-0.369017;,
+   0.652773;0.706844;-0.270388;,
+   0.799009;0.499683;-0.330961;,
+   0.353082;0.864208;-0.353082;,
+   0.190866;0.864208;-0.460792;,
+   0.098755;0.964280;-0.238416;,
+   0.182686;0.964280;-0.182686;,
+   0.460792;0.864208;-0.190866;,
+   0.000000;1.000000;0.000000;,
+   0.238416;0.964280;-0.098755;,
+   0.000000;1.000000;0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.258357;0.964280;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   1.000000;-0.000000;0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.707371;-0.706844;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.258357;-0.964280;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.499333;-0.864208;-0.000000;,
+   0.865839;-0.499683;0.000000;,
+   0.965400;-0.258545;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.707371;0.706844;0.000000;,
+   0.965400;0.258545;0.000000;,
+   0.865839;0.499683;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.000000;1.000000;0.000000;,
+   0.499333;0.864208;0.000000;,
+   0.000000;1.000000;0.000000;;
+   352;
+   3;176,72,177;,
+   3;178,98,97;,
+   3;51,1,52;,
+   3;28,2,29;,
+   3;15,4,16;,
+   3;9,5,11;,
+   3;8,7,129;,
+   3;179,6,8;,
+   3;10,3,9;,
+   3;6,10,11;,
+   3;8,11,12;,
+   3;13,180,14;,
+   3;181,7,14;,
+   3;5,15,12;,
+   3;7,12,16;,
+   3;14,16,17;,
+   3;22,18,24;,
+   3;21,20,9;,
+   3;3,19,21;,
+   3;23,0,22;,
+   3;19,23,24;,
+   3;21,24,25;,
+   3;15,27,26;,
+   3;5,20,27;,
+   3;18,28,25;,
+   3;20,25,29;,
+   3;27,29,30;,
+   3;41,40,31;,
+   3;35,32,36;,
+   3;182,34,33;,
+   3;183,13,34;,
+   3;17,4,35;,
+   3;13,17,36;,
+   3;34,36,37;,
+   3;38,184,39;,
+   3;185,33,39;,
+   3;37,32,40;,
+   3;33,37,41;,
+   3;39,41,42;,
+   3;46,43,47;,
+   3;35,45,44;,
+   3;4,26,45;,
+   3;2,46,30;,
+   3;26,30,47;,
+   3;45,47,48;,
+   3;40,50,49;,
+   3;32,44,50;,
+   3;43,51,48;,
+   3;44,48,52;,
+   3;50,52,53;,
+   3;186,78,77;,
+   3;66,55,67;,
+   3;60,56,62;,
+   3;59,58,22;,
+   3;0,57,59;,
+   3;61,54,60;,
+   3;57,61,62;,
+   3;59,62,63;,
+   3;28,65,64;,
+   3;18,58,65;,
+   3;56,66,63;,
+   3;58,63,67;,
+   3;65,67,68;,
+   3;187,74,73;,
+   3;71,70,60;,
+   3;54,69,71;,
+   3;188,189,73;,
+   3;69,188,73;,
+   3;71,73,74;,
+   3;66,76,75;,
+   3;56,70,76;,
+   3;190,77,74;,
+   3;70,74,77;,
+   3;76,77,78;,
+   3;89,88,79;,
+   3;83,80,84;,
+   3;46,82,81;,
+   3;2,64,82;,
+   3;68,55,83;,
+   3;64,68,84;,
+   3;82,84,85;,
+   3;51,87,86;,
+   3;43,81,87;,
+   3;85,80,88;,
+   3;81,85,89;,
+   3;87,89,90;,
+   3;191,94,93;,
+   3;83,92,91;,
+   3;55,75,92;,
+   3;192,93,78;,
+   3;75,78,93;,
+   3;92,93,94;,
+   3;88,96,95;,
+   3;80,91,96;,
+   3;193,97,94;,
+   3;91,94,97;,
+   3;96,97,98;,
+   3;141,140,194;,
+   3;120,99,121;,
+   3;109,100,110;,
+   3;104,101,105;,
+   3;195,103,102;,
+   3;196,38,103;,
+   3;42,31,104;,
+   3;38,42,105;,
+   3;103,105,106;,
+   3;197,108,107;,
+   3;198,102,108;,
+   3;106,101,109;,
+   3;102,106,110;,
+   3;108,110,111;,
+   3;115,112,116;,
+   3;114,113,104;,
+   3;31,49,114;,
+   3;53,1,115;,
+   3;49,53,116;,
+   3;114,116,117;,
+   3;109,119,118;,
+   3;101,113,119;,
+   3;112,120,117;,
+   3;113,117,121;,
+   3;119,121,122;,
+   3;132,131,199;,
+   3;126,123,127;,
+   3;200,125,124;,
+   3;201,107,125;,
+   3;111,100,126;,
+   3;107,111,127;,
+   3;125,127,128;,
+   3;202,203,130;,
+   3;204,124,130;,
+   3;128,123,131;,
+   3;124,128,132;,
+   3;130,132,205;,
+   3;136,133,137;,
+   3;126,135,134;,
+   3;100,118,135;,
+   3;122,99,136;,
+   3;118,122,137;,
+   3;135,137,138;,
+   3;131,139,206;,
+   3;123,134,139;,
+   3;138,133,140;,
+   3;134,138,141;,
+   3;139,141,207;,
+   3;208,161,160;,
+   3;152,151,142;,
+   3;146,143,147;,
+   3;115,145,144;,
+   3;1,86,145;,
+   3;90,79,146;,
+   3;86,90,147;,
+   3;145,147,148;,
+   3;120,150,149;,
+   3;112,144,150;,
+   3;148,143,151;,
+   3;144,148,152;,
+   3;150,152,153;,
+   3;209,157,156;,
+   3;146,155,154;,
+   3;79,95,155;,
+   3;210,156,98;,
+   3;95,98,156;,
+   3;155,156,157;,
+   3;151,159,158;,
+   3;143,154,159;,
+   3;211,160,157;,
+   3;154,157,160;,
+   3;159,160,161;,
+   3;170,169,212;,
+   3;165,162,166;,
+   3;136,164,163;,
+   3;99,149,164;,
+   3;153,142,165;,
+   3;149,153,166;,
+   3;164,166,167;,
+   3;140,168,213;,
+   3;133,163,168;,
+   3;167,162,169;,
+   3;163,167,170;,
+   3;168,170,214;,
+   3;215,174,173;,
+   3;165,172,171;,
+   3;142,158,172;,
+   3;216,173,161;,
+   3;158,161,173;,
+   3;172,173,174;,
+   3;169,175,217;,
+   3;162,171,175;,
+   3;218,177,174;,
+   3;171,174,177;,
+   3;175,177,72;,
+   3;1,53,52;,
+   3;2,30,29;,
+   3;4,17,16;,
+   3;5,12,11;,
+   3;9,11,10;,
+   3;11,8,6;,
+   3;12,7,8;,
+   3;15,16,12;,
+   3;16,14,7;,
+   3;17,13,14;,
+   3;18,25,24;,
+   3;20,5,9;,
+   3;21,9,3;,
+   3;22,24,23;,
+   3;24,21,19;,
+   3;25,20,21;,
+   3;26,4,15;,
+   3;27,15,5;,
+   3;28,29,25;,
+   3;29,27,20;,
+   3;30,26,27;,
+   3;31,42,41;,
+   3;32,37,36;,
+   3;35,36,17;,
+   3;36,34,13;,
+   3;37,33,34;,
+   3;40,41,37;,
+   3;41,39,33;,
+   3;42,38,39;,
+   3;43,48,47;,
+   3;44,32,35;,
+   3;45,35,4;,
+   3;46,47,30;,
+   3;47,45,26;,
+   3;48,44,45;,
+   3;49,31,40;,
+   3;50,40,32;,
+   3;51,52,48;,
+   3;52,50,44;,
+   3;53,49,50;,
+   3;55,68,67;,
+   3;56,63,62;,
+   3;58,18,22;,
+   3;59,22,0;,
+   3;60,62,61;,
+   3;62,59,57;,
+   3;63,58,59;,
+   3;64,2,28;,
+   3;65,28,18;,
+   3;66,67,63;,
+   3;67,65,58;,
+   3;68,64,65;,
+   3;70,56,60;,
+   3;71,60,54;,
+   3;73,71,69;,
+   3;74,70,71;,
+   3;75,55,66;,
+   3;76,66,56;,
+   3;77,76,70;,
+   3;78,75,76;,
+   3;79,90,89;,
+   3;80,85,84;,
+   3;81,43,46;,
+   3;82,46,2;,
+   3;83,84,68;,
+   3;84,82,64;,
+   3;85,81,82;,
+   3;86,1,51;,
+   3;87,51,43;,
+   3;88,89,85;,
+   3;89,87,81;,
+   3;90,86,87;,
+   3;91,80,83;,
+   3;92,83,55;,
+   3;93,92,75;,
+   3;94,91,92;,
+   3;95,79,88;,
+   3;96,88,80;,
+   3;97,96,91;,
+   3;98,95,96;,
+   3;194,207,141;,
+   3;99,122,121;,
+   3;100,111,110;,
+   3;101,106,105;,
+   3;104,105,42;,
+   3;105,103,38;,
+   3;106,102,103;,
+   3;109,110,106;,
+   3;110,108,102;,
+   3;111,107,108;,
+   3;112,117,116;,
+   3;113,101,104;,
+   3;114,104,31;,
+   3;115,116,53;,
+   3;116,114,49;,
+   3;117,113,114;,
+   3;118,100,109;,
+   3;119,109,101;,
+   3;120,121,117;,
+   3;121,119,113;,
+   3;122,118,119;,
+   3;199,205,132;,
+   3;123,128,127;,
+   3;126,127,111;,
+   3;127,125,107;,
+   3;128,124,125;,
+   3;131,132,128;,
+   3;132,130,124;,
+   3;205,202,130;,
+   3;133,138,137;,
+   3;134,123,126;,
+   3;135,126,100;,
+   3;136,137,122;,
+   3;137,135,118;,
+   3;138,134,135;,
+   3;206,199,131;,
+   3;139,131,123;,
+   3;140,141,138;,
+   3;141,139,134;,
+   3;207,206,139;,
+   3;142,153,152;,
+   3;143,148,147;,
+   3;144,112,115;,
+   3;145,115,1;,
+   3;146,147,90;,
+   3;147,145,86;,
+   3;148,144,145;,
+   3;149,99,120;,
+   3;150,120,112;,
+   3;151,152,148;,
+   3;152,150,144;,
+   3;153,149,150;,
+   3;154,143,146;,
+   3;155,146,79;,
+   3;156,155,95;,
+   3;157,154,155;,
+   3;158,142,151;,
+   3;159,151,143;,
+   3;160,159,154;,
+   3;161,158,159;,
+   3;212,214,170;,
+   3;162,167,166;,
+   3;163,133,136;,
+   3;164,136,99;,
+   3;165,166,153;,
+   3;166,164,149;,
+   3;167,163,164;,
+   3;213,194,140;,
+   3;168,140,133;,
+   3;169,170,167;,
+   3;170,168,163;,
+   3;214,213,168;,
+   3;171,162,165;,
+   3;172,165,142;,
+   3;173,172,158;,
+   3;174,171,172;,
+   3;217,212,169;,
+   3;175,169,162;,
+   3;177,175,171;,
+   3;72,217,175;;
+
+   MeshNormals {
+    178;
+    -1.000000;0.000000;0.000000;,
+    -0.965752;0.259458;0.002187;,
+    -0.965752;-0.259458;-0.002187;,
+    -0.923880;-0.000000;-0.382683;,
+    -0.923880;0.000000;0.382683;,
+    -0.893120;-0.259179;0.367646;,
+    -0.893120;0.259179;-0.367646;,
+    -0.891496;-0.259179;-0.371566;,
+    -0.891496;0.259179;0.371566;,
+    -0.866531;-0.499104;-0.004285;,
+    -0.866531;0.499104;0.004285;,
+    -0.802392;-0.498673;0.327860;,
+    -0.802392;0.498673;-0.327860;,
+    -0.799209;-0.498673;-0.335545;,
+    -0.799209;0.498673;0.335545;,
+    -0.707107;0.000000;0.707107;,
+    -0.707107;-0.000000;-0.707107;,
+    -0.704923;-0.709256;-0.006360;,
+    -0.704923;0.709256;0.006360;,
+    -0.684436;-0.259458;0.681343;,
+    -0.684436;0.259458;-0.681343;,
+    -0.681343;0.259458;0.684436;,
+    -0.681343;-0.259458;-0.684436;,
+    -0.654005;-0.708850;0.264215;,
+    -0.654005;0.708850;-0.264215;,
+    -0.649279;-0.708850;-0.275623;,
+    -0.649279;0.708850;0.275623;,
+    -0.615760;-0.499104;0.609700;,
+    -0.615760;0.499104;-0.609700;,
+    -0.609700;-0.499104;-0.615760;,
+    -0.609700;0.499104;0.615760;,
+    -0.502953;-0.709256;0.493958;,
+    -0.502953;0.709256;-0.493958;,
+    -0.497147;-0.867635;-0.007382;,
+    -0.497147;0.867635;0.007382;,
+    -0.493958;0.709256;0.502953;,
+    -0.493958;-0.709256;-0.502953;,
+    -0.462446;-0.867389;0.183793;,
+    -0.462446;0.867389;-0.183793;,
+    -0.456960;0.867389;0.197038;,
+    -0.456960;-0.867389;-0.197038;,
+    -0.382683;-0.000000;0.923880;,
+    -0.382683;0.000000;-0.923880;,
+    -0.371566;-0.259179;0.891496;,
+    -0.371566;0.259179;-0.891496;,
+    -0.367646;-0.259179;-0.893120;,
+    -0.367646;0.259179;0.893120;,
+    -0.356756;-0.867635;0.346316;,
+    -0.356756;0.867635;-0.346316;,
+    -0.346316;0.867635;0.356756;,
+    -0.346316;-0.867635;-0.356756;,
+    -0.335545;0.498673;-0.799209;,
+    -0.335545;-0.498673;0.799209;,
+    -0.327860;-0.498673;-0.802392;,
+    -0.327860;0.498673;0.802392;,
+    -0.286965;-0.957814;-0.015593;,
+    -0.286965;0.957814;0.015593;,
+    -0.275623;0.708850;-0.649279;,
+    -0.275623;-0.708850;0.649279;,
+    -0.271199;0.957730;-0.095942;,
+    -0.271199;-0.957730;0.095942;,
+    -0.264215;0.708850;0.654005;,
+    -0.264215;-0.708850;-0.654005;,
+    -0.259608;-0.957730;-0.123925;,
+    -0.259608;0.957730;0.123925;,
+    -0.213941;-0.957814;0.191889;,
+    -0.213941;0.957814;-0.191889;,
+    -0.197038;-0.867389;0.456960;,
+    -0.197038;0.867389;-0.456960;,
+    -0.191888;-0.957814;-0.213941;,
+    -0.191888;0.957814;0.213941;,
+    -0.183793;0.867389;0.462446;,
+    -0.183793;-0.867389;-0.462446;,
+    -0.123925;-0.957730;0.259608;,
+    -0.123925;0.957730;-0.259608;,
+    -0.095942;0.957730;0.271199;,
+    -0.095942;-0.957730;-0.271199;,
+    -0.015593;0.957814;-0.286965;,
+    -0.015593;-0.957814;0.286965;,
+    -0.007382;-0.867635;0.497147;,
+    -0.007382;0.867635;-0.497147;,
+    -0.006360;0.709256;-0.704923;,
+    -0.006360;-0.709256;0.704923;,
+    -0.004285;-0.499104;0.866531;,
+    -0.004285;0.499104;-0.866531;,
+    -0.002187;-0.259458;0.965752;,
+    -0.002187;0.259458;-0.965752;,
+    -0.000000;0.000000;-1.000000;,
+    -0.000000;1.000000;0.000000;,
+    0.000000;-1.000000;-0.000000;,
+    0.000000;0.000000;1.000000;,
+    0.002187;0.259458;0.965752;,
+    0.002187;-0.259458;-0.965752;,
+    0.004285;-0.499104;-0.866531;,
+    0.004285;0.499104;0.866531;,
+    0.006360;0.709256;0.704923;,
+    0.006360;-0.709256;-0.704923;,
+    0.007382;0.867635;0.497147;,
+    0.007382;-0.867635;-0.497147;,
+    0.015593;0.957814;0.286965;,
+    0.015593;-0.957814;-0.286965;,
+    0.095942;-0.957730;0.271199;,
+    0.095942;0.957730;-0.271199;,
+    0.123925;-0.957730;-0.259608;,
+    0.123925;0.957730;0.259608;,
+    0.183793;-0.867389;0.462446;,
+    0.183793;0.867389;-0.462446;,
+    0.191888;-0.957814;0.213941;,
+    0.191888;0.957814;-0.213941;,
+    0.197038;-0.867389;-0.456960;,
+    0.197038;0.867389;0.456960;,
+    0.213941;0.957814;0.191889;,
+    0.213941;-0.957814;-0.191889;,
+    0.259608;0.957730;-0.123925;,
+    0.259608;-0.957730;0.123925;,
+    0.264215;-0.708850;0.654005;,
+    0.264215;0.708850;-0.654005;,
+    0.271199;-0.957730;-0.095942;,
+    0.271199;0.957730;0.095942;,
+    0.275623;0.708850;0.649279;,
+    0.275623;-0.708850;-0.649279;,
+    0.286965;-0.957814;0.015593;,
+    0.286965;0.957814;-0.015593;,
+    0.327860;-0.498673;0.802392;,
+    0.327860;0.498673;-0.802392;,
+    0.335545;-0.498673;-0.799209;,
+    0.335545;0.498673;0.799209;,
+    0.346316;-0.867635;0.356756;,
+    0.346316;0.867635;-0.356756;,
+    0.356756;0.867635;0.346316;,
+    0.356756;-0.867635;-0.346316;,
+    0.367646;0.259179;-0.893120;,
+    0.367646;-0.259179;0.893120;,
+    0.371566;0.259179;0.891496;,
+    0.371566;-0.259179;-0.891496;,
+    0.382683;-0.000000;-0.923880;,
+    0.382683;0.000000;0.923880;,
+    0.456960;-0.867389;0.197038;,
+    0.456960;0.867389;-0.197038;,
+    0.462446;0.867389;0.183793;,
+    0.462446;-0.867389;-0.183793;,
+    0.493958;-0.709256;0.502953;,
+    0.493958;0.709256;-0.502953;,
+    0.497147;0.867635;-0.007382;,
+    0.497147;-0.867635;0.007382;,
+    0.502953;0.709256;0.493958;,
+    0.502953;-0.709256;-0.493958;,
+    0.609700;-0.499104;0.615760;,
+    0.609700;0.499104;-0.615760;,
+    0.615760;-0.499104;-0.609700;,
+    0.615760;0.499104;0.609700;,
+    0.649279;-0.708850;0.275623;,
+    0.649279;0.708850;-0.275623;,
+    0.654005;-0.708850;-0.264215;,
+    0.654005;0.708850;0.264215;,
+    0.681343;-0.259458;0.684436;,
+    0.681343;0.259458;-0.684436;,
+    0.684436;-0.259458;-0.681343;,
+    0.684436;0.259458;0.681343;,
+    0.704923;0.709256;-0.006360;,
+    0.704923;-0.709256;0.006360;,
+    0.707107;-0.000000;0.707107;,
+    0.707107;0.000000;-0.707107;,
+    0.799209;-0.498673;0.335545;,
+    0.799209;0.498673;-0.335545;,
+    0.802392;-0.498673;-0.327860;,
+    0.802392;0.498673;0.327860;,
+    0.866531;-0.499104;0.004285;,
+    0.866531;0.499104;-0.004285;,
+    0.891496;-0.259179;0.371566;,
+    0.891496;0.259179;-0.371566;,
+    0.893120;-0.259179;-0.367646;,
+    0.893120;0.259179;0.367646;,
+    0.923880;-0.000000;0.382683;,
+    0.923880;-0.000000;-0.382683;,
+    0.965752;0.259458;-0.002187;,
+    0.965752;-0.259458;0.002187;,
+    1.000000;0.000000;0.000000;;
+    352;
+    3;88,122,113;,
+    3;88,56,64;,
+    3;4,0,5;,
+    3;136,90,132;,
+    3;115,82,105;,
+    3;151,141,137;,
+    3;114,107,89;,
+    3;89,121,114;,
+    3;144,160,151;,
+    3;121,144,137;,
+    3;114,137,127;,
+    3;78,89,101;,
+    3;89,107,101;,
+    3;141,115,127;,
+    3;107,127,105;,
+    3;101,105,79;,
+    3;173,161,169;,
+    3;163,147,151;,
+    3;160,167,163;,
+    3;176,177,173;,
+    3;167,176,169;,
+    3;163,169,155;,
+    3;115,123,83;,
+    3;141,147,123;,
+    3;161,136,155;,
+    3;147,155,132;,
+    3;123,132,85;,
+    3;37,23,17;,
+    3;58,31,67;,
+    3;89,73,65;,
+    3;89,78,73;,
+    3;79,82,58;,
+    3;78,79,67;,
+    3;73,67,47;,
+    3;55,89,60;,
+    3;89,65,60;,
+    3;47,31,23;,
+    3;65,47,37;,
+    3;60,37,33;,
+    3;41,15,43;,
+    3;58,52,27;,
+    3;82,83,52;,
+    3;90,41,85;,
+    3;83,85,43;,
+    3;52,43,19;,
+    3;23,11,9;,
+    3;31,27,11;,
+    3;15,4,19;,
+    3;27,19,5;,
+    3;11,5,2;,
+    3;88,99,104;,
+    3;119,95,126;,
+    3;154,145,166;,
+    3;172,158,173;,
+    3;177,175,172;,
+    3;168,159,154;,
+    3;175,168,166;,
+    3;172,166,150;,
+    3;136,133,91;,
+    3;161,158,133;,
+    3;145,119,150;,
+    3;158,150,126;,
+    3;133,126,94;,
+    3;88,111,118;,
+    3;139,129,154;,
+    3;159,143,139;,
+    3;122,88,118;,
+    3;143,122,118;,
+    3;139,118,111;,
+    3;119,110,97;,
+    3;145,129,110;,
+    3;88,104,111;,
+    3;129,111,104;,
+    3;110,104,99;,
+    3;14,26,18;,
+    3;61,35,54;,
+    3;41,46,21;,
+    3;90,91,46;,
+    3;94,95,61;,
+    3;91,94,54;,
+    3;46,54,30;,
+    3;4,8,1;,
+    3;15,21,8;,
+    3;30,35,26;,
+    3;21,30,14;,
+    3;8,14,10;,
+    3;88,70,75;,
+    3;61,71,49;,
+    3;95,97,71;,
+    3;88,75,99;,
+    3;97,99,75;,
+    3;71,75,70;,
+    3;26,39,34;,
+    3;35,49,39;,
+    3;88,64,70;,
+    3;49,70,64;,
+    3;39,64,56;,
+    3;171,174,177;,
+    3;42,87,45;,
+    3;62,96,72;,
+    3;25,36,40;,
+    3;89,63,69;,
+    3;89,55,63;,
+    3;33,17,25;,
+    3;55,33,40;,
+    3;63,40,50;,
+    3;89,76,100;,
+    3;89,69,76;,
+    3;50,36,62;,
+    3;69,50,72;,
+    3;76,72,98;,
+    3;3,16,7;,
+    3;13,29,25;,
+    3;17,9,13;,
+    3;2,0,3;,
+    3;9,2,7;,
+    3;13,7,22;,
+    3;62,53,93;,
+    3;36,29,53;,
+    3;16,42,22;,
+    3;29,22,45;,
+    3;53,45,92;,
+    3;140,153,160;,
+    3;120,146,109;,
+    3;89,103,112;,
+    3;89,100,103;,
+    3;98,96,120;,
+    3;100,98,109;,
+    3;103,109,130;,
+    3;121,89,117;,
+    3;89,112,117;,
+    3;130,146,153;,
+    3;112,130,140;,
+    3;117,140,144;,
+    3;135,162,134;,
+    3;120,125,149;,
+    3;96,93,125;,
+    3;92,87,135;,
+    3;93,92,134;,
+    3;125,134,157;,
+    3;153,165,167;,
+    3;146,149,165;,
+    3;157,162,174;,
+    3;149,157,171;,
+    3;165,171,176;,
+    3;88,77,74;,
+    3;51,57,81;,
+    3;24,32,12;,
+    3;3,6,20;,
+    3;0,1,6;,
+    3;10,18,24;,
+    3;1,10,12;,
+    3;6,12,28;,
+    3;42,44,86;,
+    3;16,20,44;,
+    3;28,32,57;,
+    3;20,28,51;,
+    3;44,51,84;,
+    3;88,66,59;,
+    3;24,38,48;,
+    3;18,34,38;,
+    3;88,59,56;,
+    3;34,56,59;,
+    3;38,59,66;,
+    3;57,68,80;,
+    3;32,48,68;,
+    3;88,74,66;,
+    3;48,66,74;,
+    3;68,74,77;,
+    3;164,152,159;,
+    3;116,142,124;,
+    3;135,131,156;,
+    3;87,86,131;,
+    3;84,81,116;,
+    3;86,84,124;,
+    3;131,124,148;,
+    3;174,170,175;,
+    3;162,156,170;,
+    3;148,142,152;,
+    3;156,148,164;,
+    3;170,164,168;,
+    3;88,108,102;,
+    3;116,106,128;,
+    3;81,80,106;,
+    3;88,102,77;,
+    3;80,77,102;,
+    3;106,102,108;,
+    3;152,138,143;,
+    3;142,128,138;,
+    3;88,113,108;,
+    3;128,108,113;,
+    3;138,113,122;,
+    3;0,2,5;,
+    3;90,85,132;,
+    3;82,79,105;,
+    3;141,127,137;,
+    3;151,137,144;,
+    3;137,114,121;,
+    3;127,107,114;,
+    3;115,105,127;,
+    3;105,101,107;,
+    3;79,78,101;,
+    3;161,155,169;,
+    3;147,141,151;,
+    3;163,151,160;,
+    3;173,169,176;,
+    3;169,163,167;,
+    3;155,147,163;,
+    3;83,82,115;,
+    3;123,115,141;,
+    3;136,132,155;,
+    3;132,123,147;,
+    3;85,83,123;,
+    3;17,33,37;,
+    3;31,47,67;,
+    3;58,67,79;,
+    3;67,73,78;,
+    3;47,65,73;,
+    3;23,37,47;,
+    3;37,60,65;,
+    3;33,55,60;,
+    3;15,19,43;,
+    3;27,31,58;,
+    3;52,58,82;,
+    3;41,43,85;,
+    3;43,52,83;,
+    3;19,27,52;,
+    3;9,17,23;,
+    3;11,23,31;,
+    3;4,5,19;,
+    3;5,11,27;,
+    3;2,9,11;,
+    3;95,94,126;,
+    3;145,150,166;,
+    3;158,161,173;,
+    3;172,173,177;,
+    3;154,166,168;,
+    3;166,172,175;,
+    3;150,158,172;,
+    3;91,90,136;,
+    3;133,136,161;,
+    3;119,126,150;,
+    3;126,133,158;,
+    3;94,91,133;,
+    3;129,145,154;,
+    3;139,154,159;,
+    3;118,139,143;,
+    3;111,129,139;,
+    3;97,95,119;,
+    3;110,119,145;,
+    3;104,110,129;,
+    3;99,97,110;,
+    3;18,10,14;,
+    3;35,30,54;,
+    3;21,15,41;,
+    3;46,41,90;,
+    3;61,54,94;,
+    3;54,46,91;,
+    3;30,21,46;,
+    3;1,0,4;,
+    3;8,4,15;,
+    3;26,14,30;,
+    3;14,8,21;,
+    3;10,1,8;,
+    3;49,35,61;,
+    3;71,61,95;,
+    3;75,71,97;,
+    3;70,49,71;,
+    3;34,18,26;,
+    3;39,26,35;,
+    3;64,39,49;,
+    3;56,34,39;,
+    3;177,176,171;,
+    3;87,92,45;,
+    3;96,98,72;,
+    3;36,50,40;,
+    3;25,40,33;,
+    3;40,63,55;,
+    3;50,69,63;,
+    3;62,72,50;,
+    3;72,76,69;,
+    3;98,100,76;,
+    3;16,22,7;,
+    3;29,36,25;,
+    3;13,25,17;,
+    3;3,7,2;,
+    3;7,13,9;,
+    3;22,29,13;,
+    3;93,96,62;,
+    3;53,62,36;,
+    3;42,45,22;,
+    3;45,53,29;,
+    3;92,93,53;,
+    3;160,144,140;,
+    3;146,130,109;,
+    3;120,109,98;,
+    3;109,103,100;,
+    3;130,112,103;,
+    3;153,140,130;,
+    3;140,117,112;,
+    3;144,121,117;,
+    3;162,157,134;,
+    3;149,146,120;,
+    3;125,120,96;,
+    3;135,134,92;,
+    3;134,125,93;,
+    3;157,149,125;,
+    3;167,160,153;,
+    3;165,153,146;,
+    3;174,171,157;,
+    3;171,165,149;,
+    3;176,167,165;,
+    3;81,84,51;,
+    3;32,28,12;,
+    3;20,16,3;,
+    3;6,3,0;,
+    3;24,12,10;,
+    3;12,6,1;,
+    3;28,20,6;,
+    3;86,87,42;,
+    3;44,42,16;,
+    3;57,51,28;,
+    3;51,44,20;,
+    3;84,86,44;,
+    3;48,32,24;,
+    3;38,24,18;,
+    3;59,38,34;,
+    3;66,48,38;,
+    3;80,81,57;,
+    3;68,57,32;,
+    3;74,68,48;,
+    3;77,80,68;,
+    3;159,168,164;,
+    3;142,148,124;,
+    3;156,162,135;,
+    3;131,135,87;,
+    3;116,124,84;,
+    3;124,131,86;,
+    3;148,156,131;,
+    3;175,177,174;,
+    3;170,174,162;,
+    3;152,164,148;,
+    3;164,170,156;,
+    3;168,175,170;,
+    3;128,142,116;,
+    3;106,116,81;,
+    3;102,106,80;,
+    3;108,128,106;,
+    3;143,159,152;,
+    3;138,152,142;,
+    3;113,138,128;,
+    3;122,143,138;;
+   }
+
+   MeshTextureCoords {
+    219;
+    0.500000;0.000000;,
+    0.500000;-0.500000;,
+    0.500000;-0.250000;,
+    0.250118;0.000000;,
+    0.250118;-0.250000;,
+    0.250118;-0.125000;,
+    0.084334;0.000000;,
+    0.084334;-0.125000;,
+    0.084334;-0.062500;,
+    0.250118;-0.062500;,
+    0.167256;0.000000;,
+    0.167256;-0.062500;,
+    0.167256;-0.125000;,
+    0.084334;-0.250000;,
+    0.084334;-0.187500;,
+    0.250118;-0.187500;,
+    0.167256;-0.187500;,
+    0.167256;-0.250000;,
+    0.500000;-0.125000;,
+    0.333354;0.000000;,
+    0.333354;-0.125000;,
+    0.333354;-0.062500;,
+    0.500000;-0.062500;,
+    0.416609;0.000000;,
+    0.416609;-0.062500;,
+    0.416609;-0.125000;,
+    0.333354;-0.250000;,
+    0.333354;-0.187500;,
+    0.500000;-0.187500;,
+    0.416609;-0.187500;,
+    0.416609;-0.250000;,
+    0.250118;-0.500000;,
+    0.250118;-0.375000;,
+    0.084334;-0.375000;,
+    0.084334;-0.312500;,
+    0.250118;-0.312500;,
+    0.167256;-0.312500;,
+    0.167256;-0.375000;,
+    0.084334;-0.500000;,
+    0.084334;-0.437500;,
+    0.250118;-0.437500;,
+    0.167256;-0.437500;,
+    0.167256;-0.500000;,
+    0.500000;-0.375000;,
+    0.333354;-0.375000;,
+    0.333354;-0.312500;,
+    0.500000;-0.312500;,
+    0.416609;-0.312500;,
+    0.416609;-0.375000;,
+    0.333354;-0.500000;,
+    0.333354;-0.437500;,
+    0.500000;-0.437500;,
+    0.416609;-0.437500;,
+    0.416609;-0.500000;,
+    0.749882;0.000000;,
+    0.749882;-0.250000;,
+    0.749882;-0.125000;,
+    0.583391;0.000000;,
+    0.583391;-0.125000;,
+    0.583391;-0.062500;,
+    0.749882;-0.062500;,
+    0.666646;0.000000;,
+    0.666646;-0.062500;,
+    0.666646;-0.125000;,
+    0.583391;-0.250000;,
+    0.583391;-0.187500;,
+    0.749882;-0.187500;,
+    0.666646;-0.187500;,
+    0.666646;-0.250000;,
+    0.832744;0.000000;,
+    0.832744;-0.125000;,
+    0.832744;-0.062500;,
+    0.915666;-1.000000;,
+    0.915666;-0.062500;,
+    0.915666;-0.125000;,
+    0.832744;-0.250000;,
+    0.832744;-0.187500;,
+    0.915666;-0.187500;,
+    0.915666;-0.250000;,
+    0.749882;-0.500000;,
+    0.749882;-0.375000;,
+    0.583391;-0.375000;,
+    0.583391;-0.312500;,
+    0.749882;-0.312500;,
+    0.666646;-0.312500;,
+    0.666646;-0.375000;,
+    0.583391;-0.500000;,
+    0.583391;-0.437500;,
+    0.749882;-0.437500;,
+    0.666646;-0.437500;,
+    0.666646;-0.500000;,
+    0.832744;-0.375000;,
+    0.832744;-0.312500;,
+    0.915666;-0.312500;,
+    0.915666;-0.375000;,
+    0.832744;-0.500000;,
+    0.832744;-0.437500;,
+    0.915666;-0.437500;,
+    0.915666;-0.500000;,
+    0.500000;-0.750000;,
+    0.250118;-0.750000;,
+    0.250118;-0.625000;,
+    0.084334;-0.625000;,
+    0.084334;-0.562500;,
+    0.250118;-0.562500;,
+    0.167256;-0.562500;,
+    0.167256;-0.625000;,
+    0.084334;-0.750000;,
+    0.084334;-0.687500;,
+    0.250118;-0.687500;,
+    0.167256;-0.687500;,
+    0.167256;-0.750000;,
+    0.500000;-0.625000;,
+    0.333354;-0.625000;,
+    0.333354;-0.562500;,
+    0.500000;-0.562500;,
+    0.416609;-0.562500;,
+    0.416609;-0.625000;,
+    0.333354;-0.750000;,
+    0.333354;-0.687500;,
+    0.500000;-0.687500;,
+    0.416609;-0.687500;,
+    0.416609;-0.750000;,
+    0.250118;-0.875000;,
+    0.084334;-0.875000;,
+    0.084334;-0.812500;,
+    0.250118;-0.812500;,
+    0.167256;-0.812500;,
+    0.167256;-0.875000;,
+    0.000000;-0.062500;,
+    0.084334;-0.937500;,
+    0.250118;-0.937500;,
+    0.167256;-0.937500;,
+    0.500000;-0.875000;,
+    0.333354;-0.875000;,
+    0.333354;-0.812500;,
+    0.500000;-0.812500;,
+    0.416609;-0.812500;,
+    0.416609;-0.875000;,
+    0.333354;-0.937500;,
+    0.500000;-0.937500;,
+    0.416609;-0.937500;,
+    0.749882;-0.750000;,
+    0.749882;-0.625000;,
+    0.583391;-0.625000;,
+    0.583391;-0.562500;,
+    0.749882;-0.562500;,
+    0.666646;-0.562500;,
+    0.666646;-0.625000;,
+    0.583391;-0.750000;,
+    0.583391;-0.687500;,
+    0.749882;-0.687500;,
+    0.666646;-0.687500;,
+    0.666646;-0.750000;,
+    0.832744;-0.625000;,
+    0.832744;-0.562500;,
+    0.915666;-0.562500;,
+    0.915666;-0.625000;,
+    0.832744;-0.750000;,
+    0.832744;-0.687500;,
+    0.915666;-0.687500;,
+    0.915666;-0.750000;,
+    0.749882;-0.875000;,
+    0.583391;-0.875000;,
+    0.583391;-0.812500;,
+    0.749882;-0.812500;,
+    0.666646;-0.812500;,
+    0.666646;-0.875000;,
+    0.583391;-0.937500;,
+    0.749882;-0.937500;,
+    0.666646;-0.937500;,
+    0.832744;-0.875000;,
+    0.832744;-0.812500;,
+    0.915666;-0.812500;,
+    0.915666;-0.875000;,
+    0.832744;-0.937500;,
+    1.000000;-1.000000;,
+    0.915666;-0.937500;,
+    1.000000;-0.500000;,
+    0.000000;0.000000;,
+    0.000000;-0.187500;,
+    0.000000;-0.125000;,
+    0.000000;-0.312500;,
+    0.000000;-0.250000;,
+    0.000000;-0.437500;,
+    0.000000;-0.375000;,
+    1.000000;-0.250000;,
+    1.000000;-0.125000;,
+    0.915666;0.000000;,
+    1.000000;-0.062500;,
+    1.000000;-0.187500;,
+    1.000000;-0.375000;,
+    1.000000;-0.312500;,
+    1.000000;-0.437500;,
+    0.500000;-1.000000;,
+    0.000000;-0.562500;,
+    0.000000;-0.500000;,
+    0.000000;-0.687500;,
+    0.000000;-0.625000;,
+    0.250118;-1.000000;,
+    0.000000;-0.812500;,
+    0.000000;-0.750000;,
+    0.084334;-1.000000;,
+    0.000000;-0.937500;,
+    0.000000;-0.875000;,
+    0.167256;-1.000000;,
+    0.333354;-1.000000;,
+    0.416609;-1.000000;,
+    1.000000;-0.750000;,
+    1.000000;-0.625000;,
+    1.000000;-0.562500;,
+    1.000000;-0.687500;,
+    0.749882;-1.000000;,
+    0.583391;-1.000000;,
+    0.666646;-1.000000;,
+    1.000000;-0.875000;,
+    1.000000;-0.812500;,
+    0.832744;-1.000000;,
+    1.000000;-0.937500;;
+   }
+
+   MeshMaterialList {
+    1;
+    352;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    219;
+    178;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    176,
+    129,
+    129,
+    129,
+    129,
+    129,
+    129,
+    129,
+    176,
+    176,
+    72,
+    176,
+    176,
+    176,
+    176,
+    176,
+    0,
+    129,
+    129,
+    129,
+    129,
+    3,
+    129,
+    129,
+    6,
+    129,
+    129,
+    10,
+    19,
+    23,
+    176,
+    176,
+    176,
+    176,
+    54,
+    57,
+    61,
+    176,
+    176,
+    69,
+    176;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/arma2.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/arma2.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/arma2.x	(revision 1481)
@@ -0,0 +1,2955 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.351842,0.000000,0.936060,0.000000,0.429880,0.888310,0.161581,0.000000,-0.831511,0.459244,-0.312544,0.000000,-220.999573,122.058258,-83.068283,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame polySurface1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh polySurfaceShape1 {
+   526;
+   -55.871048;70.430733;-50.968380;,
+   -57.795704;61.939445;-50.869808;,
+   -55.816120;73.731140;-50.620701;,
+   0.031416;60.636761;-48.907852;,
+   -63.581852;61.226913;-41.872452;,
+   23.260035;55.865597;26.837397;,
+   -48.962463;71.814621;-33.155453;,
+   54.630512;81.557549;-36.950954;,
+   -19.860937;2.553142;25.747843;,
+   -30.593372;63.186634;11.544160;,
+   6.460872;57.322388;-44.293839;,
+   0.670301;65.714493;-37.223564;,
+   -51.356155;81.837379;-44.087715;,
+   15.690660;24.572012;24.485569;,
+   56.689075;84.844177;-30.513136;,
+   56.273121;66.353462;-31.040989;,
+   64.029884;72.087097;-29.101683;,
+   21.673454;-12.430873;20.157507;,
+   -60.916267;59.016212;-31.708361;,
+   -53.733952;59.618740;-36.264420;,
+   45.517677;54.473763;5.345461;,
+   0.087543;-5.123805;35.983410;,
+   58.540501;76.286278;-40.245041;,
+   -25.344967;73.555573;10.401924;,
+   -58.394146;78.035103;-36.737965;,
+   1.980118;52.828102;-31.701450;,
+   -45.565666;50.643974;-24.904602;,
+   -6.424682;56.859367;-35.978653;,
+   51.029934;86.122658;-30.516768;,
+   5.977539;88.550179;18.198507;,
+   -6.846324;73.651962;-31.098188;,
+   -9.721231;62.892319;-28.788080;,
+   21.545509;39.606972;18.487213;,
+   8.357423;77.984482;-25.805689;,
+   -5.782124;83.929085;-24.649235;,
+   32.441307;10.051008;15.082206;,
+   14.989235;-43.820175;18.574465;,
+   -0.477633;49.742893;37.866856;,
+   -2.791350;-5.084818;55.924587;,
+   9.878371;84.588348;-27.279539;,
+   -21.139462;98.263672;-28.981663;,
+   29.447283;-45.570202;21.033653;,
+   9.323561;63.423233;-26.911808;,
+   -10.869784;82.074020;-21.829607;,
+   48.065941;77.067200;-21.261923;,
+   7.189212;57.599762;39.078579;,
+   -17.317413;83.522713;16.610197;,
+   -18.933367;57.952892;35.298935;,
+   -37.933228;62.277889;-17.719193;,
+   21.568308;96.707809;-25.488026;,
+   -27.826096;-52.865997;27.225063;,
+   9.789738;91.349442;-23.316278;,
+   -19.919767;41.529663;29.694893;,
+   33.351154;-22.122032;22.619242;,
+   -64.125443;61.800201;-23.721003;,
+   -33.566162;-20.305151;23.246258;,
+   32.710812;51.378548;14.442057;,
+   -23.168812;-9.902931;17.801212;,
+   56.011387;60.831207;-27.149742;,
+   59.558769;70.402802;-7.330646;,
+   51.695908;49.599621;-11.292331;,
+   -46.843773;50.210007;-12.804477;,
+   17.872055;30.485241;11.169987;,
+   6.789167;82.071228;-11.947875;,
+   -25.002052;-15.374517;16.852993;,
+   -48.225361;73.073059;-18.598032;,
+   12.507629;77.368629;-17.859856;,
+   24.723562;43.944893;5.561900;,
+   -38.701176;49.032658;7.096229;,
+   -7.906768;84.228165;-14.361208;,
+   45.135647;53.763355;-20.348101;,
+   15.302622;-52.755703;33.595901;,
+   54.829929;77.451920;-16.642738;,
+   -20.257187;23.105516;23.281939;,
+   -0.117530;26.073772;32.130451;,
+   41.866512;49.391937;-12.026858;,
+   -0.683713;53.719467;-17.748295;,
+   -13.601113;64.974091;-13.347980;,
+   -0.687957;48.618107;-11.983848;,
+   38.043877;61.842041;-9.774024;,
+   -61.149513;68.786850;-16.178396;,
+   -8.163603;39.475697;33.844212;,
+   -48.641571;-47.008099;11.229403;,
+   -28.165119;65.672546;-4.336255;,
+   21.270399;-39.544445;31.400658;,
+   -4.189383;88.515144;-8.284331;,
+   -18.381632;43.577816;-14.606226;,
+   19.731689;59.104485;-9.253916;,
+   -58.193554;55.808014;-13.491384;,
+   -21.127270;72.885834;26.480358;,
+   -39.232605;48.647839;-13.877304;,
+   -1.418417;41.440224;-12.988850;,
+   -16.987873;67.235634;-16.290180;,
+   -25.995583;50.909985;-8.807226;,
+   24.565340;16.576603;5.958957;,
+   -6.118444;-5.823078;52.647663;,
+   11.978918;65.708679;-11.266089;,
+   14.552474;-23.132254;22.842422;,
+   19.308056;45.287586;-10.576886;,
+   -6.514394;7.633255;25.666204;,
+   48.217751;74.744225;-10.860788;,
+   9.527423;39.504292;-14.714674;,
+   -45.052460;66.276016;-7.394035;,
+   -2.324684;7.440101;16.239552;,
+   15.275237;69.872681;-14.199346;,
+   -15.909405;76.247993;-7.372015;,
+   19.268612;79.251495;15.379796;,
+   41.158566;45.401463;-1.482161;,
+   23.526377;72.195503;19.422113;,
+   -52.368378;-52.127346;-6.972238;,
+   -8.735097;30.539301;-5.986194;,
+   12.759017;26.243727;2.943084;,
+   2.638835;15.670632;-3.603189;,
+   32.990772;-23.497023;7.635020;,
+   25.881445;62.060585;-4.317853;,
+   63.354416;61.244339;-10.370733;,
+   -25.456612;71.864075;-1.693242;,
+   24.215878;47.720325;-4.410961;,
+   19.643839;74.166771;-2.769073;,
+   -4.970849;15.341395;-3.391537;,
+   -24.506931;21.940208;11.392280;,
+   -48.681824;52.256466;-2.682286;,
+   7.985137;87.146194;-2.287099;,
+   -13.987966;33.319984;29.753881;,
+   -6.161908;13.934347;29.183352;,
+   5.160549;26.606199;-5.579443;,
+   34.044765;-53.501274;-0.515518;,
+   -39.894970;-8.449584;-3.107808;,
+   14.387313;-42.674210;24.591963;,
+   46.602421;61.075665;0.046173;,
+   16.519049;-16.323833;10.313960;,
+   -6.872776;90.038216;5.171246;,
+   -20.877279;13.422011;0.673923;,
+   -7.610339;81.934830;30.712801;,
+   30.997614;-14.334406;-1.836222;,
+   -51.535610;-53.205143;7.873112;,
+   8.827211;36.911243;31.747108;,
+   -4.890117;68.610718;38.190739;,
+   34.377182;-7.382833;2.110029;,
+   6.168451;7.168059;24.232094;,
+   -19.512018;31.873703;7.625035;,
+   -22.436743;-53.459141;21.479826;,
+   -0.745035;5.537041;3.734544;,
+   -40.694511;-51.506691;-7.944531;,
+   19.786745;-53.405750;6.556607;,
+   28.133356;-51.261574;0.361151;,
+   -34.234653;-43.084148;6.972991;,
+   -24.320812;-13.733837;8.710964;,
+   -30.498541;-12.271731;-0.566039;,
+   41.598759;-53.565872;5.571744;,
+   10.158861;4.964834;0.965898;,
+   29.231260;65.952736;9.142711;,
+   25.536770;-22.649973;1.895993;,
+   19.001389;13.032383;0.512492;,
+   2.906224;12.015672;28.851608;,
+   6.837770;72.980286;36.134262;,
+   -23.830448;-44.097351;17.713644;,
+   31.310482;-13.393370;13.799037;,
+   -41.882305;-20.691261;16.668524;,
+   -28.047834;44.888847;9.354051;,
+   11.525555;40.819111;33.147003;,
+   34.163559;-50.544434;4.979465;,
+   -13.413791;83.562569;-5.091410;,
+   -39.690590;-41.657619;10.382260;,
+   26.512493;-41.790516;14.639370;,
+   -35.875980;-30.593189;4.075778;,
+   -39.642700;-16.652872;0.199679;,
+   -20.287169;-24.866230;6.076164;,
+   13.135328;-27.319427;8.635544;,
+   -38.309017;7.226526;5.222928;,
+   -42.901161;-15.826517;5.022060;,
+   17.407511;75.958839;27.859238;,
+   6.514841;1.397807;15.255136;,
+   -33.155426;10.499079;21.981096;,
+   -28.787874;58.268532;22.352526;,
+   20.962152;9.821272;24.646217;,
+   -44.092850;-53.360615;0.979853;,
+   -9.032615;6.994848;4.381805;,
+   -33.072227;-42.510952;23.004503;,
+   -39.821983;62.883762;4.652248;,
+   21.854986;-46.016251;4.565747;,
+   -37.890911;-4.306455;15.912716;,
+   -55.871048;70.430733;-50.968380;,
+   -63.581852;61.226913;-41.872452;,
+   -57.795704;61.939445;-50.869808;,
+   -63.581852;61.226913;-41.872452;,
+   -55.816120;73.731140;-50.620701;,
+   -55.871048;70.430733;-50.968380;,
+   -53.733952;59.618740;-36.264420;,
+   -57.795704;61.939445;-50.869808;,
+   -55.871048;70.430733;-50.968380;,
+   6.460872;57.322388;-44.293839;,
+   0.031416;60.636761;-48.907852;,
+   -51.356155;81.837379;-44.087715;,
+   -6.424682;56.859367;-35.978653;,
+   0.031416;60.636761;-48.907852;,
+   -6.424682;56.859367;-35.978653;,
+   6.460872;57.322388;-44.293839;,
+   -9.721231;62.892319;-28.788080;,
+   0.670301;65.714493;-37.223564;,
+   15.690660;24.572012;24.485569;,
+   21.545509;39.606972;18.487213;,
+   -6.514394;7.633255;25.666204;,
+   58.540501;76.286278;-40.245041;,
+   64.029884;72.087097;-29.101683;,
+   -60.916267;59.016212;-31.708361;,
+   -58.394146;78.035103;-36.737965;,
+   64.029884;72.087097;-29.101683;,
+   54.630512;81.557549;-36.950954;,
+   -9.721231;62.892319;-28.788080;,
+   58.540501;76.286278;-40.245041;,
+   56.273121;66.353462;-31.040989;,
+   54.630512;81.557549;-36.950954;,
+   -60.916267;59.016212;-31.708361;,
+   -53.733952;59.618740;-36.264420;,
+   -45.565666;50.643974;-24.904602;,
+   -6.118444;-5.823078;52.647663;,
+   -2.791350;-5.084818;55.924587;,
+   13.135328;-27.319427;8.635544;,
+   9.323561;63.423233;-26.911808;,
+   1.980118;52.828102;-31.701450;,
+   6.460872;57.322388;-44.293839;,
+   -6.514394;7.633255;25.666204;,
+   -2.791350;-5.084818;55.924587;,
+   2.906224;12.015672;28.851608;,
+   8.357423;77.984482;-25.805689;,
+   0.670301;65.714493;-37.223564;,
+   0.087543;-5.123805;35.983410;,
+   2.906224;12.015672;28.851608;,
+   -2.791350;-5.084818;55.924587;,
+   0.670301;65.714493;-37.223564;,
+   -6.846324;73.651962;-31.098188;,
+   -10.869784;82.074020;-21.829607;,
+   -48.962463;71.814621;-33.155453;,
+   -58.394146;78.035103;-36.737965;,
+   0.670301;65.714493;-37.223564;,
+   -17.317413;83.522713;16.610197;,
+   -21.127270;72.885834;26.480358;,
+   -5.782124;83.929085;-24.649235;,
+   -21.139462;98.263672;-28.981663;,
+   32.990772;-23.497023;7.635020;,
+   -8.163603;39.475697;33.844212;,
+   -37.933228;62.277889;-17.719193;,
+   51.029934;86.122658;-30.516768;,
+   48.065941;77.067200;-21.261923;,
+   56.011387;60.831207;-27.149742;,
+   -61.149513;68.786850;-16.178396;,
+   12.507629;77.368629;-17.859856;,
+   9.878371;84.588348;-27.279539;,
+   21.568308;96.707809;-25.488026;,
+   8.357423;77.984482;-25.805689;,
+   9.789738;91.349442;-23.316278;,
+   9.878371;84.588348;-27.279539;,
+   54.829929;77.451920;-16.642738;,
+   56.689075;84.844177;-30.513136;,
+   51.029934;86.122658;-30.516768;,
+   -27.826096;-52.865997;27.225063;,
+   54.829929;77.451920;-16.642738;,
+   48.065941;77.067200;-21.261923;,
+   -45.565666;50.643974;-24.904602;,
+   -20.257187;23.105516;23.281939;,
+   9.878371;84.588348;-27.279539;,
+   15.302622;-52.755703;33.595901;,
+   45.135647;53.763355;-20.348101;,
+   56.011387;60.831207;-27.149742;,
+   -25.002052;-15.374517;16.852993;,
+   -41.882305;-20.691261;16.668524;,
+   -13.987966;33.319984;29.753881;,
+   -6.514394;7.633255;25.666204;,
+   14.387313;-42.674210;24.591963;,
+   14.552474;-23.132254;22.842422;,
+   -5.782124;83.929085;-24.649235;,
+   -7.906768;84.228165;-14.361208;,
+   -21.139462;98.263672;-28.981663;,
+   17.407511;75.958839;27.859238;,
+   21.568308;96.707809;-25.488026;,
+   6.789167;82.071228;-11.947875;,
+   6.789167;82.071228;-11.947875;,
+   21.568308;96.707809;-25.488026;,
+   9.789738;91.349442;-23.316278;,
+   -37.933228;62.277889;-17.719193;,
+   -45.565666;50.643974;-24.904602;,
+   -28.047834;44.888847;9.354051;,
+   -15.909405;76.247993;-7.372015;,
+   -13.413791;83.562569;-5.091410;,
+   -19.919767;41.529663;29.694893;,
+   -18.933367;57.952892;35.298935;,
+   -8.163603;39.475697;33.844212;,
+   -28.047834;44.888847;9.354051;,
+   20.962152;9.821272;24.646217;,
+   6.168451;7.168059;24.232094;,
+   6.789167;82.071228;-11.947875;,
+   8.357423;77.984482;-25.805689;,
+   -0.117530;26.073772;32.130451;,
+   -8.163603;39.475697;33.844212;,
+   -0.683713;53.719467;-17.748295;,
+   -58.193554;55.808014;-13.491384;,
+   -39.232605;48.647839;-13.877304;,
+   51.695908;49.599621;-11.292331;,
+   45.135647;53.763355;-20.348101;,
+   41.866512;49.391937;-12.026858;,
+   38.043877;61.842041;-9.774024;,
+   -7.610339;81.934830;30.712801;,
+   5.977539;88.550179;18.198507;,
+   -17.317413;83.522713;16.610197;,
+   -4.189383;88.515144;-8.284331;,
+   -16.987873;67.235634;-16.290180;,
+   -9.721231;62.892319;-28.788080;,
+   -13.601113;64.974091;-13.347980;,
+   9.323561;63.423233;-26.911808;,
+   15.275237;69.872681;-14.199346;,
+   11.978918;65.708679;-11.266089;,
+   38.043877;61.842041;-9.774024;,
+   -6.514394;7.633255;25.666204;,
+   -0.683713;53.719467;-17.748295;,
+   -19.919767;41.529663;29.694893;,
+   11.978918;65.708679;-11.266089;,
+   -0.683713;53.719467;-17.748295;,
+   -19.512018;31.873703;7.625035;,
+   -18.381632;43.577816;-14.606226;,
+   -39.232605;48.647839;-13.877304;,
+   -46.843773;50.210007;-12.804477;,
+   -13.601113;64.974091;-13.347980;,
+   11.525555;40.819111;33.147003;,
+   -15.909405;76.247993;-7.372015;,
+   -6.514394;7.633255;25.666204;,
+   0.087543;-5.123805;35.983410;,
+   21.673454;-12.430873;20.157507;,
+   -24.320812;-13.733837;8.710964;,
+   15.690660;24.572012;24.485569;,
+   -33.566162;-20.305151;23.246258;,
+   -23.830448;-44.097351;17.713644;,
+   -25.002052;-15.374517;16.852993;,
+   19.731689;59.104485;-9.253916;,
+   19.308056;45.287586;-10.576886;,
+   -25.995583;50.909985;-8.807226;,
+   -37.933228;62.277889;-17.719193;,
+   -16.987873;67.235634;-16.290180;,
+   -28.165119;65.672546;-4.336255;,
+   -16.987873;67.235634;-16.290180;,
+   -25.995583;50.909985;-8.807226;,
+   56.689075;84.844177;-30.513136;,
+   32.710812;51.378548;14.442057;,
+   32.710812;51.378548;14.442057;,
+   19.731689;59.104485;-9.253916;,
+   -45.052460;66.276016;-7.394035;,
+   -61.149513;68.786850;-16.178396;,
+   -58.193554;55.808014;-13.491384;,
+   19.731689;59.104485;-9.253916;,
+   -28.165119;65.672546;-4.336255;,
+   23.260035;55.865597;26.837397;,
+   -22.436743;-53.459141;21.479826;,
+   -33.155426;10.499079;21.981096;,
+   -24.506931;21.940208;11.392280;,
+   -8.735097;30.539301;-5.986194;,
+   56.689075;84.844177;-30.513136;,
+   24.215878;47.720325;-4.410961;,
+   25.881445;62.060585;-4.317853;,
+   41.866512;49.391937;-12.026858;,
+   -33.072227;-42.510952;23.004503;,
+   6.514841;1.397807;15.255136;,
+   -1.418417;41.440224;-12.988850;,
+   51.695908;49.599621;-11.292331;,
+   46.602421;61.075665;0.046173;,
+   41.158566;45.401463;-1.482161;,
+   -4.189383;88.515144;-8.284331;,
+   7.985137;87.146194;-2.287099;,
+   6.789167;82.071228;-11.947875;,
+   12.759017;26.243727;2.943084;,
+   -1.418417;41.440224;-12.988850;,
+   9.527423;39.504292;-14.714674;,
+   24.215878;47.720325;-4.410961;,
+   59.558769;70.402802;-7.330646;,
+   12.759017;26.243727;2.943084;,
+   38.043877;61.842041;-9.774024;,
+   26.512493;-41.790516;14.639370;,
+   29.447283;-45.570202;21.033653;,
+   6.789167;82.071228;-11.947875;,
+   19.643839;74.166771;-2.769073;,
+   9.527423;39.504292;-14.714674;,
+   -41.882305;-20.691261;16.668524;,
+   -37.890911;-4.306455;15.912716;,
+   33.351154;-22.122032;22.619242;,
+   -58.193554;55.808014;-13.491384;,
+   -46.843773;50.210007;-12.804477;,
+   -48.681824;52.256466;-2.682286;,
+   -48.641571;-47.008099;11.229403;,
+   -33.072227;-42.510952;23.004503;,
+   25.881445;62.060585;-4.317853;,
+   46.602421;61.075665;0.046173;,
+   38.043877;61.842041;-9.774024;,
+   -25.456612;71.864075;-1.693242;,
+   14.989235;-43.820175;18.574465;,
+   26.512493;-41.790516;14.639370;,
+   63.354416;61.244339;-10.370733;,
+   46.602421;61.075665;0.046173;,
+   51.695908;49.599621;-11.292331;,
+   48.217751;74.744225;-10.860788;,
+   38.043877;61.842041;-9.774024;,
+   8.827211;36.911243;31.747108;,
+   21.545509;39.606972;18.487213;,
+   11.525555;40.819111;33.147003;,
+   59.558769;70.402802;-7.330646;,
+   -6.514394;7.633255;25.666204;,
+   19.268612;79.251495;15.379796;,
+   7.985137;87.146194;-2.287099;,
+   17.407511;75.958839;27.859238;,
+   -48.681824;52.256466;-2.682286;,
+   -39.232605;48.647839;-13.877304;,
+   21.854986;-46.016251;4.565747;,
+   -23.168812;-9.902931;17.801212;,
+   -0.477633;49.742893;37.866856;,
+   8.827211;36.911243;31.747108;,
+   11.525555;40.819111;33.147003;,
+   17.872055;30.485241;11.169987;,
+   -0.477633;49.742893;37.866856;,
+   -0.745035;5.537041;3.734544;,
+   -4.970849;15.341395;-3.391537;,
+   2.638835;15.670632;-3.603189;,
+   -28.047834;44.888847;9.354051;,
+   -40.694511;-51.506691;-7.944531;,
+   -44.092850;-53.360615;0.979853;,
+   30.997614;-14.334406;-1.836222;,
+   19.001389;13.032383;0.512492;,
+   -30.593372;63.186634;11.544160;,
+   -28.165119;65.672546;-4.336255;,
+   -39.821983;62.883762;4.652248;,
+   -48.681824;52.256466;-2.682286;,
+   29.231260;65.952736;9.142711;,
+   -4.189383;88.515144;-8.284331;,
+   -13.413791;83.562569;-5.091410;,
+   25.536770;-22.649973;1.895993;,
+   -8.735097;30.539301;-5.986194;,
+   -4.970849;15.341395;-3.391537;,
+   -20.877279;13.422011;0.673923;,
+   29.231260;65.952736;9.142711;,
+   28.133356;-51.261574;0.361151;,
+   26.512493;-41.790516;14.639370;,
+   -38.309017;7.226526;5.222928;,
+   -25.995583;50.909985;-8.807226;,
+   -28.047834;44.888847;9.354051;,
+   6.789167;82.071228;-11.947875;,
+   29.231260;65.952736;9.142711;,
+   15.275237;69.872681;-14.199346;,
+   -20.877279;13.422011;0.673923;,
+   -8.735097;30.539301;-5.986194;,
+   24.565340;16.576603;5.958957;,
+   -0.745035;5.537041;3.734544;,
+   12.759017;26.243727;2.943084;,
+   24.723562;43.944893;5.561900;,
+   31.310482;-13.393370;13.799037;,
+   21.673454;-12.430873;20.157507;,
+   33.351154;-22.122032;22.619242;,
+   5.977539;88.550179;18.198507;,
+   -45.052460;66.276016;-7.394035;,
+   29.231260;65.952736;9.142711;,
+   -9.032615;6.994848;4.381805;,
+   -25.456612;71.864075;-1.693242;,
+   14.989235;-43.820175;18.574465;,
+   -18.381632;43.577816;-14.606226;,
+   -38.701176;49.032658;7.096229;,
+   -28.047834;44.888847;9.354051;,
+   -9.032615;6.994848;4.381805;,
+   31.310482;-13.393370;13.799037;,
+   21.270399;-39.544445;31.400658;,
+   -9.032615;6.994848;4.381805;,
+   -39.690590;-41.657619;10.382260;,
+   -44.092850;-53.360615;0.979853;,
+   -20.287169;-24.866230;6.076164;,
+   -9.032615;6.994848;4.381805;,
+   -30.498541;-12.271731;-0.566039;,
+   32.441307;10.051008;15.082206;,
+   -39.894970;-8.449584;-3.107808;,
+   32.710812;51.378548;14.442057;,
+   25.536770;-22.649973;1.895993;,
+   30.997614;-14.334406;-1.836222;,
+   32.990772;-23.497023;7.635020;,
+   34.163559;-50.544434;4.979465;,
+   26.512493;-41.790516;14.639370;,
+   41.598759;-53.565872;5.571744;,
+   -34.234653;-43.084148;6.972991;,
+   6.168451;7.168059;24.232094;,
+   -33.155426;10.499079;21.981096;,
+   -52.368378;-52.127346;-6.972238;,
+   -44.092850;-53.360615;0.979853;,
+   -39.690590;-41.657619;10.382260;,
+   -40.694511;-51.506691;-7.944531;,
+   -39.642700;-16.652872;0.199679;,
+   32.441307;10.051008;15.082206;,
+   29.231260;65.952736;9.142711;,
+   25.536770;-22.649973;1.895993;,
+   10.158861;4.964834;0.965898;,
+   45.517677;54.473763;5.345461;,
+   19.001389;13.032383;0.512492;,
+   41.598759;-53.565872;5.571744;,
+   29.447283;-45.570202;21.033653;,
+   -34.234653;-43.084148;6.972991;,
+   -30.498541;-12.271731;-0.566039;,
+   19.786745;-53.405750;6.556607;,
+   28.133356;-51.261574;0.361151;,
+   34.044765;-53.501274;-0.515518;,
+   34.163559;-50.544434;4.979465;,
+   41.598759;-53.565872;5.571744;,
+   -39.690590;-41.657619;10.382260;,
+   -35.875980;-30.593189;4.075778;,
+   45.517677;54.473763;5.345461;,
+   -48.641571;-47.008099;11.229403;,
+   15.302622;-52.755703;33.595901;,
+   10.158861;4.964834;0.965898;,
+   -6.872776;90.038216;5.171246;,
+   -34.234653;-43.084148;6.972991;,
+   -34.234653;-43.084148;6.972991;,
+   -58.394146;78.035103;-36.737965;,
+   7.189212;57.599762;39.078579;,
+   -24.506931;21.940208;11.392280;,
+   -20.877279;13.422011;0.673923;,
+   -38.309017;7.226526;5.222928;,
+   17.407511;75.958839;27.859238;,
+   -27.826096;-52.865997;27.225063;,
+   6.514841;1.397807;15.255136;,
+   -48.681824;52.256466;-2.682286;,
+   -51.535610;-53.205143;7.873112;,
+   -23.168812;-9.902931;17.801212;,
+   -51.535610;-53.205143;7.873112;,
+   -48.641571;-47.008099;11.229403;,
+   -44.092850;-53.360615;0.979853;;
+   360;
+   3;1,4,0;,
+   3;171,108,106;,
+   3;2,24,182;,
+   3;18,183,19;,
+   3;183,184,19;,
+   3;185,186,187;,
+   3;159,81,52;,
+   3;3,10,27;,
+   3;103,172,139;,
+   3;73,124,123;,
+   3;24,12,182;,
+   3;188,189,6;,
+   3;190,6,189;,
+   3;162,23,46;,
+   3;11,191,192;,
+   3;155,29,133;,
+   3;6,190,193;,
+   3;194,31,195;,
+   3;196,197,25;,
+   3;99,95,38;,
+   3;13,32,136;,
+   3;192,198,199;,
+   3;200,62,201;,
+   3;82,135,50;,
+   3;16,22,7;,
+   3;57,103,202;,
+   3;203,204,15;,
+   3;124,154,74;,
+   3;205,206,185;,
+   3;168,128,97;,
+   3;14,207,208;,
+   3;71,149,41;,
+   3;186,185,206;,
+   3;188,6,26;,
+   3;152,113,164;,
+   3;42,191,11;,
+   3;209,196,76;,
+   3;210,211,212;,
+   3;213,214,215;,
+   3;216,21,217;,
+   3;218,152,164;,
+   3;219,220,221;,
+   3;172,103,142;,
+   3;222,223,224;,
+   3;39,51,49;,
+   3;33,30,43;,
+   3;204,58,15;,
+   3;225,219,226;,
+   3;9,89,23;,
+   3;206,205,54;,
+   3;227,228,229;,
+   3;25,76,196;,
+   3;175,62,200;,
+   3;230,31,231;,
+   3;56,5,201;,
+   3;154,13,136;,
+   3;34,232,40;,
+   3;178,158,163;,
+   3;48,233,65;,
+   3;234,65,233;,
+   3;47,45,137;,
+   3;66,219,225;,
+   3;92,231,31;,
+   3;30,33,235;,
+   3;236,237,133;,
+   3;238,239,69;,
+   3;138,157,240;,
+   3;241,45,47;,
+   3;211,28,212;,
+   3;6,242,26;,
+   3;28,211,44;,
+   3;243,244,72;,
+   3;58,204,59;,
+   3;211,245,70;,
+   3;206,54,80;,
+   3;234,246,65;,
+   3;92,232,231;,
+   3;247,248,249;,
+   3;250,251,252;,
+   3;253,254,255;,
+   3;176,141,256;,
+   3;147,103,57;,
+   3;64,156,167;,
+   3;70,44,211;,
+   3;37,45,241;,
+   3;100,257,258;,
+   3;94,175,35;,
+   3;205,259,88;,
+   3;97,17,168;,
+   3;120,260,140;,
+   3;23,89,46;,
+   3;94,111,62;,
+   3;261,66,225;,
+   3;128,36,262;,
+   3;263,264,75;,
+   3;58,59,115;,
+   3;8,124,173;,
+   3;265,266,55;,
+   3;77,209,76;,
+   3;267,140,260;,
+   3;54,205,88;,
+   3;21,216,268;,
+   3;269,84,270;,
+   3;220,219,96;,
+   3;53,270,84;,
+   3;105,232,92;,
+   3;271,33,43;,
+   3;232,272,273;,
+   3;63,251,250;,
+   3;59,204,253;,
+   3;274,5,108;,
+   3;66,104,219;,
+   3;66,275,276;,
+   3;277,278,279;,
+   3;280,90,281;,
+   3;174,9,282;,
+   3;283,284,85;,
+   3;174,285,286;,
+   3;267,287,288;,
+   3;289,154,290;,
+   3;238,291,292;,
+   3;124,73,173;,
+   3;115,60,58;,
+   3;70,79,44;,
+   3;293,136,294;,
+   3;220,96,295;,
+   3;296,215,61;,
+   3;215,297,61;,
+   3;155,137,45;,
+   3;75,264,298;,
+   3;299,300,301;,
+   3;302,303,304;,
+   3;84,71,41;,
+   3;305,291,238;,
+   3;306,307,308;,
+   3;309,310,311;,
+   3;312,100,258;,
+   3;124,8,313;,
+   3;69,305,238;,
+   3;160,45,37;,
+   3;78,91,86;,
+   3;314,78,93;,
+   3;241,47,315;,
+   3;101,78,87;,
+   3;87,98,101;,
+   3;93,78,86;,
+   3;316,87,317;,
+   3;48,65,102;,
+   3;318,319,110;,
+   3;320,121,321;,
+   3;317,87,78;,
+   3;322,314,93;,
+   3;62,67,201;,
+   3;151,106,108;,
+   3;323,201,5;,
+   3;91,78,101;,
+   3;324,305,69;,
+   3;325,103,326;,
+   3;327,289,290;,
+   3;64,167,328;,
+   3;118,122,106;,
+   3;329,154,289;,
+   3;330,331,332;,
+   3;333,117,334;,
+   3;83,335,336;,
+   3;303,131,304;,
+   3;93,337,322;,
+   3;338,339,340;,
+   3;341,212,28;,
+   3;232,105,272;,
+   3;336,335,320;,
+   3;286,89,174;,
+   3;342,151,108;,
+   3;166,127,148;,
+   3;20,129,343;,
+   3;310,344,311;,
+   3;345,346,347;,
+   3;348,104,114;,
+   3;349,48,102;,
+   3;67,56,201;,
+   3;45,350,155;,
+   3;156,351,143;,
+   3;352,353,169;,
+   3;169,181,352;,
+   3;154,136,74;,
+   3;246,102,65;,
+   3;116,105,92;,
+   3;354,91,125;,
+   3;253,204,355;,
+   3;356,357,358;,
+   3;331,359,50;,
+   3;103,139,326;,
+   3;360,130,17;,
+   3;319,361,110;,
+   3;133,137,155;,
+   3;75,298,107;,
+   3;362,363,364;,
+   3;365,366,367;,
+   3;71,84,269;,
+   3;368,369,370;,
+   3;75,107,371;,
+   3;100,372,257;,
+   3;354,125,112;,
+   3;373,125,91;,
+   3;358,357,374;,
+   3;375,240,376;,
+   3;104,66,377;,
+   3;366,378,367;,
+   3;334,62,379;,
+   3;380,332,381;,
+   3;130,168,17;,
+   3;357,356,87;,
+   3;382,240,157;,
+   3;383,384,385;,
+   3;163,386,387;,
+   3;388,389,390;,
+   3;391,284,283;,
+   3;392,393,180;,
+   3;394,395,396;,
+   3;395,397,398;,
+   3;399,400,401;,
+   3;119,354,112;,
+   3;402,397,395;,
+   3;403,154,124;,
+   3;303,404,405;,
+   3;350,406,155;,
+   3;68,407,408;,
+   3;8,173,381;,
+   3;409,145,144;,
+   3;36,128,168;,
+   3;394,402,395;,
+   3;332,410,8;,
+   3;411,412,413;,
+   3;368,370,414;,
+   3;334,117,67;,
+   3;136,415,294;,
+   3;153,134,150;,
+   3;416,417,418;,
+   3;285,174,419;,
+   3;146,420,421;,
+   3;422,423,138;,
+   3;179,424,425;,
+   3;169,170,181;,
+   3;426,102,427;,
+   3;104,428,114;,
+   3;429,430,131;,
+   3;150,134,431;,
+   3;8,381,332;,
+   3;127,132,148;,
+   3;416,177,417;,
+   3;262,36,144;,
+   3;432,433,434;,
+   3;435,389,388;,
+   3;161,126,436;,
+   3;437,161,180;,
+   3;112,125,153;,
+   3;62,334,67;,
+   3;131,405,429;,
+   3;127,438,132;,
+   3;288,140,267;,
+   3;112,153,150;,
+   3;408,439,440;,
+   3;441,442,443;,
+   3;444,120,445;,
+   3;138,423,446;,
+   3;94,62,175;,
+   3;158,170,163;,
+   3;150,447,112;,
+   3;125,448,153;,
+   3;449,371,107;,
+   3;450,451,452;,
+   3;53,327,270;,
+   3;171,106,453;,
+   3;385,454,383;,
+   3;378,455,367;,
+   3;330,359,331;,
+   3;456,148,434;,
+   3;339,338,457;,
+   3;180,161,436;,
+   3;164,458,218;,
+   3;288,340,459;,
+   3;166,148,165;,
+   3;170,158,181;,
+   3;424,460,461;,
+   3;434,433,462;,
+   3;327,463,289;,
+   3;376,382,464;,
+   3;465,142,103;,
+   3;109,466,467;,
+   3;165,148,468;,
+   3;469,147,470;,
+   3;157,138,471;,
+   3;237,47,137;,
+   3;169,472,170;,
+   3;107,473,449;,
+   3;474,475,476;,
+   3;477,478,479;,
+   3;466,480,467;,
+   3;120,140,445;,
+   3;174,89,9;,
+   3;240,382,376;,
+   3;54,88,80;,
+   3;227,481,228;,
+   3;144,36,409;,
+   3;469,103,147;,
+   3;426,349,102;,
+   3;260,120,482;,
+   3;483,484,485;,
+   3;50,359,82;,
+   3;486,141,176;,
+   3;472,487,170;,
+   3;137,133,237;,
+   3;289,463,488;,
+   3;489,343,129;,
+   3;490,360,491;,
+   3;363,492,364;,
+   3;108,5,342;,
+   3;111,94,493;,
+   3;68,408,440;,
+   3;494,437,495;,
+   3;165,468,496;,
+   3;497,328,167;,
+   3;162,457,23;,
+   3;360,490,130;,
+   3;498,499,500;,
+   3;500,501,502;,
+   3;503,165,496;,
+   3;170,487,504;,
+   3;74,123,124;,
+   3;473,107,505;,
+   3;506,485,484;,
+   3;500,502,507;,
+   3;508,172,142;,
+   3;138,446,471;,
+   3;9,457,338;,
+   3;509,162,46;,
+   3;143,510,156;,
+   3;294,123,74;,
+   3;167,156,511;,
+   3;405,131,303;,
+   3;240,422,138;,
+   3;170,504,163;,
+   3;193,512,6;,
+   3;459,140,288;,
+   3;359,330,380;,
+   3;5,513,323;,
+   3;514,515,516;,
+   3;29,155,517;,
+   3;424,179,460;,
+   3;351,156,518;,
+   3;519,327,290;,
+   3;460,179,520;,
+   3;23,457,9;,
+   3;118,106,151;,
+   3;176,256,521;,
+   3;168,130,490;,
+   3;410,313,8;,
+   3;498,500,507;,
+   3;328,522,64;,
+   3;523,524,525;;
+
+   MeshNormals {
+    182;
+    -0.991160;-0.130519;0.023821;,
+    -0.982103;-0.093218;-0.163660;,
+    -0.980705;-0.140492;-0.135938;,
+    -0.970210;-0.049683;-0.237117;,
+    -0.964482;0.043621;0.260522;,
+    -0.917290;-0.012710;-0.398017;,
+    -0.915016;-0.008291;0.403332;,
+    -0.912275;-0.031534;-0.408362;,
+    -0.899304;-0.227077;-0.373748;,
+    -0.898540;-0.414954;0.142964;,
+    -0.889615;-0.284229;-0.357489;,
+    -0.862715;0.462441;-0.204624;,
+    -0.862172;0.271289;-0.427858;,
+    -0.847198;0.497404;-0.186671;,
+    -0.846627;0.381154;0.371410;,
+    -0.834397;0.505316;-0.220086;,
+    -0.829050;-0.231407;-0.509045;,
+    -0.826506;0.126811;-0.548459;,
+    -0.820565;0.497416;-0.281515;,
+    -0.819908;0.570961;0.041877;,
+    -0.793460;0.577076;0.193401;,
+    -0.792908;0.177153;0.583022;,
+    -0.790700;0.563167;-0.240074;,
+    -0.783828;0.068221;-0.617219;,
+    -0.783526;-0.615894;0.082231;,
+    -0.762831;0.545323;-0.347435;,
+    -0.743337;-0.566321;0.355993;,
+    -0.741819;0.368970;0.559970;,
+    -0.737301;-0.652882;0.173586;,
+    -0.728864;0.447345;0.518305;,
+    -0.725416;0.021788;0.687965;,
+    -0.725149;-0.466903;0.506123;,
+    -0.723074;0.568551;-0.392318;,
+    -0.704361;0.616316;-0.352180;,
+    -0.703773;-0.473817;-0.529339;,
+    -0.701772;-0.686178;-0.191508;,
+    -0.676889;-0.735034;0.039327;,
+    -0.671662;0.307496;0.674030;,
+    -0.670820;0.734387;-0.103326;,
+    -0.670386;-0.102452;0.734905;,
+    -0.667174;0.376257;-0.642891;,
+    -0.666704;-0.540362;0.513336;,
+    -0.663664;0.342938;0.664789;,
+    -0.658773;0.501525;0.560795;,
+    -0.658519;-0.125419;-0.742040;,
+    -0.646810;0.676612;-0.351900;,
+    -0.645105;0.754743;0.119176;,
+    -0.592655;-0.764700;-0.252971;,
+    -0.587020;0.806475;0.070756;,
+    -0.581429;-0.482307;0.655225;,
+    -0.569300;0.800199;0.188625;,
+    -0.560341;-0.383415;-0.734174;,
+    -0.546980;0.602101;0.581626;,
+    -0.520842;0.391327;-0.758674;,
+    -0.517481;0.344279;-0.783381;,
+    -0.484246;-0.007446;0.874900;,
+    -0.472514;0.002703;-0.881319;,
+    -0.469559;-0.358367;-0.806900;,
+    -0.444625;-0.451718;-0.773472;,
+    -0.428324;-0.349425;-0.833331;,
+    -0.414319;0.038522;0.909316;,
+    -0.399909;-0.697360;-0.594779;,
+    -0.392520;-0.246722;0.886034;,
+    -0.391568;-0.507926;0.767259;,
+    -0.388695;-0.755366;0.527578;,
+    -0.363435;0.261094;0.894285;,
+    -0.360669;-0.260866;-0.895470;,
+    -0.331927;0.868135;-0.369007;,
+    -0.324554;0.796715;0.509814;,
+    -0.321153;-0.946470;0.032467;,
+    -0.302840;-0.399192;-0.865410;,
+    -0.289146;0.684714;-0.669000;,
+    -0.278013;-0.298110;-0.913148;,
+    -0.273158;-0.465793;-0.841678;,
+    -0.250019;0.812597;0.526475;,
+    -0.248296;0.907554;-0.338665;,
+    -0.242455;0.699944;0.671784;,
+    -0.235389;-0.850954;-0.469542;,
+    -0.235107;0.084457;-0.968293;,
+    -0.232712;-0.669405;-0.705508;,
+    -0.222230;0.974677;-0.024886;,
+    -0.215421;0.283758;0.934385;,
+    -0.179742;-0.815595;-0.549998;,
+    -0.173591;-0.201417;0.964001;,
+    -0.137302;0.352917;-0.925526;,
+    -0.120960;-0.193289;0.973657;,
+    -0.106995;-0.464116;-0.879289;,
+    -0.051797;-0.334066;-0.941125;,
+    -0.039857;-0.180988;0.982677;,
+    -0.031500;-0.382046;0.923606;,
+    -0.018763;0.246668;-0.968918;,
+    -0.007808;0.162719;0.986642;,
+    0.006752;0.579444;-0.814984;,
+    0.021567;-0.332009;-0.943030;,
+    0.040014;-0.055506;-0.997656;,
+    0.057431;0.317787;0.946421;,
+    0.068515;-0.393507;0.916765;,
+    0.068584;-0.742363;0.666479;,
+    0.071915;-0.958544;-0.275720;,
+    0.074170;-0.091104;-0.993075;,
+    0.077491;-0.301157;-0.950421;,
+    0.086076;0.716079;-0.692692;,
+    0.086863;-0.996211;-0.004352;,
+    0.121986;0.064641;0.990425;,
+    0.131797;0.422428;0.896763;,
+    0.141828;-0.524941;-0.839239;,
+    0.152576;0.403774;-0.902046;,
+    0.208628;-0.833615;-0.511431;,
+    0.213412;0.669851;-0.711165;,
+    0.217163;0.920925;0.323630;,
+    0.217818;0.186295;-0.958045;,
+    0.223368;0.864359;0.450545;,
+    0.238183;-0.711132;-0.661483;,
+    0.283306;0.506181;-0.814567;,
+    0.308311;-0.275058;-0.910652;,
+    0.318399;0.438316;0.840536;,
+    0.322943;0.818555;-0.475052;,
+    0.326886;-0.935367;-0.135033;,
+    0.332735;-0.826498;-0.454079;,
+    0.333305;-0.169164;-0.927519;,
+    0.339550;-0.131280;0.931381;,
+    0.344916;-0.102495;-0.933021;,
+    0.355203;-0.565973;-0.743979;,
+    0.359504;-0.282330;0.889408;,
+    0.366773;0.923043;-0.116058;,
+    0.367822;-0.191931;-0.909873;,
+    0.370155;0.903013;0.218066;,
+    0.384283;0.152553;-0.910524;,
+    0.400011;0.283973;-0.871407;,
+    0.400926;-0.914222;-0.058796;,
+    0.407162;-0.200721;-0.891028;,
+    0.420623;-0.108799;-0.900688;,
+    0.432515;-0.899000;0.068777;,
+    0.445099;-0.634448;-0.631952;,
+    0.461333;0.862388;-0.208467;,
+    0.474954;-0.381491;0.793022;,
+    0.491620;0.456108;0.741806;,
+    0.505274;0.854019;-0.123894;,
+    0.516659;-0.855209;0.041009;,
+    0.563827;0.104408;-0.819267;,
+    0.564036;0.086004;0.821259;,
+    0.567555;-0.637078;-0.521548;,
+    0.602102;0.797790;-0.031669;,
+    0.624819;-0.775802;-0.087931;,
+    0.644314;-0.610600;-0.460465;,
+    0.657309;0.527969;0.537767;,
+    0.659714;0.047607;-0.750008;,
+    0.687290;-0.414945;-0.596199;,
+    0.687945;0.274310;0.671926;,
+    0.689639;-0.724146;-0.003225;,
+    0.705844;0.071819;0.704717;,
+    0.713245;-0.394995;-0.579017;,
+    0.713841;0.478030;0.511779;,
+    0.720129;0.691409;0.058027;,
+    0.721590;0.685389;-0.097719;,
+    0.724760;-0.022041;0.688648;,
+    0.727307;0.568849;-0.383972;,
+    0.738646;-0.591039;0.324153;,
+    0.762081;-0.176726;0.622897;,
+    0.763176;-0.039027;0.645011;,
+    0.775410;0.424704;-0.467297;,
+    0.775790;0.362878;-0.516206;,
+    0.806940;0.586249;-0.071834;,
+    0.819080;-0.441725;0.366042;,
+    0.829274;-0.053339;-0.556291;,
+    0.845252;0.398508;0.356006;,
+    0.848009;-0.194962;0.492820;,
+    0.861306;0.112895;0.495386;,
+    0.869809;0.106405;-0.481778;,
+    0.874920;0.483178;-0.032476;,
+    0.877343;0.370099;0.305444;,
+    0.893052;-0.277518;-0.354178;,
+    0.898644;-0.284683;0.333758;,
+    0.911270;0.146896;-0.384718;,
+    0.931922;-0.306432;-0.193961;,
+    0.932248;0.213725;-0.291949;,
+    0.937100;-0.130254;-0.323847;,
+    0.938918;-0.100547;0.329126;,
+    0.942406;0.164557;0.291191;,
+    0.970149;0.111410;-0.215404;,
+    0.971052;-0.172297;-0.165445;,
+    0.983122;-0.040061;-0.178514;;
+    360;
+    3;133,10,110;,
+    3;145,165,153;,
+    3;40,48,110;,
+    3;35,10,118;,
+    3;10,133,118;,
+    3;10,40,110;,
+    3;28,62,41;,
+    3;54,147,47;,
+    3;102,36,97;,
+    3;27,83,39;,
+    3;48,124,110;,
+    3;118,133,175;,
+    3;110,175,133;,
+    3;45,19,50;,
+    3;108,147,54;,
+    3;115,109,76;,
+    3;175,110,124;,
+    3;47,8,54;,
+    3;47,147,129;,
+    3;63,24,104;,
+    3;159,163,123;,
+    3;54,8,108;,
+    3;159,180,163;,
+    3;20,9,89;,
+    3;179,130,92;,
+    3;157,102,63;,
+    3;130,179,58;,
+    3;83,120,88;,
+    3;35,48,10;,
+    3;7,4,42;,
+    3;142,179,92;,
+    3;64,169,177;,
+    3;40,10,48;,
+    3;118,175,107;,
+    3;70,171,128;,
+    3;176,147,108;,
+    3;8,47,82;,
+    3;130,58,92;,
+    3;35,118,107;,
+    3;24,117,104;,
+    3;7,70,128;,
+    3;176,129,147;,
+    3;36,102,77;,
+    3;63,104,120;,
+    3;99,15,154;,
+    3;106,53,17;,
+    3;179,141,58;,
+    3;106,176,108;,
+    3;14,29,19;,
+    3;48,35,0;,
+    3;117,120,104;,
+    3;129,82,47;,
+    3;140,180,159;,
+    3;108,8,53;,
+    3;158,155,163;,
+    3;120,159,123;,
+    3;101,17,16;,
+    3;65,21,12;,
+    3;161,175,126;,
+    3;48,126,175;,
+    3;55,103,81;,
+    3;181,176,106;,
+    3;23,53,8;,
+    3;53,106,108;,
+    3;50,29,76;,
+    3;101,16,46;,
+    3;173,167,171;,
+    3;62,103,55;,
+    3;58,38,92;,
+    3;175,161,107;,
+    3;38,58,13;,
+    3;38,13,111;,
+    3;141,179,152;,
+    3;58,141,51;,
+    3;48,0,43;,
+    3;48,43,126;,
+    3;23,17,53;,
+    3;181,99,154;,
+    3;106,15,99;,
+    3;111,142,38;,
+    3;44,149,89;,
+    3;174,102,157;,
+    3;150,178,164;,
+    3;51,13,58;,
+    3;85,103,62;,
+    3;68,111,13;,
+    3;156,140,170;,
+    3;35,107,26;,
+    3;42,60,7;,
+    3;22,27,2;,
+    3;19,29,50;,
+    3;156,146,180;,
+    3;99,181,106;,
+    3;4,5,64;,
+    3;51,141,79;,
+    3;141,152,172;,
+    3;96,83,37;,
+    3;150,21,95;,
+    3;61,8,82;,
+    3;39,2,27;,
+    3;0,35,26;,
+    3;117,24,63;,
+    3;4,91,42;,
+    3;129,176,144;,
+    3;148,42,91;,
+    3;32,17,23;,
+    3;101,106,17;,
+    3;17,46,16;,
+    3;137,15,106;,
+    3;152,179,111;,
+    3;145,155,165;,
+    3;181,168,176;,
+    3;181,154,137;,
+    3;137,154,15;,
+    3;161,98,107;,
+    3;6,14,28;,
+    3;32,45,75;,
+    3;6,41,55;,
+    3;39,62,28;,
+    3;140,120,97;,
+    3;101,137,106;,
+    3;83,27,37;,
+    3;172,138,141;,
+    3;51,18,13;,
+    3;88,123,62;,
+    3;129,144,82;,
+    3;26,107,69;,
+    3;107,98,69;,
+    3;115,81,103;,
+    3;79,141,138;,
+    3;51,79,18;,
+    3;76,109,50;,
+    3;91,64,177;,
+    3;75,137,101;,
+    3;23,8,61;,
+    3;176,168,144;,
+    3;18,68,13;,
+    3;83,96,63;,
+    3;46,75,101;,
+    3;135,103,85;,
+    3;94,100,57;,
+    3;82,94,87;,
+    3;62,55,41;,
+    3;114,94,131;,
+    3;131,151,114;,
+    3;87,94,57;,
+    3;144,131,82;,
+    3;161,126,74;,
+    3;2,57,66;,
+    3;98,31,69;,
+    3;82,131,94;,
+    3;61,82,87;,
+    3;180,143,163;,
+    3;162,153,165;,
+    3;135,163,155;,
+    3;100,94,114;,
+    3;32,75,46;,
+    3;63,102,117;,
+    3;60,140,97;,
+    3;150,164,174;,
+    3;160,134,153;,
+    3;159,120,140;,
+    3;95,178,150;,
+    3;131,122,151;,
+    3;67,87,161;,
+    3;109,80,50;,
+    3;87,23,61;,
+    3;67,23,87;,
+    3;142,92,38;,
+    3;17,32,46;,
+    3;161,87,98;,
+    3;55,29,6;,
+    3;158,162,165;,
+    3;59,56,125;,
+    3;166,136,158;,
+    3;168,131,144;,
+    3;74,43,26;,
+    3;131,168,113;,
+    3;67,161,74;,
+    3;143,158,163;,
+    3;103,155,115;,
+    3;178,149,139;,
+    3;37,22,11;,
+    3;11,30,37;,
+    3;120,123,88;,
+    3;43,74,126;,
+    3;25,32,23;,
+    3;66,100,121;,
+    3;111,179,142;,
+    3;122,113,79;,
+    3;178,65,89;,
+    3;102,97,117;,
+    3;36,1,60;,
+    3;57,100,66;,
+    3;76,81,115;,
+    3;79,138,132;,
+    3;138,136,132;,
+    3;75,134,137;,
+    3;64,91,4;,
+    3;146,100,114;,
+    3;79,132,122;,
+    3;68,152,111;,
+    3;66,121,93;,
+    3;146,121,100;,
+    3;79,113,18;,
+    3;128,171,177;,
+    3;168,181,137;,
+    3;134,160,137;,
+    3;151,180,114;,
+    3;21,150,30;,
+    3;1,7,60;,
+    3;113,122,131;,
+    3;148,171,167;,
+    3;26,69,31;,
+    3;12,20,65;,
+    3;113,136,18;,
+    3;25,45,32;,
+    3;5,128,71;,
+    3;172,136,138;,
+    3;136,68,18;,
+    3;123,163,135;,
+    3;86,66,93;,
+    3;152,68,136;,
+    3;63,120,83;,
+    3;109,153,134;,
+    3;155,145,115;,
+    3;49,31,98;,
+    3;96,37,30;,
+    3;71,84,34;,
+    3;5,4,7;,
+    3;172,152,136;,
+    3;150,157,96;,
+    3;85,123,135;,
+    3;146,114,180;,
+    3;151,122,143;,
+    3;123,85,62;,
+    3;127,119,73;,
+    3;77,86,93;,
+    3;41,6,28;,
+    3;90,139,44;,
+    3;119,127,173;,
+    3;52,14,67;,
+    3;11,3,30;,
+    3;52,74,31;,
+    3;168,162,113;,
+    3;75,45,80;,
+    3;73,119,70;,
+    3;96,30,150;,
+    3;56,78,125;,
+    3;77,112,86;,
+    3;64,5,34;,
+    3;66,86,78;,
+    3;162,136,113;,
+    3;116,105,84;,
+    3;128,116,71;,
+    3;93,121,127;,
+    3;180,151,143;,
+    3;80,134,75;,
+    3;56,11,78;,
+    3;28,2,39;,
+    3;93,127,73;,
+    3;98,87,28;,
+    3;137,162,168;,
+    3;78,22,66;,
+    3;173,127,156;,
+    3;156,180,140;,
+    3;21,3,12;,
+    3;73,77,93;,
+    3;121,146,127;,
+    3;143,122,132;,
+    3;167,60,148;,
+    3;148,60,42;,
+    3;145,153,109;,
+    3;31,74,26;,
+    3;160,162,137;,
+    3;95,65,178;,
+    3;112,125,78;,
+    3;23,67,25;,
+    3;71,116,84;,
+    3;128,5,7;,
+    3;28,87,57;,
+    3;59,125,72;,
+    3;3,21,30;,
+    3;14,49,28;,
+    3;78,86,112;,
+    3;60,167,140;,
+    3;177,148,91;,
+    3;112,77,102;,
+    3;33,12,44;,
+    3;72,125,164;,
+    3;112,174,125;,
+    3;167,173,170;,
+    3;29,55,81;,
+    3;11,56,3;,
+    3;132,158,143;,
+    3;70,119,171;,
+    3;116,128,169;,
+    3;12,90,44;,
+    3;22,2,66;,
+    3;6,29,14;,
+    3;171,148,177;,
+    3;0,26,43;,
+    3;117,97,120;,
+    3;34,5,71;,
+    3;112,102,174;,
+    3;52,67,74;,
+    3;27,22,37;,
+    3;33,44,12;,
+    3;89,65,20;,
+    3;139,149,44;,
+    3;56,59,3;,
+    3;81,76,29;,
+    3;140,167,170;,
+    3;162,158,136;,
+    3;70,36,73;,
+    3;136,166,132;,
+    3;165,155,158;,
+    3;146,156,127;,
+    3;49,98,28;,
+    3;169,128,177;,
+    3;72,164,90;,
+    3;125,174,164;,
+    3;45,25,19;,
+    3;36,70,1;,
+    3;34,84,105;,
+    3;105,116,169;,
+    3;12,72,90;,
+    3;3,59,72;,
+    3;88,39,83;,
+    3;158,132,166;,
+    3;20,12,44;,
+    3;105,169,64;,
+    3;73,36,77;,
+    3;173,156,170;,
+    3;14,25,67;,
+    3;80,45,50;,
+    3;139,90,178;,
+    3;62,39,88;,
+    3;164,178,90;,
+    3;134,80,109;,
+    3;171,119,173;,
+    3;3,72,12;,
+    3;124,48,175;,
+    3;57,2,28;,
+    3;65,95,21;,
+    3;155,103,135;,
+    3;22,78,11;,
+    3;109,115,145;,
+    3;14,52,49;,
+    3;149,178,89;,
+    3;36,60,97;,
+    3;49,52,31;,
+    3;19,25,14;,
+    3;160,153,162;,
+    3;44,89,9;,
+    3;7,1,70;,
+    3;157,63,96;,
+    3;34,105,64;,
+    3;174,157,150;,
+    3;9,20,44;;
+   }
+
+   MeshTextureCoords {
+    526;
+    0.758983;-0.868535;,
+    0.753613;-0.889465;,
+    0.019874;-0.936982;,
+    0.856272;-0.933587;,
+    0.739285;-0.895400;,
+    0.710869;-0.140003;,
+    0.809879;-0.680638;,
+    0.694441;-0.907057;,
+    0.100820;-0.188308;,
+    0.593487;-0.181383;,
+    0.868065;-0.928681;,
+    0.848413;-0.825383;,
+    0.019505;-0.904455;,
+    0.209393;-0.265619;,
+    0.433765;-0.858300;,
+    0.688775;-0.530409;,
+    0.711694;-0.920912;,
+    0.603094;-0.397392;,
+    0.705602;-0.797975;,
+    0.718047;-0.774503;,
+    0.778095;-0.730820;,
+    0.181409;-0.778367;,
+    0.698391;-0.925296;,
+    0.584372;-0.213972;,
+    0.004296;-0.905414;,
+    0.729081;-0.673967;,
+    0.762777;-0.691366;,
+    0.863518;-0.942237;,
+    0.896998;-0.707296;,
+    0.212982;-0.494499;,
+    0.299207;-0.726823;,
+    0.050726;-0.534127;,
+    0.223256;-0.298859;,
+    0.333202;-0.716056;,
+    0.051876;-0.613046;,
+    0.740755;-0.007630;,
+    0.607405;-0.288396;,
+    0.192238;-0.383282;,
+    0.171522;-0.656651;,
+    0.732388;-0.834433;,
+    0.050425;-0.640092;,
+    0.267160;-0.029270;,
+    0.873704;-0.794556;,
+    0.296785;-0.710954;,
+    0.924977;-0.680956;,
+    0.211072;-0.404727;,
+    0.613232;-0.244120;,
+    0.143090;-0.407688;,
+    0.482010;-0.374629;,
+    0.760365;-0.801778;,
+    0.070928;-0.008499;,
+    0.733253;-0.815448;,
+    0.288168;-0.824358;,
+    0.262318;-0.097889;,
+    0.317575;-0.545440;,
+    0.764770;-0.919819;,
+    0.746317;-0.117068;,
+    0.213821;-0.611803;,
+    0.660888;-0.504506;,
+    0.617966;-0.536973;,
+    0.615754;-0.479219;,
+    0.232744;-0.831396;,
+    0.762436;-0.052348;,
+    0.260729;-0.904131;,
+    0.537034;-0.582718;,
+    0.453124;-0.377536;,
+    0.348576;-0.442033;,
+    0.771301;-0.099743;,
+    0.120787;-0.826793;,
+    0.094774;-0.711102;,
+    0.933854;-0.614306;,
+    0.223419;-0.007761;,
+    0.184714;-0.856451;,
+    0.105160;-0.244049;,
+    0.149687;-0.254071;,
+    0.448095;-0.553910;,
+    0.711083;-0.706483;,
+    0.680247;-0.716417;,
+    0.356240;-0.059378;,
+    0.950886;-0.642880;,
+    0.335216;-0.518340;,
+    0.319242;-0.838022;,
+    0.013689;-0.021887;,
+    0.572423;-0.742614;,
+    0.239183;-0.056775;,
+    0.817291;-0.733473;,
+    0.314515;-0.081221;,
+    0.417292;-0.036907;,
+    0.294977;-0.516201;,
+    0.635426;-0.207748;,
+    0.577883;-0.852085;,
+    0.353592;-0.092997;,
+    0.095900;-0.549408;,
+    0.301437;-0.043808;,
+    0.764527;-0.012642;,
+    0.165775;-0.675375;,
+    0.295736;-0.449716;,
+    0.614100;-0.353354;,
+    0.421862;-0.058829;,
+    0.204685;-0.743408;,
+    0.627426;-0.643813;,
+    0.395366;-0.097398;,
+    0.470638;-0.333769;,
+    0.209878;-0.568713;,
+    0.318108;-0.455744;,
+    0.115526;-0.582465;,
+    0.751324;-0.210889;,
+    0.437119;-0.594410;,
+    0.725716;-0.183464;,
+    0.503177;-0.938265;,
+    0.313250;-0.871166;,
+    0.772397;-0.030321;,
+    0.372218;-0.169537;,
+    0.474758;-0.824768;,
+    0.303898;-0.474588;,
+    0.615654;-0.504603;,
+    0.140227;-0.565476;,
+    0.812394;-0.115282;,
+    0.797588;-0.199831;,
+    0.350874;-0.173484;,
+    0.589874;-0.036780;,
+    0.614162;-0.794777;,
+    0.790988;-0.231367;,
+    0.128144;-0.261035;,
+    0.138894;-0.219186;,
+    0.383209;-0.138486;,
+    0.686285;-0.739369;,
+    0.851150;-0.351598;,
+    0.618983;-0.310536;,
+    0.804709;-0.734272;,
+    0.576970;-0.389244;,
+    0.864203;-0.550543;,
+    0.901392;-0.293365;,
+    0.172368;-0.484787;,
+    0.460081;-0.264196;,
+    0.018667;-0.004575;,
+    0.186954;-0.291224;,
+    0.180305;-0.438704;,
+    0.809075;-0.383584;,
+    0.241815;-0.535520;,
+    0.576562;-0.077475;,
+    0.541328;-0.727735;,
+    0.166945;-0.549118;,
+    0.583915;-0.472037;,
+    0.571786;-0.267917;,
+    0.527133;-0.270288;,
+    0.374912;-0.775848;,
+    0.188847;-0.617116;,
+    0.884916;-0.365788;,
+    0.279384;-0.003800;,
+    0.415074;-0.214504;,
+    0.768675;-0.170179;,
+    0.461238;-0.780676;,
+    0.433298;-0.191559;,
+    0.180508;-0.211283;,
+    0.218630;-0.453540;,
+    0.533593;-0.503732;,
+    0.774653;-0.364749;,
+    0.715631;-0.336158;,
+    0.278223;-0.792565;,
+    0.238280;-0.354837;,
+    0.658905;-0.752552;,
+    0.547952;-0.241767;,
+    0.697437;-0.281001;,
+    0.461888;-0.828347;,
+    0.858935;-0.425945;,
+    0.852227;-0.389850;,
+    0.566255;-0.556198;,
+    0.578433;-0.351509;,
+    0.681873;-0.433810;,
+    0.687242;-0.352192;,
+    0.707565;-0.205646;,
+    0.209179;-0.527670;,
+    0.063351;-0.209438;,
+    0.629235;-0.161822;,
+    0.732781;-0.008902;,
+    0.483475;-0.679610;,
+    0.011239;-0.992939;,
+    0.729170;-0.284687;,
+    0.894595;-0.778611;,
+    0.655211;-0.783332;,
+    0.710375;-0.405546;,
+    0.019643;-0.915328;,
+    0.699280;-0.770345;,
+    0.708614;-0.727774;,
+    0.320283;-0.603218;,
+    0.348518;-0.626013;,
+    0.337067;-0.638510;,
+    0.769742;-0.667709;,
+    0.778366;-0.625664;,
+    0.803086;-0.621068;,
+    0.868579;-0.833722;,
+    0.847943;-0.847899;,
+    0.836226;-0.650395;,
+    0.032848;-0.518404;,
+    0.001898;-0.530894;,
+    0.700983;-0.652098;,
+    0.726443;-0.631241;,
+    0.818699;-0.807995;,
+    0.828119;-0.800985;,
+    0.709268;-0.044673;,
+    0.733877;-0.084152;,
+    0.242713;-0.568208;,
+    0.715141;-0.553927;,
+    0.680414;-0.551038;,
+    0.305809;-0.561027;,
+    0.359989;-0.587979;,
+    0.445067;-0.862787;,
+    0.423617;-0.883664;,
+    0.691127;-0.687821;,
+    0.867171;-0.672928;,
+    0.891745;-0.647938;,
+    0.873155;-0.690303;,
+    0.198277;-0.786585;,
+    0.204077;-0.764157;,
+    0.231284;-0.790194;,
+    0.161093;-0.820360;,
+    0.174446;-0.827484;,
+    0.441647;-0.797625;,
+    0.306995;-0.417806;,
+    0.279687;-0.405910;,
+    0.283745;-0.369330;,
+    0.739224;-0.795820;,
+    0.743059;-0.740363;,
+    0.753131;-0.790648;,
+    0.334989;-0.407406;,
+    0.308828;-0.380356;,
+    0.390235;-0.692392;,
+    0.427528;-0.678256;,
+    0.377302;-0.752676;,
+    0.048680;-0.545941;,
+    0.052031;-0.571079;,
+    0.078335;-0.599210;,
+    0.450045;-0.416397;,
+    0.424991;-0.424808;,
+    0.324717;-0.748320;,
+    0.146320;-0.487153;,
+    0.137119;-0.458602;,
+    0.110102;-0.692020;,
+    0.123439;-0.730357;,
+    0.791989;-0.322022;,
+    0.163298;-0.357229;,
+    0.786676;-0.718566;,
+    0.177090;-0.895498;,
+    0.177671;-0.866568;,
+    0.907140;-0.627771;,
+    0.422092;-0.367101;,
+    0.080834;-0.932522;,
+    0.065219;-0.931617;,
+    0.093783;-0.899482;,
+    0.251587;-0.927612;,
+    0.273041;-0.931685;,
+    0.264022;-0.944358;,
+    0.643455;-0.564254;,
+    0.672944;-0.585671;,
+    0.683465;-0.593783;,
+    0.526057;-0.749106;,
+    0.649248;-0.627526;,
+    0.659813;-0.646449;,
+    0.278766;-0.536944;,
+    0.627566;-0.049676;,
+    0.366110;-0.409823;,
+    0.635715;-0.270224;,
+    0.454601;-0.528347;,
+    0.481626;-0.515461;,
+    0.769831;-0.899203;,
+    0.778377;-0.927422;,
+    0.643738;-0.075700;,
+    0.159443;-0.773210;,
+    0.215693;-0.043956;,
+    0.221678;-0.102247;,
+    0.291748;-0.690578;,
+    0.100311;-0.607870;,
+    0.067182;-0.640658;,
+    0.695659;-0.181719;,
+    0.396819;-0.419664;,
+    0.388763;-0.432784;,
+    0.250111;-0.884803;,
+    0.281356;-0.859821;,
+    0.268946;-0.887658;,
+    0.598340;-0.843020;,
+    0.566860;-0.837450;,
+    0.592364;-0.134969;,
+    0.838818;-0.752870;,
+    0.828467;-0.756687;,
+    0.647895;-0.116529;,
+    0.660316;-0.165342;,
+    0.647750;-0.103172;,
+    0.593043;-0.110122;,
+    0.236372;-0.211065;,
+    0.185701;-0.198267;,
+    0.081797;-0.655035;,
+    0.105763;-0.658546;,
+    0.166240;-0.268043;,
+    0.131728;-0.305160;,
+    0.271747;-0.441320;,
+    0.211264;-0.827215;,
+    0.258144;-0.819933;,
+    0.476252;-0.561466;,
+    0.940849;-0.847673;,
+    0.927509;-0.854222;,
+    0.929040;-0.825511;,
+    0.860770;-0.483620;,
+    0.890249;-0.509807;,
+    0.837890;-0.508706;,
+    0.075876;-0.680233;,
+    0.395592;-0.935851;,
+    0.417898;-0.914229;,
+    0.408404;-0.945354;,
+    0.774022;-0.804730;,
+    0.789759;-0.834763;,
+    0.780929;-0.848482;,
+    0.641701;-0.669615;,
+    0.142266;-0.201279;,
+    0.339281;-0.037129;,
+    0.137508;-0.359027;,
+    0.402824;-0.015952;,
+    0.373620;-0.046381;,
+    0.295541;-0.890255;,
+    0.296444;-0.857706;,
+    0.600751;-0.769484;,
+    0.606515;-0.794796;,
+    0.323352;-0.018072;,
+    0.690067;-0.101444;,
+    0.072402;-0.706875;,
+    0.265551;-0.564829;,
+    0.260530;-0.548744;,
+    0.233846;-0.149841;,
+    0.561298;-0.593745;,
+    0.219842;-0.250033;,
+    0.058780;-0.101227;,
+    0.086015;-0.052191;,
+    0.080731;-0.124774;,
+    0.823934;-0.143000;,
+    0.821773;-0.104933;,
+    0.601473;-0.731609;,
+    0.571251;-0.763489;,
+    0.299155;-0.020947;,
+    0.540413;-0.180769;,
+    0.513032;-0.173364;,
+    0.528168;-0.137837;,
+    0.869779;-0.713820;,
+    0.741227;-0.132139;,
+    0.773766;-0.762700;,
+    0.810010;-0.851179;,
+    0.317432;-0.929251;,
+    0.300034;-0.943484;,
+    0.296113;-0.910379;,
+    0.281677;-0.468312;,
+    0.514815;-0.327028;,
+    0.252542;-0.412288;,
+    0.539370;-0.469688;,
+    0.715014;-0.446780;,
+    0.711961;-0.464015;,
+    0.340767;-0.130194;,
+    0.676514;-0.571633;,
+    0.452568;-0.062973;,
+    0.452874;-0.018562;,
+    0.493891;-0.055140;,
+    0.056702;-0.040509;,
+    0.589423;-0.435688;,
+    0.331745;-0.856327;,
+    0.559073;-0.861190;,
+    0.540695;-0.884867;,
+    0.540626;-0.846310;,
+    0.009005;-0.836096;,
+    0.008528;-0.815459;,
+    0.043917;-0.791178;,
+    0.460591;-0.921045;,
+    0.442249;-0.944408;,
+    0.445038;-0.918291;,
+    0.403255;-0.581188;,
+    0.623590;-0.607921;,
+    0.397986;-0.119295;,
+    0.485502;-0.031770;,
+    0.777867;-0.270767;,
+    0.760863;-0.259954;,
+    0.356420;-0.461120;,
+    0.050345;-0.771821;,
+    0.813831;-0.065418;,
+    0.038707;-0.109017;,
+    0.048068;-0.162935;,
+    0.751192;-0.327141;,
+    0.452822;-0.870292;,
+    0.458861;-0.853163;,
+    0.472101;-0.861880;,
+    0.697769;-0.265966;,
+    0.723923;-0.271729;,
+    0.606214;-0.709844;,
+    0.596299;-0.662274;,
+    0.617768;-0.675294;,
+    0.865568;-0.790036;,
+    0.624156;-0.800354;,
+    0.628887;-0.777279;,
+    0.548860;-0.792960;,
+    0.510974;-0.792908;,
+    0.516908;-0.766075;,
+    0.510607;-0.827512;,
+    0.490456;-0.808021;,
+    0.625013;-0.858987;,
+    0.663267;-0.821564;,
+    0.655689;-0.848651;,
+    0.537358;-0.813578;,
+    0.150702;-0.187297;,
+    0.927595;-0.515144;,
+    0.904938;-0.569965;,
+    0.248961;-0.443730;,
+    0.092820;-0.793239;,
+    0.122226;-0.779057;,
+    0.564624;-0.285448;,
+    0.101648;-0.159014;,
+    0.229244;-0.941743;,
+    0.212633;-0.912387;,
+    0.231136;-0.932102;,
+    0.474262;-0.905822;,
+    0.165791;-0.335056;,
+    0.014178;-0.983644;,
+    0.001898;-0.989568;,
+    0.011429;-0.970250;,
+    0.605577;-0.116595;,
+    0.408050;-0.793756;,
+    0.393847;-0.806709;,
+    0.826033;-0.367010;,
+    0.826377;-0.413107;,
+    0.917903;-0.771579;,
+    0.923581;-0.786750;,
+    0.480067;-0.303791;,
+    0.450256;-0.320006;,
+    0.315783;-0.500949;,
+    0.867305;-0.589152;,
+    0.846852;-0.586925;,
+    0.438230;-0.272649;,
+    0.934157;-0.250277;,
+    0.946151;-0.275169;,
+    0.900099;-0.288864;,
+    0.573803;-0.696869;,
+    0.677301;-0.765101;,
+    0.632594;-0.756187;,
+    0.862483;-0.300606;,
+    0.150756;-0.796849;,
+    0.146007;-0.835130;,
+    0.083789;-0.982319;,
+    0.097195;-0.972962;,
+    0.088136;-0.995137;,
+    0.551706;-0.034643;,
+    0.536104;-0.066497;,
+    0.799906;-0.454324;,
+    0.373307;-0.193953;,
+    0.404353;-0.140034;,
+    0.402319;-0.611415;,
+    0.072843;-0.945219;,
+    0.062499;-0.968395;,
+    0.052412;-0.959457;,
+    0.726242;-0.237779;,
+    0.457852;-0.892513;,
+    0.073061;-0.755150;,
+    0.923180;-0.319670;,
+    0.544354;-0.206687;,
+    0.439453;-0.838244;,
+    0.518832;-0.111659;,
+    0.898334;-0.742325;,
+    0.924923;-0.737078;,
+    0.950886;-0.303288;,
+    0.267446;-0.135546;,
+    0.735015;-0.281979;,
+    0.172566;-0.575911;,
+    0.481173;-0.913817;,
+    0.502036;-0.914404;,
+    0.892858;-0.417231;,
+    0.164076;-0.604923;,
+    0.156608;-0.636142;,
+    0.778790;-0.435414;,
+    0.656317;-0.394937;,
+    0.416217;-0.634101;,
+    0.816814;-0.924735;,
+    0.813930;-0.900135;,
+    0.826927;-0.900872;,
+    0.240446;-0.995130;,
+    0.228629;-0.997534;,
+    0.237349;-0.977048;,
+    0.484764;-0.904904;,
+    0.415327;-0.663376;,
+    0.628446;-0.019270;,
+    0.403763;-0.828608;,
+    0.379748;-0.825544;,
+    0.362920;-0.799804;,
+    0.500872;-0.662052;,
+    0.666220;-0.354986;,
+    0.255795;-0.214520;,
+    0.805162;-0.762775;,
+    0.552423;-0.385531;,
+    0.548817;-0.442049;,
+    0.524837;-0.867695;,
+    0.788564;-0.006927;,
+    0.650806;-0.730761;,
+    0.626068;-0.742916;,
+    0.875649;-0.460497;,
+    0.585517;-0.592124;,
+    0.749779;-0.519584;,
+    0.776023;-0.485997;,
+    0.787625;-0.500237;,
+    0.794930;-0.516096;,
+    0.807889;-0.524709;,
+    0.855098;-0.463570;,
+    0.676876;-0.315704;,
+    0.454181;-0.612040;,
+    0.365201;-0.824032;,
+    0.745423;-0.578672;,
+    0.163985;-0.515801;,
+    0.571471;-0.259724;,
+    0.571256;-0.494865;,
+    0.562809;-0.513878;,
+    0.837749;-0.666205;,
+    0.672487;-0.139472;,
+    0.890323;-0.807994;,
+    0.903955;-0.849857;,
+    0.884018;-0.829110;,
+    0.241023;-0.466619;,
+    0.507169;-0.482713;,
+    0.193896;-0.184735;,
+    0.876698;-0.756280;,
+    0.455898;-0.695948;,
+    0.542478;-0.600611;,
+    0.678030;-0.928326;,
+    0.667701;-0.902525;,
+    0.677492;-0.905823;;
+   }
+
+   MeshMaterialList {
+    1;
+    360;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.800000;0.800000;0.800000;1.000000;;
+     0.000000;
+     0.000000;0.000000;0.000000;;
+     0.000000;0.000000;0.000000;;
+
+     TextureFilename {
+      "C:/home/blade/EnvMapDemo4/lava.tga";
+     }
+    }
+   }
+
+   VertexDuplicationIndices {
+    526;
+    182;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    0,
+    4,
+    1,
+    4,
+    2,
+    0,
+    19,
+    1,
+    0,
+    10,
+    3,
+    12,
+    27,
+    3,
+    27,
+    10,
+    31,
+    11,
+    13,
+    32,
+    99,
+    22,
+    16,
+    18,
+    24,
+    16,
+    7,
+    31,
+    22,
+    15,
+    7,
+    18,
+    19,
+    26,
+    95,
+    38,
+    168,
+    42,
+    25,
+    10,
+    99,
+    38,
+    154,
+    33,
+    11,
+    21,
+    154,
+    38,
+    11,
+    30,
+    43,
+    6,
+    24,
+    11,
+    46,
+    89,
+    34,
+    40,
+    113,
+    81,
+    48,
+    28,
+    44,
+    58,
+    80,
+    66,
+    39,
+    49,
+    33,
+    51,
+    39,
+    72,
+    14,
+    28,
+    50,
+    72,
+    44,
+    26,
+    73,
+    39,
+    71,
+    70,
+    58,
+    64,
+    158,
+    123,
+    99,
+    128,
+    97,
+    34,
+    69,
+    40,
+    171,
+    49,
+    63,
+    63,
+    49,
+    51,
+    48,
+    26,
+    159,
+    105,
+    162,
+    52,
+    47,
+    81,
+    159,
+    175,
+    139,
+    63,
+    33,
+    74,
+    81,
+    76,
+    88,
+    90,
+    60,
+    70,
+    75,
+    79,
+    133,
+    29,
+    46,
+    85,
+    92,
+    31,
+    77,
+    42,
+    104,
+    96,
+    79,
+    99,
+    76,
+    52,
+    96,
+    76,
+    140,
+    86,
+    90,
+    61,
+    77,
+    160,
+    105,
+    99,
+    21,
+    17,
+    147,
+    13,
+    55,
+    156,
+    64,
+    87,
+    98,
+    93,
+    48,
+    92,
+    83,
+    92,
+    93,
+    14,
+    56,
+    56,
+    87,
+    102,
+    80,
+    88,
+    87,
+    83,
+    5,
+    141,
+    173,
+    120,
+    110,
+    14,
+    117,
+    114,
+    75,
+    178,
+    172,
+    91,
+    60,
+    129,
+    107,
+    85,
+    122,
+    63,
+    111,
+    91,
+    101,
+    117,
+    59,
+    111,
+    79,
+    164,
+    41,
+    63,
+    118,
+    101,
+    158,
+    181,
+    53,
+    88,
+    61,
+    121,
+    82,
+    178,
+    114,
+    129,
+    79,
+    116,
+    36,
+    164,
+    115,
+    129,
+    60,
+    100,
+    79,
+    136,
+    32,
+    160,
+    59,
+    99,
+    106,
+    122,
+    171,
+    121,
+    90,
+    180,
+    57,
+    37,
+    136,
+    160,
+    62,
+    37,
+    142,
+    119,
+    112,
+    159,
+    143,
+    176,
+    134,
+    153,
+    9,
+    83,
+    179,
+    121,
+    151,
+    85,
+    162,
+    152,
+    110,
+    119,
+    132,
+    151,
+    145,
+    164,
+    169,
+    93,
+    159,
+    63,
+    151,
+    104,
+    132,
+    110,
+    94,
+    142,
+    111,
+    67,
+    157,
+    17,
+    53,
+    29,
+    102,
+    151,
+    177,
+    116,
+    36,
+    86,
+    68,
+    159,
+    177,
+    157,
+    84,
+    177,
+    163,
+    176,
+    167,
+    177,
+    148,
+    35,
+    127,
+    56,
+    152,
+    134,
+    113,
+    161,
+    164,
+    149,
+    146,
+    139,
+    173,
+    109,
+    176,
+    163,
+    143,
+    166,
+    35,
+    151,
+    152,
+    150,
+    20,
+    153,
+    149,
+    41,
+    146,
+    148,
+    144,
+    145,
+    126,
+    161,
+    149,
+    163,
+    165,
+    20,
+    82,
+    71,
+    150,
+    131,
+    146,
+    146,
+    24,
+    45,
+    120,
+    132,
+    169,
+    171,
+    50,
+    172,
+    121,
+    135,
+    57,
+    135,
+    82,
+    176;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smallstar.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smallstar.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smallstar.x	(revision 1481)
@@ -0,0 +1,659 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.923210,0.000000,0.384295,0.000000,0.255837,0.746193,0.614609,0.000000,-0.286758,0.665730,-0.688893,0.000000,-4.122095,8.366077,-7.845257,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsToPoly1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh nurbsToPolyShape1 {
+   70;
+   2.069548;-0.580773;-0.000000;,
+   -1.741120;-0.580773;0.074558;,
+   0.088420;-0.580773;1.858006;,
+   0.507104;-2.175130;-0.000000;,
+   0.041931;-2.175130;0.489992;,
+   0.332661;-2.175130;0.303246;,
+   0.984063;-0.580773;0.821089;,
+   1.049698;-1.345702;-0.000000;,
+   0.594942;-1.345702;0.523290;,
+   0.066060;-1.345702;0.978747;,
+   -0.482085;-2.175130;0.035439;,
+   -0.293204;-2.175130;0.336799;,
+   -0.762746;-0.580773;0.968008;,
+   -0.498152;-1.345702;0.595248;,
+   -0.941164;-1.345702;0.055789;,
+   1.433332;0.882579;0.000000;,
+   0.076372;0.882579;1.312752;,
+   0.749903;0.882579;0.644885;,
+   2.807338;0.186346;0.000000;,
+   1.238470;0.186346;1.006319;,
+   0.098597;0.186346;2.483810;,
+   0.610046;1.658422;0.000000;,
+   0.388205;1.658422;0.351441;,
+   0.047789;1.658422;0.584913;,
+   -1.247284;0.882579;0.064460;,
+   -0.607655;0.882579;0.744811;,
+   -0.922695;0.186346;1.208191;,
+   -2.303417;0.186346;0.083053;,
+   -0.338804;1.658422;0.392126;,
+   -0.572686;1.658422;0.040385;,
+   0.020299;-0.580773;-1.664268;,
+   0.009680;-2.175130;-0.477765;,
+   -0.322017;-2.175130;-0.304087;,
+   -0.877449;-0.580773;-0.789273;,
+   -0.557070;-1.345702;-0.516194;,
+   0.015222;-1.345702;-0.917374;,
+   0.000000;-2.916775;-0.000000;,
+   0.329450;-2.175130;-0.302839;,
+   0.968502;-0.580773;-0.784569;,
+   0.587679;-1.345702;-0.513708;,
+   0.017573;0.882579;-1.204894;,
+   -0.687624;0.882579;-0.629300;,
+   -1.077545;0.186346;-0.954063;,
+   0.022579;0.186346;-2.183884;,
+   -0.373373;1.658422;-0.351322;,
+   0.011028;1.658422;-0.565589;,
+   0.739575;0.882579;-0.625971;,
+   1.216729;0.186346;-0.947783;,
+   0.000000;2.349301;0.000000;,
+   0.384263;1.658422;-0.349833;,
+   0.000000;2.349301;0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   0.000000;2.349301;0.000000;,
+   0.610046;1.658422;0.000000;,
+   0.000000;2.349301;0.000000;,
+   0.000000;2.349301;0.000000;,
+   2.069548;-0.580773;-0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   0.507104;-2.175130;-0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   0.000000;-2.916775;-0.000000;,
+   1.049698;-1.345702;-0.000000;,
+   0.000000;2.349301;0.000000;,
+   0.000000;2.349301;0.000000;,
+   1.433332;0.882579;0.000000;,
+   2.807338;0.186346;0.000000;,
+   0.000000;2.349301;0.000000;;
+   96;
+   3;48,21,49;,
+   3;50,29,28;,
+   3;12,1,13;,
+   3;6,2,8;,
+   3;5,4,36;,
+   3;51,3,5;,
+   3;7,0,6;,
+   3;3,7,8;,
+   3;5,8,9;,
+   3;10,52,11;,
+   3;53,4,11;,
+   3;2,12,9;,
+   3;4,9,13;,
+   3;11,13,14;,
+   3;54,23,22;,
+   3;17,16,19;,
+   3;18,15,17;,
+   3;0,18,19;,
+   3;6,19,20;,
+   3;55,56,22;,
+   3;15,55,22;,
+   3;17,22,23;,
+   3;26,25,24;,
+   3;20,16,25;,
+   3;2,20,26;,
+   3;12,26,27;,
+   3;57,28,23;,
+   3;16,23,28;,
+   3;25,28,29;,
+   3;39,38,58;,
+   3;33,30,34;,
+   3;59,32,31;,
+   3;60,10,32;,
+   3;14,1,33;,
+   3;10,14,34;,
+   3;32,34,35;,
+   3;61,62,37;,
+   3;63,31,37;,
+   3;35,30,38;,
+   3;31,35,39;,
+   3;37,39,64;,
+   3;65,45,44;,
+   3;42,41,40;,
+   3;27,24,41;,
+   3;1,27,42;,
+   3;33,42,43;,
+   3;66,44,29;,
+   3;24,29,44;,
+   3;41,44,45;,
+   3;47,46,67;,
+   3;43,40,46;,
+   3;30,43,47;,
+   3;38,47,68;,
+   3;69,49,45;,
+   3;40,45,49;,
+   3;46,49,21;,
+   3;1,14,13;,
+   3;2,9,8;,
+   3;6,8,7;,
+   3;8,5,3;,
+   3;9,4,5;,
+   3;12,13,9;,
+   3;13,11,4;,
+   3;14,10,11;,
+   3;16,20,19;,
+   3;17,19,18;,
+   3;19,6,0;,
+   3;20,2,6;,
+   3;22,17,15;,
+   3;23,16,17;,
+   3;24,27,26;,
+   3;25,26,20;,
+   3;26,12,2;,
+   3;27,1,12;,
+   3;28,25,16;,
+   3;29,24,25;,
+   3;58,64,39;,
+   3;30,35,34;,
+   3;33,34,14;,
+   3;34,32,10;,
+   3;35,31,32;,
+   3;38,39,35;,
+   3;39,37,31;,
+   3;64,61,37;,
+   3;40,43,42;,
+   3;41,42,27;,
+   3;42,33,1;,
+   3;43,30,33;,
+   3;44,41,24;,
+   3;45,40,41;,
+   3;67,68,47;,
+   3;46,47,43;,
+   3;47,38,30;,
+   3;68,58,38;,
+   3;49,46,40;,
+   3;21,67,46;;
+
+   MeshNormals {
+    50;
+    -0.967820;0.243183;0.064695;,
+    -0.870148;-0.486822;-0.076465;,
+    -0.818608;-0.574348;-0.002323;,
+    -0.776851;-0.628847;-0.032470;,
+    -0.765596;0.619712;0.172687;,
+    -0.707417;0.153740;0.689873;,
+    -0.688846;0.721817;0.066865;,
+    -0.680931;0.151033;-0.716605;,
+    -0.670208;-0.456745;-0.584983;,
+    -0.658212;-0.439963;-0.610893;,
+    -0.623983;-0.436988;-0.647833;,
+    -0.612185;-0.445046;0.653577;,
+    -0.606780;0.553666;-0.570326;,
+    -0.589088;-0.466828;0.659581;,
+    -0.587948;0.596380;0.546487;,
+    -0.555309;-0.475924;0.682003;,
+    -0.545010;0.567996;0.616721;,
+    -0.540758;0.572742;-0.616074;,
+    -0.122255;0.605055;-0.786741;,
+    -0.070368;0.243894;-0.967246;,
+    -0.069041;-0.502074;0.862064;,
+    -0.042967;0.700013;-0.712837;,
+    -0.034254;-0.666538;0.744684;,
+    0.002000;-0.604046;0.796947;,
+    0.011696;0.999891;0.009035;,
+    0.021652;-0.999643;0.015647;,
+    0.031012;-0.604360;-0.796108;,
+    0.033362;-0.559282;-0.828306;,
+    0.070678;0.751248;0.656224;,
+    0.072160;0.255136;0.964209;,
+    0.126691;-0.479937;-0.868107;,
+    0.181302;0.638732;0.747764;,
+    0.509114;0.618945;0.598089;,
+    0.534018;-0.462095;-0.708021;,
+    0.541648;-0.478575;-0.691074;,
+    0.558745;0.600734;-0.571772;,
+    0.561739;0.560227;-0.608765;,
+    0.576393;0.582002;0.573625;,
+    0.615362;0.785365;-0.067321;,
+    0.623359;-0.492674;0.607204;,
+    0.626439;-0.455300;-0.632674;,
+    0.631444;0.169017;-0.756777;,
+    0.633232;-0.454418;0.626515;,
+    0.648775;-0.495850;0.577256;,
+    0.656990;0.161666;0.736362;,
+    0.695158;-0.717112;0.050056;,
+    0.733052;0.662440;-0.154295;,
+    0.762444;-0.645421;0.045948;,
+    0.839738;-0.525677;0.136027;,
+    0.945015;0.309658;-0.105160;;
+    96;
+    3;24,46,36;,
+    3;24,4,16;,
+    3;13,3,15;,
+    3;39,22,43;,
+    3;42,20,25;,
+    3;25,48,42;,
+    3;47,45,39;,
+    3;48,47,43;,
+    3;42,43,23;,
+    3;1,25,11;,
+    3;25,20,11;,
+    3;22,13,23;,
+    3;20,23,15;,
+    3;11,15,2;,
+    3;24,31,37;,
+    3;32,28,44;,
+    3;49,38,32;,
+    3;45,49,44;,
+    3;39,44,29;,
+    3;46,24,37;,
+    3;38,46,37;,
+    3;32,37,31;,
+    3;5,14,6;,
+    3;29,28,14;,
+    3;22,29,5;,
+    3;13,5,0;,
+    3;24,16,31;,
+    3;28,31,16;,
+    3;14,16,4;,
+    3;34,33,45;,
+    3;9,26,8;,
+    3;25,10,30;,
+    3;25,1,10;,
+    3;2,3,9;,
+    3;1,2,8;,
+    3;10,8,27;,
+    3;48,25,40;,
+    3;25,30,40;,
+    3;27,26,33;,
+    3;30,27,34;,
+    3;40,34,47;,
+    3;24,18,12;,
+    3;7,17,21;,
+    3;0,6,17;,
+    3;3,0,7;,
+    3;9,7,19;,
+    3;24,12,4;,
+    3;6,4,12;,
+    3;17,12,18;,
+    3;41,35,38;,
+    3;19,21,35;,
+    3;26,19,41;,
+    3;33,41,49;,
+    3;24,36,18;,
+    3;21,18,36;,
+    3;35,36,46;,
+    3;3,2,15;,
+    3;22,23,43;,
+    3;39,43,47;,
+    3;43,42,48;,
+    3;23,20,42;,
+    3;13,15,23;,
+    3;15,11,20;,
+    3;2,1,11;,
+    3;28,29,44;,
+    3;32,44,49;,
+    3;44,39,45;,
+    3;29,22,39;,
+    3;37,32,38;,
+    3;31,28,32;,
+    3;6,0,5;,
+    3;14,5,29;,
+    3;5,13,22;,
+    3;0,3,13;,
+    3;16,14,28;,
+    3;4,6,14;,
+    3;45,47,34;,
+    3;26,27,8;,
+    3;9,8,2;,
+    3;8,10,1;,
+    3;27,30,10;,
+    3;33,34,27;,
+    3;34,40,30;,
+    3;47,48,40;,
+    3;21,19,7;,
+    3;17,7,0;,
+    3;7,9,3;,
+    3;19,26,9;,
+    3;12,17,6;,
+    3;18,21,17;,
+    3;38,49,41;,
+    3;35,41,19;,
+    3;41,33,26;,
+    3;49,45,33;,
+    3;36,35,21;,
+    3;46,38,35;;
+   }
+
+   MeshTextureCoords {
+    70;
+    0.345208;0.000000;,
+    0.345208;-0.486583;,
+    0.345208;-0.234125;,
+    0.139572;0.000000;,
+    0.139572;-0.234125;,
+    0.139572;-0.119432;,
+    0.345208;-0.119432;,
+    0.230802;0.000000;,
+    0.230802;-0.119432;,
+    0.230802;-0.234125;,
+    0.139572;-0.486583;,
+    0.139572;-0.365921;,
+    0.345208;-0.365921;,
+    0.230802;-0.365921;,
+    0.230802;-0.486583;,
+    0.722730;0.000000;,
+    0.722730;-0.234125;,
+    0.722730;-0.119432;,
+    0.558391;0.000000;,
+    0.558391;-0.119432;,
+    0.558391;-0.234125;,
+    0.839636;-1.000000;,
+    0.839636;-0.119432;,
+    0.839636;-0.234125;,
+    0.722730;-0.486583;,
+    0.722730;-0.365921;,
+    0.558391;-0.365921;,
+    0.558391;-0.486583;,
+    0.839636;-0.365921;,
+    0.839636;-0.486583;,
+    0.345208;-0.753663;,
+    0.139572;-0.753663;,
+    0.139572;-0.621353;,
+    0.345208;-0.621353;,
+    0.230802;-0.621353;,
+    0.230802;-0.753663;,
+    0.000000;-0.119432;,
+    0.139572;-0.879206;,
+    0.345208;-0.879206;,
+    0.230802;-0.879206;,
+    0.722730;-0.753663;,
+    0.722730;-0.621353;,
+    0.558391;-0.621353;,
+    0.558391;-0.753663;,
+    0.839636;-0.621353;,
+    0.839636;-0.753663;,
+    0.722730;-0.879206;,
+    0.558391;-0.879206;,
+    1.000000;-1.000000;,
+    0.839636;-0.879206;,
+    1.000000;-0.486583;,
+    0.000000;0.000000;,
+    0.000000;-0.365921;,
+    0.000000;-0.234125;,
+    1.000000;-0.234125;,
+    0.839636;0.000000;,
+    1.000000;-0.119432;,
+    1.000000;-0.365921;,
+    0.345208;-1.000000;,
+    0.000000;-0.621353;,
+    0.000000;-0.486583;,
+    0.139572;-1.000000;,
+    0.000000;-0.879206;,
+    0.000000;-0.753663;,
+    0.230802;-1.000000;,
+    1.000000;-0.753663;,
+    1.000000;-0.621353;,
+    0.722730;-1.000000;,
+    0.558391;-1.000000;,
+    1.000000;-0.879206;;
+   }
+
+   MeshMaterialList {
+    1;
+    96;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    70;
+    50;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    48,
+    36,
+    36,
+    36,
+    48,
+    21,
+    48,
+    48,
+    0,
+    36,
+    36,
+    3,
+    36,
+    36,
+    7,
+    48,
+    48,
+    15,
+    18,
+    48;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smalltorus.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smalltorus.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smalltorus.x	(revision 1481)
@@ -0,0 +1,1135 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.960294,0.000000,0.278991,0.000000,0.030801,0.993887,0.106016,0.000000,-0.277286,0.110400,-0.954424,0.000000,-1.917487,0.763436,-6.600032,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pTorus1 {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.999391,-0.034899,0.000000,-0.000000,0.534595,0.981941,0.000000,1.000000,-0.010470,-0.299817,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pTorusShape1 {
+   256;
+   0.353553;0.000000;-0.353553;,
+   0.000000;0.000000;-0.500000;,
+   -0.353553;0.000000;-0.353553;,
+   -0.500000;0.000000;0.000000;,
+   -0.353553;0.000000;0.353553;,
+   0.000000;0.000000;0.500000;,
+   0.353553;0.000000;0.353553;,
+   0.500000;0.000000;0.000000;,
+   0.457107;0.353553;-0.457107;,
+   0.000000;0.353553;-0.646447;,
+   -0.457107;0.353553;-0.457107;,
+   -0.646447;0.353553;0.000000;,
+   -0.457107;0.353553;0.457107;,
+   0.000000;0.353553;0.646447;,
+   0.457107;0.353553;0.457107;,
+   0.646447;0.353553;0.000000;,
+   0.707107;0.500000;-0.707107;,
+   0.000000;0.500000;-1.000000;,
+   -0.707107;0.500000;-0.707107;,
+   -1.000000;0.500000;0.000000;,
+   -0.707107;0.500000;0.707107;,
+   0.000000;0.500000;1.000000;,
+   0.707107;0.500000;0.707107;,
+   1.000000;0.500000;0.000000;,
+   0.957107;0.353553;-0.957107;,
+   0.000000;0.353553;-1.353553;,
+   -0.957107;0.353553;-0.957107;,
+   -1.353553;0.353553;0.000000;,
+   -0.957107;0.353553;0.957107;,
+   0.000000;0.353553;1.353553;,
+   0.957107;0.353553;0.957107;,
+   1.353553;0.353553;0.000000;,
+   1.060660;0.000000;-1.060660;,
+   0.000000;0.000000;-1.500000;,
+   -1.060660;0.000000;-1.060660;,
+   -1.500000;0.000000;0.000000;,
+   -1.060660;0.000000;1.060660;,
+   0.000000;0.000000;1.500000;,
+   1.060660;0.000000;1.060660;,
+   1.500000;0.000000;0.000000;,
+   0.957107;-0.353553;-0.957107;,
+   0.000000;-0.353553;-1.353553;,
+   -0.957107;-0.353553;-0.957107;,
+   -1.353553;-0.353553;0.000000;,
+   -0.957107;-0.353553;0.957107;,
+   0.000000;-0.353553;1.353553;,
+   0.957107;-0.353553;0.957107;,
+   1.353553;-0.353553;0.000000;,
+   0.707107;-0.500000;-0.707107;,
+   0.000000;-0.500000;-1.000000;,
+   -0.707107;-0.500000;-0.707107;,
+   -1.000000;-0.500000;0.000000;,
+   -0.707107;-0.500000;0.707107;,
+   0.000000;-0.500000;1.000000;,
+   0.707107;-0.500000;0.707107;,
+   1.000000;-0.500000;0.000000;,
+   0.457107;-0.353553;-0.457107;,
+   0.000000;-0.353553;-0.646447;,
+   -0.457107;-0.353553;-0.457107;,
+   -0.646447;-0.353553;0.000000;,
+   -0.457107;-0.353553;0.457107;,
+   0.000000;-0.353553;0.646447;,
+   0.457107;-0.353553;0.457107;,
+   0.646447;-0.353553;0.000000;,
+   0.000000;0.000000;-0.500000;,
+   0.000000;0.353553;-0.646447;,
+   -0.353553;0.000000;-0.353553;,
+   -0.457107;0.353553;-0.457107;,
+   -0.500000;0.000000;0.000000;,
+   -0.646447;0.353553;0.000000;,
+   -0.353553;0.000000;0.353553;,
+   -0.457107;0.353553;0.457107;,
+   0.000000;0.000000;0.500000;,
+   0.000000;0.353553;0.646447;,
+   0.353553;0.000000;0.353553;,
+   0.457107;0.353553;0.457107;,
+   0.353553;0.000000;-0.353553;,
+   0.500000;0.000000;0.000000;,
+   0.646447;0.353553;0.000000;,
+   0.457107;0.353553;-0.457107;,
+   0.000000;0.353553;-0.646447;,
+   0.457107;0.353553;-0.457107;,
+   -0.457107;0.353553;-0.457107;,
+   0.000000;0.353553;-0.646447;,
+   0.000000;0.500000;-1.000000;,
+   -0.646447;0.353553;0.000000;,
+   -0.457107;0.353553;-0.457107;,
+   -0.707107;0.500000;-0.707107;,
+   -0.457107;0.353553;0.457107;,
+   -0.646447;0.353553;0.000000;,
+   -1.000000;0.500000;0.000000;,
+   0.000000;0.353553;0.646447;,
+   -0.457107;0.353553;0.457107;,
+   -0.707107;0.500000;0.707107;,
+   0.457107;0.353553;0.457107;,
+   0.000000;0.353553;0.646447;,
+   0.000000;0.500000;1.000000;,
+   0.646447;0.353553;0.000000;,
+   0.457107;0.353553;0.457107;,
+   0.707107;0.500000;0.707107;,
+   0.457107;0.353553;-0.457107;,
+   0.646447;0.353553;0.000000;,
+   1.000000;0.500000;0.000000;,
+   0.707107;0.500000;-0.707107;,
+   0.000000;0.500000;-1.000000;,
+   0.707107;0.500000;-0.707107;,
+   -0.707107;0.500000;-0.707107;,
+   0.000000;0.500000;-1.000000;,
+   0.000000;0.353553;-1.353553;,
+   -1.000000;0.500000;0.000000;,
+   -0.707107;0.500000;-0.707107;,
+   -0.957107;0.353553;-0.957107;,
+   -0.707107;0.500000;0.707107;,
+   -1.000000;0.500000;0.000000;,
+   -1.353553;0.353553;0.000000;,
+   0.000000;0.500000;1.000000;,
+   -0.707107;0.500000;0.707107;,
+   -0.957107;0.353553;0.957107;,
+   0.707107;0.500000;0.707107;,
+   0.000000;0.500000;1.000000;,
+   0.000000;0.353553;1.353553;,
+   1.000000;0.500000;0.000000;,
+   0.707107;0.500000;0.707107;,
+   0.957107;0.353553;0.957107;,
+   0.707107;0.500000;-0.707107;,
+   1.000000;0.500000;0.000000;,
+   1.353553;0.353553;0.000000;,
+   0.957107;0.353553;-0.957107;,
+   0.000000;0.353553;-1.353553;,
+   0.957107;0.353553;-0.957107;,
+   -0.957107;0.353553;-0.957107;,
+   0.000000;0.353553;-1.353553;,
+   0.000000;0.000000;-1.500000;,
+   -1.353553;0.353553;0.000000;,
+   -0.957107;0.353553;-0.957107;,
+   -1.060660;0.000000;-1.060660;,
+   -0.957107;0.353553;0.957107;,
+   -1.353553;0.353553;0.000000;,
+   -1.500000;0.000000;0.000000;,
+   0.000000;0.353553;1.353553;,
+   -0.957107;0.353553;0.957107;,
+   -1.060660;0.000000;1.060660;,
+   0.957107;0.353553;0.957107;,
+   0.000000;0.353553;1.353553;,
+   0.000000;0.000000;1.500000;,
+   1.353553;0.353553;0.000000;,
+   0.957107;0.353553;0.957107;,
+   1.060660;0.000000;1.060660;,
+   0.957107;0.353553;-0.957107;,
+   1.353553;0.353553;0.000000;,
+   1.500000;0.000000;0.000000;,
+   1.060660;0.000000;-1.060660;,
+   0.000000;0.000000;-1.500000;,
+   1.060660;0.000000;-1.060660;,
+   -1.060660;0.000000;-1.060660;,
+   0.000000;0.000000;-1.500000;,
+   0.000000;-0.353553;-1.353553;,
+   -1.500000;0.000000;0.000000;,
+   -1.060660;0.000000;-1.060660;,
+   -0.957107;-0.353553;-0.957107;,
+   -1.060660;0.000000;1.060660;,
+   -1.500000;0.000000;0.000000;,
+   -1.353553;-0.353553;0.000000;,
+   0.000000;0.000000;1.500000;,
+   -1.060660;0.000000;1.060660;,
+   -0.957107;-0.353553;0.957107;,
+   1.060660;0.000000;1.060660;,
+   0.000000;0.000000;1.500000;,
+   0.000000;-0.353553;1.353553;,
+   1.500000;0.000000;0.000000;,
+   1.060660;0.000000;1.060660;,
+   0.957107;-0.353553;0.957107;,
+   1.060660;0.000000;-1.060660;,
+   1.500000;0.000000;0.000000;,
+   1.353553;-0.353553;0.000000;,
+   0.957107;-0.353553;-0.957107;,
+   0.000000;-0.353553;-1.353553;,
+   0.957107;-0.353553;-0.957107;,
+   -0.957107;-0.353553;-0.957107;,
+   0.000000;-0.353553;-1.353553;,
+   0.000000;-0.500000;-1.000000;,
+   -1.353553;-0.353553;0.000000;,
+   -0.957107;-0.353553;-0.957107;,
+   -0.707107;-0.500000;-0.707107;,
+   -0.957107;-0.353553;0.957107;,
+   -1.353553;-0.353553;0.000000;,
+   -1.000000;-0.500000;0.000000;,
+   0.000000;-0.353553;1.353553;,
+   -0.957107;-0.353553;0.957107;,
+   -0.707107;-0.500000;0.707107;,
+   0.957107;-0.353553;0.957107;,
+   0.000000;-0.353553;1.353553;,
+   0.000000;-0.500000;1.000000;,
+   1.353553;-0.353553;0.000000;,
+   0.957107;-0.353553;0.957107;,
+   0.707107;-0.500000;0.707107;,
+   0.957107;-0.353553;-0.957107;,
+   1.353553;-0.353553;0.000000;,
+   1.000000;-0.500000;0.000000;,
+   0.707107;-0.500000;-0.707107;,
+   0.000000;-0.500000;-1.000000;,
+   0.707107;-0.500000;-0.707107;,
+   -0.707107;-0.500000;-0.707107;,
+   0.000000;-0.500000;-1.000000;,
+   0.000000;-0.353553;-0.646447;,
+   -1.000000;-0.500000;0.000000;,
+   -0.707107;-0.500000;-0.707107;,
+   -0.457107;-0.353553;-0.457107;,
+   -0.707107;-0.500000;0.707107;,
+   -1.000000;-0.500000;0.000000;,
+   -0.646447;-0.353553;0.000000;,
+   0.000000;-0.500000;1.000000;,
+   -0.707107;-0.500000;0.707107;,
+   -0.457107;-0.353553;0.457107;,
+   0.707107;-0.500000;0.707107;,
+   0.000000;-0.500000;1.000000;,
+   0.000000;-0.353553;0.646447;,
+   1.000000;-0.500000;0.000000;,
+   0.707107;-0.500000;0.707107;,
+   0.457107;-0.353553;0.457107;,
+   0.707107;-0.500000;-0.707107;,
+   1.000000;-0.500000;0.000000;,
+   0.646447;-0.353553;0.000000;,
+   0.457107;-0.353553;-0.457107;,
+   0.000000;-0.353553;-0.646447;,
+   0.457107;-0.353553;-0.457107;,
+   0.353553;0.000000;-0.353553;,
+   0.000000;0.000000;-0.500000;,
+   -0.457107;-0.353553;-0.457107;,
+   0.000000;-0.353553;-0.646447;,
+   0.000000;0.000000;-0.500000;,
+   -0.353553;0.000000;-0.353553;,
+   -0.646447;-0.353553;0.000000;,
+   -0.457107;-0.353553;-0.457107;,
+   -0.353553;0.000000;-0.353553;,
+   -0.500000;0.000000;0.000000;,
+   -0.457107;-0.353553;0.457107;,
+   -0.646447;-0.353553;0.000000;,
+   -0.500000;0.000000;0.000000;,
+   -0.353553;0.000000;0.353553;,
+   0.000000;-0.353553;0.646447;,
+   -0.457107;-0.353553;0.457107;,
+   -0.353553;0.000000;0.353553;,
+   0.000000;0.000000;0.500000;,
+   0.457107;-0.353553;0.457107;,
+   0.000000;-0.353553;0.646447;,
+   0.000000;0.000000;0.500000;,
+   0.353553;0.000000;0.353553;,
+   0.646447;-0.353553;0.000000;,
+   0.457107;-0.353553;0.457107;,
+   0.353553;0.000000;0.353553;,
+   0.500000;0.000000;0.000000;,
+   0.457107;-0.353553;-0.457107;,
+   0.646447;-0.353553;0.000000;,
+   0.500000;0.000000;0.000000;,
+   0.353553;0.000000;-0.353553;;
+   64;
+   4;1,0,8,9;,
+   4;2,64,65,10;,
+   4;3,66,67,11;,
+   4;4,68,69,12;,
+   4;5,70,71,13;,
+   4;6,72,73,14;,
+   4;7,74,75,15;,
+   4;76,77,78,79;,
+   4;80,81,16,17;,
+   4;82,83,84,18;,
+   4;85,86,87,19;,
+   4;88,89,90,20;,
+   4;91,92,93,21;,
+   4;94,95,96,22;,
+   4;97,98,99,23;,
+   4;100,101,102,103;,
+   4;104,105,24,25;,
+   4;106,107,108,26;,
+   4;109,110,111,27;,
+   4;112,113,114,28;,
+   4;115,116,117,29;,
+   4;118,119,120,30;,
+   4;121,122,123,31;,
+   4;124,125,126,127;,
+   4;128,129,32,33;,
+   4;130,131,132,34;,
+   4;133,134,135,35;,
+   4;136,137,138,36;,
+   4;139,140,141,37;,
+   4;142,143,144,38;,
+   4;145,146,147,39;,
+   4;148,149,150,151;,
+   4;152,153,40,41;,
+   4;154,155,156,42;,
+   4;157,158,159,43;,
+   4;160,161,162,44;,
+   4;163,164,165,45;,
+   4;166,167,168,46;,
+   4;169,170,171,47;,
+   4;172,173,174,175;,
+   4;176,177,48,49;,
+   4;178,179,180,50;,
+   4;181,182,183,51;,
+   4;184,185,186,52;,
+   4;187,188,189,53;,
+   4;190,191,192,54;,
+   4;193,194,195,55;,
+   4;196,197,198,199;,
+   4;200,201,56,57;,
+   4;202,203,204,58;,
+   4;205,206,207,59;,
+   4;208,209,210,60;,
+   4;211,212,213,61;,
+   4;214,215,216,62;,
+   4;217,218,219,63;,
+   4;220,221,222,223;,
+   4;224,225,226,227;,
+   4;228,229,230,231;,
+   4;232,233,234,235;,
+   4;236,237,238,239;,
+   4;240,241,242,243;,
+   4;244,245,246,247;,
+   4;248,249,250,251;,
+   4;252,253,254,255;;
+
+   MeshNormals {
+    64;
+    -0.862856;0.357407;0.357407;,
+    -0.862856;0.357407;-0.357407;,
+    -0.862856;-0.357407;0.357407;,
+    -0.862856;-0.357407;-0.357407;,
+    -0.862856;-0.357407;-0.357407;,
+    -0.862856;-0.357407;0.357407;,
+    -0.862856;0.357407;-0.357407;,
+    -0.862856;0.357407;0.357407;,
+    -0.377965;-0.912487;-0.156558;,
+    -0.377965;0.912487;-0.156558;,
+    -0.377965;-0.912487;0.156558;,
+    -0.377965;0.912487;0.156558;,
+    -0.377964;-0.912487;-0.156558;,
+    -0.377964;-0.912487;0.156558;,
+    -0.377964;0.912487;-0.156558;,
+    -0.377964;0.912487;0.156558;,
+    -0.357407;0.357407;0.862856;,
+    -0.357407;-0.357407;0.862856;,
+    -0.357407;-0.357407;-0.862856;,
+    -0.357407;0.357407;-0.862856;,
+    -0.357407;0.357407;0.862856;,
+    -0.357407;-0.357407;-0.862856;,
+    -0.357407;-0.357407;0.862856;,
+    -0.357407;0.357407;-0.862856;,
+    -0.156558;0.912487;0.377965;,
+    -0.156558;-0.912487;-0.377965;,
+    -0.156558;-0.912487;0.377965;,
+    -0.156558;0.912487;-0.377965;,
+    -0.156558;-0.912487;-0.377965;,
+    -0.156558;-0.912487;0.377965;,
+    -0.156558;0.912487;0.377964;,
+    -0.156558;0.912487;-0.377964;,
+    0.156558;-0.912487;-0.377964;,
+    0.156558;0.912487;0.377964;,
+    0.156558;-0.912487;0.377965;,
+    0.156558;0.912487;-0.377964;,
+    0.156558;-0.912487;0.377965;,
+    0.156558;0.912487;0.377965;,
+    0.156558;-0.912487;-0.377965;,
+    0.156558;0.912487;-0.377965;,
+    0.357407;0.357407;0.862856;,
+    0.357407;-0.357407;-0.862856;,
+    0.357407;-0.357407;0.862856;,
+    0.357407;-0.357407;0.862856;,
+    0.357407;0.357407;-0.862856;,
+    0.357407;-0.357407;-0.862856;,
+    0.357407;0.357407;-0.862856;,
+    0.357407;0.357407;0.862856;,
+    0.377964;0.912487;0.156558;,
+    0.377964;0.912487;-0.156558;,
+    0.377964;-0.912487;-0.156558;,
+    0.377965;0.912487;-0.156558;,
+    0.377965;-0.912487;0.156558;,
+    0.377965;0.912487;0.156558;,
+    0.377965;-0.912487;-0.156558;,
+    0.377965;-0.912487;0.156558;,
+    0.862856;-0.357407;-0.357407;,
+    0.862856;0.357407;0.357407;,
+    0.862856;0.357407;-0.357407;,
+    0.862856;-0.357407;0.357407;,
+    0.862856;-0.357407;-0.357407;,
+    0.862856;-0.357407;0.357407;,
+    0.862856;0.357407;-0.357407;,
+    0.862856;0.357407;0.357407;;
+    64;
+    4;16,16,16,16;,
+    4;47,47,47,47;,
+    4;63,63,63,63;,
+    4;62,62,62,62;,
+    4;46,46,46,46;,
+    4;23,23,23,23;,
+    4;1,1,1,1;,
+    4;0,0,0,0;,
+    4;30,30,30,30;,
+    4;33,33,33,33;,
+    4;48,48,48,48;,
+    4;49,49,49,49;,
+    4;35,35,35,35;,
+    4;31,31,31,31;,
+    4;14,14,14,14;,
+    4;15,15,15,15;,
+    4;39,39,39,39;,
+    4;27,27,27,27;,
+    4;9,9,9,9;,
+    4;11,11,11,11;,
+    4;24,24,24,24;,
+    4;37,37,37,37;,
+    4;53,53,53,53;,
+    4;51,51,51,51;,
+    4;44,44,44,44;,
+    4;19,19,19,19;,
+    4;6,6,6,6;,
+    4;7,7,7,7;,
+    4;20,20,20,20;,
+    4;40,40,40,40;,
+    4;57,57,57,57;,
+    4;58,58,58,58;,
+    4;41,41,41,41;,
+    4;18,18,18,18;,
+    4;4,4,4,4;,
+    4;2,2,2,2;,
+    4;17,17,17,17;,
+    4;42,42,42,42;,
+    4;61,61,61,61;,
+    4;56,56,56,56;,
+    4;38,38,38,38;,
+    4;25,25,25,25;,
+    4;8,8,8,8;,
+    4;10,10,10,10;,
+    4;26,26,26,26;,
+    4;34,34,34,34;,
+    4;55,55,55,55;,
+    4;50,50,50,50;,
+    4;29,29,29,29;,
+    4;36,36,36,36;,
+    4;52,52,52,52;,
+    4;54,54,54,54;,
+    4;32,32,32,32;,
+    4;28,28,28,28;,
+    4;12,12,12,12;,
+    4;13,13,13,13;,
+    4;22,22,22,22;,
+    4;43,43,43,43;,
+    4;59,59,59,59;,
+    4;60,60,60,60;,
+    4;45,45,45,45;,
+    4;21,21,21,21;,
+    4;3,3,3,3;,
+    4;5,5,5,5;;
+   }
+
+   MeshTextureCoords {
+    256;
+    0.000000;-1.000000;,
+    0.125000;-1.000000;,
+    0.250000;-1.000000;,
+    0.375000;-1.000000;,
+    0.500000;-1.000000;,
+    0.625000;-1.000000;,
+    0.750000;-1.000000;,
+    0.875000;-1.000000;,
+    0.000000;-0.875000;,
+    0.125000;-0.875000;,
+    0.250000;-0.875000;,
+    0.375000;-0.875000;,
+    0.500000;-0.875000;,
+    0.625000;-0.875000;,
+    0.750000;-0.875000;,
+    0.875000;-0.875000;,
+    0.000000;-0.750000;,
+    0.125000;-0.750000;,
+    0.250000;-0.750000;,
+    0.375000;-0.750000;,
+    0.500000;-0.750000;,
+    0.625000;-0.750000;,
+    0.750000;-0.750000;,
+    0.875000;-0.750000;,
+    0.000000;-0.625000;,
+    0.125000;-0.625000;,
+    0.250000;-0.625000;,
+    0.375000;-0.625000;,
+    0.500000;-0.625000;,
+    0.625000;-0.625000;,
+    0.750000;-0.625000;,
+    0.875000;-0.625000;,
+    0.000000;-0.500000;,
+    0.125000;-0.500000;,
+    0.250000;-0.500000;,
+    0.375000;-0.500000;,
+    0.500000;-0.500000;,
+    0.625000;-0.500000;,
+    0.750000;-0.500000;,
+    0.875000;-0.500000;,
+    0.000000;-0.375000;,
+    0.125000;-0.375000;,
+    0.250000;-0.375000;,
+    0.375000;-0.375000;,
+    0.500000;-0.375000;,
+    0.625000;-0.375000;,
+    0.750000;-0.375000;,
+    0.875000;-0.375000;,
+    0.000000;-0.250000;,
+    0.125000;-0.250000;,
+    0.250000;-0.250000;,
+    0.375000;-0.250000;,
+    0.500000;-0.250000;,
+    0.625000;-0.250000;,
+    0.750000;-0.250000;,
+    0.875000;-0.250000;,
+    0.000000;-0.125000;,
+    0.125000;-0.125000;,
+    0.250000;-0.125000;,
+    0.375000;-0.125000;,
+    0.500000;-0.125000;,
+    0.625000;-0.125000;,
+    0.750000;-0.125000;,
+    0.875000;-0.125000;,
+    0.125000;-1.000000;,
+    0.125000;-0.875000;,
+    0.250000;-1.000000;,
+    0.250000;-0.875000;,
+    0.375000;-1.000000;,
+    0.375000;-0.875000;,
+    0.500000;-1.000000;,
+    0.500000;-0.875000;,
+    0.625000;-1.000000;,
+    0.625000;-0.875000;,
+    0.750000;-1.000000;,
+    0.750000;-0.875000;,
+    1.000000;-1.000000;,
+    0.875000;-1.000000;,
+    0.875000;-0.875000;,
+    1.000000;-0.875000;,
+    0.125000;-0.875000;,
+    0.000000;-0.875000;,
+    0.250000;-0.875000;,
+    0.125000;-0.875000;,
+    0.125000;-0.750000;,
+    0.375000;-0.875000;,
+    0.250000;-0.875000;,
+    0.250000;-0.750000;,
+    0.500000;-0.875000;,
+    0.375000;-0.875000;,
+    0.375000;-0.750000;,
+    0.625000;-0.875000;,
+    0.500000;-0.875000;,
+    0.500000;-0.750000;,
+    0.750000;-0.875000;,
+    0.625000;-0.875000;,
+    0.625000;-0.750000;,
+    0.875000;-0.875000;,
+    0.750000;-0.875000;,
+    0.750000;-0.750000;,
+    1.000000;-0.875000;,
+    0.875000;-0.875000;,
+    0.875000;-0.750000;,
+    1.000000;-0.750000;,
+    0.125000;-0.750000;,
+    0.000000;-0.750000;,
+    0.250000;-0.750000;,
+    0.125000;-0.750000;,
+    0.125000;-0.625000;,
+    0.375000;-0.750000;,
+    0.250000;-0.750000;,
+    0.250000;-0.625000;,
+    0.500000;-0.750000;,
+    0.375000;-0.750000;,
+    0.375000;-0.625000;,
+    0.625000;-0.750000;,
+    0.500000;-0.750000;,
+    0.500000;-0.625000;,
+    0.750000;-0.750000;,
+    0.625000;-0.750000;,
+    0.625000;-0.625000;,
+    0.875000;-0.750000;,
+    0.750000;-0.750000;,
+    0.750000;-0.625000;,
+    1.000000;-0.750000;,
+    0.875000;-0.750000;,
+    0.875000;-0.625000;,
+    1.000000;-0.625000;,
+    0.125000;-0.625000;,
+    0.000000;-0.625000;,
+    0.250000;-0.625000;,
+    0.125000;-0.625000;,
+    0.125000;-0.500000;,
+    0.375000;-0.625000;,
+    0.250000;-0.625000;,
+    0.250000;-0.500000;,
+    0.500000;-0.625000;,
+    0.375000;-0.625000;,
+    0.375000;-0.500000;,
+    0.625000;-0.625000;,
+    0.500000;-0.625000;,
+    0.500000;-0.500000;,
+    0.750000;-0.625000;,
+    0.625000;-0.625000;,
+    0.625000;-0.500000;,
+    0.875000;-0.625000;,
+    0.750000;-0.625000;,
+    0.750000;-0.500000;,
+    1.000000;-0.625000;,
+    0.875000;-0.625000;,
+    0.875000;-0.500000;,
+    1.000000;-0.500000;,
+    0.125000;-0.500000;,
+    0.000000;-0.500000;,
+    0.250000;-0.500000;,
+    0.125000;-0.500000;,
+    0.125000;-0.375000;,
+    0.375000;-0.500000;,
+    0.250000;-0.500000;,
+    0.250000;-0.375000;,
+    0.500000;-0.500000;,
+    0.375000;-0.500000;,
+    0.375000;-0.375000;,
+    0.625000;-0.500000;,
+    0.500000;-0.500000;,
+    0.500000;-0.375000;,
+    0.750000;-0.500000;,
+    0.625000;-0.500000;,
+    0.625000;-0.375000;,
+    0.875000;-0.500000;,
+    0.750000;-0.500000;,
+    0.750000;-0.375000;,
+    1.000000;-0.500000;,
+    0.875000;-0.500000;,
+    0.875000;-0.375000;,
+    1.000000;-0.375000;,
+    0.125000;-0.375000;,
+    0.000000;-0.375000;,
+    0.250000;-0.375000;,
+    0.125000;-0.375000;,
+    0.125000;-0.250000;,
+    0.375000;-0.375000;,
+    0.250000;-0.375000;,
+    0.250000;-0.250000;,
+    0.500000;-0.375000;,
+    0.375000;-0.375000;,
+    0.375000;-0.250000;,
+    0.625000;-0.375000;,
+    0.500000;-0.375000;,
+    0.500000;-0.250000;,
+    0.750000;-0.375000;,
+    0.625000;-0.375000;,
+    0.625000;-0.250000;,
+    0.875000;-0.375000;,
+    0.750000;-0.375000;,
+    0.750000;-0.250000;,
+    1.000000;-0.375000;,
+    0.875000;-0.375000;,
+    0.875000;-0.250000;,
+    1.000000;-0.250000;,
+    0.125000;-0.250000;,
+    0.000000;-0.250000;,
+    0.250000;-0.250000;,
+    0.125000;-0.250000;,
+    0.125000;-0.125000;,
+    0.375000;-0.250000;,
+    0.250000;-0.250000;,
+    0.250000;-0.125000;,
+    0.500000;-0.250000;,
+    0.375000;-0.250000;,
+    0.375000;-0.125000;,
+    0.625000;-0.250000;,
+    0.500000;-0.250000;,
+    0.500000;-0.125000;,
+    0.750000;-0.250000;,
+    0.625000;-0.250000;,
+    0.625000;-0.125000;,
+    0.875000;-0.250000;,
+    0.750000;-0.250000;,
+    0.750000;-0.125000;,
+    1.000000;-0.250000;,
+    0.875000;-0.250000;,
+    0.875000;-0.125000;,
+    1.000000;-0.125000;,
+    0.125000;-0.125000;,
+    0.000000;-0.125000;,
+    0.000000;0.000000;,
+    0.125000;0.000000;,
+    0.250000;-0.125000;,
+    0.125000;-0.125000;,
+    0.125000;0.000000;,
+    0.250000;0.000000;,
+    0.375000;-0.125000;,
+    0.250000;-0.125000;,
+    0.250000;0.000000;,
+    0.375000;0.000000;,
+    0.500000;-0.125000;,
+    0.375000;-0.125000;,
+    0.375000;0.000000;,
+    0.500000;0.000000;,
+    0.625000;-0.125000;,
+    0.500000;-0.125000;,
+    0.500000;0.000000;,
+    0.625000;0.000000;,
+    0.750000;-0.125000;,
+    0.625000;-0.125000;,
+    0.625000;0.000000;,
+    0.750000;0.000000;,
+    0.875000;-0.125000;,
+    0.750000;-0.125000;,
+    0.750000;0.000000;,
+    0.875000;0.000000;,
+    1.000000;-0.125000;,
+    0.875000;-0.125000;,
+    0.875000;0.000000;,
+    1.000000;0.000000;;
+   }
+
+   MeshMaterialList {
+    1;
+    64;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    256;
+    64;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    1,
+    9,
+    2,
+    10,
+    3,
+    11,
+    4,
+    12,
+    5,
+    13,
+    6,
+    14,
+    0,
+    7,
+    15,
+    8,
+    9,
+    8,
+    10,
+    9,
+    17,
+    11,
+    10,
+    18,
+    12,
+    11,
+    19,
+    13,
+    12,
+    20,
+    14,
+    13,
+    21,
+    15,
+    14,
+    22,
+    8,
+    15,
+    23,
+    16,
+    17,
+    16,
+    18,
+    17,
+    25,
+    19,
+    18,
+    26,
+    20,
+    19,
+    27,
+    21,
+    20,
+    28,
+    22,
+    21,
+    29,
+    23,
+    22,
+    30,
+    16,
+    23,
+    31,
+    24,
+    25,
+    24,
+    26,
+    25,
+    33,
+    27,
+    26,
+    34,
+    28,
+    27,
+    35,
+    29,
+    28,
+    36,
+    30,
+    29,
+    37,
+    31,
+    30,
+    38,
+    24,
+    31,
+    39,
+    32,
+    33,
+    32,
+    34,
+    33,
+    41,
+    35,
+    34,
+    42,
+    36,
+    35,
+    43,
+    37,
+    36,
+    44,
+    38,
+    37,
+    45,
+    39,
+    38,
+    46,
+    32,
+    39,
+    47,
+    40,
+    41,
+    40,
+    42,
+    41,
+    49,
+    43,
+    42,
+    50,
+    44,
+    43,
+    51,
+    45,
+    44,
+    52,
+    46,
+    45,
+    53,
+    47,
+    46,
+    54,
+    40,
+    47,
+    55,
+    48,
+    49,
+    48,
+    50,
+    49,
+    57,
+    51,
+    50,
+    58,
+    52,
+    51,
+    59,
+    53,
+    52,
+    60,
+    54,
+    53,
+    61,
+    55,
+    54,
+    62,
+    48,
+    55,
+    63,
+    56,
+    57,
+    56,
+    0,
+    1,
+    58,
+    57,
+    1,
+    2,
+    59,
+    58,
+    2,
+    3,
+    60,
+    59,
+    3,
+    4,
+    61,
+    60,
+    4,
+    5,
+    62,
+    61,
+    5,
+    6,
+    63,
+    62,
+    6,
+    7,
+    56,
+    63,
+    7,
+    0;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/pillow.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/pillow.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/pillow.x	(revision 1481)
@@ -0,0 +1,2059 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   -0.121869,0.000000,-0.992546,0.000000,-0.588136,0.805532,0.072214,0.000000,0.799528,0.592553,-0.098170,0.000000,20.454941,14.314028,-0.977545,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsCube1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsToPoly1 {
+  
+
+  FrameTransformMatrix {
+   0.536688,-0.535070,-0.652431,0.000000,0.729491,0.682814,0.040090,0.000000,0.424038,-0.497458,0.756787,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh nurbsToPolyShape1 {
+   226;
+   3.605900;-0.157725;0.015209;,
+   -3.979357;-0.157725;-0.171471;,
+   0.155315;-0.157725;3.418666;,
+   1.318964;-0.700280;0.106825;,
+   -0.008270;-0.700280;1.288944;,
+   0.651736;-0.700280;0.757869;,
+   1.024226;-0.700280;0.443239;,
+   0.634898;-0.817804;0.097625;,
+   0.500475;-0.817804;0.303551;,
+   0.325533;-0.817804;0.466451;,
+   0.311094;-0.700280;1.060218;,
+   0.144844;-0.817804;0.583061;,
+   -0.046166;-0.817804;0.635727;,
+   1.667717;-0.157725;1.418394;,
+   2.103585;-0.554310;0.096843;,
+   0.998348;-0.554310;1.035276;,
+   1.609209;-0.554310;0.550822;,
+   2.737314;-0.157725;0.639299;,
+   2.893414;-0.376822;0.065822;,
+   2.203410;-0.376822;0.619912;,
+   1.350920;-0.376822;1.266078;,
+   0.033908;-0.554310;2.029303;,
+   0.475888;-0.554310;1.567782;,
+   0.800283;-0.157725;2.421815;,
+   0.644792;-0.376822;2.039625;,
+   0.089076;-0.376822;2.764782;,
+   -1.242987;-0.157725;1.994366;,
+   -0.706885;-0.700280;0.774529;,
+   -0.374945;-0.700280;1.130258;,
+   -0.277099;-0.817804;0.548983;,
+   -0.458734;-0.817804;0.387187;,
+   -0.941347;-0.554310;1.192186;,
+   -0.446925;-0.554310;1.785160;,
+   -0.480312;-0.157725;3.044425;,
+   -0.485124;-0.376822;2.447992;,
+   -1.129856;-0.376822;1.615484;,
+   -1.425657;-0.700280;-0.201539;,
+   -1.052197;-0.700280;0.436012;,
+   -0.609294;-0.817804;0.215732;,
+   -1.340269;-0.700280;0.139764;,
+   -0.694911;-0.817804;0.046443;,
+   -0.685906;-0.817804;-0.169693;,
+   -2.283958;-0.157725;1.082956;,
+   -1.524526;-0.554310;0.657757;,
+   -1.954202;-0.376822;0.881607;,
+   -2.294578;-0.554310;-0.214992;,
+   -2.076317;-0.554310;0.229854;,
+   -3.415566;-0.157725;0.418931;,
+   -2.795707;-0.376822;0.325278;,
+   -3.178860;-0.376822;-0.205792;,
+   2.106976;0.554310;-0.119318;,
+   0.249944;0.554310;1.985729;,
+   1.211100;0.554310;0.817745;,
+   3.606826;0.157725;-0.042793;,
+   1.726822;0.157725;1.358132;,
+   2.771086;0.157725;0.580304;,
+   1.740991;0.554310;0.333290;,
+   2.895912;0.376822;-0.091358;,
+   2.301109;0.376822;0.460020;,
+   1.512053;0.376822;1.102314;,
+   0.213330;0.157725;3.407631;,
+   0.860742;0.157725;2.379598;,
+   0.697308;0.554310;1.407870;,
+   0.808729;0.376822;1.920086;,
+   0.246285;0.376822;2.732608;,
+   1.322572;0.700280;-0.127851;,
+   0.863977;0.700280;0.537317;,
+   1.152602;0.700280;0.211624;,
+   0.638334;0.817804;-0.123817;,
+   0.613458;0.817804;0.086863;,
+   0.515249;0.817804;0.266530;,
+   0.225976;0.700280;1.246503;,
+   0.543521;0.700280;0.903363;,
+   0.360778;0.817804;0.444425;,
+   0.174742;0.817804;0.598314;,
+   -2.322220;0.554310;-0.011737;,
+   -0.700256;0.554310;1.377314;,
+   -1.176342;0.157725;2.045152;,
+   -0.419377;0.157725;3.066649;,
+   -0.221638;0.554310;1.873199;,
+   -0.320072;0.376822;2.513110;,
+   -0.949140;0.376822;1.755605;,
+   -1.303227;0.554310;0.868942;,
+   -2.222402;0.157725;1.141133;,
+   -1.785577;0.376822;1.039407;,
+   -3.986448;0.157725;-0.117306;,
+   -3.384808;0.157725;0.473341;,
+   -1.957451;0.554310;0.432663;,
+   -2.706950;0.376822;0.473026;,
+   -3.199558;0.376822;-0.058613;,
+   -0.460022;0.700280;0.956847;,
+   -0.133627;0.700280;1.215244;,
+   -0.051218;0.817804;0.623200;,
+   -0.233662;0.817804;0.548405;,
+   -0.835730;0.700280;0.653786;,
+   -0.419266;0.817804;0.415773;,
+   -1.451716;0.700280;0.020221;,
+   -1.226064;0.700280;0.358853;,
+   -0.595727;0.817804;0.253221;,
+   -0.708125;0.817804;0.040561;,
+   -0.269434;-0.157725;-3.800366;,
+   -0.064852;-0.700280;-1.423973;,
+   -0.698854;-0.700280;-0.843905;,
+   -1.080758;-0.700280;-0.516918;,
+   -0.534331;-0.817804;-0.359006;,
+   -0.358456;-0.817804;-0.524994;,
+   -0.362395;-0.700280;-1.169701;,
+   -0.184687;-0.817804;-0.651791;,
+   -0.011835;-0.817804;-0.712738;,
+   -1.807441;-0.157725;-1.619789;,
+   -1.073245;-0.554310;-1.163023;,
+   -1.706972;-0.554310;-0.651556;,
+   -2.929781;-0.157725;-0.786489;,
+   -2.349945;-0.376822;-0.746918;,
+   -1.458843;-0.376822;-1.435021;,
+   -0.124158;-0.554310;-2.250232;,
+   -0.546720;-0.554310;-1.739008;,
+   -0.912332;-0.157725;-2.702926;,
+   -0.737368;-0.376822;-2.272565;,
+   -0.194264;-0.376822;-3.073390;,
+   0.934512;-0.157725;-2.589454;,
+   0.571835;-0.700280;-0.959788;,
+   0.277502;-0.700280;-1.341119;,
+   0.205206;-0.817804;-0.646575;,
+   0.375012;-0.817804;-0.477158;,
+   0.741292;-0.554310;-1.509496;,
+   0.320532;-0.554310;-2.155005;,
+   0.316426;-0.157725;-3.741994;,
+   0.334575;-0.376822;-2.987535;,
+   0.868340;-0.376822;-2.076399;,
+   0.878016;-0.700280;-0.570755;,
+   0.521032;-0.817804;-0.292028;,
+   -0.020377;-0.883240;-0.024691;,
+   1.155558;-0.700280;-0.232420;,
+   0.613806;-0.817804;-0.110122;,
+   1.771397;-0.157725;-1.470658;,
+   1.235245;-0.554310;-0.873140;,
+   1.546774;-0.376822;-1.186136;,
+   1.747492;-0.554310;-0.360441;,
+   2.785793;-0.157725;-0.628031;,
+   2.311733;-0.376822;-0.497333;,
+   -0.329485;0.554310;-2.180432;,
+   -1.304900;0.554310;-0.926657;,
+   -1.872694;0.157725;-1.553515;,
+   -2.972716;0.157725;-0.725916;,
+   -1.868491;0.554310;-0.429391;,
+   -2.471686;0.376822;-0.582754;,
+   -1.635669;0.376822;-1.255595;,
+   -0.324303;0.157725;-3.782365;,
+   -0.974326;0.157725;-2.650725;,
+   -0.772566;0.554310;-1.548033;,
+   -0.905333;0.376822;-2.127403;,
+   -0.343327;0.376822;-3.021156;,
+   -0.927543;0.700280;-0.607667;,
+   -1.235946;0.700280;-0.282912;,
+   -0.668760;0.817804;-0.141278;,
+   -0.560368;0.817804;-0.314295;,
+   -0.287856;0.700280;-1.357656;,
+   -0.597425;0.700280;-0.985337;,
+   -0.401602;0.817804;-0.491703;,
+   -0.222730;0.817804;-0.655772;,
+   0.530826;0.554310;-1.709603;,
+   0.876950;0.157725;-2.644155;,
+   0.263018;0.157725;-3.762725;,
+   0.120288;0.554310;-2.235130;,
+   0.189429;0.376822;-3.047402;,
+   0.712239;0.376822;-2.228275;,
+   1.030720;0.554310;-1.116825;,
+   1.714283;0.157725;-1.538599;,
+   1.391314;0.376822;-1.370348;,
+   2.753848;0.157725;-0.690961;,
+   1.622794;0.554310;-0.591534;,
+   2.219108;0.376822;-0.667782;,
+   0.351670;0.700280;-1.153975;,
+   0.059418;0.700280;-1.417924;,
+   -0.001525;0.817804;-0.713140;,
+   0.170707;0.817804;-0.646641;,
+   0.675155;0.700280;-0.816058;,
+   0.340790;0.817804;-0.512501;,
+   1.034886;0.700280;-0.476841;,
+   -0.020377;0.883240;-0.024691;,
+   0.508309;0.817804;-0.337494;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   0.638334;0.817804;-0.123817;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   3.605900;-0.157725;0.015209;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   1.318964;-0.700280;0.106825;,
+   -0.020377;-0.883240;-0.024691;,
+   -0.020377;-0.883240;-0.024691;,
+   0.634898;-0.817804;0.097625;,
+   -0.020377;-0.883240;-0.024691;,
+   2.103585;-0.554310;0.096843;,
+   2.893414;-0.376822;0.065822;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   2.106976;0.554310;-0.119318;,
+   3.606826;0.157725;-0.042793;,
+   2.895912;0.376822;-0.091358;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   -0.020377;0.883240;-0.024691;,
+   1.322572;0.700280;-0.127851;,
+   -0.020377;0.883240;-0.024691;;
+   360;
+   3;180,68,181;,
+   3;182,99,98;,
+   3;47,1,48;,
+   3;23,2,24;,
+   3;10,4,11;,
+   3;6,5,8;,
+   3;7,3,6;,
+   3;132,7,8;,
+   3;9,183,8;,
+   3;5,10,9;,
+   3;11,184,9;,
+   3;12,185,11;,
+   3;17,13,19;,
+   3;16,15,6;,
+   3;3,14,16;,
+   3;18,0,17;,
+   3;14,18,19;,
+   3;16,19,20;,
+   3;10,22,21;,
+   3;5,15,22;,
+   3;13,23,20;,
+   3;15,20,24;,
+   3;22,24,25;,
+   3;33,26,34;,
+   3;29,28,27;,
+   3;12,4,28;,
+   3;186,12,29;,
+   3;30,187,29;,
+   3;28,32,31;,
+   3;4,21,32;,
+   3;2,33,25;,
+   3;21,25,34;,
+   3;32,34,35;,
+   3;40,39,36;,
+   3;30,27,37;,
+   3;188,30,38;,
+   3;38,37,39;,
+   3;189,38,40;,
+   3;41,190,40;,
+   3;26,42,35;,
+   3;27,31,43;,
+   3;31,35,44;,
+   3;39,46,45;,
+   3;37,43,46;,
+   3;42,47,44;,
+   3;43,44,48;,
+   3;46,48,49;,
+   3;191,74,73;,
+   3;62,51,63;,
+   3;56,52,58;,
+   3;55,54,17;,
+   3;0,53,55;,
+   3;57,50,56;,
+   3;53,57,58;,
+   3;55,58,59;,
+   3;23,61,60;,
+   3;13,54,61;,
+   3;52,62,59;,
+   3;54,59,63;,
+   3;61,63,64;,
+   3;192,70,69;,
+   3;67,66,56;,
+   3;50,65,67;,
+   3;193,194,69;,
+   3;65,193,69;,
+   3;67,69,70;,
+   3;62,72,71;,
+   3;52,66,72;,
+   3;195,73,70;,
+   3;66,70,73;,
+   3;72,73,74;,
+   3;88,87,75;,
+   3;79,76,80;,
+   3;33,78,77;,
+   3;2,60,78;,
+   3;64,51,79;,
+   3;60,64,80;,
+   3;78,80,81;,
+   3;81,76,82;,
+   3;26,77,83;,
+   3;77,81,84;,
+   3;47,86,85;,
+   3;42,83,86;,
+   3;84,82,87;,
+   3;83,84,88;,
+   3;86,88,89;,
+   3;196,93,92;,
+   3;79,91,90;,
+   3;51,71,91;,
+   3;197,92,74;,
+   3;71,74,92;,
+   3;91,92,93;,
+   3;198,95,93;,
+   3;76,90,94;,
+   3;90,93,95;,
+   3;87,97,96;,
+   3;82,94,97;,
+   3;199,98,95;,
+   3;94,95,98;,
+   3;97,98,99;,
+   3;140,139,200;,
+   3;117,100,118;,
+   3;107,106,101;,
+   3;104,103,102;,
+   3;41,36,103;,
+   3;201,41,104;,
+   3;202,104,105;,
+   3;105,102,106;,
+   3;203,105,107;,
+   3;204,107,108;,
+   3;112,109,113;,
+   3;111,110,103;,
+   3;36,45,111;,
+   3;49,1,112;,
+   3;45,49,113;,
+   3;111,113,114;,
+   3;106,116,115;,
+   3;102,110,116;,
+   3;109,117,114;,
+   3;110,114,118;,
+   3;116,118,119;,
+   3;127,120,128;,
+   3;123,122,121;,
+   3;108,101,122;,
+   3;205,108,123;,
+   3;206,123,124;,
+   3;126,125,122;,
+   3;101,115,126;,
+   3;119,100,127;,
+   3;115,119,128;,
+   3;126,128,129;,
+   3;134,133,207;,
+   3;124,121,130;,
+   3;208,124,131;,
+   3;131,130,133;,
+   3;209,131,134;,
+   3;210,211,134;,
+   3;129,120,135;,
+   3;121,125,136;,
+   3;125,129,137;,
+   3;133,138,212;,
+   3;130,136,138;,
+   3;137,135,139;,
+   3;136,137,140;,
+   3;138,140,213;,
+   3;214,160,159;,
+   3;151,150,141;,
+   3;145,142,146;,
+   3;112,144,143;,
+   3;1,85,144;,
+   3;89,75,145;,
+   3;85,89,146;,
+   3;144,146,147;,
+   3;117,149,148;,
+   3;109,143,149;,
+   3;147,142,150;,
+   3;143,147,151;,
+   3;149,151,152;,
+   3;215,156,155;,
+   3;145,154,153;,
+   3;75,96,154;,
+   3;216,155,99;,
+   3;96,99,155;,
+   3;154,155,156;,
+   3;150,158,157;,
+   3;142,153,158;,
+   3;217,159,156;,
+   3;153,156,159;,
+   3;158,159,160;,
+   3;172,171,218;,
+   3;164,161,165;,
+   3;127,163,162;,
+   3;100,148,163;,
+   3;152,141,164;,
+   3;148,152,165;,
+   3;163,165,166;,
+   3;166,161,167;,
+   3;120,162,168;,
+   3;162,166,169;,
+   3;139,170,219;,
+   3;135,168,170;,
+   3;169,167,171;,
+   3;168,169,172;,
+   3;170,172,220;,
+   3;221,176,175;,
+   3;164,174,173;,
+   3;141,157,174;,
+   3;222,175,160;,
+   3;157,160,175;,
+   3;174,175,176;,
+   3;223,178,176;,
+   3;161,173,177;,
+   3;173,176,178;,
+   3;171,179,224;,
+   3;167,177,179;,
+   3;225,181,178;,
+   3;177,178,181;,
+   3;179,181,68;,
+   3;1,49,48;,
+   3;2,25,24;,
+   3;4,12,11;,
+   3;5,9,8;,
+   3;6,8,7;,
+   3;10,11,9;,
+   3;13,20,19;,
+   3;15,5,6;,
+   3;16,6,3;,
+   3;17,19,18;,
+   3;19,16,14;,
+   3;20,15,16;,
+   3;21,4,10;,
+   3;22,10,5;,
+   3;23,24,20;,
+   3;24,22,15;,
+   3;25,21,22;,
+   3;26,35,34;,
+   3;27,30,29;,
+   3;28,29,12;,
+   3;31,27,28;,
+   3;32,28,4;,
+   3;33,34,25;,
+   3;34,32,21;,
+   3;35,31,32;,
+   3;36,41,40;,
+   3;37,38,30;,
+   3;39,40,38;,
+   3;42,44,35;,
+   3;43,37,27;,
+   3;44,43,31;,
+   3;45,36,39;,
+   3;46,39,37;,
+   3;47,48,44;,
+   3;48,46,43;,
+   3;49,45,46;,
+   3;51,64,63;,
+   3;52,59,58;,
+   3;54,13,17;,
+   3;55,17,0;,
+   3;56,58,57;,
+   3;58,55,53;,
+   3;59,54,55;,
+   3;60,2,23;,
+   3;61,23,13;,
+   3;62,63,59;,
+   3;63,61,54;,
+   3;64,60,61;,
+   3;66,52,56;,
+   3;67,56,50;,
+   3;69,67,65;,
+   3;70,66,67;,
+   3;71,51,62;,
+   3;72,62,52;,
+   3;73,72,66;,
+   3;74,71,72;,
+   3;75,89,88;,
+   3;76,81,80;,
+   3;77,26,33;,
+   3;78,33,2;,
+   3;79,80,64;,
+   3;80,78,60;,
+   3;81,77,78;,
+   3;82,84,81;,
+   3;83,42,26;,
+   3;84,83,77;,
+   3;85,1,47;,
+   3;86,47,42;,
+   3;87,88,84;,
+   3;88,86,83;,
+   3;89,85,86;,
+   3;90,76,79;,
+   3;91,79,51;,
+   3;92,91,71;,
+   3;93,90,91;,
+   3;94,82,76;,
+   3;95,94,90;,
+   3;96,75,87;,
+   3;97,87,82;,
+   3;98,97,94;,
+   3;99,96,97;,
+   3;200,213,140;,
+   3;100,119,118;,
+   3;101,108,107;,
+   3;102,105,104;,
+   3;103,104,41;,
+   3;106,107,105;,
+   3;109,114,113;,
+   3;110,102,103;,
+   3;111,103,36;,
+   3;112,113,49;,
+   3;113,111,45;,
+   3;114,110,111;,
+   3;115,101,106;,
+   3;116,106,102;,
+   3;117,118,114;,
+   3;118,116,110;,
+   3;119,115,116;,
+   3;120,129,128;,
+   3;121,124,123;,
+   3;122,123,108;,
+   3;125,121,122;,
+   3;126,122,101;,
+   3;127,128,119;,
+   3;128,126,115;,
+   3;129,125,126;,
+   3;207,210,134;,
+   3;130,131,124;,
+   3;133,134,131;,
+   3;135,137,129;,
+   3;136,130,121;,
+   3;137,136,125;,
+   3;212,207,133;,
+   3;138,133,130;,
+   3;139,140,137;,
+   3;140,138,136;,
+   3;213,212,138;,
+   3;141,152,151;,
+   3;142,147,146;,
+   3;143,109,112;,
+   3;144,112,1;,
+   3;145,146,89;,
+   3;146,144,85;,
+   3;147,143,144;,
+   3;148,100,117;,
+   3;149,117,109;,
+   3;150,151,147;,
+   3;151,149,143;,
+   3;152,148,149;,
+   3;153,142,145;,
+   3;154,145,75;,
+   3;155,154,96;,
+   3;156,153,154;,
+   3;157,141,150;,
+   3;158,150,142;,
+   3;159,158,153;,
+   3;160,157,158;,
+   3;218,220,172;,
+   3;161,166,165;,
+   3;162,120,127;,
+   3;163,127,100;,
+   3;164,165,152;,
+   3;165,163,148;,
+   3;166,162,163;,
+   3;167,169,166;,
+   3;168,135,120;,
+   3;169,168,162;,
+   3;219,200,139;,
+   3;170,139,135;,
+   3;171,172,169;,
+   3;172,170,168;,
+   3;220,219,170;,
+   3;173,161,164;,
+   3;174,164,141;,
+   3;175,174,157;,
+   3;176,173,174;,
+   3;177,167,161;,
+   3;178,177,173;,
+   3;224,218,171;,
+   3;179,171,167;,
+   3;181,179,177;,
+   3;68,224,179;;
+
+   MeshNormals {
+    182;
+    -0.720592;0.467963;-0.511623;,
+    -0.712491;0.701362;0.021168;,
+    -0.693187;-0.542074;-0.475024;,
+    -0.666318;-0.696687;-0.265796;,
+    -0.642533;-0.470091;0.605117;,
+    -0.632612;0.522937;0.571261;,
+    -0.604437;-0.504139;-0.616847;,
+    -0.600134;-0.505600;0.619846;,
+    -0.583302;0.515791;-0.627470;,
+    -0.527875;0.567841;0.631589;,
+    -0.521162;-0.559613;0.644378;,
+    -0.520128;0.470795;0.712614;,
+    -0.513876;0.496283;0.699739;,
+    -0.498286;-0.463050;-0.733005;,
+    -0.493541;-0.514647;0.701111;,
+    -0.485141;0.595933;-0.639924;,
+    -0.462667;0.550827;-0.694643;,
+    -0.353523;0.898241;-0.261122;,
+    -0.330639;-0.889831;0.314451;,
+    -0.327531;-0.912760;-0.244115;,
+    -0.324480;-0.617743;-0.716314;,
+    -0.313531;0.900750;0.300578;,
+    -0.295556;-0.905120;-0.305622;,
+    -0.290918;0.907219;-0.303843;,
+    -0.273666;-0.917014;0.290158;,
+    -0.273427;0.888147;0.369368;,
+    -0.263389;-0.898316;0.351645;,
+    -0.256063;-0.899073;-0.355105;,
+    -0.250769;0.947330;-0.199199;,
+    -0.250557;0.912157;0.324331;,
+    -0.243111;-0.961501;-0.128110;,
+    -0.241445;0.970360;-0.010250;,
+    -0.241136;-0.941375;0.235938;,
+    -0.237696;-0.934920;0.263487;,
+    -0.237154;0.917422;-0.319523;,
+    -0.229990;-0.953327;-0.195632;,
+    -0.225941;0.945187;0.235739;,
+    -0.221302;0.949287;-0.223338;,
+    -0.219712;-0.948455;-0.228386;,
+    -0.215602;0.945235;-0.245045;,
+    -0.212697;0.937417;0.275698;,
+    -0.207442;-0.945329;0.251635;,
+    -0.207228;0.940444;0.269484;,
+    -0.196387;-0.948749;-0.247605;,
+    -0.193446;0.954953;0.225041;,
+    -0.193105;0.966164;-0.170987;,
+    -0.192484;0.956690;-0.218390;,
+    -0.192083;-0.966971;0.167546;,
+    -0.191250;-0.956129;0.221904;,
+    -0.191105;-0.962132;0.194374;,
+    -0.188328;0.982106;-0.000121;,
+    -0.187681;-0.977510;-0.096179;,
+    -0.187554;0.966124;-0.177280;,
+    -0.181011;-0.965751;0.185904;,
+    -0.179019;-0.965479;-0.189214;,
+    -0.174258;0.973678;-0.146917;,
+    -0.172921;0.961638;0.212959;,
+    -0.172659;-0.979962;0.099312;,
+    -0.170111;-0.967664;-0.186246;,
+    -0.168179;0.964495;0.203629;,
+    -0.168176;0.971381;0.167737;,
+    -0.167115;0.985808;0.015991;,
+    -0.165059;-0.982771;-0.083166;,
+    -0.163565;-0.970821;-0.175367;,
+    -0.153772;0.969938;-0.188614;,
+    -0.144434;-0.971119;0.189915;,
+    -0.141183;0.983398;-0.114000;,
+    -0.138802;-0.984643;0.105885;,
+    -0.138062;0.988034;-0.068754;,
+    -0.137138;-0.990012;0.032709;,
+    -0.135582;-0.981416;0.135795;,
+    -0.134908;0.982434;-0.128932;,
+    -0.134815;0.965951;0.220824;,
+    -0.133913;0.990282;0.037545;,
+    -0.131425;-0.988460;-0.075321;,
+    -0.130819;-0.982999;-0.128837;,
+    -0.130149;0.984268;0.119493;,
+    -0.129646;-0.962363;-0.238848;,
+    -0.122183;0.981017;0.150590;,
+    -0.121421;-0.982714;-0.139748;,
+    -0.120783;0.978819;-0.165303;,
+    -0.104949;-0.984007;0.143929;,
+    -0.095430;0.983530;0.153499;,
+    -0.094586;0.986879;-0.130859;,
+    -0.085816;-0.986705;-0.138017;,
+    -0.077869;0.977683;0.195122;,
+    -0.077614;-0.978960;-0.188717;,
+    -0.036950;-0.984974;-0.168706;,
+    -0.021905;-0.988751;0.147957;,
+    -0.020421;0.988354;0.150798;,
+    -0.000374;1.000000;0.000095;,
+    0.000250;-1.000000;-0.000354;,
+    0.000410;0.990795;-0.135372;,
+    0.005743;-0.990789;-0.135294;,
+    0.008182;-0.981672;0.190405;,
+    0.035092;-0.975280;0.218169;,
+    0.047198;0.984503;-0.168896;,
+    0.062338;-0.958161;0.279361;,
+    0.079696;-0.985361;0.150705;,
+    0.086095;0.986051;0.142444;,
+    0.091551;0.986337;-0.136957;,
+    0.093712;0.977476;-0.189101;,
+    0.102296;-0.986288;-0.129504;,
+    0.103812;0.976889;0.186845;,
+    0.111789;-0.636914;0.762787;,
+    0.122391;-0.980941;0.150913;,
+    0.126920;0.967839;0.217209;,
+    0.129887;0.982001;-0.137125;,
+    0.133493;-0.977198;-0.165119;,
+    0.138727;-0.981840;0.129405;,
+    0.139263;0.980810;0.136447;,
+    0.141845;0.982608;-0.119835;,
+    0.142681;-0.987973;0.059586;,
+    0.143389;0.988130;-0.055133;,
+    0.145413;-0.981432;-0.125088;,
+    0.148933;0.987233;0.056475;,
+    0.149843;-0.987279;-0.053179;,
+    0.150889;0.982016;0.113481;,
+    0.153150;-0.982497;-0.106042;,
+    0.155095;0.958609;-0.238775;,
+    0.162252;-0.966726;0.197775;,
+    0.172269;-0.966761;-0.188935;,
+    0.172480;0.943646;0.282459;,
+    0.174716;0.968888;-0.175299;,
+    0.184045;0.981732;-0.048270;,
+    0.184072;-0.981372;0.055008;,
+    0.187077;-0.964125;0.188323;,
+    0.188576;0.966645;-0.173311;,
+    0.189179;-0.959296;0.209675;,
+    0.193627;0.971838;0.134309;,
+    0.193905;-0.972793;-0.126785;,
+    0.194294;0.962739;-0.188105;,
+    0.202828;0.960742;0.189302;,
+    0.205009;0.960600;0.187667;,
+    0.206109;-0.963305;-0.171940;,
+    0.209343;-0.963076;-0.169290;,
+    0.211536;0.976284;-0.046057;,
+    0.211622;-0.975717;0.056493;,
+    0.217244;-0.956004;-0.197133;,
+    0.217824;0.952931;0.210892;,
+    0.220071;-0.941773;0.254231;,
+    0.220765;0.947040;-0.233192;,
+    0.236910;-0.945286;0.224293;,
+    0.237752;-0.936528;0.257660;,
+    0.241122;0.942965;-0.229515;,
+    0.242287;-0.938754;-0.245027;,
+    0.244255;-0.944269;-0.220673;,
+    0.244514;0.938244;0.244768;,
+    0.247421;0.948753;-0.196598;,
+    0.267391;0.910227;0.316211;,
+    0.267506;-0.917495;-0.294354;,
+    0.267804;0.936646;0.225776;,
+    0.272383;-0.941452;-0.198684;,
+    0.273271;-0.959147;0.073208;,
+    0.273493;0.960167;-0.057282;,
+    0.286742;-0.885822;0.364826;,
+    0.288916;0.896305;-0.336400;,
+    0.318149;0.886820;0.335160;,
+    0.318877;-0.898747;-0.300950;,
+    0.320022;-0.883031;0.343282;,
+    0.324940;0.894364;-0.307452;,
+    0.334110;0.632348;0.698933;,
+    0.340711;-0.898235;0.277651;,
+    0.352806;0.903115;-0.244768;,
+    0.376906;0.877598;0.296250;,
+    0.381589;-0.887129;-0.259599;,
+    0.394991;0.602426;-0.693588;,
+    0.503985;0.538651;0.675169;,
+    0.523267;-0.551970;-0.649247;,
+    0.529070;-0.452619;0.717789;,
+    0.533347;-0.580180;-0.615574;,
+    0.556263;0.460483;-0.691756;,
+    0.586315;0.493491;0.642418;,
+    0.603972;-0.478238;0.637579;,
+    0.614660;-0.509717;-0.601982;,
+    0.637396;0.488120;-0.596209;,
+    0.683936;-0.525957;0.505570;,
+    0.707554;-0.689455;0.154981;,
+    0.714915;0.444928;0.539385;,
+    0.715010;0.687210;-0.128466;,
+    0.717120;0.526562;-0.456587;,
+    0.743310;-0.458778;-0.486839;;
+    360;
+    3;90,113,111;,
+    3;90,73,76;,
+    3;10,3,33;,
+    3;176,104,162;,
+    3;120,94,98;,
+    3;126,128,109;,
+    3;112,125,126;,
+    3;91,112,109;,
+    3;105,91,109;,
+    3;128,120,105;,
+    3;98,91,105;,
+    3;88,91,98;,
+    3;169,173,155;,
+    3;140,143,126;,
+    3;125,137,140;,
+    3;153,177,169;,
+    3;137,153,155;,
+    3;140,155,159;,
+    3;120,142,95;,
+    3;128,143,142;,
+    3;173,176,159;,
+    3;143,159,162;,
+    3;142,162,97;,
+    3;7,4,24;,
+    3;81,65,49;,
+    3;88,94,65;,
+    3;91,88,81;,
+    3;70,91,81;,
+    3;65,48,32;,
+    3;94,95,48;,
+    3;104,7,97;,
+    3;95,97,24;,
+    3;48,24,18;,
+    3;69,57,62;,
+    3;70,49,53;,
+    3;91,70,67;,
+    3;67,53,57;,
+    3;91,67,69;,
+    3;74,91,69;,
+    3;4,14,18;,
+    3;49,32,41;,
+    3;32,18,26;,
+    3;57,47,51;,
+    3;53,41,47;,
+    3;14,10,26;,
+    3;41,26,33;,
+    3;47,33,30;,
+    3;90,99,110;,
+    3;151,106,164;,
+    3;139,147,149;,
+    3;167,172,169;,
+    3;177,179,167;,
+    3;154,136,139;,
+    3;179,154,149;,
+    3;167,149,157;,
+    3;176,178,161;,
+    3;173,172,178;,
+    3;147,151,157;,
+    3;172,157,164;,
+    3;178,164,122;,
+    3;90,117,115;,
+    3;129,133,139;,
+    3;136,124,129;,
+    3;113,90,115;,
+    3;124,113,115;,
+    3;129,115,117;,
+    3;151,132,103;,
+    3;147,133,132;,
+    3;90,110,117;,
+    3;133,117,110;,
+    3;132,110,99;,
+    3;29,44,50;,
+    3;72,36,40;,
+    3;7,9,5;,
+    3;104,161,9;,
+    3;122,106,72;,
+    3;161,122,40;,
+    3;9,40,21;,
+    3;21,36,42;,
+    3;4,5,11;,
+    3;5,21,25;,
+    3;10,12,1;,
+    3;14,11,12;,
+    3;25,42,44;,
+    3;11,25,29;,
+    3;12,29,31;,
+    3;90,82,89;,
+    3;72,85,59;,
+    3;106,103,85;,
+    3;90,89,99;,
+    3;103,99,89;,
+    3;85,89,82;,
+    3;90,78,82;,
+    3;36,59,56;,
+    3;59,82,78;,
+    3;44,60,61;,
+    3;42,56,60;,
+    3;90,76,78;,
+    3;56,78,76;,
+    3;60,76,73;,
+    3;150,168,177;,
+    3;2,20,19;,
+    3;84,63,87;,
+    3;75,58,54;,
+    3;74,62,58;,
+    3;91,74,75;,
+    3;91,75,79;,
+    3;79,54,63;,
+    3;91,79,84;,
+    3;91,84,93;,
+    3;13,6,27;,
+    3;43,38,58;,
+    3;62,51,43;,
+    3;30,3,13;,
+    3;51,30,27;,
+    3;43,27,22;,
+    3;63,35,86;,
+    3;54,38,35;,
+    3;6,2,22;,
+    3;38,22,19;,
+    3;35,19,77;,
+    3;170,181,145;,
+    3;102,108,135;,
+    3;93,87,108;,
+    3;91,93,102;,
+    3;91,102,114;,
+    3;121,152,108;,
+    3;87,86,121;,
+    3;77,20,170;,
+    3;86,77,145;,
+    3;121,145,165;,
+    3;116,130,125;,
+    3;114,135,134;,
+    3;91,114,118;,
+    3;118,134,130;,
+    3;91,118,116;,
+    3;112,91,116;,
+    3;165,181,174;,
+    3;135,152,146;,
+    3;152,165,158;,
+    3;130,138,137;,
+    3;134,146,138;,
+    3;158,174,168;,
+    3;146,158,150;,
+    3;138,150,153;,
+    3;90,83,71;,
+    3;17,28,64;,
+    3;46,37,34;,
+    3;13,16,8;,
+    3;3,1,16;,
+    3;31,50,46;,
+    3;1,31,34;,
+    3;16,34,23;,
+    3;2,0,15;,
+    3;6,8,0;,
+    3;23,37,28;,
+    3;8,23,17;,
+    3;0,17,39;,
+    3;90,66,68;,
+    3;46,55,52;,
+    3;50,61,55;,
+    3;90,68,73;,
+    3;61,73,68;,
+    3;55,68,66;,
+    3;28,45,80;,
+    3;37,52,45;,
+    3;90,71,66;,
+    3;52,66,71;,
+    3;45,71,83;,
+    3;156,141,136;,
+    3;101,148,119;,
+    3;170,166,180;,
+    3;20,15,166;,
+    3;39,64,101;,
+    3;15,39,119;,
+    3;166,119,163;,
+    3;163,148,144;,
+    3;181,180,175;,
+    3;180,163,160;,
+    3;168,171,179;,
+    3;174,175,171;,
+    3;160,144,141;,
+    3;175,160,156;,
+    3;171,156,154;,
+    3;90,100,92;,
+    3;101,96,123;,
+    3;64,80,96;,
+    3;90,92,83;,
+    3;80,83,92;,
+    3;96,92,100;,
+    3;90,107,100;,
+    3;148,123,131;,
+    3;123,100,107;,
+    3;141,127,124;,
+    3;144,131,127;,
+    3;90,111,107;,
+    3;131,107,111;,
+    3;127,111,113;,
+    3;3,30,33;,
+    3;104,97,162;,
+    3;94,88,98;,
+    3;128,105,109;,
+    3;126,109,112;,
+    3;120,98,105;,
+    3;173,159,155;,
+    3;143,128,126;,
+    3;140,126,125;,
+    3;169,155,153;,
+    3;155,140,137;,
+    3;159,143,140;,
+    3;95,94,120;,
+    3;142,120,128;,
+    3;176,162,159;,
+    3;162,142,143;,
+    3;97,95,142;,
+    3;4,18,24;,
+    3;49,70,81;,
+    3;65,81,88;,
+    3;32,49,65;,
+    3;48,65,94;,
+    3;7,24,97;,
+    3;24,48,95;,
+    3;18,32,48;,
+    3;62,74,69;,
+    3;53,67,70;,
+    3;57,69,67;,
+    3;14,26,18;,
+    3;41,53,49;,
+    3;26,41,32;,
+    3;51,62,57;,
+    3;47,57,53;,
+    3;10,33,26;,
+    3;33,47,41;,
+    3;30,51,47;,
+    3;106,122,164;,
+    3;147,157,149;,
+    3;172,173,169;,
+    3;167,169,177;,
+    3;139,149,154;,
+    3;149,167,179;,
+    3;157,172,167;,
+    3;161,104,176;,
+    3;178,176,173;,
+    3;151,164,157;,
+    3;164,178,172;,
+    3;122,161,178;,
+    3;133,147,139;,
+    3;129,139,136;,
+    3;115,129,124;,
+    3;117,133,129;,
+    3;103,106,151;,
+    3;132,151,147;,
+    3;110,132,133;,
+    3;99,103,132;,
+    3;50,31,29;,
+    3;36,21,40;,
+    3;5,4,7;,
+    3;9,7,104;,
+    3;72,40,122;,
+    3;40,9,161;,
+    3;21,5,9;,
+    3;42,25,21;,
+    3;11,14,4;,
+    3;25,11,5;,
+    3;1,3,10;,
+    3;12,10,14;,
+    3;44,29,25;,
+    3;29,12,11;,
+    3;31,1,12;,
+    3;59,36,72;,
+    3;85,72,106;,
+    3;89,85,103;,
+    3;82,59,85;,
+    3;56,42,36;,
+    3;78,56,59;,
+    3;61,50,44;,
+    3;60,44,42;,
+    3;76,60,56;,
+    3;73,61,60;,
+    3;177,153,150;,
+    3;20,77,19;,
+    3;87,93,84;,
+    3;54,79,75;,
+    3;58,75,74;,
+    3;63,84,79;,
+    3;6,22,27;,
+    3;38,54,58;,
+    3;43,58,62;,
+    3;13,27,30;,
+    3;27,43,51;,
+    3;22,38,43;,
+    3;86,87,63;,
+    3;35,63,54;,
+    3;2,19,22;,
+    3;19,35,38;,
+    3;77,86,35;,
+    3;181,165,145;,
+    3;135,114,102;,
+    3;108,102,93;,
+    3;152,135,108;,
+    3;121,108,87;,
+    3;170,145,77;,
+    3;145,121,86;,
+    3;165,152,121;,
+    3;125,112,116;,
+    3;134,118,114;,
+    3;130,116,118;,
+    3;174,158,165;,
+    3;146,134,135;,
+    3;158,146,152;,
+    3;137,125,130;,
+    3;138,130,134;,
+    3;168,150,158;,
+    3;150,138,146;,
+    3;153,137,138;,
+    3;64,39,17;,
+    3;37,23,34;,
+    3;8,6,13;,
+    3;16,13,3;,
+    3;46,34,31;,
+    3;34,16,1;,
+    3;23,8,16;,
+    3;15,20,2;,
+    3;0,2,6;,
+    3;28,17,23;,
+    3;17,0,8;,
+    3;39,15,0;,
+    3;52,37,46;,
+    3;55,46,50;,
+    3;68,55,61;,
+    3;66,52,55;,
+    3;80,64,28;,
+    3;45,28,37;,
+    3;71,45,52;,
+    3;83,80,45;,
+    3;136,154,156;,
+    3;148,163,119;,
+    3;180,181,170;,
+    3;166,170,20;,
+    3;101,119,39;,
+    3;119,166,15;,
+    3;163,180,166;,
+    3;144,160,163;,
+    3;175,174,181;,
+    3;160,175,180;,
+    3;179,177,168;,
+    3;171,168,174;,
+    3;141,156,160;,
+    3;156,171,175;,
+    3;154,179,171;,
+    3;123,148,101;,
+    3;96,101,64;,
+    3;92,96,80;,
+    3;100,123,96;,
+    3;131,144,148;,
+    3;107,131,123;,
+    3;124,136,141;,
+    3;127,141,144;,
+    3;111,127,131;,
+    3;113,124,127;;
+   }
+
+   MeshTextureCoords {
+    226;
+    0.437513;0.000000;,
+    0.437513;-0.520365;,
+    0.437513;-0.221522;,
+    0.233309;0.000000;,
+    0.233309;-0.221522;,
+    0.233309;-0.117884;,
+    0.233309;-0.070088;,
+    0.142259;0.000000;,
+    0.142259;-0.070088;,
+    0.142259;-0.117884;,
+    0.233309;-0.164400;,
+    0.142259;-0.164400;,
+    0.142259;-0.221522;,
+    0.437513;-0.117884;,
+    0.300217;0.000000;,
+    0.300217;-0.117884;,
+    0.300217;-0.070088;,
+    0.437513;-0.070088;,
+    0.362188;0.000000;,
+    0.362188;-0.070088;,
+    0.362188;-0.117884;,
+    0.300217;-0.221522;,
+    0.300217;-0.164400;,
+    0.437513;-0.164400;,
+    0.362188;-0.164400;,
+    0.362188;-0.221522;,
+    0.437513;-0.353045;,
+    0.233309;-0.353045;,
+    0.233309;-0.303488;,
+    0.142259;-0.303488;,
+    0.142259;-0.353045;,
+    0.300217;-0.353045;,
+    0.300217;-0.303488;,
+    0.437513;-0.303488;,
+    0.362188;-0.303488;,
+    0.362188;-0.353045;,
+    0.233309;-0.520365;,
+    0.233309;-0.397018;,
+    0.142259;-0.397018;,
+    0.233309;-0.443267;,
+    0.142259;-0.443267;,
+    0.142259;-0.520365;,
+    0.437513;-0.397018;,
+    0.300217;-0.397018;,
+    0.362188;-0.397018;,
+    0.300217;-0.520365;,
+    0.300217;-0.443267;,
+    0.437513;-0.443267;,
+    0.362188;-0.443267;,
+    0.362188;-0.520365;,
+    0.699783;0.000000;,
+    0.699783;-0.221522;,
+    0.699783;-0.117884;,
+    0.562487;0.000000;,
+    0.562487;-0.117884;,
+    0.562487;-0.070088;,
+    0.699783;-0.070088;,
+    0.637812;0.000000;,
+    0.637812;-0.070088;,
+    0.637812;-0.117884;,
+    0.562487;-0.221522;,
+    0.562487;-0.164400;,
+    0.699783;-0.164400;,
+    0.637812;-0.164400;,
+    0.637812;-0.221522;,
+    0.766691;0.000000;,
+    0.766691;-0.117884;,
+    0.766691;-0.070088;,
+    0.857741;-1.000000;,
+    0.857741;-0.070088;,
+    0.857741;-0.117884;,
+    0.766691;-0.221522;,
+    0.766691;-0.164400;,
+    0.857741;-0.164400;,
+    0.857741;-0.221522;,
+    0.699783;-0.520365;,
+    0.699783;-0.353045;,
+    0.562487;-0.353045;,
+    0.562487;-0.303488;,
+    0.699783;-0.303488;,
+    0.637812;-0.303488;,
+    0.637812;-0.353045;,
+    0.699783;-0.397018;,
+    0.562487;-0.397018;,
+    0.637812;-0.397018;,
+    0.562487;-0.520365;,
+    0.562487;-0.443267;,
+    0.699783;-0.443267;,
+    0.637812;-0.443267;,
+    0.637812;-0.520365;,
+    0.766691;-0.353045;,
+    0.766691;-0.303488;,
+    0.857741;-0.303488;,
+    0.857741;-0.353045;,
+    0.766691;-0.397018;,
+    0.857741;-0.397018;,
+    0.766691;-0.520365;,
+    0.766691;-0.443267;,
+    0.857741;-0.443267;,
+    0.857741;-0.520365;,
+    0.437513;-0.711005;,
+    0.233309;-0.711005;,
+    0.233309;-0.619486;,
+    0.233309;-0.576375;,
+    0.142259;-0.576375;,
+    0.142259;-0.619486;,
+    0.233309;-0.661614;,
+    0.142259;-0.661614;,
+    0.142259;-0.711005;,
+    0.437513;-0.619486;,
+    0.300217;-0.619486;,
+    0.300217;-0.576375;,
+    0.437513;-0.576375;,
+    0.362188;-0.576375;,
+    0.362188;-0.619486;,
+    0.300217;-0.711005;,
+    0.300217;-0.661614;,
+    0.437513;-0.661614;,
+    0.362188;-0.661614;,
+    0.362188;-0.711005;,
+    0.437513;-0.840318;,
+    0.233309;-0.840318;,
+    0.233309;-0.791089;,
+    0.142259;-0.791089;,
+    0.142259;-0.840318;,
+    0.300217;-0.840318;,
+    0.300217;-0.791089;,
+    0.437513;-0.791089;,
+    0.362188;-0.791089;,
+    0.362188;-0.840318;,
+    0.233309;-0.883729;,
+    0.142259;-0.883729;,
+    0.000000;0.000000;,
+    0.233309;-0.930277;,
+    0.142259;-0.930277;,
+    0.437513;-0.883729;,
+    0.300217;-0.883729;,
+    0.362188;-0.883729;,
+    0.300217;-0.930277;,
+    0.437513;-0.930277;,
+    0.362188;-0.930277;,
+    0.699783;-0.711005;,
+    0.699783;-0.619486;,
+    0.562487;-0.619486;,
+    0.562487;-0.576375;,
+    0.699783;-0.576375;,
+    0.637812;-0.576375;,
+    0.637812;-0.619486;,
+    0.562487;-0.711005;,
+    0.562487;-0.661614;,
+    0.699783;-0.661614;,
+    0.637812;-0.661614;,
+    0.637812;-0.711005;,
+    0.766691;-0.619486;,
+    0.766691;-0.576375;,
+    0.857741;-0.576375;,
+    0.857741;-0.619486;,
+    0.766691;-0.711005;,
+    0.766691;-0.661614;,
+    0.857741;-0.661614;,
+    0.857741;-0.711005;,
+    0.699783;-0.840318;,
+    0.562487;-0.840318;,
+    0.562487;-0.791089;,
+    0.699783;-0.791089;,
+    0.637812;-0.791089;,
+    0.637812;-0.840318;,
+    0.699783;-0.883729;,
+    0.562487;-0.883729;,
+    0.637812;-0.883729;,
+    0.562487;-0.930277;,
+    0.699783;-0.930277;,
+    0.637812;-0.930277;,
+    0.766691;-0.840318;,
+    0.766691;-0.791089;,
+    0.857741;-0.791089;,
+    0.857741;-0.840318;,
+    0.766691;-0.883729;,
+    0.857741;-0.883729;,
+    0.766691;-0.930277;,
+    1.000000;-1.000000;,
+    0.857741;-0.930277;,
+    1.000000;-0.520365;,
+    0.000000;-0.070088;,
+    0.000000;-0.117884;,
+    0.000000;-0.164400;,
+    0.000000;-0.221522;,
+    0.000000;-0.303488;,
+    0.000000;-0.353045;,
+    0.000000;-0.397018;,
+    0.000000;-0.443267;,
+    1.000000;-0.221522;,
+    1.000000;-0.117884;,
+    0.857741;0.000000;,
+    1.000000;-0.070088;,
+    1.000000;-0.164400;,
+    1.000000;-0.353045;,
+    1.000000;-0.303488;,
+    1.000000;-0.397018;,
+    1.000000;-0.443267;,
+    0.437513;-1.000000;,
+    0.000000;-0.520365;,
+    0.000000;-0.576375;,
+    0.000000;-0.619486;,
+    0.000000;-0.661614;,
+    0.000000;-0.711005;,
+    0.000000;-0.791089;,
+    0.233309;-1.000000;,
+    0.000000;-0.840318;,
+    0.000000;-0.883729;,
+    0.142259;-1.000000;,
+    0.000000;-0.930277;,
+    0.300217;-1.000000;,
+    0.362188;-1.000000;,
+    1.000000;-0.711005;,
+    1.000000;-0.619486;,
+    1.000000;-0.576375;,
+    1.000000;-0.661614;,
+    0.699783;-1.000000;,
+    0.562487;-1.000000;,
+    0.637812;-1.000000;,
+    1.000000;-0.840318;,
+    1.000000;-0.791089;,
+    1.000000;-0.883729;,
+    0.766691;-1.000000;,
+    1.000000;-0.930277;;
+   }
+
+   MeshMaterialList {
+    1;
+    360;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    226;
+    182;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    180,
+    132,
+    132,
+    132,
+    132,
+    132,
+    132,
+    132,
+    132,
+    180,
+    180,
+    68,
+    180,
+    180,
+    180,
+    180,
+    180,
+    180,
+    0,
+    132,
+    132,
+    132,
+    132,
+    132,
+    132,
+    3,
+    132,
+    132,
+    7,
+    132,
+    14,
+    18,
+    180,
+    180,
+    180,
+    180,
+    50,
+    53,
+    57,
+    180,
+    180,
+    180,
+    65,
+    180;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smallblob.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smallblob.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/smallblob.x	(revision 1481)
@@ -0,0 +1,401 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   12.000000,0.000000,0.000000,0.000000,0.000000,0.000000,12.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.466387,-0.000000,0.884581,0.000000,-0.729342,-0.565854,0.384538,0.000000,0.500544,-0.824505,-0.263907,0.000000,3.461363,-5.701620,-1.824970,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,100.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame nurbsToPoly1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh nurbsToPolyShape1 {
+   40;
+   1.037112;-0.253886;-0.007216;,
+   -0.966213;0.078381;0.178028;,
+   0.557012;-0.253886;0.796041;,
+   0.938300;-0.797402;-0.000000;,
+   0.380075;-0.797402;0.495088;,
+   -0.487459;-0.229330;1.142869;,
+   -0.303479;-0.763251;0.569000;,
+   -0.601536;-0.350832;0.015835;,
+   1.102122;0.388742;-0.066651;,
+   0.544852;0.390137;0.760444;,
+   0.899596;0.923524;-0.067093;,
+   0.360177;0.943259;0.467000;,
+   -0.923174;0.509744;0.144482;,
+   -0.465744;0.391550;1.053531;,
+   -0.286274;0.943259;0.530551;,
+   -0.567439;1.018875;0.010809;,
+   -0.252691;-0.206412;-0.508399;,
+   -0.024580;-0.775478;-0.481662;,
+   0.000000;-1.000000;-0.000000;,
+   0.643435;-0.253557;-0.852726;,
+   0.535925;-0.797402;-0.516955;,
+   -0.396594;0.673594;-0.534769;,
+   -0.249882;1.091765;-0.466488;,
+   0.492152;0.384377;-1.023332;,
+   0.000000;1.269035;0.000000;,
+   0.314772;0.821882;-0.721406;,
+   0.000000;1.269035;0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.899596;0.923524;-0.067093;,
+   0.000000;1.269035;0.000000;,
+   0.000000;1.269035;0.000000;,
+   1.037112;-0.253886;-0.007216;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.938300;-0.797402;-0.000000;,
+   0.000000;-1.000000;-0.000000;,
+   0.000000;1.269035;0.000000;,
+   1.102122;0.388742;-0.066651;,
+   0.000000;1.269035;0.000000;;
+   48;
+   3;24,10,25;,
+   3;26,15,14;,
+   3;5,1,6;,
+   3;3,0,2;,
+   3;18,3,4;,
+   3;2,5,4;,
+   3;6,27,4;,
+   3;7,28,6;,
+   3;29,30,11;,
+   3;0,8,9;,
+   3;8,29,11;,
+   3;5,13,12;,
+   3;2,9,13;,
+   3;31,14,11;,
+   3;9,11,14;,
+   3;13,14,15;,
+   3;20,19,32;,
+   3;7,1,16;,
+   3;33,7,17;,
+   3;17,16,19;,
+   3;34,17,20;,
+   3;35,36,20;,
+   3;37,22,15;,
+   3;1,12,21;,
+   3;12,15,22;,
+   3;19,23,38;,
+   3;16,21,23;,
+   3;39,25,22;,
+   3;21,22,25;,
+   3;23,25,10;,
+   3;1,7,6;,
+   3;2,4,3;,
+   3;5,6,4;,
+   3;9,2,0;,
+   3;11,9,8;,
+   3;12,1,5;,
+   3;13,5,2;,
+   3;14,13,9;,
+   3;15,12,13;,
+   3;32,35,20;,
+   3;16,17,7;,
+   3;19,20,17;,
+   3;21,16,1;,
+   3;22,21,12;,
+   3;38,32,19;,
+   3;23,19,16;,
+   3;25,23,21;,
+   3;10,38,23;;
+
+   MeshNormals {
+    26;
+    -0.946029;0.320980;-0.044741;,
+    -0.922088;-0.302347;-0.241538;,
+    -0.762442;-0.555138;-0.332421;,
+    -0.640012;0.756504;0.134483;,
+    -0.602461;0.150164;-0.783895;,
+    -0.582718;-0.251559;-0.772759;,
+    -0.528066;-0.807415;0.263111;,
+    -0.478950;0.660008;-0.578789;,
+    -0.451228;-0.332092;0.828316;,
+    -0.439179;-0.581854;-0.684520;,
+    -0.298217;0.452018;0.840682;,
+    -0.210344;-0.975383;-0.066213;,
+    -0.145359;0.755162;0.639219;,
+    0.029012;0.998646;0.043180;,
+    0.100601;0.688684;-0.718049;,
+    0.224771;-0.780223;0.583721;,
+    0.227662;0.225212;-0.947338;,
+    0.385669;-0.323999;-0.863877;,
+    0.403845;-0.704774;-0.583268;,
+    0.417018;0.647929;0.637404;,
+    0.556527;0.315076;0.768768;,
+    0.571980;-0.180633;0.800131;,
+    0.672711;0.730049;-0.120367;,
+    0.679532;-0.716604;0.157210;,
+    0.979258;0.195733;0.052371;,
+    0.986600;-0.159893;0.032489;;
+    48;
+    3;13,22,14;,
+    3;13,3,12;,
+    3;8,1,6;,
+    3;23,25,21;,
+    3;11,23,15;,
+    3;21,8,15;,
+    3;6,11,15;,
+    3;2,11,6;,
+    3;22,13,19;,
+    3;25,24,20;,
+    3;24,22,19;,
+    3;8,10,0;,
+    3;21,20,10;,
+    3;13,12,19;,
+    3;20,19,12;,
+    3;10,12,3;,
+    3;18,17,25;,
+    3;2,1,5;,
+    3;11,2,9;,
+    3;9,5,17;,
+    3;11,9,18;,
+    3;23,11,18;,
+    3;13,7,3;,
+    3;1,0,4;,
+    3;0,3,7;,
+    3;17,16,24;,
+    3;5,4,16;,
+    3;13,14,7;,
+    3;4,7,14;,
+    3;16,14,22;,
+    3;1,2,6;,
+    3;21,15,23;,
+    3;8,6,15;,
+    3;20,21,25;,
+    3;19,20,24;,
+    3;0,1,8;,
+    3;10,8,21;,
+    3;12,10,20;,
+    3;3,0,10;,
+    3;25,23,18;,
+    3;5,9,2;,
+    3;17,18,9;,
+    3;4,5,1;,
+    3;7,4,0;,
+    3;24,25,17;,
+    3;16,17,5;,
+    3;14,16,4;,
+    3;22,24,16;;
+   }
+
+   MeshTextureCoords {
+    40;
+    0.418145;0.000000;,
+    0.418145;-0.504626;,
+    0.418145;-0.153850;,
+    0.205970;0.000000;,
+    0.205970;-0.153850;,
+    0.418145;-0.334167;,
+    0.205970;-0.334167;,
+    0.205970;-0.504626;,
+    0.624835;0.000000;,
+    0.624835;-0.153850;,
+    0.807270;-1.000000;,
+    0.807270;-0.153850;,
+    0.624835;-0.504626;,
+    0.624835;-0.334167;,
+    0.807270;-0.334167;,
+    0.807270;-0.504626;,
+    0.418145;-0.677393;,
+    0.205970;-0.677393;,
+    0.000000;0.000000;,
+    0.418145;-0.834960;,
+    0.205970;-0.834960;,
+    0.624835;-0.677393;,
+    0.807270;-0.677393;,
+    0.624835;-0.834960;,
+    1.000000;-1.000000;,
+    0.807270;-0.834960;,
+    1.000000;-0.504626;,
+    0.000000;-0.153850;,
+    0.000000;-0.334167;,
+    0.807270;0.000000;,
+    1.000000;-0.153850;,
+    1.000000;-0.334167;,
+    0.418145;-1.000000;,
+    0.000000;-0.504626;,
+    0.000000;-0.677393;,
+    0.205970;-1.000000;,
+    0.000000;-0.834960;,
+    1.000000;-0.677393;,
+    0.624835;-1.000000;,
+    1.000000;-0.834960;;
+   }
+
+   MeshMaterialList {
+    1;
+    48;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    40;
+    26;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    24,
+    18,
+    18,
+    10,
+    24,
+    24,
+    0,
+    18,
+    18,
+    3,
+    18,
+    24,
+    8,
+    24;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/bigsphere.x
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/bigsphere.x	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/media/bigsphere.x	(revision 1481)
@@ -0,0 +1,24766 @@
+xof 0303txt 0032
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template VertexDuplicationIndices {
+ <b8d65549-d7c9-4995-89cf-53a9a8b031e3>
+ DWORD nIndices;
+ DWORD nOriginalVertices;
+ array DWORD indices[nIndices];
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array FLOAT weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+
+Frame SCENE_ROOT {
+ 
+
+ FrameTransformMatrix {
+  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+ }
+
+ Frame groundPlane_transform {
+  
+
+  FrameTransformMatrix {
+   30.480000,0.000000,0.000000,0.000000,0.000000,0.000000,30.480000,0.000000,0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame persp {
+  
+
+  FrameTransformMatrix {
+   0.834848,0.000000,-0.550481,0.000000,-0.346522,0.777009,-0.525528,0.000000,0.427728,0.629490,0.648684,0.000000,7.068583,10.402872,10.720070,1.000000;;
+  }
+ }
+
+ Frame top {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,254.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame front {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,254.000000,1.000000;;
+  }
+ }
+
+ Frame side {
+  
+
+  FrameTransformMatrix {
+   0.000000,0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,254.000000,0.000000,0.000000,1.000000;;
+  }
+ }
+
+ Frame pSphere1 {
+  
+
+  FrameTransformMatrix {
+   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
+  }
+
+  Mesh pSphereShape1 {
+   2501;
+   0.237346;-3.802482;-0.029984;,
+   0.231716;-3.802482;-0.059495;,
+   0.222432;-3.802482;-0.088067;,
+   0.209641;-3.802482;-0.115251;,
+   0.193543;-3.802482;-0.140617;,
+   0.174393;-3.802482;-0.163766;,
+   0.152492;-3.802482;-0.184331;,
+   0.128187;-3.802482;-0.201990;,
+   0.101860;-3.802482;-0.216464;,
+   0.073927;-3.802482;-0.227523;,
+   0.044828;-3.802482;-0.234995;,
+   0.015022;-3.802482;-0.238760;,
+   -0.015022;-3.802482;-0.238760;,
+   -0.044828;-3.802482;-0.234995;,
+   -0.073927;-3.802482;-0.227523;,
+   -0.101860;-3.802482;-0.216464;,
+   -0.128187;-3.802482;-0.201990;,
+   -0.152492;-3.802482;-0.184331;,
+   -0.174393;-3.802482;-0.163766;,
+   -0.193543;-3.802482;-0.140617;,
+   -0.209641;-3.802482;-0.115251;,
+   -0.222432;-3.802482;-0.088067;,
+   -0.231716;-3.802482;-0.059495;,
+   -0.237346;-3.802482;-0.029984;,
+   -0.239232;-3.802482;0.000000;,
+   -0.237346;-3.802482;0.029984;,
+   -0.231716;-3.802482;0.059495;,
+   -0.222432;-3.802482;0.088067;,
+   -0.209641;-3.802482;0.115251;,
+   -0.193543;-3.802482;0.140617;,
+   -0.174393;-3.802482;0.163766;,
+   -0.152492;-3.802482;0.184331;,
+   -0.128187;-3.802482;0.201990;,
+   -0.101860;-3.802482;0.216464;,
+   -0.073927;-3.802482;0.227523;,
+   -0.044828;-3.802482;0.234994;,
+   -0.015021;-3.802482;0.238760;,
+   0.015022;-3.802482;0.238760;,
+   0.044828;-3.802482;0.234994;,
+   0.073927;-3.802482;0.227523;,
+   0.101860;-3.802482;0.216464;,
+   0.128187;-3.802482;0.201990;,
+   0.152492;-3.802482;0.184331;,
+   0.174393;-3.802482;0.163766;,
+   0.193543;-3.802482;0.140617;,
+   0.209641;-3.802482;0.115251;,
+   0.222432;-3.802482;0.088067;,
+   0.231716;-3.802482;0.059495;,
+   0.237345;-3.802482;0.029984;,
+   0.239232;-3.802482;0.000000;,
+   0.473755;-3.779957;-0.059849;,
+   0.462518;-3.779957;-0.118754;,
+   0.443987;-3.779957;-0.175787;,
+   0.418454;-3.779957;-0.230047;,
+   0.386322;-3.779957;-0.280679;,
+   0.348097;-3.779957;-0.326885;,
+   0.304383;-3.779957;-0.367935;,
+   0.255868;-3.779957;-0.403183;,
+   0.203318;-3.779957;-0.432073;,
+   0.147562;-3.779957;-0.454148;,
+   0.089478;-3.779957;-0.469062;,
+   0.029984;-3.779957;-0.476578;,
+   -0.029984;-3.779957;-0.476578;,
+   -0.089478;-3.779957;-0.469062;,
+   -0.147562;-3.779957;-0.454148;,
+   -0.203318;-3.779957;-0.432073;,
+   -0.255868;-3.779957;-0.403183;,
+   -0.304383;-3.779957;-0.367935;,
+   -0.348097;-3.779957;-0.326885;,
+   -0.386322;-3.779957;-0.280679;,
+   -0.418454;-3.779957;-0.230047;,
+   -0.443987;-3.779957;-0.175787;,
+   -0.462518;-3.779957;-0.118754;,
+   -0.473754;-3.779957;-0.059849;,
+   -0.477520;-3.779957;0.000000;,
+   -0.473754;-3.779957;0.059849;,
+   -0.462518;-3.779957;0.118754;,
+   -0.443987;-3.779957;0.175787;,
+   -0.418454;-3.779957;0.230047;,
+   -0.386322;-3.779957;0.280679;,
+   -0.348097;-3.779957;0.326885;,
+   -0.304383;-3.779957;0.367935;,
+   -0.255868;-3.779957;0.403183;,
+   -0.203318;-3.779957;0.432073;,
+   -0.147562;-3.779957;0.454148;,
+   -0.089478;-3.779957;0.469062;,
+   -0.029984;-3.779957;0.476577;,
+   0.029984;-3.779957;0.476577;,
+   0.089478;-3.779957;0.469062;,
+   0.147562;-3.779957;0.454148;,
+   0.203318;-3.779957;0.432073;,
+   0.255868;-3.779957;0.403183;,
+   0.304383;-3.779957;0.367935;,
+   0.348097;-3.779957;0.326885;,
+   0.386322;-3.779957;0.280679;,
+   0.418454;-3.779957;0.230047;,
+   0.443987;-3.779957;0.175787;,
+   0.462517;-3.779957;0.118754;,
+   0.473754;-3.779957;0.059849;,
+   0.477520;-3.779957;0.000000;,
+   0.708294;-3.742514;-0.089478;,
+   0.691494;-3.742514;-0.177546;,
+   0.663789;-3.742514;-0.262813;,
+   0.625616;-3.742514;-0.343935;,
+   0.577576;-3.742514;-0.419634;,
+   0.520428;-3.742514;-0.488714;,
+   0.455072;-3.742514;-0.550087;,
+   0.382539;-3.742514;-0.602785;,
+   0.303974;-3.742514;-0.645977;,
+   0.220614;-3.742514;-0.678981;,
+   0.133776;-3.742514;-0.701278;,
+   0.044828;-3.742514;-0.712515;,
+   -0.044828;-3.742514;-0.712515;,
+   -0.133776;-3.742514;-0.701278;,
+   -0.220614;-3.742514;-0.678981;,
+   -0.303974;-3.742514;-0.645977;,
+   -0.382539;-3.742514;-0.602785;,
+   -0.455072;-3.742514;-0.550087;,
+   -0.520428;-3.742514;-0.488714;,
+   -0.577576;-3.742514;-0.419634;,
+   -0.625616;-3.742514;-0.343935;,
+   -0.663789;-3.742514;-0.262813;,
+   -0.691494;-3.742514;-0.177545;,
+   -0.708294;-3.742514;-0.089478;,
+   -0.713923;-3.742514;0.000000;,
+   -0.708294;-3.742514;0.089478;,
+   -0.691494;-3.742514;0.177545;,
+   -0.663789;-3.742514;0.262813;,
+   -0.625616;-3.742514;0.343935;,
+   -0.577576;-3.742514;0.419633;,
+   -0.520428;-3.742514;0.488714;,
+   -0.455072;-3.742514;0.550087;,
+   -0.382539;-3.742514;0.602785;,
+   -0.303974;-3.742514;0.645977;,
+   -0.220614;-3.742514;0.678981;,
+   -0.133776;-3.742514;0.701277;,
+   -0.044828;-3.742514;0.712514;,
+   0.044828;-3.742514;0.712514;,
+   0.133776;-3.742514;0.701277;,
+   0.220614;-3.742514;0.678981;,
+   0.303974;-3.742514;0.645977;,
+   0.382539;-3.742514;0.602785;,
+   0.455072;-3.742514;0.550087;,
+   0.520427;-3.742514;0.488714;,
+   0.577576;-3.742514;0.419633;,
+   0.625615;-3.742514;0.343935;,
+   0.663789;-3.742514;0.262813;,
+   0.691494;-3.742514;0.177545;,
+   0.708293;-3.742514;0.089478;,
+   0.713923;-3.742514;0.000000;,
+   0.940038;-3.690302;-0.118754;,
+   0.917742;-3.690302;-0.235636;,
+   0.880972;-3.690302;-0.348801;,
+   0.830309;-3.690302;-0.456466;,
+   0.766551;-3.690302;-0.556932;,
+   0.690705;-3.690302;-0.648615;,
+   0.603965;-3.690302;-0.730068;,
+   0.507701;-3.690302;-0.800009;,
+   0.403430;-3.690302;-0.857332;,
+   0.292796;-3.690302;-0.901135;,
+   0.177546;-3.690302;-0.930726;,
+   0.059495;-3.690302;-0.945639;,
+   -0.059495;-3.690302;-0.945639;,
+   -0.177546;-3.690302;-0.930726;,
+   -0.292796;-3.690302;-0.901135;,
+   -0.403430;-3.690302;-0.857332;,
+   -0.507701;-3.690302;-0.800008;,
+   -0.603965;-3.690302;-0.730068;,
+   -0.690704;-3.690302;-0.648615;,
+   -0.766551;-3.690302;-0.556932;,
+   -0.830308;-3.690302;-0.456466;,
+   -0.880972;-3.690302;-0.348801;,
+   -0.917741;-3.690302;-0.235636;,
+   -0.940038;-3.690302;-0.118754;,
+   -0.947509;-3.690302;0.000000;,
+   -0.940038;-3.690302;0.118754;,
+   -0.917741;-3.690302;0.235636;,
+   -0.880971;-3.690302;0.348801;,
+   -0.830308;-3.690302;0.456466;,
+   -0.766551;-3.690302;0.556932;,
+   -0.690704;-3.690302;0.648614;,
+   -0.603965;-3.690302;0.730068;,
+   -0.507701;-3.690302;0.800008;,
+   -0.403430;-3.690302;0.857332;,
+   -0.292796;-3.690302;0.901134;,
+   -0.177545;-3.690302;0.930726;,
+   -0.059495;-3.690302;0.945639;,
+   0.059495;-3.690302;0.945639;,
+   0.177545;-3.690302;0.930726;,
+   0.292796;-3.690302;0.901134;,
+   0.403430;-3.690302;0.857331;,
+   0.507701;-3.690302;0.800008;,
+   0.603965;-3.690302;0.730068;,
+   0.690704;-3.690302;0.648614;,
+   0.766551;-3.690302;0.556932;,
+   0.830308;-3.690302;0.456466;,
+   0.880971;-3.690302;0.348801;,
+   0.917741;-3.690302;0.235636;,
+   0.940037;-3.690302;0.118754;,
+   0.947509;-3.690302;0.000000;,
+   1.168072;-3.623525;-0.147562;,
+   1.140367;-3.623525;-0.292796;,
+   1.094678;-3.623525;-0.433414;,
+   1.031725;-3.623525;-0.567195;,
+   0.952501;-3.623525;-0.692032;,
+   0.858256;-3.623525;-0.805955;,
+   0.750475;-3.623525;-0.907168;,
+   0.630859;-3.623525;-0.994074;,
+   0.501294;-3.623525;-1.065303;,
+   0.363823;-3.623525;-1.119732;,
+   0.220614;-3.623525;-1.156501;,
+   0.073927;-3.623525;-1.175032;,
+   -0.073927;-3.623525;-1.175032;,
+   -0.220614;-3.623525;-1.156501;,
+   -0.363823;-3.623525;-1.119732;,
+   -0.501294;-3.623525;-1.065303;,
+   -0.630859;-3.623525;-0.994074;,
+   -0.750475;-3.623525;-0.907168;,
+   -0.858255;-3.623525;-0.805955;,
+   -0.952501;-3.623525;-0.692032;,
+   -1.031724;-3.623525;-0.567195;,
+   -1.094677;-3.623525;-0.433413;,
+   -1.140367;-3.623525;-0.292796;,
+   -1.168072;-3.623525;-0.147562;,
+   -1.177355;-3.623525;0.000000;,
+   -1.168072;-3.623525;0.147562;,
+   -1.140367;-3.623525;0.292796;,
+   -1.094677;-3.623525;0.433413;,
+   -1.031724;-3.623525;0.567195;,
+   -0.952500;-3.623525;0.692032;,
+   -0.858255;-3.623525;0.805955;,
+   -0.750474;-3.623525;0.907168;,
+   -0.630858;-3.623525;0.994074;,
+   -0.501293;-3.623525;1.065303;,
+   -0.363823;-3.623525;1.119731;,
+   -0.220614;-3.623525;1.156501;,
+   -0.073927;-3.623525;1.175032;,
+   0.073927;-3.623525;1.175032;,
+   0.220614;-3.623525;1.156501;,
+   0.363823;-3.623525;1.119731;,
+   0.501293;-3.623525;1.065303;,
+   0.630858;-3.623525;0.994074;,
+   0.750474;-3.623525;0.907168;,
+   0.858255;-3.623525;0.805955;,
+   0.952500;-3.623525;0.692032;,
+   1.031724;-3.623525;0.567195;,
+   1.094677;-3.623525;0.433413;,
+   1.140366;-3.623525;0.292796;,
+   1.168071;-3.623525;0.147562;,
+   1.177355;-3.623525;0.000000;,
+   1.391496;-3.542448;-0.175787;,
+   1.358492;-3.542448;-0.348801;,
+   1.304063;-3.542448;-0.516315;,
+   1.229069;-3.542448;-0.675686;,
+   1.134691;-3.542448;-0.824401;,
+   1.022419;-3.542448;-0.960115;,
+   0.894023;-3.542448;-1.080688;,
+   0.751527;-3.542448;-1.184217;,
+   0.597179;-3.542448;-1.269070;,
+   0.433413;-3.542448;-1.333910;,
+   0.262813;-3.542448;-1.377712;,
+   0.088067;-3.542448;-1.399788;,
+   -0.088067;-3.542448;-1.399788;,
+   -0.262813;-3.542448;-1.377712;,
+   -0.433413;-3.542448;-1.333910;,
+   -0.597179;-3.542448;-1.269070;,
+   -0.751527;-3.542448;-1.184217;,
+   -0.894022;-3.542448;-1.080688;,
+   -1.022419;-3.542448;-0.960115;,
+   -1.134691;-3.542448;-0.824401;,
+   -1.229069;-3.542448;-0.675686;,
+   -1.304063;-3.542448;-0.516315;,
+   -1.358491;-3.542448;-0.348801;,
+   -1.391496;-3.542448;-0.175787;,
+   -1.402555;-3.542448;0.000000;,
+   -1.391496;-3.542448;0.175787;,
+   -1.358491;-3.542448;0.348801;,
+   -1.304063;-3.542448;0.516315;,
+   -1.229068;-3.542448;0.675686;,
+   -1.134691;-3.542448;0.824401;,
+   -1.022419;-3.542448;0.960115;,
+   -0.894022;-3.542448;1.080687;,
+   -0.751526;-3.542448;1.184216;,
+   -0.597179;-3.542448;1.269070;,
+   -0.433413;-3.542448;1.333909;,
+   -0.262812;-3.542448;1.377712;,
+   -0.088067;-3.542448;1.399787;,
+   0.088067;-3.542448;1.399787;,
+   0.262813;-3.542448;1.377712;,
+   0.433413;-3.542448;1.333909;,
+   0.597179;-3.542448;1.269069;,
+   0.751526;-3.542448;1.184216;,
+   0.894022;-3.542448;1.080687;,
+   1.022418;-3.542448;0.960115;,
+   1.134691;-3.542448;0.824401;,
+   1.229068;-3.542448;0.675686;,
+   1.304062;-3.542448;0.516315;,
+   1.358491;-3.542448;0.348801;,
+   1.391495;-3.542448;0.175787;,
+   1.402555;-3.542448;0.000000;,
+   1.609429;-3.447391;-0.203318;,
+   1.571256;-3.447391;-0.403430;,
+   1.508303;-3.447391;-0.597179;,
+   1.421563;-3.447391;-0.781511;,
+   1.312404;-3.447391;-0.953517;,
+   1.182548;-3.447391;-1.110486;,
+   1.034042;-3.447391;-1.249942;,
+   0.869229;-3.447391;-1.369686;,
+   0.690708;-3.447391;-1.467829;,
+   0.501294;-3.447391;-1.542823;,
+   0.303974;-3.447391;-1.593486;,
+   0.101860;-3.447391;-1.619019;,
+   -0.101860;-3.447391;-1.619019;,
+   -0.303974;-3.447391;-1.593486;,
+   -0.501294;-3.447391;-1.542823;,
+   -0.690708;-3.447391;-1.467829;,
+   -0.869229;-3.447391;-1.369686;,
+   -1.034042;-3.447391;-1.249942;,
+   -1.182547;-3.447391;-1.110486;,
+   -1.312403;-3.447391;-0.953517;,
+   -1.421562;-3.447391;-0.781510;,
+   -1.508302;-3.447391;-0.597179;,
+   -1.571255;-3.447391;-0.403430;,
+   -1.609428;-3.447391;-0.203318;,
+   -1.622220;-3.447391;0.000000;,
+   -1.609428;-3.447391;0.203318;,
+   -1.571255;-3.447391;0.403430;,
+   -1.508302;-3.447391;0.597179;,
+   -1.421562;-3.447391;0.781510;,
+   -1.312403;-3.447391;0.953517;,
+   -1.182547;-3.447391;1.110486;,
+   -1.034042;-3.447391;1.249942;,
+   -0.869229;-3.447391;1.369685;,
+   -0.690707;-3.447391;1.467828;,
+   -0.501293;-3.447391;1.542822;,
+   -0.303974;-3.447391;1.593485;,
+   -0.101860;-3.447391;1.619018;,
+   0.101860;-3.447391;1.619018;,
+   0.303974;-3.447391;1.593485;,
+   0.501293;-3.447391;1.542822;,
+   0.690707;-3.447391;1.467828;,
+   0.869229;-3.447391;1.369685;,
+   1.034042;-3.447391;1.249941;,
+   1.182547;-3.447391;1.110486;,
+   1.312403;-3.447391;0.953517;,
+   1.421562;-3.447391;0.781510;,
+   1.508301;-3.447391;0.597179;,
+   1.571254;-3.447391;0.403429;,
+   1.609427;-3.447391;0.203318;,
+   1.622219;-3.447391;0.000000;,
+   1.821010;-3.338728;-0.230047;,
+   1.777818;-3.338728;-0.456466;,
+   1.706589;-3.338728;-0.675686;,
+   1.608446;-3.338728;-0.884251;,
+   1.484937;-3.338728;-1.078870;,
+   1.338010;-3.338728;-1.256475;,
+   1.169981;-3.338728;-1.414264;,
+   0.983501;-3.338728;-1.549749;,
+   0.781511;-3.338728;-1.660794;,
+   0.567195;-3.338728;-1.745648;,
+   0.343935;-3.338728;-1.802971;,
+   0.115251;-3.338728;-1.831861;,
+   -0.115251;-3.338728;-1.831861;,
+   -0.343935;-3.338728;-1.802971;,
+   -0.567195;-3.338728;-1.745648;,
+   -0.781510;-3.338728;-1.660794;,
+   -0.983501;-3.338728;-1.549749;,
+   -1.169981;-3.338728;-1.414264;,
+   -1.338009;-3.338728;-1.256474;,
+   -1.484936;-3.338728;-1.078869;,
+   -1.608446;-3.338728;-0.884250;,
+   -1.706588;-3.338728;-0.675686;,
+   -1.777817;-3.338728;-0.456466;,
+   -1.821009;-3.338728;-0.230047;,
+   -1.835482;-3.338728;0.000000;,
+   -1.821009;-3.338728;0.230047;,
+   -1.777817;-3.338728;0.456466;,
+   -1.706588;-3.338728;0.675686;,
+   -1.608445;-3.338728;0.884250;,
+   -1.484936;-3.338728;1.078869;,
+   -1.338009;-3.338728;1.256474;,
+   -1.169980;-3.338728;1.414263;,
+   -0.983500;-3.338728;1.549749;,
+   -0.781510;-3.338728;1.660794;,
+   -0.567195;-3.338728;1.745647;,
+   -0.343935;-3.338728;1.802971;,
+   -0.115251;-3.338728;1.831860;,
+   0.115251;-3.338728;1.831860;,
+   0.343935;-3.338728;1.802970;,
+   0.567195;-3.338728;1.745647;,
+   0.781510;-3.338728;1.660794;,
+   0.983500;-3.338728;1.549749;,
+   1.169980;-3.338728;1.414263;,
+   1.338009;-3.338728;1.256474;,
+   1.484936;-3.338728;1.078869;,
+   1.608445;-3.338728;0.884250;,
+   1.706588;-3.338728;0.675686;,
+   1.777817;-3.338728;0.456466;,
+   1.821008;-3.338728;0.230047;,
+   1.835482;-3.338728;0.000000;,
+   2.025404;-3.216889;-0.255868;,
+   1.977365;-3.216889;-0.507701;,
+   1.898141;-3.216889;-0.751527;,
+   1.788982;-3.216889;-0.983501;,
+   1.651610;-3.216889;-1.199965;,
+   1.488191;-3.216889;-1.397504;,
+   1.301302;-3.216889;-1.573004;,
+   1.093892;-3.216889;-1.723697;,
+   0.869229;-3.216889;-1.847206;,
+   0.630859;-3.216889;-1.941584;,
+   0.382539;-3.216889;-2.005341;,
+   0.128187;-3.216889;-2.037473;,
+   -0.128187;-3.216889;-2.037473;,
+   -0.382539;-3.216889;-2.005341;,
+   -0.630859;-3.216889;-1.941584;,
+   -0.869229;-3.216889;-1.847206;,
+   -1.093891;-3.216889;-1.723697;,
+   -1.301302;-3.216889;-1.573004;,
+   -1.488191;-3.216889;-1.397504;,
+   -1.651609;-3.216889;-1.199964;,
+   -1.788981;-3.216889;-0.983501;,
+   -1.898140;-3.216889;-0.751527;,
+   -1.977364;-3.216889;-0.507701;,
+   -2.025403;-3.216889;-0.255868;,
+   -2.041501;-3.216889;0.000000;,
+   -2.025403;-3.216889;0.255868;,
+   -1.977364;-3.216889;0.507701;,
+   -1.898140;-3.216889;0.751527;,
+   -1.788981;-3.216889;0.983501;,
+   -1.651609;-3.216889;1.199964;,
+   -1.488190;-3.216889;1.397504;,
+   -1.301302;-3.216889;1.573004;,
+   -1.093891;-3.216889;1.723696;,
+   -0.869229;-3.216889;1.847205;,
+   -0.630858;-3.216889;1.941583;,
+   -0.382539;-3.216889;2.005340;,
+   -0.128187;-3.216889;2.037472;,
+   0.128187;-3.216889;2.037472;,
+   0.382539;-3.216889;2.005340;,
+   0.630858;-3.216889;1.941582;,
+   0.869229;-3.216889;1.847205;,
+   1.093891;-3.216889;1.723696;,
+   1.301301;-3.216889;1.573003;,
+   1.488190;-3.216889;1.397503;,
+   1.651609;-3.216889;1.199964;,
+   1.788981;-3.216889;0.983500;,
+   1.898139;-3.216889;0.751526;,
+   1.977363;-3.216889;0.507701;,
+   2.025403;-3.216889;0.255868;,
+   2.041500;-3.216889;0.000000;,
+   2.221805;-3.082355;-0.280679;,
+   2.169107;-3.082355;-0.556932;,
+   2.082201;-3.082355;-0.824402;,
+   1.962457;-3.082355;-1.078870;,
+   1.811764;-3.082355;-1.316324;,
+   1.632499;-3.082355;-1.533018;,
+   1.427488;-3.082355;-1.725536;,
+   1.199965;-3.082355;-1.890842;,
+   0.953517;-3.082355;-2.026327;,
+   0.692032;-3.082355;-2.129856;,
+   0.419634;-3.082355;-2.199796;,
+   0.140617;-3.082355;-2.235044;,
+   -0.140617;-3.082355;-2.235044;,
+   -0.419634;-3.082355;-2.199796;,
+   -0.692032;-3.082355;-2.129856;,
+   -0.953517;-3.082355;-2.026327;,
+   -1.199964;-3.082355;-1.890841;,
+   -1.427487;-3.082355;-1.725536;,
+   -1.632498;-3.082355;-1.533018;,
+   -1.811764;-3.082355;-1.316323;,
+   -1.962456;-3.082355;-1.078870;,
+   -2.082200;-3.082355;-0.824401;,
+   -2.169106;-3.082355;-0.556932;,
+   -2.221804;-3.082355;-0.280679;,
+   -2.239463;-3.082355;0.000000;,
+   -2.221804;-3.082355;0.280679;,
+   -2.169106;-3.082355;0.556932;,
+   -2.082200;-3.082355;0.824401;,
+   -1.962456;-3.082355;1.078869;,
+   -1.811763;-3.082355;1.316323;,
+   -1.632498;-3.082355;1.533018;,
+   -1.427487;-3.082355;1.725536;,
+   -1.199964;-3.082355;1.890841;,
+   -0.953517;-3.082355;2.026326;,
+   -0.692032;-3.082355;2.129855;,
+   -0.419633;-3.082355;2.199795;,
+   -0.140617;-3.082355;2.235043;,
+   0.140617;-3.082355;2.235043;,
+   0.419634;-3.082355;2.199795;,
+   0.692032;-3.082355;2.129855;,
+   0.953517;-3.082355;2.026326;,
+   1.199964;-3.082355;1.890841;,
+   1.427487;-3.082355;1.725535;,
+   1.632498;-3.082355;1.533017;,
+   1.811763;-3.082355;1.316323;,
+   1.962456;-3.082355;1.078869;,
+   2.082199;-3.082355;0.824401;,
+   2.169105;-3.082355;0.556932;,
+   2.221803;-3.082355;0.280679;,
+   2.239462;-3.082355;0.000000;,
+   2.409438;-2.935655;-0.304383;,
+   2.352290;-2.935655;-0.603965;,
+   2.258044;-2.935655;-0.894023;,
+   2.128188;-2.935655;-1.169981;,
+   1.964769;-2.935655;-1.427488;,
+   1.770364;-2.935655;-1.662483;,
+   1.548040;-2.935655;-1.871259;,
+   1.301302;-2.935655;-2.050524;,
+   1.034042;-2.935655;-2.197452;,
+   0.750475;-2.935655;-2.309724;,
+   0.455072;-2.935655;-2.385571;,
+   0.152492;-2.935655;-2.423795;,
+   -0.152492;-2.935655;-2.423795;,
+   -0.455072;-2.935655;-2.385570;,
+   -0.750475;-2.935655;-2.309724;,
+   -1.034042;-2.935655;-2.197452;,
+   -1.301302;-2.935655;-2.050524;,
+   -1.548040;-2.935655;-1.871259;,
+   -1.770364;-2.935655;-1.662482;,
+   -1.964768;-2.935655;-1.427488;,
+   -2.128187;-2.935655;-1.169981;,
+   -2.258043;-2.935655;-0.894022;,
+   -2.352288;-2.935655;-0.603965;,
+   -2.409437;-2.935655;-0.304383;,
+   -2.428587;-2.935655;0.000000;,
+   -2.409437;-2.935655;0.304383;,
+   -2.352288;-2.935655;0.603965;,
+   -2.258043;-2.935655;0.894022;,
+   -2.128187;-2.935655;1.169981;,
+   -1.964768;-2.935655;1.427487;,
+   -1.770363;-2.935655;1.662482;,
+   -1.548039;-2.935655;1.871258;,
+   -1.301302;-2.935655;2.050524;,
+   -1.034042;-2.935655;2.197451;,
+   -0.750474;-2.935655;2.309723;,
+   -0.455072;-2.935655;2.385569;,
+   -0.152492;-2.935655;2.423794;,
+   0.152492;-2.935655;2.423794;,
+   0.455072;-2.935655;2.385569;,
+   0.750475;-2.935655;2.309723;,
+   1.034042;-2.935655;2.197450;,
+   1.301302;-2.935655;2.050523;,
+   1.548039;-2.935655;1.871258;,
+   1.770363;-2.935655;1.662482;,
+   1.964767;-2.935655;1.427487;,
+   2.128186;-2.935655;1.169980;,
+   2.258042;-2.935655;0.894022;,
+   2.352288;-2.935655;0.603965;,
+   2.409436;-2.935655;0.304383;,
+   2.428586;-2.935655;0.000000;,
+   2.587561;-2.777370;-0.326885;,
+   2.526188;-2.777370;-0.648615;,
+   2.424975;-2.777370;-0.960115;,
+   2.285519;-2.777370;-1.256475;,
+   2.110019;-2.777370;-1.533018;,
+   1.901243;-2.777370;-1.785386;,
+   1.662483;-2.777370;-2.009596;,
+   1.397504;-2.777370;-2.202114;,
+   1.110486;-2.777370;-2.359904;,
+   0.805955;-2.777370;-2.480476;,
+   0.488714;-2.777370;-2.561929;,
+   0.163766;-2.777370;-2.602980;,
+   -0.163766;-2.777370;-2.602980;,
+   -0.488714;-2.777370;-2.561929;,
+   -0.805955;-2.777370;-2.480476;,
+   -1.110486;-2.777370;-2.359903;,
+   -1.397504;-2.777370;-2.202114;,
+   -1.662482;-2.777370;-2.009596;,
+   -1.901242;-2.777370;-1.785385;,
+   -2.110018;-2.777370;-1.533018;,
+   -2.285518;-2.777370;-1.256474;,
+   -2.424974;-2.777370;-0.960115;,
+   -2.526187;-2.777370;-0.648614;,
+   -2.587560;-2.777370;-0.326885;,
+   -2.608126;-2.777370;0.000000;,
+   -2.587560;-2.777370;0.326885;,
+   -2.526187;-2.777370;0.648615;,
+   -2.424974;-2.777370;0.960115;,
+   -2.285518;-2.777370;1.256474;,
+   -2.110018;-2.777370;1.533018;,
+   -1.901242;-2.777370;1.785385;,
+   -1.662482;-2.777370;2.009595;,
+   -1.397503;-2.777370;2.202113;,
+   -1.110486;-2.777370;2.359903;,
+   -0.805955;-2.777370;2.480475;,
+   -0.488714;-2.777370;2.561928;,
+   -0.163765;-2.777370;2.602979;,
+   0.163766;-2.777370;2.602979;,
+   0.488714;-2.777370;2.561928;,
+   0.805955;-2.777370;2.480474;,
+   1.110486;-2.777370;2.359902;,
+   1.397503;-2.777370;2.202113;,
+   1.662482;-2.777370;2.009595;,
+   1.901241;-2.777370;1.785384;,
+   2.110018;-2.777370;1.533017;,
+   2.285517;-2.777370;1.256474;,
+   2.424973;-2.777370;0.960115;,
+   2.526186;-2.777370;0.648614;,
+   2.587559;-2.777370;0.326885;,
+   2.608125;-2.777370;0.000000;,
+   2.755473;-2.608124;-0.348097;,
+   2.690117;-2.608124;-0.690705;,
+   2.582337;-2.608124;-1.022419;,
+   2.433831;-2.608124;-1.338010;,
+   2.246942;-2.608124;-1.632499;,
+   2.024618;-2.608124;-1.901243;,
+   1.770364;-2.608124;-2.140003;,
+   1.488191;-2.608124;-2.345014;,
+   1.182548;-2.608124;-2.513042;,
+   0.858255;-2.608124;-2.641439;,
+   0.520428;-2.608124;-2.728178;,
+   0.174393;-2.608124;-2.771892;,
+   -0.174393;-2.608124;-2.771892;,
+   -0.520428;-2.608124;-2.728178;,
+   -0.858255;-2.608124;-2.641438;,
+   -1.182548;-2.608124;-2.513042;,
+   -1.488191;-2.608124;-2.345013;,
+   -1.770364;-2.608124;-2.140002;,
+   -2.024617;-2.608124;-1.901242;,
+   -2.246942;-2.608124;-1.632499;,
+   -2.433830;-2.608124;-1.338009;,
+   -2.582335;-2.608124;-1.022419;,
+   -2.690116;-2.608124;-0.690704;,
+   -2.755472;-2.608124;-0.348097;,
+   -2.777372;-2.608124;0.000000;,
+   -2.755472;-2.608124;0.348097;,
+   -2.690116;-2.608124;0.690704;,
+   -2.582335;-2.608124;1.022419;,
+   -2.433830;-2.608124;1.338009;,
+   -2.246941;-2.608124;1.632498;,
+   -2.024617;-2.608124;1.901242;,
+   -1.770363;-2.608124;2.140002;,
+   -1.488190;-2.608124;2.345013;,
+   -1.182547;-2.608124;2.513041;,
+   -0.858255;-2.608124;2.641438;,
+   -0.520427;-2.608124;2.728177;,
+   -0.174392;-2.608124;2.771891;,
+   0.174393;-2.608124;2.771891;,
+   0.520428;-2.608124;2.728177;,
+   0.858255;-2.608124;2.641437;,
+   1.182547;-2.608124;2.513041;,
+   1.488190;-2.608124;2.345012;,
+   1.770363;-2.608124;2.140001;,
+   2.024616;-2.608124;1.901241;,
+   2.246941;-2.608124;1.632498;,
+   2.433829;-2.608124;1.338009;,
+   2.582334;-2.608124;1.022418;,
+   2.690115;-2.608124;0.690704;,
+   2.755471;-2.608124;0.348097;,
+   2.777371;-2.608124;0.000000;,
+   2.912510;-2.428585;-0.367935;,
+   2.843430;-2.428585;-0.730068;,
+   2.729506;-2.428585;-1.080688;,
+   2.572537;-2.428585;-1.414264;,
+   2.374998;-2.428585;-1.725537;,
+   2.140003;-2.428585;-2.009596;,
+   1.871259;-2.428585;-2.261963;,
+   1.573004;-2.428585;-2.478658;,
+   1.249942;-2.428585;-2.656263;,
+   0.907168;-2.428585;-2.791977;,
+   0.550087;-2.428585;-2.883659;,
+   0.184331;-2.428585;-2.929865;,
+   -0.184331;-2.428585;-2.929865;,
+   -0.550087;-2.428585;-2.883659;,
+   -0.907168;-2.428585;-2.791976;,
+   -1.249942;-2.428585;-2.656263;,
+   -1.573004;-2.428585;-2.478658;,
+   -1.871258;-2.428585;-2.261963;,
+   -2.140002;-2.428585;-2.009596;,
+   -2.374997;-2.428585;-1.725536;,
+   -2.572536;-2.428585;-1.414264;,
+   -2.729505;-2.428585;-1.080688;,
+   -2.843428;-2.428585;-0.730068;,
+   -2.912509;-2.428585;-0.367935;,
+   -2.935657;-2.428585;0.000000;,
+   -2.912508;-2.428585;0.367936;,
+   -2.843428;-2.428585;0.730068;,
+   -2.729505;-2.428585;1.080688;,
+   -2.572536;-2.428585;1.414264;,
+   -2.374996;-2.428585;1.725536;,
+   -2.140002;-2.428585;2.009595;,
+   -1.871258;-2.428585;2.261963;,
+   -1.573003;-2.428585;2.478657;,
+   -1.249942;-2.428585;2.656262;,
+   -0.907168;-2.428585;2.791975;,
+   -0.550087;-2.428585;2.883658;,
+   -0.184331;-2.428585;2.929863;,
+   0.184332;-2.428585;2.929863;,
+   0.550087;-2.428585;2.883658;,
+   0.907168;-2.428585;2.791975;,
+   1.249942;-2.428585;2.656261;,
+   1.573003;-2.428585;2.478657;,
+   1.871258;-2.428585;2.261962;,
+   2.140001;-2.428585;2.009595;,
+   2.374996;-2.428585;1.725535;,
+   2.572535;-2.428585;1.414263;,
+   2.729504;-2.428585;1.080687;,
+   2.843427;-2.428585;0.730068;,
+   2.912507;-2.428585;0.367935;,
+   2.935656;-2.428585;0.000000;,
+   3.058053;-2.239461;-0.386322;,
+   2.985520;-2.239461;-0.766551;,
+   2.865904;-2.239461;-1.134692;,
+   2.701091;-2.239461;-1.484937;,
+   2.493680;-2.239461;-1.811764;,
+   2.246942;-2.239461;-2.110019;,
+   1.964769;-2.239461;-2.374997;,
+   1.651610;-2.239461;-2.602521;,
+   1.312404;-2.239461;-2.789001;,
+   0.952501;-2.239461;-2.931496;,
+   0.577576;-2.239461;-3.027761;,
+   0.193543;-2.239461;-3.076275;,
+   -0.193543;-2.239461;-3.076275;,
+   -0.577576;-2.239461;-3.027760;,
+   -0.952501;-2.239461;-2.931496;,
+   -1.312404;-2.239461;-2.789000;,
+   -1.651610;-2.239461;-2.602520;,
+   -1.964768;-2.239461;-2.374997;,
+   -2.246942;-2.239461;-2.110018;,
+   -2.493679;-2.239461;-1.811764;,
+   -2.701090;-2.239461;-1.484937;,
+   -2.865903;-2.239461;-1.134691;,
+   -2.985519;-2.239461;-0.766551;,
+   -3.058052;-2.239461;-0.386322;,
+   -3.082357;-2.239461;0.000000;,
+   -3.058051;-2.239461;0.386322;,
+   -2.985519;-2.239461;0.766551;,
+   -2.865903;-2.239461;1.134691;,
+   -2.701090;-2.239461;1.484937;,
+   -2.493679;-2.239461;1.811764;,
+   -2.246941;-2.239461;2.110018;,
+   -1.964768;-2.239461;2.374996;,
+   -1.651609;-2.239461;2.602520;,
+   -1.312403;-2.239461;2.788999;,
+   -0.952500;-2.239461;2.931495;,
+   -0.577576;-2.239461;3.027759;,
+   -0.193543;-2.239461;3.076273;,
+   0.193543;-2.239461;3.076273;,
+   0.577576;-2.239461;3.027759;,
+   0.952500;-2.239461;2.931494;,
+   1.312403;-2.239461;2.788999;,
+   1.651609;-2.239461;2.602519;,
+   1.964768;-2.239461;2.374996;,
+   2.246941;-2.239461;2.110018;,
+   2.493678;-2.239461;1.811763;,
+   2.701089;-2.239461;1.484936;,
+   2.865902;-2.239461;1.134691;,
+   2.985518;-2.239461;0.766551;,
+   3.058050;-2.239461;0.386322;,
+   3.082355;-2.239461;0.000000;,
+   3.191527;-2.041500;-0.403183;,
+   3.115828;-2.041500;-0.800008;,
+   2.990991;-2.041500;-1.184217;,
+   2.818985;-2.041500;-1.549750;,
+   2.602521;-2.041500;-1.890842;,
+   2.345014;-2.041500;-2.202114;,
+   2.050524;-2.041500;-2.478658;,
+   1.723697;-2.041500;-2.716112;,
+   1.369686;-2.041500;-2.910731;,
+   0.994074;-2.041500;-3.059446;,
+   0.602785;-2.041500;-3.159912;,
+   0.201990;-2.041500;-3.210544;,
+   -0.201990;-2.041500;-3.210544;,
+   -0.602785;-2.041500;-3.159912;,
+   -0.994074;-2.041500;-3.059446;,
+   -1.369686;-2.041500;-2.910731;,
+   -1.723697;-2.041500;-2.716111;,
+   -2.050524;-2.041500;-2.478657;,
+   -2.345013;-2.041500;-2.202114;,
+   -2.602520;-2.041500;-1.890841;,
+   -2.818983;-2.041500;-1.549749;,
+   -2.990990;-2.041500;-1.184217;,
+   -3.115827;-2.041500;-0.800008;,
+   -3.191525;-2.041500;-0.403183;,
+   -3.216891;-2.041500;0.000000;,
+   -3.191525;-2.041500;0.403183;,
+   -3.115826;-2.041500;0.800008;,
+   -2.990989;-2.041500;1.184217;,
+   -2.818983;-2.041500;1.549749;,
+   -2.602519;-2.041500;1.890841;,
+   -2.345012;-2.041500;2.202113;,
+   -2.050523;-2.041500;2.478657;,
+   -1.723696;-2.041500;2.716111;,
+   -1.369685;-2.041500;2.910730;,
+   -0.994074;-2.041500;3.059445;,
+   -0.602785;-2.041500;3.159910;,
+   -0.201990;-2.041500;3.210542;,
+   0.201990;-2.041500;3.210542;,
+   0.602785;-2.041500;3.159910;,
+   0.994074;-2.041500;3.059444;,
+   1.369685;-2.041500;2.910729;,
+   1.723696;-2.041500;2.716110;,
+   2.050523;-2.041500;2.478657;,
+   2.345012;-2.041500;2.202113;,
+   2.602519;-2.041500;1.890840;,
+   2.818982;-2.041500;1.549749;,
+   2.990988;-2.041500;1.184216;,
+   3.115825;-2.041500;0.800008;,
+   3.191524;-2.041500;0.403183;,
+   3.216890;-2.041500;0.000000;,
+   3.312405;-1.835481;-0.418454;,
+   3.233840;-1.835481;-0.830309;,
+   3.104275;-1.835481;-1.229069;,
+   2.925753;-1.835481;-1.608446;,
+   2.701091;-1.835481;-1.962457;,
+   2.433830;-1.835481;-2.285519;,
+   2.128188;-1.835481;-2.572537;,
+   1.788982;-1.835481;-2.818984;,
+   1.421563;-1.835481;-3.020974;,
+   1.031725;-1.835481;-3.175322;,
+   0.625616;-1.835481;-3.279593;,
+   0.209641;-1.835481;-3.332143;,
+   -0.209641;-1.835481;-3.332143;,
+   -0.625616;-1.835481;-3.279593;,
+   -1.031725;-1.835481;-3.175322;,
+   -1.421562;-1.835481;-3.020974;,
+   -1.788981;-1.835481;-2.818984;,
+   -2.128187;-1.835481;-2.572536;,
+   -2.433830;-1.835481;-2.285518;,
+   -2.701090;-1.835481;-1.962456;,
+   -2.925752;-1.835481;-1.608446;,
+   -3.104273;-1.835481;-1.229069;,
+   -3.233838;-1.835481;-0.830308;,
+   -3.312403;-1.835481;-0.418454;,
+   -3.338730;-1.835481;0.000000;,
+   -3.312403;-1.835481;0.418454;,
+   -3.233838;-1.835481;0.830308;,
+   -3.104273;-1.835481;1.229069;,
+   -2.925751;-1.835481;1.608446;,
+   -2.701089;-1.835481;1.962456;,
+   -2.433829;-1.835481;2.285518;,
+   -2.128186;-1.835481;2.572536;,
+   -1.788981;-1.835481;2.818983;,
+   -1.421562;-1.835481;3.020973;,
+   -1.031724;-1.835481;3.175321;,
+   -0.625615;-1.835481;3.279591;,
+   -0.209640;-1.835481;3.332141;,
+   0.209641;-1.835481;3.332141;,
+   0.625616;-1.835481;3.279591;,
+   1.031724;-1.835481;3.175320;,
+   1.421562;-1.835481;3.020972;,
+   1.788981;-1.835481;2.818982;,
+   2.128186;-1.835481;2.572535;,
+   2.433829;-1.835481;2.285517;,
+   2.701089;-1.835481;1.962456;,
+   2.925750;-1.835481;1.608445;,
+   3.104272;-1.835481;1.229068;,
+   3.233837;-1.835481;0.830308;,
+   3.312402;-1.835481;0.418454;,
+   3.338729;-1.835481;0.000000;,
+   3.420211;-1.622218;-0.432073;,
+   3.339088;-1.622218;-0.857332;,
+   3.205307;-1.622218;-1.269070;,
+   3.020975;-1.622218;-1.660795;,
+   2.789001;-1.622218;-2.026327;,
+   2.513042;-1.622218;-2.359904;,
+   2.197452;-1.622218;-2.656263;,
+   1.847206;-1.622218;-2.910731;,
+   1.467829;-1.622218;-3.119295;,
+   1.065303;-1.622218;-3.278666;,
+   0.645977;-1.622218;-3.386331;,
+   0.216464;-1.622218;-3.440591;,
+   -0.216464;-1.622218;-3.440591;,
+   -0.645977;-1.622218;-3.386331;,
+   -1.065303;-1.622218;-3.278666;,
+   -1.467829;-1.622218;-3.119295;,
+   -1.847206;-1.622218;-2.910731;,
+   -2.197451;-1.622218;-2.656262;,
+   -2.513041;-1.622218;-2.359903;,
+   -2.789000;-1.622218;-2.026327;,
+   -3.020973;-1.622218;-1.660794;,
+   -3.205305;-1.622218;-1.269070;,
+   -3.339087;-1.622218;-0.857332;,
+   -3.420209;-1.622218;-0.432073;,
+   -3.447393;-1.622218;0.000000;,
+   -3.420209;-1.622218;0.432073;,
+   -3.339087;-1.622218;0.857332;,
+   -3.205305;-1.622218;1.269070;,
+   -3.020973;-1.622218;1.660794;,
+   -2.788999;-1.622218;2.026327;,
+   -2.513041;-1.622218;2.359903;,
+   -2.197451;-1.622218;2.656262;,
+   -1.847205;-1.622218;2.910730;,
+   -1.467828;-1.622218;3.119294;,
+   -1.065302;-1.622218;3.278665;,
+   -0.645977;-1.622218;3.386329;,
+   -0.216463;-1.622218;3.440589;,
+   0.216464;-1.622218;3.440589;,
+   0.645977;-1.622218;3.386329;,
+   1.065303;-1.622218;3.278664;,
+   1.467828;-1.622218;3.119293;,
+   1.847205;-1.622218;2.910729;,
+   2.197450;-1.622218;2.656261;,
+   2.513041;-1.622218;2.359902;,
+   2.788999;-1.622218;2.026326;,
+   3.020972;-1.622218;1.660794;,
+   3.205304;-1.622218;1.269069;,
+   3.339085;-1.622218;0.857331;,
+   3.420208;-1.622218;0.432073;,
+   3.447391;-1.622218;0.000000;,
+   3.514519;-1.402554;-0.443987;,
+   3.431159;-1.402554;-0.880972;,
+   3.293689;-1.402554;-1.304063;,
+   3.104274;-1.402554;-1.706589;,
+   2.865904;-1.402554;-2.082201;,
+   2.582336;-1.402554;-2.424975;,
+   2.258044;-1.402554;-2.729506;,
+   1.898140;-1.402554;-2.990991;,
+   1.508302;-1.402554;-3.205306;,
+   1.094678;-1.402554;-3.369071;,
+   0.663789;-1.402554;-3.479705;,
+   0.222432;-1.402554;-3.535461;,
+   -0.222432;-1.402554;-3.535461;,
+   -0.663789;-1.402554;-3.479704;,
+   -1.094678;-1.402554;-3.369071;,
+   -1.508302;-1.402554;-3.205306;,
+   -1.898140;-1.402554;-2.990990;,
+   -2.258043;-1.402554;-2.729505;,
+   -2.582335;-1.402554;-2.424974;,
+   -2.865903;-1.402554;-2.082200;,
+   -3.104273;-1.402554;-1.706589;,
+   -3.293687;-1.402554;-1.304063;,
+   -3.431158;-1.402554;-0.880971;,
+   -3.514517;-1.402554;-0.443987;,
+   -3.542450;-1.402554;0.000000;,
+   -3.514517;-1.402554;0.443987;,
+   -3.431158;-1.402554;0.880972;,
+   -3.293687;-1.402554;1.304063;,
+   -3.104273;-1.402554;1.706589;,
+   -2.865902;-1.402554;2.082200;,
+   -2.582335;-1.402554;2.424974;,
+   -2.258043;-1.402554;2.729505;,
+   -1.898139;-1.402554;2.990989;,
+   -1.508301;-1.402554;3.205305;,
+   -1.094677;-1.402554;3.369070;,
+   -0.663789;-1.402554;3.479703;,
+   -0.222432;-1.402554;3.535459;,
+   0.222432;-1.402554;3.535459;,
+   0.663789;-1.402554;3.479703;,
+   1.094677;-1.402554;3.369070;,
+   1.508302;-1.402554;3.205304;,
+   1.898139;-1.402554;2.990989;,
+   2.258042;-1.402554;2.729504;,
+   2.582335;-1.402554;2.424973;,
+   2.865902;-1.402554;2.082199;,
+   3.104272;-1.402554;1.706588;,
+   3.293686;-1.402554;1.304062;,
+   3.431156;-1.402554;0.880971;,
+   3.514516;-1.402554;0.443987;,
+   3.542449;-1.402554;0.000000;,
+   3.594957;-1.177354;-0.454148;,
+   3.509689;-1.177354;-0.901135;,
+   3.369072;-1.177354;-1.333910;,
+   3.175323;-1.177354;-1.745648;,
+   2.931496;-1.177354;-2.129857;,
+   2.641439;-1.177354;-2.480476;,
+   2.309724;-1.177354;-2.791977;,
+   1.941584;-1.177354;-3.059446;,
+   1.542823;-1.177354;-3.278666;,
+   1.119732;-1.177354;-3.446180;,
+   0.678981;-1.177354;-3.559345;,
+   0.227523;-1.177354;-3.616378;,
+   -0.227523;-1.177354;-3.616378;,
+   -0.678981;-1.177354;-3.559345;,
+   -1.119732;-1.177354;-3.446180;,
+   -1.542823;-1.177354;-3.278666;,
+   -1.941583;-1.177354;-3.059446;,
+   -2.309723;-1.177354;-2.791976;,
+   -2.641438;-1.177354;-2.480475;,
+   -2.931495;-1.177354;-2.129856;,
+   -3.175321;-1.177354;-1.745648;,
+   -3.369071;-1.177354;-1.333909;,
+   -3.509688;-1.177354;-0.901134;,
+   -3.594955;-1.177354;-0.454148;,
+   -3.623527;-1.177354;0.000000;,
+   -3.594955;-1.177354;0.454149;,
+   -3.509687;-1.177354;0.901135;,
+   -3.369070;-1.177354;1.333909;,
+   -3.175321;-1.177354;1.745648;,
+   -2.931495;-1.177354;2.129856;,
+   -2.641437;-1.177354;2.480475;,
+   -2.309723;-1.177354;2.791975;,
+   -1.941583;-1.177354;3.059445;,
+   -1.542822;-1.177354;3.278665;,
+   -1.119731;-1.177354;3.446179;,
+   -0.678981;-1.177354;3.559344;,
+   -0.227523;-1.177354;3.616376;,
+   0.227523;-1.177354;3.616376;,
+   0.678981;-1.177354;3.559344;,
+   1.119731;-1.177354;3.446178;,
+   1.542823;-1.177354;3.278664;,
+   1.941583;-1.177354;3.059444;,
+   2.309723;-1.177354;2.791975;,
+   2.641437;-1.177354;2.480474;,
+   2.931494;-1.177354;2.129855;,
+   3.175320;-1.177354;1.745647;,
+   3.369069;-1.177354;1.333909;,
+   3.509686;-1.177354;0.901134;,
+   3.594953;-1.177354;0.454148;,
+   3.623526;-1.177354;0.000000;,
+   3.661206;-0.947507;-0.462518;,
+   3.574368;-0.947507;-0.917741;,
+   3.431159;-0.947507;-1.358492;,
+   3.233839;-0.947507;-1.777818;,
+   2.985520;-0.947507;-2.169107;,
+   2.690117;-0.947507;-2.526188;,
+   2.352289;-0.947507;-2.843429;,
+   1.977364;-0.947507;-3.115828;,
+   1.571255;-0.947507;-3.339088;,
+   1.140367;-0.947507;-3.509688;,
+   0.691494;-0.947507;-3.624939;,
+   0.231716;-0.947507;-3.683022;,
+   -0.231716;-0.947507;-3.683022;,
+   -0.691494;-0.947507;-3.624939;,
+   -1.140367;-0.947507;-3.509688;,
+   -1.571255;-0.947507;-3.339087;,
+   -1.977364;-0.947507;-3.115827;,
+   -2.352288;-0.947507;-2.843428;,
+   -2.690116;-0.947507;-2.526187;,
+   -2.985519;-0.947507;-2.169106;,
+   -3.233838;-0.947507;-1.777817;,
+   -3.431158;-0.947507;-1.358491;,
+   -3.574366;-0.947507;-0.917741;,
+   -3.661205;-0.947507;-0.462518;,
+   -3.690304;-0.947507;0.000000;,
+   -3.661205;-0.947507;0.462518;,
+   -3.574366;-0.947507;0.917741;,
+   -3.431158;-0.947507;1.358491;,
+   -3.233838;-0.947507;1.777817;,
+   -2.985518;-0.947507;2.169106;,
+   -2.690115;-0.947507;2.526187;,
+   -2.352288;-0.947507;2.843428;,
+   -1.977363;-0.947507;3.115826;,
+   -1.571254;-0.947507;3.339086;,
+   -1.140366;-0.947507;3.509687;,
+   -0.691494;-0.947507;3.624938;,
+   -0.231716;-0.947507;3.683021;,
+   0.231716;-0.947507;3.683021;,
+   0.691494;-0.947507;3.624937;,
+   1.140366;-0.947507;3.509686;,
+   1.571255;-0.947507;3.339086;,
+   1.977363;-0.947507;3.115826;,
+   2.352288;-0.947507;2.843427;,
+   2.690115;-0.947507;2.526186;,
+   2.985518;-0.947507;2.169105;,
+   3.233837;-0.947507;1.777817;,
+   3.431156;-0.947507;1.358491;,
+   3.574365;-0.947507;0.917741;,
+   3.661203;-0.947507;0.462517;,
+   3.690302;-0.947507;0.000000;,
+   3.713007;-0.713922;-0.469062;,
+   3.624940;-0.713922;-0.930726;,
+   3.479705;-0.713922;-1.377713;,
+   3.279593;-0.713922;-1.802972;,
+   3.027761;-0.713922;-2.199797;,
+   2.728178;-0.713922;-2.561930;,
+   2.385571;-0.713922;-2.883659;,
+   2.005341;-0.713922;-3.159912;,
+   1.593486;-0.713922;-3.386331;,
+   1.156501;-0.713922;-3.559345;,
+   0.701278;-0.713922;-3.676227;,
+   0.234995;-0.713922;-3.735132;,
+   -0.234995;-0.713922;-3.735132;,
+   -0.701278;-0.713922;-3.676227;,
+   -1.156501;-0.713922;-3.559345;,
+   -1.593486;-0.713922;-3.386331;,
+   -2.005341;-0.713922;-3.159912;,
+   -2.385570;-0.713922;-2.883659;,
+   -2.728177;-0.713922;-2.561929;,
+   -3.027760;-0.713922;-2.199796;,
+   -3.279592;-0.713922;-1.802971;,
+   -3.479704;-0.713922;-1.377712;,
+   -3.624938;-0.713922;-0.930726;,
+   -3.713006;-0.713922;-0.469062;,
+   -3.742516;-0.713922;0.000000;,
+   -3.713005;-0.713922;0.469062;,
+   -3.624938;-0.713922;0.930726;,
+   -3.479703;-0.713922;1.377712;,
+   -3.279592;-0.713922;1.802971;,
+   -3.027759;-0.713922;2.199796;,
+   -2.728177;-0.713922;2.561929;,
+   -2.385569;-0.713922;2.883658;,
+   -2.005340;-0.713922;3.159911;,
+   -1.593485;-0.713922;3.386330;,
+   -1.156501;-0.713922;3.559344;,
+   -0.701277;-0.713922;3.676225;,
+   -0.234994;-0.713922;3.735130;,
+   0.234995;-0.713922;3.735130;,
+   0.701278;-0.713922;3.676225;,
+   1.156501;-0.713922;3.559343;,
+   1.593486;-0.713922;3.386329;,
+   2.005340;-0.713922;3.159910;,
+   2.385569;-0.713922;2.883657;,
+   2.728176;-0.713922;2.561928;,
+   3.027758;-0.713922;2.199795;,
+   3.279591;-0.713922;1.802970;,
+   3.479702;-0.713922;1.377712;,
+   3.624937;-0.713922;0.930726;,
+   3.713004;-0.713922;0.469061;,
+   3.742515;-0.713922;0.000000;,
+   3.750155;-0.477518;-0.473754;,
+   3.661206;-0.477518;-0.940038;,
+   3.514518;-0.477518;-1.391496;,
+   3.312405;-0.477518;-1.821010;,
+   3.058052;-0.477518;-2.221805;,
+   2.755473;-0.477518;-2.587561;,
+   2.409437;-0.477518;-2.912509;,
+   2.025404;-0.477518;-3.191526;,
+   1.609429;-0.477518;-3.420210;,
+   1.168072;-0.477518;-3.594955;,
+   0.708294;-0.477518;-3.713006;,
+   0.237346;-0.477518;-3.772501;,
+   -0.237346;-0.477518;-3.772501;,
+   -0.708294;-0.477518;-3.713006;,
+   -1.168072;-0.477518;-3.594955;,
+   -1.609428;-0.477518;-3.420210;,
+   -2.025403;-0.477518;-3.191525;,
+   -2.409437;-0.477518;-2.912509;,
+   -2.755472;-0.477518;-2.587560;,
+   -3.058051;-0.477518;-2.221804;,
+   -3.312403;-0.477518;-1.821009;,
+   -3.514517;-0.477518;-1.391496;,
+   -3.661205;-0.477518;-0.940037;,
+   -3.750153;-0.477518;-0.473754;,
+   -3.779959;-0.477518;0.000000;,
+   -3.750153;-0.477518;0.473755;,
+   -3.661204;-0.477518;0.940038;,
+   -3.514517;-0.477518;1.391496;,
+   -3.312403;-0.477518;1.821009;,
+   -3.058051;-0.477518;2.221804;,
+   -2.755471;-0.477518;2.587560;,
+   -2.409436;-0.477518;2.912508;,
+   -2.025403;-0.477518;3.191525;,
+   -1.609428;-0.477518;3.420208;,
+   -1.168071;-0.477518;3.594954;,
+   -0.708293;-0.477518;3.713004;,
+   -0.237345;-0.477518;3.772499;,
+   0.237346;-0.477518;3.772499;,
+   0.708294;-0.477518;3.713004;,
+   1.168071;-0.477518;3.594953;,
+   1.609428;-0.477518;3.420208;,
+   2.025403;-0.477518;3.191524;,
+   2.409436;-0.477518;2.912507;,
+   2.755471;-0.477518;2.587559;,
+   3.058050;-0.477518;2.221803;,
+   3.312402;-0.477518;1.821008;,
+   3.514515;-0.477518;1.391495;,
+   3.661203;-0.477518;0.940037;,
+   3.750151;-0.477518;0.473754;,
+   3.779957;-0.477518;0.000000;,
+   3.772502;-0.239230;-0.476578;,
+   3.683024;-0.239230;-0.945639;,
+   3.535462;-0.239230;-1.399788;,
+   3.332143;-0.239230;-1.831861;,
+   3.076275;-0.239230;-2.235044;,
+   2.771893;-0.239230;-2.602980;,
+   2.423795;-0.239230;-2.929865;,
+   2.037473;-0.239230;-3.210544;,
+   1.619019;-0.239230;-3.440591;,
+   1.175032;-0.239230;-3.616378;,
+   0.712515;-0.239230;-3.735132;,
+   0.238760;-0.239230;-3.794981;,
+   -0.238760;-0.239230;-3.794981;,
+   -0.712515;-0.239230;-3.735132;,
+   -1.175032;-0.239230;-3.616378;,
+   -1.619019;-0.239230;-3.440591;,
+   -2.037473;-0.239230;-3.210544;,
+   -2.423795;-0.239230;-2.929864;,
+   -2.771892;-0.239230;-2.602979;,
+   -3.076274;-0.239230;-2.235044;,
+   -3.332142;-0.239230;-1.831861;,
+   -3.535460;-0.239230;-1.399788;,
+   -3.683022;-0.239230;-0.945639;,
+   -3.772500;-0.239230;-0.476577;,
+   -3.802484;-0.239230;0.000000;,
+   -3.772500;-0.239230;0.476578;,
+   -3.683022;-0.239230;0.945639;,
+   -3.535460;-0.239230;1.399788;,
+   -3.332142;-0.239230;1.831860;,
+   -3.076274;-0.239230;2.235044;,
+   -2.771891;-0.239230;2.602979;,
+   -2.423794;-0.239230;2.929864;,
+   -2.037472;-0.239230;3.210543;,
+   -1.619018;-0.239230;3.440590;,
+   -1.175032;-0.239230;3.616376;,
+   -0.712514;-0.239230;3.735130;,
+   -0.238760;-0.239230;3.794979;,
+   0.238760;-0.239230;3.794979;,
+   0.712514;-0.239230;3.735130;,
+   1.175032;-0.239230;3.616376;,
+   1.619018;-0.239230;3.440589;,
+   2.037472;-0.239230;3.210542;,
+   2.423794;-0.239230;2.929863;,
+   2.771890;-0.239230;2.602978;,
+   3.076273;-0.239230;2.235043;,
+   3.332141;-0.239230;1.831860;,
+   3.535459;-0.239230;1.399787;,
+   3.683020;-0.239230;0.945639;,
+   3.772498;-0.239230;0.476577;,
+   3.802482;-0.239230;0.000000;,
+   3.779961;0.000000;-0.477520;,
+   3.690305;0.000000;-0.947509;,
+   3.542452;0.000000;-1.402556;,
+   3.338732;0.000000;-1.835483;,
+   3.082357;0.000000;-2.239464;,
+   2.777373;0.000000;-2.608127;,
+   2.428587;0.000000;-2.935658;,
+   2.041502;0.000000;-3.216892;,
+   1.622220;0.000000;-3.447394;,
+   1.177356;0.000000;-3.623528;,
+   0.713923;0.000000;-3.742517;,
+   0.239232;0.000000;-3.802484;,
+   -0.239232;0.000000;-3.802484;,
+   -0.713923;0.000000;-3.742517;,
+   -1.177355;0.000000;-3.623528;,
+   -1.622220;0.000000;-3.447393;,
+   -2.041501;0.000000;-3.216891;,
+   -2.428587;0.000000;-2.935657;,
+   -2.777372;0.000000;-2.608126;,
+   -3.082356;0.000000;-2.239463;,
+   -3.338730;0.000000;-1.835482;,
+   -3.542450;0.000000;-1.402555;,
+   -3.690304;0.000000;-0.947509;,
+   -3.779959;0.000000;-0.477520;,
+   -3.810002;0.000000;0.000000;,
+   -3.779959;0.000000;0.477520;,
+   -3.690303;0.000000;0.947509;,
+   -3.542450;0.000000;1.402555;,
+   -3.338730;0.000000;1.835482;,
+   -3.082356;0.000000;2.239463;,
+   -2.777371;0.000000;2.608125;,
+   -2.428586;0.000000;2.935657;,
+   -2.041501;0.000000;3.216891;,
+   -1.622219;0.000000;3.447392;,
+   -1.177355;0.000000;3.623526;,
+   -0.713923;0.000000;3.742515;,
+   -0.239232;0.000000;3.802482;,
+   0.239232;0.000000;3.802482;,
+   0.713923;0.000000;3.742515;,
+   1.177355;0.000000;3.623526;,
+   1.622219;0.000000;3.447392;,
+   2.041501;0.000000;3.216890;,
+   2.428586;0.000000;2.935656;,
+   2.777371;0.000000;2.608125;,
+   3.082355;0.000000;2.239462;,
+   3.338729;0.000000;1.835482;,
+   3.542449;0.000000;1.402555;,
+   3.690302;0.000000;0.947508;,
+   3.779957;0.000000;0.477520;,
+   3.810000;0.000000;0.000000;,
+   3.772502;0.239230;-0.476578;,
+   3.683024;0.239230;-0.945639;,
+   3.535462;0.239230;-1.399788;,
+   3.332143;0.239230;-1.831861;,
+   3.076275;0.239230;-2.235044;,
+   2.771893;0.239230;-2.602980;,
+   2.423795;0.239230;-2.929865;,
+   2.037473;0.239230;-3.210544;,
+   1.619019;0.239230;-3.440591;,
+   1.175032;0.239230;-3.616378;,
+   0.712515;0.239230;-3.735132;,
+   0.238760;0.239230;-3.794981;,
+   -0.238760;0.239230;-3.794981;,
+   -0.712515;0.239230;-3.735132;,
+   -1.175032;0.239230;-3.616378;,
+   -1.619019;0.239230;-3.440591;,
+   -2.037473;0.239230;-3.210544;,
+   -2.423795;0.239230;-2.929864;,
+   -2.771892;0.239230;-2.602979;,
+   -3.076274;0.239230;-2.235044;,
+   -3.332142;0.239230;-1.831861;,
+   -3.535460;0.239230;-1.399788;,
+   -3.683022;0.239230;-0.945639;,
+   -3.772500;0.239230;-0.476577;,
+   -3.802484;0.239230;0.000000;,
+   -3.772500;0.239230;0.476578;,
+   -3.683022;0.239230;0.945639;,
+   -3.535460;0.239230;1.399788;,
+   -3.332142;0.239230;1.831860;,
+   -3.076274;0.239230;2.235044;,
+   -2.771891;0.239230;2.602979;,
+   -2.423794;0.239230;2.929864;,
+   -2.037472;0.239230;3.210543;,
+   -1.619018;0.239230;3.440590;,
+   -1.175032;0.239230;3.616376;,
+   -0.712514;0.239230;3.735130;,
+   -0.238760;0.239230;3.794979;,
+   0.238760;0.239230;3.794979;,
+   0.712514;0.239230;3.735130;,
+   1.175032;0.239230;3.616376;,
+   1.619018;0.239230;3.440589;,
+   2.037472;0.239230;3.210542;,
+   2.423794;0.239230;2.929863;,
+   2.771890;0.239230;2.602978;,
+   3.076273;0.239230;2.235043;,
+   3.332141;0.239230;1.831860;,
+   3.535459;0.239230;1.399787;,
+   3.683020;0.239230;0.945639;,
+   3.772498;0.239230;0.476577;,
+   3.802482;0.239230;0.000000;,
+   3.750155;0.477518;-0.473754;,
+   3.661206;0.477518;-0.940038;,
+   3.514518;0.477518;-1.391496;,
+   3.312405;0.477518;-1.821010;,
+   3.058052;0.477518;-2.221805;,
+   2.755473;0.477518;-2.587561;,
+   2.409437;0.477518;-2.912509;,
+   2.025404;0.477518;-3.191526;,
+   1.609429;0.477518;-3.420210;,
+   1.168072;0.477518;-3.594955;,
+   0.708294;0.477518;-3.713006;,
+   0.237346;0.477518;-3.772501;,
+   -0.237346;0.477518;-3.772501;,
+   -0.708294;0.477518;-3.713006;,
+   -1.168072;0.477518;-3.594955;,
+   -1.609428;0.477518;-3.420210;,
+   -2.025403;0.477518;-3.191525;,
+   -2.409437;0.477518;-2.912509;,
+   -2.755472;0.477518;-2.587560;,
+   -3.058051;0.477518;-2.221804;,
+   -3.312403;0.477518;-1.821009;,
+   -3.514517;0.477518;-1.391496;,
+   -3.661205;0.477518;-0.940037;,
+   -3.750153;0.477518;-0.473754;,
+   -3.779959;0.477518;0.000000;,
+   -3.750153;0.477518;0.473755;,
+   -3.661204;0.477518;0.940038;,
+   -3.514517;0.477518;1.391496;,
+   -3.312403;0.477518;1.821009;,
+   -3.058051;0.477518;2.221804;,
+   -2.755471;0.477518;2.587560;,
+   -2.409436;0.477518;2.912508;,
+   -2.025403;0.477518;3.191525;,
+   -1.609428;0.477518;3.420208;,
+   -1.168071;0.477518;3.594954;,
+   -0.708293;0.477518;3.713004;,
+   -0.237345;0.477518;3.772499;,
+   0.237346;0.477518;3.772499;,
+   0.708294;0.477518;3.713004;,
+   1.168071;0.477518;3.594953;,
+   1.609428;0.477518;3.420208;,
+   2.025403;0.477518;3.191524;,
+   2.409436;0.477518;2.912507;,
+   2.755471;0.477518;2.587559;,
+   3.058050;0.477518;2.221803;,
+   3.312402;0.477518;1.821008;,
+   3.514515;0.477518;1.391495;,
+   3.661203;0.477518;0.940037;,
+   3.750151;0.477518;0.473754;,
+   3.779957;0.477518;0.000000;,
+   3.713007;0.713922;-0.469062;,
+   3.624940;0.713922;-0.930726;,
+   3.479705;0.713922;-1.377713;,
+   3.279593;0.713922;-1.802972;,
+   3.027761;0.713922;-2.199797;,
+   2.728178;0.713922;-2.561930;,
+   2.385571;0.713922;-2.883659;,
+   2.005341;0.713922;-3.159912;,
+   1.593486;0.713922;-3.386331;,
+   1.156501;0.713922;-3.559345;,
+   0.701278;0.713922;-3.676227;,
+   0.234995;0.713922;-3.735132;,
+   -0.234995;0.713922;-3.735132;,
+   -0.701278;0.713922;-3.676227;,
+   -1.156501;0.713922;-3.559345;,
+   -1.593486;0.713922;-3.386331;,
+   -2.005341;0.713922;-3.159912;,
+   -2.385570;0.713922;-2.883659;,
+   -2.728177;0.713922;-2.561929;,
+   -3.027760;0.713922;-2.199796;,
+   -3.279592;0.713922;-1.802971;,
+   -3.479704;0.713922;-1.377712;,
+   -3.624938;0.713922;-0.930726;,
+   -3.713006;0.713922;-0.469062;,
+   -3.742516;0.713922;0.000000;,
+   -3.713005;0.713922;0.469062;,
+   -3.624938;0.713922;0.930726;,
+   -3.479703;0.713922;1.377712;,
+   -3.279592;0.713922;1.802971;,
+   -3.027759;0.713922;2.199796;,
+   -2.728177;0.713922;2.561929;,
+   -2.385569;0.713922;2.883658;,
+   -2.005340;0.713922;3.159911;,
+   -1.593485;0.713922;3.386330;,
+   -1.156501;0.713922;3.559344;,
+   -0.701277;0.713922;3.676225;,
+   -0.234994;0.713922;3.735130;,
+   0.234995;0.713922;3.735130;,
+   0.701278;0.713922;3.676225;,
+   1.156501;0.713922;3.559343;,
+   1.593486;0.713922;3.386329;,
+   2.005340;0.713922;3.159910;,
+   2.385569;0.713922;2.883657;,
+   2.728176;0.713922;2.561928;,
+   3.027758;0.713922;2.199795;,
+   3.279591;0.713922;1.802970;,
+   3.479702;0.713922;1.377712;,
+   3.624937;0.713922;0.930726;,
+   3.713004;0.713922;0.469061;,
+   3.742515;0.713922;0.000000;,
+   3.661206;0.947507;-0.462518;,
+   3.574368;0.947507;-0.917741;,
+   3.431159;0.947507;-1.358492;,
+   3.233839;0.947507;-1.777818;,
+   2.985520;0.947507;-2.169107;,
+   2.690117;0.947507;-2.526188;,
+   2.352289;0.947507;-2.843429;,
+   1.977364;0.947507;-3.115828;,
+   1.571255;0.947507;-3.339088;,
+   1.140367;0.947507;-3.509688;,
+   0.691494;0.947507;-3.624939;,
+   0.231716;0.947507;-3.683022;,
+   -0.231716;0.947507;-3.683022;,
+   -0.691494;0.947507;-3.624939;,
+   -1.140367;0.947507;-3.509688;,
+   -1.571255;0.947507;-3.339087;,
+   -1.977364;0.947507;-3.115827;,
+   -2.352288;0.947507;-2.843428;,
+   -2.690116;0.947507;-2.526187;,
+   -2.985519;0.947507;-2.169106;,
+   -3.233838;0.947507;-1.777817;,
+   -3.431158;0.947507;-1.358491;,
+   -3.574366;0.947507;-0.917741;,
+   -3.661205;0.947507;-0.462518;,
+   -3.690304;0.947507;0.000000;,
+   -3.661205;0.947507;0.462518;,
+   -3.574366;0.947507;0.917741;,
+   -3.431158;0.947507;1.358491;,
+   -3.233838;0.947507;1.777817;,
+   -2.985518;0.947507;2.169106;,
+   -2.690115;0.947507;2.526187;,
+   -2.352288;0.947507;2.843428;,
+   -1.977363;0.947507;3.115826;,
+   -1.571254;0.947507;3.339086;,
+   -1.140366;0.947507;3.509687;,
+   -0.691494;0.947507;3.624938;,
+   -0.231716;0.947507;3.683021;,
+   0.231716;0.947507;3.683021;,
+   0.691494;0.947507;3.624937;,
+   1.140366;0.947507;3.509686;,
+   1.571255;0.947507;3.339086;,
+   1.977363;0.947507;3.115826;,
+   2.352288;0.947507;2.843427;,
+   2.690115;0.947507;2.526186;,
+   2.985518;0.947507;2.169105;,
+   3.233837;0.947507;1.777817;,
+   3.431156;0.947507;1.358491;,
+   3.574365;0.947507;0.917741;,
+   3.661203;0.947507;0.462517;,
+   3.690302;0.947507;0.000000;,
+   3.594957;1.177354;-0.454148;,
+   3.509689;1.177354;-0.901135;,
+   3.369072;1.177354;-1.333910;,
+   3.175323;1.177354;-1.745648;,
+   2.931496;1.177354;-2.129857;,
+   2.641439;1.177354;-2.480476;,
+   2.309724;1.177354;-2.791977;,
+   1.941584;1.177354;-3.059446;,
+   1.542823;1.177354;-3.278666;,
+   1.119732;1.177354;-3.446180;,
+   0.678981;1.177354;-3.559345;,
+   0.227523;1.177354;-3.616378;,
+   -0.227523;1.177354;-3.616378;,
+   -0.678981;1.177354;-3.559345;,
+   -1.119732;1.177354;-3.446180;,
+   -1.542823;1.177354;-3.278666;,
+   -1.941583;1.177354;-3.059446;,
+   -2.309723;1.177354;-2.791976;,
+   -2.641438;1.177354;-2.480475;,
+   -2.931495;1.177354;-2.129856;,
+   -3.175321;1.177354;-1.745648;,
+   -3.369071;1.177354;-1.333909;,
+   -3.509688;1.177354;-0.901134;,
+   -3.594955;1.177354;-0.454148;,
+   -3.623527;1.177354;0.000000;,
+   -3.594955;1.177354;0.454149;,
+   -3.509687;1.177354;0.901135;,
+   -3.369070;1.177354;1.333909;,
+   -3.175321;1.177354;1.745648;,
+   -2.931495;1.177354;2.129856;,
+   -2.641437;1.177354;2.480475;,
+   -2.309723;1.177354;2.791975;,
+   -1.941583;1.177354;3.059445;,
+   -1.542822;1.177354;3.278665;,
+   -1.119731;1.177354;3.446179;,
+   -0.678981;1.177354;3.559344;,
+   -0.227523;1.177354;3.616376;,
+   0.227523;1.177354;3.616376;,
+   0.678981;1.177354;3.559344;,
+   1.119731;1.177354;3.446178;,
+   1.542823;1.177354;3.278664;,
+   1.941583;1.177354;3.059444;,
+   2.309723;1.177354;2.791975;,
+   2.641437;1.177354;2.480474;,
+   2.931494;1.177354;2.129855;,
+   3.175320;1.177354;1.745647;,
+   3.369069;1.177354;1.333909;,
+   3.509686;1.177354;0.901134;,
+   3.594953;1.177354;0.454148;,
+   3.623526;1.177354;0.000000;,
+   3.514519;1.402554;-0.443987;,
+   3.431159;1.402554;-0.880972;,
+   3.293689;1.402554;-1.304063;,
+   3.104274;1.402554;-1.706589;,
+   2.865904;1.402554;-2.082201;,
+   2.582336;1.402554;-2.424975;,
+   2.258044;1.402554;-2.729506;,
+   1.898140;1.402554;-2.990991;,
+   1.508302;1.402554;-3.205306;,
+   1.094678;1.402554;-3.369071;,
+   0.663789;1.402554;-3.479705;,
+   0.222432;1.402554;-3.535461;,
+   -0.222432;1.402554;-3.535461;,
+   -0.663789;1.402554;-3.479704;,
+   -1.094678;1.402554;-3.369071;,
+   -1.508302;1.402554;-3.205306;,
+   -1.898140;1.402554;-2.990990;,
+   -2.258043;1.402554;-2.729505;,
+   -2.582335;1.402554;-2.424974;,
+   -2.865903;1.402554;-2.082200;,
+   -3.104273;1.402554;-1.706589;,
+   -3.293687;1.402554;-1.304063;,
+   -3.431158;1.402554;-0.880971;,
+   -3.514517;1.402554;-0.443987;,
+   -3.542450;1.402554;0.000000;,
+   -3.514517;1.402554;0.443987;,
+   -3.431158;1.402554;0.880972;,
+   -3.293687;1.402554;1.304063;,
+   -3.104273;1.402554;1.706589;,
+   -2.865902;1.402554;2.082200;,
+   -2.582335;1.402554;2.424974;,
+   -2.258043;1.402554;2.729505;,
+   -1.898139;1.402554;2.990989;,
+   -1.508301;1.402554;3.205305;,
+   -1.094677;1.402554;3.369070;,
+   -0.663789;1.402554;3.479703;,
+   -0.222432;1.402554;3.535459;,
+   0.222432;1.402554;3.535459;,
+   0.663789;1.402554;3.479703;,
+   1.094677;1.402554;3.369070;,
+   1.508302;1.402554;3.205304;,
+   1.898139;1.402554;2.990989;,
+   2.258042;1.402554;2.729504;,
+   2.582335;1.402554;2.424973;,
+   2.865902;1.402554;2.082199;,
+   3.104272;1.402554;1.706588;,
+   3.293686;1.402554;1.304062;,
+   3.431156;1.402554;0.880971;,
+   3.514516;1.402554;0.443987;,
+   3.542449;1.402554;0.000000;,
+   3.420211;1.622218;-0.432073;,
+   3.339088;1.622218;-0.857332;,
+   3.205307;1.622218;-1.269070;,
+   3.020975;1.622218;-1.660795;,
+   2.789001;1.622218;-2.026327;,
+   2.513042;1.622218;-2.359904;,
+   2.197452;1.622218;-2.656263;,
+   1.847206;1.622218;-2.910731;,
+   1.467829;1.622218;-3.119295;,
+   1.065303;1.622218;-3.278666;,
+   0.645977;1.622218;-3.386331;,
+   0.216464;1.622218;-3.440591;,
+   -0.216464;1.622218;-3.440591;,
+   -0.645977;1.622218;-3.386331;,
+   -1.065303;1.622218;-3.278666;,
+   -1.467829;1.622218;-3.119295;,
+   -1.847206;1.622218;-2.910731;,
+   -2.197451;1.622218;-2.656262;,
+   -2.513041;1.622218;-2.359903;,
+   -2.789000;1.622218;-2.026327;,
+   -3.020973;1.622218;-1.660794;,
+   -3.205305;1.622218;-1.269070;,
+   -3.339087;1.622218;-0.857332;,
+   -3.420209;1.622218;-0.432073;,
+   -3.447393;1.622218;0.000000;,
+   -3.420209;1.622218;0.432073;,
+   -3.339087;1.622218;0.857332;,
+   -3.205305;1.622218;1.269070;,
+   -3.020973;1.622218;1.660794;,
+   -2.788999;1.622218;2.026327;,
+   -2.513041;1.622218;2.359903;,
+   -2.197451;1.622218;2.656262;,
+   -1.847205;1.622218;2.910730;,
+   -1.467828;1.622218;3.119294;,
+   -1.065302;1.622218;3.278665;,
+   -0.645977;1.622218;3.386329;,
+   -0.216463;1.622218;3.440589;,
+   0.216464;1.622218;3.440589;,
+   0.645977;1.622218;3.386329;,
+   1.065303;1.622218;3.278664;,
+   1.467828;1.622218;3.119293;,
+   1.847205;1.622218;2.910729;,
+   2.197450;1.622218;2.656261;,
+   2.513041;1.622218;2.359902;,
+   2.788999;1.622218;2.026326;,
+   3.020972;1.622218;1.660794;,
+   3.205304;1.622218;1.269069;,
+   3.339085;1.622218;0.857331;,
+   3.420208;1.622218;0.432073;,
+   3.447391;1.622218;0.000000;,
+   3.312405;1.835481;-0.418454;,
+   3.233840;1.835481;-0.830309;,
+   3.104275;1.835481;-1.229069;,
+   2.925753;1.835481;-1.608446;,
+   2.701091;1.835481;-1.962457;,
+   2.433830;1.835481;-2.285519;,
+   2.128188;1.835481;-2.572537;,
+   1.788982;1.835481;-2.818984;,
+   1.421563;1.835481;-3.020974;,
+   1.031725;1.835481;-3.175322;,
+   0.625616;1.835481;-3.279593;,
+   0.209641;1.835481;-3.332143;,
+   -0.209641;1.835481;-3.332143;,
+   -0.625616;1.835481;-3.279593;,
+   -1.031725;1.835481;-3.175322;,
+   -1.421562;1.835481;-3.020974;,
+   -1.788981;1.835481;-2.818984;,
+   -2.128187;1.835481;-2.572536;,
+   -2.433830;1.835481;-2.285518;,
+   -2.701090;1.835481;-1.962456;,
+   -2.925752;1.835481;-1.608446;,
+   -3.104273;1.835481;-1.229069;,
+   -3.233838;1.835481;-0.830308;,
+   -3.312403;1.835481;-0.418454;,
+   -3.338730;1.835481;0.000000;,
+   -3.312403;1.835481;0.418454;,
+   -3.233838;1.835481;0.830308;,
+   -3.104273;1.835481;1.229069;,
+   -2.925751;1.835481;1.608446;,
+   -2.701089;1.835481;1.962456;,
+   -2.433829;1.835481;2.285518;,
+   -2.128186;1.835481;2.572536;,
+   -1.788981;1.835481;2.818983;,
+   -1.421562;1.835481;3.020973;,
+   -1.031724;1.835481;3.175321;,
+   -0.625615;1.835481;3.279591;,
+   -0.209640;1.835481;3.332141;,
+   0.209641;1.835481;3.332141;,
+   0.625616;1.835481;3.279591;,
+   1.031724;1.835481;3.175320;,
+   1.421562;1.835481;3.020972;,
+   1.788981;1.835481;2.818982;,
+   2.128186;1.835481;2.572535;,
+   2.433829;1.835481;2.285517;,
+   2.701089;1.835481;1.962456;,
+   2.925750;1.835481;1.608445;,
+   3.104272;1.835481;1.229068;,
+   3.233837;1.835481;0.830308;,
+   3.312402;1.835481;0.418454;,
+   3.338729;1.835481;0.000000;,
+   3.191527;2.041500;-0.403183;,
+   3.115828;2.041500;-0.800008;,
+   2.990991;2.041500;-1.184217;,
+   2.818985;2.041500;-1.549750;,
+   2.602521;2.041500;-1.890842;,
+   2.345014;2.041500;-2.202114;,
+   2.050524;2.041500;-2.478658;,
+   1.723697;2.041500;-2.716112;,
+   1.369686;2.041500;-2.910731;,
+   0.994074;2.041500;-3.059446;,
+   0.602785;2.041500;-3.159912;,
+   0.201990;2.041500;-3.210544;,
+   -0.201990;2.041500;-3.210544;,
+   -0.602785;2.041500;-3.159912;,
+   -0.994074;2.041500;-3.059446;,
+   -1.369686;2.041500;-2.910731;,
+   -1.723697;2.041500;-2.716111;,
+   -2.050524;2.041500;-2.478657;,
+   -2.345013;2.041500;-2.202114;,
+   -2.602520;2.041500;-1.890841;,
+   -2.818983;2.041500;-1.549749;,
+   -2.990990;2.041500;-1.184217;,
+   -3.115827;2.041500;-0.800008;,
+   -3.191525;2.041500;-0.403183;,
+   -3.216891;2.041500;0.000000;,
+   -3.191525;2.041500;0.403183;,
+   -3.115826;2.041500;0.800008;,
+   -2.990989;2.041500;1.184217;,
+   -2.818983;2.041500;1.549749;,
+   -2.602519;2.041500;1.890841;,
+   -2.345012;2.041500;2.202113;,
+   -2.050523;2.041500;2.478657;,
+   -1.723696;2.041500;2.716111;,
+   -1.369685;2.041500;2.910730;,
+   -0.994074;2.041500;3.059445;,
+   -0.602785;2.041500;3.159910;,
+   -0.201990;2.041500;3.210542;,
+   0.201990;2.041500;3.210542;,
+   0.602785;2.041500;3.159910;,
+   0.994074;2.041500;3.059444;,
+   1.369685;2.041500;2.910729;,
+   1.723696;2.041500;2.716110;,
+   2.050523;2.041500;2.478657;,
+   2.345012;2.041500;2.202113;,
+   2.602519;2.041500;1.890840;,
+   2.818982;2.041500;1.549749;,
+   2.990988;2.041500;1.184216;,
+   3.115825;2.041500;0.800008;,
+   3.191524;2.041500;0.403183;,
+   3.216890;2.041500;0.000000;,
+   3.058053;2.239461;-0.386322;,
+   2.985520;2.239461;-0.766551;,
+   2.865904;2.239461;-1.134692;,
+   2.701091;2.239461;-1.484937;,
+   2.493680;2.239461;-1.811764;,
+   2.246942;2.239461;-2.110019;,
+   1.964769;2.239461;-2.374997;,
+   1.651610;2.239461;-2.602521;,
+   1.312404;2.239461;-2.789001;,
+   0.952501;2.239461;-2.931496;,
+   0.577576;2.239461;-3.027761;,
+   0.193543;2.239461;-3.076275;,
+   -0.193543;2.239461;-3.076275;,
+   -0.577576;2.239461;-3.027760;,
+   -0.952501;2.239461;-2.931496;,
+   -1.312404;2.239461;-2.789000;,
+   -1.651610;2.239461;-2.602520;,
+   -1.964768;2.239461;-2.374997;,
+   -2.246942;2.239461;-2.110018;,
+   -2.493679;2.239461;-1.811764;,
+   -2.701090;2.239461;-1.484937;,
+   -2.865903;2.239461;-1.134691;,
+   -2.985519;2.239461;-0.766551;,
+   -3.058052;2.239461;-0.386322;,
+   -3.082357;2.239461;0.000000;,
+   -3.058051;2.239461;0.386322;,
+   -2.985519;2.239461;0.766551;,
+   -2.865903;2.239461;1.134691;,
+   -2.701090;2.239461;1.484937;,
+   -2.493679;2.239461;1.811764;,
+   -2.246941;2.239461;2.110018;,
+   -1.964768;2.239461;2.374996;,
+   -1.651609;2.239461;2.602520;,
+   -1.312403;2.239461;2.788999;,
+   -0.952500;2.239461;2.931495;,
+   -0.577576;2.239461;3.027759;,
+   -0.193543;2.239461;3.076273;,
+   0.193543;2.239461;3.076273;,
+   0.577576;2.239461;3.027759;,
+   0.952500;2.239461;2.931494;,
+   1.312403;2.239461;2.788999;,
+   1.651609;2.239461;2.602519;,
+   1.964768;2.239461;2.374996;,
+   2.246941;2.239461;2.110018;,
+   2.493678;2.239461;1.811763;,
+   2.701089;2.239461;1.484936;,
+   2.865902;2.239461;1.134691;,
+   2.985518;2.239461;0.766551;,
+   3.058050;2.239461;0.386322;,
+   3.082355;2.239461;0.000000;,
+   2.912510;2.428585;-0.367935;,
+   2.843430;2.428585;-0.730068;,
+   2.729506;2.428585;-1.080688;,
+   2.572537;2.428585;-1.414264;,
+   2.374998;2.428585;-1.725537;,
+   2.140003;2.428585;-2.009596;,
+   1.871259;2.428585;-2.261963;,
+   1.573004;2.428585;-2.478658;,
+   1.249942;2.428585;-2.656263;,
+   0.907168;2.428585;-2.791977;,
+   0.550087;2.428585;-2.883659;,
+   0.184331;2.428585;-2.929865;,
+   -0.184331;2.428585;-2.929865;,
+   -0.550087;2.428585;-2.883659;,
+   -0.907168;2.428585;-2.791976;,
+   -1.249942;2.428585;-2.656263;,
+   -1.573004;2.428585;-2.478658;,
+   -1.871258;2.428585;-2.261963;,
+   -2.140002;2.428585;-2.009596;,
+   -2.374997;2.428585;-1.725536;,
+   -2.572536;2.428585;-1.414264;,
+   -2.729505;2.428585;-1.080688;,
+   -2.843428;2.428585;-0.730068;,
+   -2.912509;2.428585;-0.367935;,
+   -2.935657;2.428585;0.000000;,
+   -2.912508;2.428585;0.367936;,
+   -2.843428;2.428585;0.730068;,
+   -2.729505;2.428585;1.080688;,
+   -2.572536;2.428585;1.414264;,
+   -2.374996;2.428585;1.725536;,
+   -2.140002;2.428585;2.009595;,
+   -1.871258;2.428585;2.261963;,
+   -1.573003;2.428585;2.478657;,
+   -1.249942;2.428585;2.656262;,
+   -0.907168;2.428585;2.791975;,
+   -0.550087;2.428585;2.883658;,
+   -0.184331;2.428585;2.929863;,
+   0.184332;2.428585;2.929863;,
+   0.550087;2.428585;2.883658;,
+   0.907168;2.428585;2.791975;,
+   1.249942;2.428585;2.656261;,
+   1.573003;2.428585;2.478657;,
+   1.871258;2.428585;2.261962;,
+   2.140001;2.428585;2.009595;,
+   2.374996;2.428585;1.725535;,
+   2.572535;2.428585;1.414263;,
+   2.729504;2.428585;1.080687;,
+   2.843427;2.428585;0.730068;,
+   2.912507;2.428585;0.367935;,
+   2.935656;2.428585;0.000000;,
+   2.755473;2.608124;-0.348097;,
+   2.690117;2.608124;-0.690705;,
+   2.582337;2.608124;-1.022419;,
+   2.433831;2.608124;-1.338010;,
+   2.246942;2.608124;-1.632499;,
+   2.024618;2.608124;-1.901243;,
+   1.770364;2.608124;-2.140003;,
+   1.488191;2.608124;-2.345014;,
+   1.182548;2.608124;-2.513042;,
+   0.858255;2.608124;-2.641439;,
+   0.520428;2.608124;-2.728178;,
+   0.174393;2.608124;-2.771892;,
+   -0.174393;2.608124;-2.771892;,
+   -0.520428;2.608124;-2.728178;,
+   -0.858255;2.608124;-2.641438;,
+   -1.182548;2.608124;-2.513042;,
+   -1.488191;2.608124;-2.345013;,
+   -1.770364;2.608124;-2.140002;,
+   -2.024617;2.608124;-1.901242;,
+   -2.246942;2.608124;-1.632499;,
+   -2.433830;2.608124;-1.338009;,
+   -2.582335;2.608124;-1.022419;,
+   -2.690116;2.608124;-0.690704;,
+   -2.755472;2.608124;-0.348097;,
+   -2.777372;2.608124;0.000000;,
+   -2.755472;2.608124;0.348097;,
+   -2.690116;2.608124;0.690704;,
+   -2.582335;2.608124;1.022419;,
+   -2.433830;2.608124;1.338009;,
+   -2.246941;2.608124;1.632498;,
+   -2.024617;2.608124;1.901242;,
+   -1.770363;2.608124;2.140002;,
+   -1.488190;2.608124;2.345013;,
+   -1.182547;2.608124;2.513041;,
+   -0.858255;2.608124;2.641438;,
+   -0.520427;2.608124;2.728177;,
+   -0.174392;2.608124;2.771891;,
+   0.174393;2.608124;2.771891;,
+   0.520428;2.608124;2.728177;,
+   0.858255;2.608124;2.641437;,
+   1.182547;2.608124;2.513041;,
+   1.488190;2.608124;2.345012;,
+   1.770363;2.608124;2.140001;,
+   2.024616;2.608124;1.901241;,
+   2.246941;2.608124;1.632498;,
+   2.433829;2.608124;1.338009;,
+   2.582334;2.608124;1.022418;,
+   2.690115;2.608124;0.690704;,
+   2.755471;2.608124;0.348097;,
+   2.777371;2.608124;0.000000;,
+   2.587561;2.777370;-0.326885;,
+   2.526188;2.777370;-0.648615;,
+   2.424975;2.777370;-0.960115;,
+   2.285519;2.777370;-1.256475;,
+   2.110019;2.777370;-1.533018;,
+   1.901243;2.777370;-1.785386;,
+   1.662483;2.777370;-2.009596;,
+   1.397504;2.777370;-2.202114;,
+   1.110486;2.777370;-2.359904;,
+   0.805955;2.777370;-2.480476;,
+   0.488714;2.777370;-2.561929;,
+   0.163766;2.777370;-2.602980;,
+   -0.163766;2.777370;-2.602980;,
+   -0.488714;2.777370;-2.561929;,
+   -0.805955;2.777370;-2.480476;,
+   -1.110486;2.777370;-2.359903;,
+   -1.397504;2.777370;-2.202114;,
+   -1.662482;2.777370;-2.009596;,
+   -1.901242;2.777370;-1.785385;,
+   -2.110018;2.777370;-1.533018;,
+   -2.285518;2.777370;-1.256474;,
+   -2.424974;2.777370;-0.960115;,
+   -2.526187;2.777370;-0.648614;,
+   -2.587560;2.777370;-0.326885;,
+   -2.608126;2.777370;0.000000;,
+   -2.587560;2.777370;0.326885;,
+   -2.526187;2.777370;0.648615;,
+   -2.424974;2.777370;0.960115;,
+   -2.285518;2.777370;1.256474;,
+   -2.110018;2.777370;1.533018;,
+   -1.901242;2.777370;1.785385;,
+   -1.662482;2.777370;2.009595;,
+   -1.397503;2.777370;2.202113;,
+   -1.110486;2.777370;2.359903;,
+   -0.805955;2.777370;2.480475;,
+   -0.488714;2.777370;2.561928;,
+   -0.163765;2.777370;2.602979;,
+   0.163766;2.777370;2.602979;,
+   0.488714;2.777370;2.561928;,
+   0.805955;2.777370;2.480474;,
+   1.110486;2.777370;2.359902;,
+   1.397503;2.777370;2.202113;,
+   1.662482;2.777370;2.009595;,
+   1.901241;2.777370;1.785384;,
+   2.110018;2.777370;1.533017;,
+   2.285517;2.777370;1.256474;,
+   2.424973;2.777370;0.960115;,
+   2.526186;2.777370;0.648614;,
+   2.587559;2.777370;0.326885;,
+   2.608125;2.777370;0.000000;,
+   2.409438;2.935655;-0.304383;,
+   2.352290;2.935655;-0.603965;,
+   2.258044;2.935655;-0.894023;,
+   2.128188;2.935655;-1.169981;,
+   1.964769;2.935655;-1.427488;,
+   1.770364;2.935655;-1.662483;,
+   1.548040;2.935655;-1.871259;,
+   1.301302;2.935655;-2.050524;,
+   1.034042;2.935655;-2.197452;,
+   0.750475;2.935655;-2.309724;,
+   0.455072;2.935655;-2.385571;,
+   0.152492;2.935655;-2.423795;,
+   -0.152492;2.935655;-2.423795;,
+   -0.455072;2.935655;-2.385570;,
+   -0.750475;2.935655;-2.309724;,
+   -1.034042;2.935655;-2.197452;,
+   -1.301302;2.935655;-2.050524;,
+   -1.548040;2.935655;-1.871259;,
+   -1.770364;2.935655;-1.662482;,
+   -1.964768;2.935655;-1.427488;,
+   -2.128187;2.935655;-1.169981;,
+   -2.258043;2.935655;-0.894022;,
+   -2.352288;2.935655;-0.603965;,
+   -2.409437;2.935655;-0.304383;,
+   -2.428587;2.935655;0.000000;,
+   -2.409437;2.935655;0.304383;,
+   -2.352288;2.935655;0.603965;,
+   -2.258043;2.935655;0.894022;,
+   -2.128187;2.935655;1.169981;,
+   -1.964768;2.935655;1.427487;,
+   -1.770363;2.935655;1.662482;,
+   -1.548039;2.935655;1.871258;,
+   -1.301302;2.935655;2.050524;,
+   -1.034042;2.935655;2.197451;,
+   -0.750474;2.935655;2.309723;,
+   -0.455072;2.935655;2.385569;,
+   -0.152492;2.935655;2.423794;,
+   0.152492;2.935655;2.423794;,
+   0.455072;2.935655;2.385569;,
+   0.750475;2.935655;2.309723;,
+   1.034042;2.935655;2.197450;,
+   1.301302;2.935655;2.050523;,
+   1.548039;2.935655;1.871258;,
+   1.770363;2.935655;1.662482;,
+   1.964767;2.935655;1.427487;,
+   2.128186;2.935655;1.169980;,
+   2.258042;2.935655;0.894022;,
+   2.352288;2.935655;0.603965;,
+   2.409436;2.935655;0.304383;,
+   2.428586;2.935655;0.000000;,
+   2.221805;3.082355;-0.280679;,
+   2.169107;3.082355;-0.556932;,
+   2.082201;3.082355;-0.824402;,
+   1.962457;3.082355;-1.078870;,
+   1.811764;3.082355;-1.316324;,
+   1.632499;3.082355;-1.533018;,
+   1.427488;3.082355;-1.725536;,
+   1.199965;3.082355;-1.890842;,
+   0.953517;3.082355;-2.026327;,
+   0.692032;3.082355;-2.129856;,
+   0.419634;3.082355;-2.199796;,
+   0.140617;3.082355;-2.235044;,
+   -0.140617;3.082355;-2.235044;,
+   -0.419634;3.082355;-2.199796;,
+   -0.692032;3.082355;-2.129856;,
+   -0.953517;3.082355;-2.026327;,
+   -1.199964;3.082355;-1.890841;,
+   -1.427487;3.082355;-1.725536;,
+   -1.632498;3.082355;-1.533018;,
+   -1.811764;3.082355;-1.316323;,
+   -1.962456;3.082355;-1.078870;,
+   -2.082200;3.082355;-0.824401;,
+   -2.169106;3.082355;-0.556932;,
+   -2.221804;3.082355;-0.280679;,
+   -2.239463;3.082355;0.000000;,
+   -2.221804;3.082355;0.280679;,
+   -2.169106;3.082355;0.556932;,
+   -2.082200;3.082355;0.824401;,
+   -1.962456;3.082355;1.078869;,
+   -1.811763;3.082355;1.316323;,
+   -1.632498;3.082355;1.533018;,
+   -1.427487;3.082355;1.725536;,
+   -1.199964;3.082355;1.890841;,
+   -0.953517;3.082355;2.026326;,
+   -0.692032;3.082355;2.129855;,
+   -0.419633;3.082355;2.199795;,
+   -0.140617;3.082355;2.235043;,
+   0.140617;3.082355;2.235043;,
+   0.419634;3.082355;2.199795;,
+   0.692032;3.082355;2.129855;,
+   0.953517;3.082355;2.026326;,
+   1.199964;3.082355;1.890841;,
+   1.427487;3.082355;1.725535;,
+   1.632498;3.082355;1.533017;,
+   1.811763;3.082355;1.316323;,
+   1.962456;3.082355;1.078869;,
+   2.082199;3.082355;0.824401;,
+   2.169105;3.082355;0.556932;,
+   2.221803;3.082355;0.280679;,
+   2.239462;3.082355;0.000000;,
+   2.025404;3.216889;-0.255868;,
+   1.977365;3.216889;-0.507701;,
+   1.898141;3.216889;-0.751527;,
+   1.788982;3.216889;-0.983501;,
+   1.651610;3.216889;-1.199965;,
+   1.488191;3.216889;-1.397504;,
+   1.301302;3.216889;-1.573004;,
+   1.093892;3.216889;-1.723697;,
+   0.869229;3.216889;-1.847206;,
+   0.630859;3.216889;-1.941584;,
+   0.382539;3.216889;-2.005341;,
+   0.128187;3.216889;-2.037473;,
+   -0.128187;3.216889;-2.037473;,
+   -0.382539;3.216889;-2.005341;,
+   -0.630859;3.216889;-1.941584;,
+   -0.869229;3.216889;-1.847206;,
+   -1.093891;3.216889;-1.723697;,
+   -1.301302;3.216889;-1.573004;,
+   -1.488191;3.216889;-1.397504;,
+   -1.651609;3.216889;-1.199964;,
+   -1.788981;3.216889;-0.983501;,
+   -1.898140;3.216889;-0.751527;,
+   -1.977364;3.216889;-0.507701;,
+   -2.025403;3.216889;-0.255868;,
+   -2.041501;3.216889;0.000000;,
+   -2.025403;3.216889;0.255868;,
+   -1.977364;3.216889;0.507701;,
+   -1.898140;3.216889;0.751527;,
+   -1.788981;3.216889;0.983501;,
+   -1.651609;3.216889;1.199964;,
+   -1.488190;3.216889;1.397504;,
+   -1.301302;3.216889;1.573004;,
+   -1.093891;3.216889;1.723696;,
+   -0.869229;3.216889;1.847205;,
+   -0.630858;3.216889;1.941583;,
+   -0.382539;3.216889;2.005340;,
+   -0.128187;3.216889;2.037472;,
+   0.128187;3.216889;2.037472;,
+   0.382539;3.216889;2.005340;,
+   0.630858;3.216889;1.941582;,
+   0.869229;3.216889;1.847205;,
+   1.093891;3.216889;1.723696;,
+   1.301301;3.216889;1.573003;,
+   1.488190;3.216889;1.397503;,
+   1.651609;3.216889;1.199964;,
+   1.788981;3.216889;0.983500;,
+   1.898139;3.216889;0.751526;,
+   1.977363;3.216889;0.507701;,
+   2.025403;3.216889;0.255868;,
+   2.041500;3.216889;0.000000;,
+   1.821010;3.338728;-0.230047;,
+   1.777818;3.338728;-0.456466;,
+   1.706589;3.338728;-0.675686;,
+   1.608446;3.338728;-0.884251;,
+   1.484937;3.338728;-1.078870;,
+   1.338010;3.338728;-1.256475;,
+   1.169981;3.338728;-1.414264;,
+   0.983501;3.338728;-1.549749;,
+   0.781511;3.338728;-1.660794;,
+   0.567195;3.338728;-1.745648;,
+   0.343935;3.338728;-1.802971;,
+   0.115251;3.338728;-1.831861;,
+   -0.115251;3.338728;-1.831861;,
+   -0.343935;3.338728;-1.802971;,
+   -0.567195;3.338728;-1.745648;,
+   -0.781510;3.338728;-1.660794;,
+   -0.983501;3.338728;-1.549749;,
+   -1.169981;3.338728;-1.414264;,
+   -1.338009;3.338728;-1.256474;,
+   -1.484936;3.338728;-1.078869;,
+   -1.608446;3.338728;-0.884250;,
+   -1.706588;3.338728;-0.675686;,
+   -1.777817;3.338728;-0.456466;,
+   -1.821009;3.338728;-0.230047;,
+   -1.835482;3.338728;0.000000;,
+   -1.821009;3.338728;0.230047;,
+   -1.777817;3.338728;0.456466;,
+   -1.706588;3.338728;0.675686;,
+   -1.608445;3.338728;0.884250;,
+   -1.484936;3.338728;1.078869;,
+   -1.338009;3.338728;1.256474;,
+   -1.169980;3.338728;1.414263;,
+   -0.983500;3.338728;1.549749;,
+   -0.781510;3.338728;1.660794;,
+   -0.567195;3.338728;1.745647;,
+   -0.343935;3.338728;1.802971;,
+   -0.115251;3.338728;1.831860;,
+   0.115251;3.338728;1.831860;,
+   0.343935;3.338728;1.802970;,
+   0.567195;3.338728;1.745647;,
+   0.781510;3.338728;1.660794;,
+   0.983500;3.338728;1.549749;,
+   1.169980;3.338728;1.414263;,
+   1.338009;3.338728;1.256474;,
+   1.484936;3.338728;1.078869;,
+   1.608445;3.338728;0.884250;,
+   1.706588;3.338728;0.675686;,
+   1.777817;3.338728;0.456466;,
+   1.821008;3.338728;0.230047;,
+   1.835482;3.338728;0.000000;,
+   1.609429;3.447391;-0.203318;,
+   1.571256;3.447391;-0.403430;,
+   1.508303;3.447391;-0.597179;,
+   1.421563;3.447391;-0.781511;,
+   1.312404;3.447391;-0.953517;,
+   1.182548;3.447391;-1.110486;,
+   1.034042;3.447391;-1.249942;,
+   0.869229;3.447391;-1.369686;,
+   0.690708;3.447391;-1.467829;,
+   0.501294;3.447391;-1.542823;,
+   0.303974;3.447391;-1.593486;,
+   0.101860;3.447391;-1.619019;,
+   -0.101860;3.447391;-1.619019;,
+   -0.303974;3.447391;-1.593486;,
+   -0.501294;3.447391;-1.542823;,
+   -0.690708;3.447391;-1.467829;,
+   -0.869229;3.447391;-1.369686;,
+   -1.034042;3.447391;-1.249942;,
+   -1.182547;3.447391;-1.110486;,
+   -1.312403;3.447391;-0.953517;,
+   -1.421562;3.447391;-0.781510;,
+   -1.508302;3.447391;-0.597179;,
+   -1.571255;3.447391;-0.403430;,
+   -1.609428;3.447391;-0.203318;,
+   -1.622220;3.447391;0.000000;,
+   -1.609428;3.447391;0.203318;,
+   -1.571255;3.447391;0.403430;,
+   -1.508302;3.447391;0.597179;,
+   -1.421562;3.447391;0.781510;,
+   -1.312403;3.447391;0.953517;,
+   -1.182547;3.447391;1.110486;,
+   -1.034042;3.447391;1.249942;,
+   -0.869229;3.447391;1.369685;,
+   -0.690707;3.447391;1.467828;,
+   -0.501293;3.447391;1.542822;,
+   -0.303974;3.447391;1.593485;,
+   -0.101860;3.447391;1.619018;,
+   0.101860;3.447391;1.619018;,
+   0.303974;3.447391;1.593485;,
+   0.501293;3.447391;1.542822;,
+   0.690707;3.447391;1.467828;,
+   0.869229;3.447391;1.369685;,
+   1.034042;3.447391;1.249941;,
+   1.182547;3.447391;1.110486;,
+   1.312403;3.447391;0.953517;,
+   1.421562;3.447391;0.781510;,
+   1.508301;3.447391;0.597179;,
+   1.571254;3.447391;0.403429;,
+   1.609427;3.447391;0.203318;,
+   1.622219;3.447391;0.000000;,
+   1.391496;3.542448;-0.175787;,
+   1.358492;3.542448;-0.348801;,
+   1.304063;3.542448;-0.516315;,
+   1.229069;3.542448;-0.675686;,
+   1.134691;3.542448;-0.824401;,
+   1.022419;3.542448;-0.960115;,
+   0.894023;3.542448;-1.080688;,
+   0.751527;3.542448;-1.184217;,
+   0.597179;3.542448;-1.269070;,
+   0.433413;3.542448;-1.333910;,
+   0.262813;3.542448;-1.377712;,
+   0.088067;3.542448;-1.399788;,
+   -0.088067;3.542448;-1.399788;,
+   -0.262813;3.542448;-1.377712;,
+   -0.433413;3.542448;-1.333910;,
+   -0.597179;3.542448;-1.269070;,
+   -0.751527;3.542448;-1.184217;,
+   -0.894022;3.542448;-1.080688;,
+   -1.022419;3.542448;-0.960115;,
+   -1.134691;3.542448;-0.824401;,
+   -1.229069;3.542448;-0.675686;,
+   -1.304063;3.542448;-0.516315;,
+   -1.358491;3.542448;-0.348801;,
+   -1.391496;3.542448;-0.175787;,
+   -1.402555;3.542448;0.000000;,
+   -1.391496;3.542448;0.175787;,
+   -1.358491;3.542448;0.348801;,
+   -1.304063;3.542448;0.516315;,
+   -1.229068;3.542448;0.675686;,
+   -1.134691;3.542448;0.824401;,
+   -1.022419;3.542448;0.960115;,
+   -0.894022;3.542448;1.080687;,
+   -0.751526;3.542448;1.184216;,
+   -0.597179;3.542448;1.269070;,
+   -0.433413;3.542448;1.333909;,
+   -0.262812;3.542448;1.377712;,
+   -0.088067;3.542448;1.399787;,
+   0.088067;3.542448;1.399787;,
+   0.262813;3.542448;1.377712;,
+   0.433413;3.542448;1.333909;,
+   0.597179;3.542448;1.269069;,
+   0.751526;3.542448;1.184216;,
+   0.894022;3.542448;1.080687;,
+   1.022418;3.542448;0.960115;,
+   1.134691;3.542448;0.824401;,
+   1.229068;3.542448;0.675686;,
+   1.304062;3.542448;0.516315;,
+   1.358491;3.542448;0.348801;,
+   1.391495;3.542448;0.175787;,
+   1.402555;3.542448;0.000000;,
+   1.168072;3.623525;-0.147562;,
+   1.140367;3.623525;-0.292796;,
+   1.094678;3.623525;-0.433414;,
+   1.031725;3.623525;-0.567195;,
+   0.952501;3.623525;-0.692032;,
+   0.858256;3.623525;-0.805955;,
+   0.750475;3.623525;-0.907168;,
+   0.630859;3.623525;-0.994074;,
+   0.501294;3.623525;-1.065303;,
+   0.363823;3.623525;-1.119732;,
+   0.220614;3.623525;-1.156501;,
+   0.073927;3.623525;-1.175032;,
+   -0.073927;3.623525;-1.175032;,
+   -0.220614;3.623525;-1.156501;,
+   -0.363823;3.623525;-1.119732;,
+   -0.501294;3.623525;-1.065303;,
+   -0.630859;3.623525;-0.994074;,
+   -0.750475;3.623525;-0.907168;,
+   -0.858255;3.623525;-0.805955;,
+   -0.952501;3.623525;-0.692032;,
+   -1.031724;3.623525;-0.567195;,
+   -1.094677;3.623525;-0.433413;,
+   -1.140367;3.623525;-0.292796;,
+   -1.168072;3.623525;-0.147562;,
+   -1.177355;3.623525;0.000000;,
+   -1.168072;3.623525;0.147562;,
+   -1.140367;3.623525;0.292796;,
+   -1.094677;3.623525;0.433413;,
+   -1.031724;3.623525;0.567195;,
+   -0.952500;3.623525;0.692032;,
+   -0.858255;3.623525;0.805955;,
+   -0.750474;3.623525;0.907168;,
+   -0.630858;3.623525;0.994074;,
+   -0.501293;3.623525;1.065303;,
+   -0.363823;3.623525;1.119731;,
+   -0.220614;3.623525;1.156501;,
+   -0.073927;3.623525;1.175032;,
+   0.073927;3.623525;1.175032;,
+   0.220614;3.623525;1.156501;,
+   0.363823;3.623525;1.119731;,
+   0.501293;3.623525;1.065303;,
+   0.630858;3.623525;0.994074;,
+   0.750474;3.623525;0.907168;,
+   0.858255;3.623525;0.805955;,
+   0.952500;3.623525;0.692032;,
+   1.031724;3.623525;0.567195;,
+   1.094677;3.623525;0.433413;,
+   1.140366;3.623525;0.292796;,
+   1.168071;3.623525;0.147562;,
+   1.177355;3.623525;0.000000;,
+   0.940038;3.690302;-0.118754;,
+   0.917742;3.690302;-0.235636;,
+   0.880972;3.690302;-0.348801;,
+   0.830309;3.690302;-0.456466;,
+   0.766551;3.690302;-0.556932;,
+   0.690705;3.690302;-0.648615;,
+   0.603965;3.690302;-0.730068;,
+   0.507701;3.690302;-0.800009;,
+   0.403430;3.690302;-0.857332;,
+   0.292796;3.690302;-0.901135;,
+   0.177546;3.690302;-0.930726;,
+   0.059495;3.690302;-0.945639;,
+   -0.059495;3.690302;-0.945639;,
+   -0.177546;3.690302;-0.930726;,
+   -0.292796;3.690302;-0.901135;,
+   -0.403430;3.690302;-0.857332;,
+   -0.507701;3.690302;-0.800008;,
+   -0.603965;3.690302;-0.730068;,
+   -0.690704;3.690302;-0.648615;,
+   -0.766551;3.690302;-0.556932;,
+   -0.830308;3.690302;-0.456466;,
+   -0.880972;3.690302;-0.348801;,
+   -0.917741;3.690302;-0.235636;,
+   -0.940038;3.690302;-0.118754;,
+   -0.947509;3.690302;0.000000;,
+   -0.940038;3.690302;0.118754;,
+   -0.917741;3.690302;0.235636;,
+   -0.880971;3.690302;0.348801;,
+   -0.830308;3.690302;0.456466;,
+   -0.766551;3.690302;0.556932;,
+   -0.690704;3.690302;0.648614;,
+   -0.603965;3.690302;0.730068;,
+   -0.507701;3.690302;0.800008;,
+   -0.403430;3.690302;0.857332;,
+   -0.292796;3.690302;0.901134;,
+   -0.177545;3.690302;0.930726;,
+   -0.059495;3.690302;0.945639;,
+   0.059495;3.690302;0.945639;,
+   0.177545;3.690302;0.930726;,
+   0.292796;3.690302;0.901134;,
+   0.403430;3.690302;0.857331;,
+   0.507701;3.690302;0.800008;,
+   0.603965;3.690302;0.730068;,
+   0.690704;3.690302;0.648614;,
+   0.766551;3.690302;0.556932;,
+   0.830308;3.690302;0.456466;,
+   0.880971;3.690302;0.348801;,
+   0.917741;3.690302;0.235636;,
+   0.940037;3.690302;0.118754;,
+   0.947509;3.690302;0.000000;,
+   0.708294;3.742514;-0.089478;,
+   0.691494;3.742514;-0.177546;,
+   0.663789;3.742514;-0.262813;,
+   0.625616;3.742514;-0.343935;,
+   0.577576;3.742514;-0.419634;,
+   0.520428;3.742514;-0.488714;,
+   0.455072;3.742514;-0.550087;,
+   0.382539;3.742514;-0.602785;,
+   0.303974;3.742514;-0.645977;,
+   0.220614;3.742514;-0.678981;,
+   0.133776;3.742514;-0.701278;,
+   0.044828;3.742514;-0.712515;,
+   -0.044828;3.742514;-0.712515;,
+   -0.133776;3.742514;-0.701278;,
+   -0.220614;3.742514;-0.678981;,
+   -0.303974;3.742514;-0.645977;,
+   -0.382539;3.742514;-0.602785;,
+   -0.455072;3.742514;-0.550087;,
+   -0.520428;3.742514;-0.488714;,
+   -0.577576;3.742514;-0.419634;,
+   -0.625616;3.742514;-0.343935;,
+   -0.663789;3.742514;-0.262813;,
+   -0.691494;3.742514;-0.177545;,
+   -0.708294;3.742514;-0.089478;,
+   -0.713923;3.742514;0.000000;,
+   -0.708294;3.742514;0.089478;,
+   -0.691494;3.742514;0.177545;,
+   -0.663789;3.742514;0.262813;,
+   -0.625616;3.742514;0.343935;,
+   -0.577576;3.742514;0.419633;,
+   -0.520428;3.742514;0.488714;,
+   -0.455072;3.742514;0.550087;,
+   -0.382539;3.742514;0.602785;,
+   -0.303974;3.742514;0.645977;,
+   -0.220614;3.742514;0.678981;,
+   -0.133776;3.742514;0.701277;,
+   -0.044828;3.742514;0.712514;,
+   0.044828;3.742514;0.712514;,
+   0.133776;3.742514;0.701277;,
+   0.220614;3.742514;0.678981;,
+   0.303974;3.742514;0.645977;,
+   0.382539;3.742514;0.602785;,
+   0.455072;3.742514;0.550087;,
+   0.520427;3.742514;0.488714;,
+   0.577576;3.742514;0.419633;,
+   0.625615;3.742514;0.343935;,
+   0.663789;3.742514;0.262813;,
+   0.691494;3.742514;0.177545;,
+   0.708293;3.742514;0.089478;,
+   0.713923;3.742514;0.000000;,
+   0.473755;3.779957;-0.059849;,
+   0.462518;3.779957;-0.118754;,
+   0.443987;3.779957;-0.175787;,
+   0.418454;3.779957;-0.230047;,
+   0.386322;3.779957;-0.280679;,
+   0.348097;3.779957;-0.326885;,
+   0.304383;3.779957;-0.367935;,
+   0.255868;3.779957;-0.403183;,
+   0.203318;3.779957;-0.432073;,
+   0.147562;3.779957;-0.454148;,
+   0.089478;3.779957;-0.469062;,
+   0.029984;3.779957;-0.476578;,
+   -0.029984;3.779957;-0.476578;,
+   -0.089478;3.779957;-0.469062;,
+   -0.147562;3.779957;-0.454148;,
+   -0.203318;3.779957;-0.432073;,
+   -0.255868;3.779957;-0.403183;,
+   -0.304383;3.779957;-0.367935;,
+   -0.348097;3.779957;-0.326885;,
+   -0.386322;3.779957;-0.280679;,
+   -0.418454;3.779957;-0.230047;,
+   -0.443987;3.779957;-0.175787;,
+   -0.462518;3.779957;-0.118754;,
+   -0.473754;3.779957;-0.059849;,
+   -0.477520;3.779957;0.000000;,
+   -0.473754;3.779957;0.059849;,
+   -0.462518;3.779957;0.118754;,
+   -0.443987;3.779957;0.175787;,
+   -0.418454;3.779957;0.230047;,
+   -0.386322;3.779957;0.280679;,
+   -0.348097;3.779957;0.326885;,
+   -0.304383;3.779957;0.367935;,
+   -0.255868;3.779957;0.403183;,
+   -0.203318;3.779957;0.432073;,
+   -0.147562;3.779957;0.454148;,
+   -0.089478;3.779957;0.469062;,
+   -0.029984;3.779957;0.476577;,
+   0.029984;3.779957;0.476577;,
+   0.089478;3.779957;0.469062;,
+   0.147562;3.779957;0.454148;,
+   0.203318;3.779957;0.432073;,
+   0.255868;3.779957;0.403183;,
+   0.304383;3.779957;0.367935;,
+   0.348097;3.779957;0.326885;,
+   0.386322;3.779957;0.280679;,
+   0.418454;3.779957;0.230047;,
+   0.443987;3.779957;0.175787;,
+   0.462517;3.779957;0.118754;,
+   0.473754;3.779957;0.059849;,
+   0.477520;3.779957;0.000000;,
+   0.237346;3.802482;-0.029984;,
+   0.231716;3.802482;-0.059495;,
+   0.222432;3.802482;-0.088067;,
+   0.209641;3.802482;-0.115251;,
+   0.193543;3.802482;-0.140617;,
+   0.174393;3.802482;-0.163766;,
+   0.152492;3.802482;-0.184331;,
+   0.128187;3.802482;-0.201990;,
+   0.101860;3.802482;-0.216464;,
+   0.073927;3.802482;-0.227523;,
+   0.044828;3.802482;-0.234995;,
+   0.015022;3.802482;-0.238760;,
+   -0.015022;3.802482;-0.238760;,
+   -0.044828;3.802482;-0.234995;,
+   -0.073927;3.802482;-0.227523;,
+   -0.101860;3.802482;-0.216464;,
+   -0.128187;3.802482;-0.201990;,
+   -0.152492;3.802482;-0.184331;,
+   -0.174393;3.802482;-0.163766;,
+   -0.193543;3.802482;-0.140617;,
+   -0.209641;3.802482;-0.115251;,
+   -0.222432;3.802482;-0.088067;,
+   -0.231716;3.802482;-0.059495;,
+   -0.237346;3.802482;-0.029984;,
+   -0.239232;3.802482;0.000000;,
+   -0.237346;3.802482;0.029984;,
+   -0.231716;3.802482;0.059495;,
+   -0.222432;3.802482;0.088067;,
+   -0.209641;3.802482;0.115251;,
+   -0.193543;3.802482;0.140617;,
+   -0.174393;3.802482;0.163766;,
+   -0.152492;3.802482;0.184331;,
+   -0.128187;3.802482;0.201990;,
+   -0.101860;3.802482;0.216464;,
+   -0.073927;3.802482;0.227523;,
+   -0.044828;3.802482;0.234994;,
+   -0.015021;3.802482;0.238760;,
+   0.015022;3.802482;0.238760;,
+   0.044828;3.802482;0.234994;,
+   0.073927;3.802482;0.227523;,
+   0.101860;3.802482;0.216464;,
+   0.128187;3.802482;0.201990;,
+   0.152492;3.802482;0.184331;,
+   0.174393;3.802482;0.163766;,
+   0.193543;3.802482;0.140617;,
+   0.209641;3.802482;0.115251;,
+   0.222432;3.802482;0.088067;,
+   0.231716;3.802482;0.059495;,
+   0.237345;3.802482;0.029984;,
+   0.239232;3.802482;0.000000;,
+   0.000000;-3.810000;0.000000;,
+   0.000000;3.810000;0.000000;,
+   0.473755;-3.779957;-0.059849;,
+   0.237346;-3.802482;-0.029984;,
+   0.708294;-3.742514;-0.089478;,
+   0.940038;-3.690302;-0.118754;,
+   1.168072;-3.623525;-0.147562;,
+   1.391496;-3.542448;-0.175787;,
+   1.609429;-3.447391;-0.203318;,
+   1.821010;-3.338728;-0.230047;,
+   2.025404;-3.216889;-0.255868;,
+   2.221805;-3.082355;-0.280679;,
+   2.409438;-2.935655;-0.304383;,
+   2.587561;-2.777370;-0.326885;,
+   2.755473;-2.608124;-0.348097;,
+   2.912510;-2.428585;-0.367935;,
+   3.058053;-2.239461;-0.386322;,
+   3.191527;-2.041500;-0.403183;,
+   3.312405;-1.835481;-0.418454;,
+   3.420211;-1.622218;-0.432073;,
+   3.514519;-1.402554;-0.443987;,
+   3.594957;-1.177354;-0.454148;,
+   3.661206;-0.947507;-0.462518;,
+   3.713007;-0.713922;-0.469062;,
+   3.750155;-0.477518;-0.473754;,
+   3.772502;-0.239230;-0.476578;,
+   3.779961;0.000000;-0.477520;,
+   3.772502;0.239230;-0.476578;,
+   3.750155;0.477518;-0.473754;,
+   3.713007;0.713922;-0.469062;,
+   3.661206;0.947507;-0.462518;,
+   3.594957;1.177354;-0.454148;,
+   3.514519;1.402554;-0.443987;,
+   3.420211;1.622218;-0.432073;,
+   3.312405;1.835481;-0.418454;,
+   3.191527;2.041500;-0.403183;,
+   3.058053;2.239461;-0.386322;,
+   2.912510;2.428585;-0.367935;,
+   2.755473;2.608124;-0.348097;,
+   2.587561;2.777370;-0.326885;,
+   2.409438;2.935655;-0.304383;,
+   2.221805;3.082355;-0.280679;,
+   2.025404;3.216889;-0.255868;,
+   1.821010;3.338728;-0.230047;,
+   1.609429;3.447391;-0.203318;,
+   1.391496;3.542448;-0.175787;,
+   1.168072;3.623525;-0.147562;,
+   0.940038;3.690302;-0.118754;,
+   0.708294;3.742514;-0.089478;,
+   0.473755;3.779957;-0.059849;,
+   0.237346;3.802482;-0.029984;;
+   4900;
+   3;51,50,1;,
+   3;0,1,50;,
+   3;52,51,2;,
+   3;1,2,51;,
+   3;53,52,3;,
+   3;2,3,52;,
+   3;54,53,4;,
+   3;3,4,53;,
+   3;55,54,5;,
+   3;4,5,54;,
+   3;56,55,6;,
+   3;5,6,55;,
+   3;57,56,7;,
+   3;6,7,56;,
+   3;58,57,8;,
+   3;7,8,57;,
+   3;59,58,9;,
+   3;8,9,58;,
+   3;60,59,10;,
+   3;9,10,59;,
+   3;61,60,11;,
+   3;10,11,60;,
+   3;62,61,12;,
+   3;11,12,61;,
+   3;63,62,13;,
+   3;12,13,62;,
+   3;64,63,14;,
+   3;13,14,63;,
+   3;65,64,15;,
+   3;14,15,64;,
+   3;66,65,16;,
+   3;15,16,65;,
+   3;67,66,17;,
+   3;16,17,66;,
+   3;68,67,18;,
+   3;17,18,67;,
+   3;69,68,19;,
+   3;18,19,68;,
+   3;70,69,20;,
+   3;19,20,69;,
+   3;71,70,21;,
+   3;20,21,70;,
+   3;72,71,22;,
+   3;21,22,71;,
+   3;73,72,23;,
+   3;22,23,72;,
+   3;74,73,24;,
+   3;23,24,73;,
+   3;75,74,25;,
+   3;24,25,74;,
+   3;76,75,26;,
+   3;25,26,75;,
+   3;77,76,27;,
+   3;26,27,76;,
+   3;78,77,28;,
+   3;27,28,77;,
+   3;79,78,29;,
+   3;28,29,78;,
+   3;80,79,30;,
+   3;29,30,79;,
+   3;81,80,31;,
+   3;30,31,80;,
+   3;82,81,32;,
+   3;31,32,81;,
+   3;83,82,33;,
+   3;32,33,82;,
+   3;84,83,34;,
+   3;33,34,83;,
+   3;85,84,35;,
+   3;34,35,84;,
+   3;86,85,36;,
+   3;35,36,85;,
+   3;87,86,37;,
+   3;36,37,86;,
+   3;88,87,38;,
+   3;37,38,87;,
+   3;89,88,39;,
+   3;38,39,88;,
+   3;90,89,40;,
+   3;39,40,89;,
+   3;91,90,41;,
+   3;40,41,90;,
+   3;92,91,42;,
+   3;41,42,91;,
+   3;93,92,43;,
+   3;42,43,92;,
+   3;94,93,44;,
+   3;43,44,93;,
+   3;95,94,45;,
+   3;44,45,94;,
+   3;96,95,46;,
+   3;45,46,95;,
+   3;97,96,47;,
+   3;46,47,96;,
+   3;98,97,48;,
+   3;47,48,97;,
+   3;99,98,49;,
+   3;48,49,98;,
+   3;2452,99,2453;,
+   3;49,2453,99;,
+   3;101,100,51;,
+   3;50,51,100;,
+   3;102,101,52;,
+   3;51,52,101;,
+   3;103,102,53;,
+   3;52,53,102;,
+   3;104,103,54;,
+   3;53,54,103;,
+   3;105,104,55;,
+   3;54,55,104;,
+   3;106,105,56;,
+   3;55,56,105;,
+   3;107,106,57;,
+   3;56,57,106;,
+   3;108,107,58;,
+   3;57,58,107;,
+   3;109,108,59;,
+   3;58,59,108;,
+   3;110,109,60;,
+   3;59,60,109;,
+   3;111,110,61;,
+   3;60,61,110;,
+   3;112,111,62;,
+   3;61,62,111;,
+   3;113,112,63;,
+   3;62,63,112;,
+   3;114,113,64;,
+   3;63,64,113;,
+   3;115,114,65;,
+   3;64,65,114;,
+   3;116,115,66;,
+   3;65,66,115;,
+   3;117,116,67;,
+   3;66,67,116;,
+   3;118,117,68;,
+   3;67,68,117;,
+   3;119,118,69;,
+   3;68,69,118;,
+   3;120,119,70;,
+   3;69,70,119;,
+   3;121,120,71;,
+   3;70,71,120;,
+   3;122,121,72;,
+   3;71,72,121;,
+   3;123,122,73;,
+   3;72,73,122;,
+   3;124,123,74;,
+   3;73,74,123;,
+   3;125,124,75;,
+   3;74,75,124;,
+   3;126,125,76;,
+   3;75,76,125;,
+   3;127,126,77;,
+   3;76,77,126;,
+   3;128,127,78;,
+   3;77,78,127;,
+   3;129,128,79;,
+   3;78,79,128;,
+   3;130,129,80;,
+   3;79,80,129;,
+   3;131,130,81;,
+   3;80,81,130;,
+   3;132,131,82;,
+   3;81,82,131;,
+   3;133,132,83;,
+   3;82,83,132;,
+   3;134,133,84;,
+   3;83,84,133;,
+   3;135,134,85;,
+   3;84,85,134;,
+   3;136,135,86;,
+   3;85,86,135;,
+   3;137,136,87;,
+   3;86,87,136;,
+   3;138,137,88;,
+   3;87,88,137;,
+   3;139,138,89;,
+   3;88,89,138;,
+   3;140,139,90;,
+   3;89,90,139;,
+   3;141,140,91;,
+   3;90,91,140;,
+   3;142,141,92;,
+   3;91,92,141;,
+   3;143,142,93;,
+   3;92,93,142;,
+   3;144,143,94;,
+   3;93,94,143;,
+   3;145,144,95;,
+   3;94,95,144;,
+   3;146,145,96;,
+   3;95,96,145;,
+   3;147,146,97;,
+   3;96,97,146;,
+   3;148,147,98;,
+   3;97,98,147;,
+   3;149,148,99;,
+   3;98,99,148;,
+   3;2454,149,2452;,
+   3;99,2452,149;,
+   3;151,150,101;,
+   3;100,101,150;,
+   3;152,151,102;,
+   3;101,102,151;,
+   3;153,152,103;,
+   3;102,103,152;,
+   3;154,153,104;,
+   3;103,104,153;,
+   3;155,154,105;,
+   3;104,105,154;,
+   3;156,155,106;,
+   3;105,106,155;,
+   3;157,156,107;,
+   3;106,107,156;,
+   3;158,157,108;,
+   3;107,108,157;,
+   3;159,158,109;,
+   3;108,109,158;,
+   3;160,159,110;,
+   3;109,110,159;,
+   3;161,160,111;,
+   3;110,111,160;,
+   3;162,161,112;,
+   3;111,112,161;,
+   3;163,162,113;,
+   3;112,113,162;,
+   3;164,163,114;,
+   3;113,114,163;,
+   3;165,164,115;,
+   3;114,115,164;,
+   3;166,165,116;,
+   3;115,116,165;,
+   3;167,166,117;,
+   3;116,117,166;,
+   3;168,167,118;,
+   3;117,118,167;,
+   3;169,168,119;,
+   3;118,119,168;,
+   3;170,169,120;,
+   3;119,120,169;,
+   3;171,170,121;,
+   3;120,121,170;,
+   3;172,171,122;,
+   3;121,122,171;,
+   3;173,172,123;,
+   3;122,123,172;,
+   3;174,173,124;,
+   3;123,124,173;,
+   3;175,174,125;,
+   3;124,125,174;,
+   3;176,175,126;,
+   3;125,126,175;,
+   3;177,176,127;,
+   3;126,127,176;,
+   3;178,177,128;,
+   3;127,128,177;,
+   3;179,178,129;,
+   3;128,129,178;,
+   3;180,179,130;,
+   3;129,130,179;,
+   3;181,180,131;,
+   3;130,131,180;,
+   3;182,181,132;,
+   3;131,132,181;,
+   3;183,182,133;,
+   3;132,133,182;,
+   3;184,183,134;,
+   3;133,134,183;,
+   3;185,184,135;,
+   3;134,135,184;,
+   3;186,185,136;,
+   3;135,136,185;,
+   3;187,186,137;,
+   3;136,137,186;,
+   3;188,187,138;,
+   3;137,138,187;,
+   3;189,188,139;,
+   3;138,139,188;,
+   3;190,189,140;,
+   3;139,140,189;,
+   3;191,190,141;,
+   3;140,141,190;,
+   3;192,191,142;,
+   3;141,142,191;,
+   3;193,192,143;,
+   3;142,143,192;,
+   3;194,193,144;,
+   3;143,144,193;,
+   3;195,194,145;,
+   3;144,145,194;,
+   3;196,195,146;,
+   3;145,146,195;,
+   3;197,196,147;,
+   3;146,147,196;,
+   3;198,197,148;,
+   3;147,148,197;,
+   3;199,198,149;,
+   3;148,149,198;,
+   3;2455,199,2454;,
+   3;149,2454,199;,
+   3;201,200,151;,
+   3;150,151,200;,
+   3;202,201,152;,
+   3;151,152,201;,
+   3;203,202,153;,
+   3;152,153,202;,
+   3;204,203,154;,
+   3;153,154,203;,
+   3;205,204,155;,
+   3;154,155,204;,
+   3;206,205,156;,
+   3;155,156,205;,
+   3;207,206,157;,
+   3;156,157,206;,
+   3;208,207,158;,
+   3;157,158,207;,
+   3;209,208,159;,
+   3;158,159,208;,
+   3;210,209,160;,
+   3;159,160,209;,
+   3;211,210,161;,
+   3;160,161,210;,
+   3;212,211,162;,
+   3;161,162,211;,
+   3;213,212,163;,
+   3;162,163,212;,
+   3;214,213,164;,
+   3;163,164,213;,
+   3;215,214,165;,
+   3;164,165,214;,
+   3;216,215,166;,
+   3;165,166,215;,
+   3;217,216,167;,
+   3;166,167,216;,
+   3;218,217,168;,
+   3;167,168,217;,
+   3;219,218,169;,
+   3;168,169,218;,
+   3;220,219,170;,
+   3;169,170,219;,
+   3;221,220,171;,
+   3;170,171,220;,
+   3;222,221,172;,
+   3;171,172,221;,
+   3;223,222,173;,
+   3;172,173,222;,
+   3;224,223,174;,
+   3;173,174,223;,
+   3;225,224,175;,
+   3;174,175,224;,
+   3;226,225,176;,
+   3;175,176,225;,
+   3;227,226,177;,
+   3;176,177,226;,
+   3;228,227,178;,
+   3;177,178,227;,
+   3;229,228,179;,
+   3;178,179,228;,
+   3;230,229,180;,
+   3;179,180,229;,
+   3;231,230,181;,
+   3;180,181,230;,
+   3;232,231,182;,
+   3;181,182,231;,
+   3;233,232,183;,
+   3;182,183,232;,
+   3;234,233,184;,
+   3;183,184,233;,
+   3;235,234,185;,
+   3;184,185,234;,
+   3;236,235,186;,
+   3;185,186,235;,
+   3;237,236,187;,
+   3;186,187,236;,
+   3;238,237,188;,
+   3;187,188,237;,
+   3;239,238,189;,
+   3;188,189,238;,
+   3;240,239,190;,
+   3;189,190,239;,
+   3;241,240,191;,
+   3;190,191,240;,
+   3;242,241,192;,
+   3;191,192,241;,
+   3;243,242,193;,
+   3;192,193,242;,
+   3;244,243,194;,
+   3;193,194,243;,
+   3;245,244,195;,
+   3;194,195,244;,
+   3;246,245,196;,
+   3;195,196,245;,
+   3;247,246,197;,
+   3;196,197,246;,
+   3;248,247,198;,
+   3;197,198,247;,
+   3;249,248,199;,
+   3;198,199,248;,
+   3;2456,249,2455;,
+   3;199,2455,249;,
+   3;251,250,201;,
+   3;200,201,250;,
+   3;252,251,202;,
+   3;201,202,251;,
+   3;253,252,203;,
+   3;202,203,252;,
+   3;254,253,204;,
+   3;203,204,253;,
+   3;255,254,205;,
+   3;204,205,254;,
+   3;256,255,206;,
+   3;205,206,255;,
+   3;257,256,207;,
+   3;206,207,256;,
+   3;258,257,208;,
+   3;207,208,257;,
+   3;259,258,209;,
+   3;208,209,258;,
+   3;260,259,210;,
+   3;209,210,259;,
+   3;261,260,211;,
+   3;210,211,260;,
+   3;262,261,212;,
+   3;211,212,261;,
+   3;263,262,213;,
+   3;212,213,262;,
+   3;264,263,214;,
+   3;213,214,263;,
+   3;265,264,215;,
+   3;214,215,264;,
+   3;266,265,216;,
+   3;215,216,265;,
+   3;267,266,217;,
+   3;216,217,266;,
+   3;268,267,218;,
+   3;217,218,267;,
+   3;269,268,219;,
+   3;218,219,268;,
+   3;270,269,220;,
+   3;219,220,269;,
+   3;271,270,221;,
+   3;220,221,270;,
+   3;272,271,222;,
+   3;221,222,271;,
+   3;273,272,223;,
+   3;222,223,272;,
+   3;274,273,224;,
+   3;223,224,273;,
+   3;275,274,225;,
+   3;224,225,274;,
+   3;276,275,226;,
+   3;225,226,275;,
+   3;277,276,227;,
+   3;226,227,276;,
+   3;278,277,228;,
+   3;227,228,277;,
+   3;279,278,229;,
+   3;228,229,278;,
+   3;280,279,230;,
+   3;229,230,279;,
+   3;281,280,231;,
+   3;230,231,280;,
+   3;282,281,232;,
+   3;231,232,281;,
+   3;283,282,233;,
+   3;232,233,282;,
+   3;284,283,234;,
+   3;233,234,283;,
+   3;285,284,235;,
+   3;234,235,284;,
+   3;286,285,236;,
+   3;235,236,285;,
+   3;287,286,237;,
+   3;236,237,286;,
+   3;288,287,238;,
+   3;237,238,287;,
+   3;289,288,239;,
+   3;238,239,288;,
+   3;290,289,240;,
+   3;239,240,289;,
+   3;291,290,241;,
+   3;240,241,290;,
+   3;292,291,242;,
+   3;241,242,291;,
+   3;293,292,243;,
+   3;242,243,292;,
+   3;294,293,244;,
+   3;243,244,293;,
+   3;295,294,245;,
+   3;244,245,294;,
+   3;296,295,246;,
+   3;245,246,295;,
+   3;297,296,247;,
+   3;246,247,296;,
+   3;298,297,248;,
+   3;247,248,297;,
+   3;299,298,249;,
+   3;248,249,298;,
+   3;2457,299,2456;,
+   3;249,2456,299;,
+   3;301,300,251;,
+   3;250,251,300;,
+   3;302,301,252;,
+   3;251,252,301;,
+   3;303,302,253;,
+   3;252,253,302;,
+   3;304,303,254;,
+   3;253,254,303;,
+   3;305,304,255;,
+   3;254,255,304;,
+   3;306,305,256;,
+   3;255,256,305;,
+   3;307,306,257;,
+   3;256,257,306;,
+   3;308,307,258;,
+   3;257,258,307;,
+   3;309,308,259;,
+   3;258,259,308;,
+   3;310,309,260;,
+   3;259,260,309;,
+   3;311,310,261;,
+   3;260,261,310;,
+   3;312,311,262;,
+   3;261,262,311;,
+   3;313,312,263;,
+   3;262,263,312;,
+   3;314,313,264;,
+   3;263,264,313;,
+   3;315,314,265;,
+   3;264,265,314;,
+   3;316,315,266;,
+   3;265,266,315;,
+   3;317,316,267;,
+   3;266,267,316;,
+   3;318,317,268;,
+   3;267,268,317;,
+   3;319,318,269;,
+   3;268,269,318;,
+   3;320,319,270;,
+   3;269,270,319;,
+   3;321,320,271;,
+   3;270,271,320;,
+   3;322,321,272;,
+   3;271,272,321;,
+   3;323,322,273;,
+   3;272,273,322;,
+   3;324,323,274;,
+   3;273,274,323;,
+   3;325,324,275;,
+   3;274,275,324;,
+   3;326,325,276;,
+   3;275,276,325;,
+   3;327,326,277;,
+   3;276,277,326;,
+   3;328,327,278;,
+   3;277,278,327;,
+   3;329,328,279;,
+   3;278,279,328;,
+   3;330,329,280;,
+   3;279,280,329;,
+   3;331,330,281;,
+   3;280,281,330;,
+   3;332,331,282;,
+   3;281,282,331;,
+   3;333,332,283;,
+   3;282,283,332;,
+   3;334,333,284;,
+   3;283,284,333;,
+   3;335,334,285;,
+   3;284,285,334;,
+   3;336,335,286;,
+   3;285,286,335;,
+   3;337,336,287;,
+   3;286,287,336;,
+   3;338,337,288;,
+   3;287,288,337;,
+   3;339,338,289;,
+   3;288,289,338;,
+   3;340,339,290;,
+   3;289,290,339;,
+   3;341,340,291;,
+   3;290,291,340;,
+   3;342,341,292;,
+   3;291,292,341;,
+   3;343,342,293;,
+   3;292,293,342;,
+   3;344,343,294;,
+   3;293,294,343;,
+   3;345,344,295;,
+   3;294,295,344;,
+   3;346,345,296;,
+   3;295,296,345;,
+   3;347,346,297;,
+   3;296,297,346;,
+   3;348,347,298;,
+   3;297,298,347;,
+   3;349,348,299;,
+   3;298,299,348;,
+   3;2458,349,2457;,
+   3;299,2457,349;,
+   3;351,350,301;,
+   3;300,301,350;,
+   3;352,351,302;,
+   3;301,302,351;,
+   3;353,352,303;,
+   3;302,303,352;,
+   3;354,353,304;,
+   3;303,304,353;,
+   3;355,354,305;,
+   3;304,305,354;,
+   3;356,355,306;,
+   3;305,306,355;,
+   3;357,356,307;,
+   3;306,307,356;,
+   3;358,357,308;,
+   3;307,308,357;,
+   3;359,358,309;,
+   3;308,309,358;,
+   3;360,359,310;,
+   3;309,310,359;,
+   3;361,360,311;,
+   3;310,311,360;,
+   3;362,361,312;,
+   3;311,312,361;,
+   3;363,362,313;,
+   3;312,313,362;,
+   3;364,363,314;,
+   3;313,314,363;,
+   3;365,364,315;,
+   3;314,315,364;,
+   3;366,365,316;,
+   3;315,316,365;,
+   3;367,366,317;,
+   3;316,317,366;,
+   3;368,367,318;,
+   3;317,318,367;,
+   3;369,368,319;,
+   3;318,319,368;,
+   3;370,369,320;,
+   3;319,320,369;,
+   3;371,370,321;,
+   3;320,321,370;,
+   3;372,371,322;,
+   3;321,322,371;,
+   3;373,372,323;,
+   3;322,323,372;,
+   3;374,373,324;,
+   3;323,324,373;,
+   3;375,374,325;,
+   3;324,325,374;,
+   3;376,375,326;,
+   3;325,326,375;,
+   3;377,376,327;,
+   3;326,327,376;,
+   3;378,377,328;,
+   3;327,328,377;,
+   3;379,378,329;,
+   3;328,329,378;,
+   3;380,379,330;,
+   3;329,330,379;,
+   3;381,380,331;,
+   3;330,331,380;,
+   3;382,381,332;,
+   3;331,332,381;,
+   3;383,382,333;,
+   3;332,333,382;,
+   3;384,383,334;,
+   3;333,334,383;,
+   3;385,384,335;,
+   3;334,335,384;,
+   3;386,385,336;,
+   3;335,336,385;,
+   3;387,386,337;,
+   3;336,337,386;,
+   3;388,387,338;,
+   3;337,338,387;,
+   3;389,388,339;,
+   3;338,339,388;,
+   3;390,389,340;,
+   3;339,340,389;,
+   3;391,390,341;,
+   3;340,341,390;,
+   3;392,391,342;,
+   3;341,342,391;,
+   3;393,392,343;,
+   3;342,343,392;,
+   3;394,393,344;,
+   3;343,344,393;,
+   3;395,394,345;,
+   3;344,345,394;,
+   3;396,395,346;,
+   3;345,346,395;,
+   3;397,396,347;,
+   3;346,347,396;,
+   3;398,397,348;,
+   3;347,348,397;,
+   3;399,398,349;,
+   3;348,349,398;,
+   3;2459,399,2458;,
+   3;349,2458,399;,
+   3;401,400,351;,
+   3;350,351,400;,
+   3;402,401,352;,
+   3;351,352,401;,
+   3;403,402,353;,
+   3;352,353,402;,
+   3;404,403,354;,
+   3;353,354,403;,
+   3;405,404,355;,
+   3;354,355,404;,
+   3;406,405,356;,
+   3;355,356,405;,
+   3;407,406,357;,
+   3;356,357,406;,
+   3;408,407,358;,
+   3;357,358,407;,
+   3;409,408,359;,
+   3;358,359,408;,
+   3;410,409,360;,
+   3;359,360,409;,
+   3;411,410,361;,
+   3;360,361,410;,
+   3;412,411,362;,
+   3;361,362,411;,
+   3;413,412,363;,
+   3;362,363,412;,
+   3;414,413,364;,
+   3;363,364,413;,
+   3;415,414,365;,
+   3;364,365,414;,
+   3;416,415,366;,
+   3;365,366,415;,
+   3;417,416,367;,
+   3;366,367,416;,
+   3;418,417,368;,
+   3;367,368,417;,
+   3;419,418,369;,
+   3;368,369,418;,
+   3;420,419,370;,
+   3;369,370,419;,
+   3;421,420,371;,
+   3;370,371,420;,
+   3;422,421,372;,
+   3;371,372,421;,
+   3;423,422,373;,
+   3;372,373,422;,
+   3;424,423,374;,
+   3;373,374,423;,
+   3;425,424,375;,
+   3;374,375,424;,
+   3;426,425,376;,
+   3;375,376,425;,
+   3;427,426,377;,
+   3;376,377,426;,
+   3;428,427,378;,
+   3;377,378,427;,
+   3;429,428,379;,
+   3;378,379,428;,
+   3;430,429,380;,
+   3;379,380,429;,
+   3;431,430,381;,
+   3;380,381,430;,
+   3;432,431,382;,
+   3;381,382,431;,
+   3;433,432,383;,
+   3;382,383,432;,
+   3;434,433,384;,
+   3;383,384,433;,
+   3;435,434,385;,
+   3;384,385,434;,
+   3;436,435,386;,
+   3;385,386,435;,
+   3;437,436,387;,
+   3;386,387,436;,
+   3;438,437,388;,
+   3;387,388,437;,
+   3;439,438,389;,
+   3;388,389,438;,
+   3;440,439,390;,
+   3;389,390,439;,
+   3;441,440,391;,
+   3;390,391,440;,
+   3;442,441,392;,
+   3;391,392,441;,
+   3;443,442,393;,
+   3;392,393,442;,
+   3;444,443,394;,
+   3;393,394,443;,
+   3;445,444,395;,
+   3;394,395,444;,
+   3;446,445,396;,
+   3;395,396,445;,
+   3;447,446,397;,
+   3;396,397,446;,
+   3;448,447,398;,
+   3;397,398,447;,
+   3;449,448,399;,
+   3;398,399,448;,
+   3;2460,449,2459;,
+   3;399,2459,449;,
+   3;451,450,401;,
+   3;400,401,450;,
+   3;452,451,402;,
+   3;401,402,451;,
+   3;453,452,403;,
+   3;402,403,452;,
+   3;454,453,404;,
+   3;403,404,453;,
+   3;455,454,405;,
+   3;404,405,454;,
+   3;456,455,406;,
+   3;405,406,455;,
+   3;457,456,407;,
+   3;406,407,456;,
+   3;458,457,408;,
+   3;407,408,457;,
+   3;459,458,409;,
+   3;408,409,458;,
+   3;460,459,410;,
+   3;409,410,459;,
+   3;461,460,411;,
+   3;410,411,460;,
+   3;462,461,412;,
+   3;411,412,461;,
+   3;463,462,413;,
+   3;412,413,462;,
+   3;464,463,414;,
+   3;413,414,463;,
+   3;465,464,415;,
+   3;414,415,464;,
+   3;466,465,416;,
+   3;415,416,465;,
+   3;467,466,417;,
+   3;416,417,466;,
+   3;468,467,418;,
+   3;417,418,467;,
+   3;469,468,419;,
+   3;418,419,468;,
+   3;470,469,420;,
+   3;419,420,469;,
+   3;471,470,421;,
+   3;420,421,470;,
+   3;472,471,422;,
+   3;421,422,471;,
+   3;473,472,423;,
+   3;422,423,472;,
+   3;474,473,424;,
+   3;423,424,473;,
+   3;475,474,425;,
+   3;424,425,474;,
+   3;476,475,426;,
+   3;425,426,475;,
+   3;477,476,427;,
+   3;426,427,476;,
+   3;478,477,428;,
+   3;427,428,477;,
+   3;479,478,429;,
+   3;428,429,478;,
+   3;480,479,430;,
+   3;429,430,479;,
+   3;481,480,431;,
+   3;430,431,480;,
+   3;482,481,432;,
+   3;431,432,481;,
+   3;483,482,433;,
+   3;432,433,482;,
+   3;484,483,434;,
+   3;433,434,483;,
+   3;485,484,435;,
+   3;434,435,484;,
+   3;486,485,436;,
+   3;435,436,485;,
+   3;487,486,437;,
+   3;436,437,486;,
+   3;488,487,438;,
+   3;437,438,487;,
+   3;489,488,439;,
+   3;438,439,488;,
+   3;490,489,440;,
+   3;439,440,489;,
+   3;491,490,441;,
+   3;440,441,490;,
+   3;492,491,442;,
+   3;441,442,491;,
+   3;493,492,443;,
+   3;442,443,492;,
+   3;494,493,444;,
+   3;443,444,493;,
+   3;495,494,445;,
+   3;444,445,494;,
+   3;496,495,446;,
+   3;445,446,495;,
+   3;497,496,447;,
+   3;446,447,496;,
+   3;498,497,448;,
+   3;447,448,497;,
+   3;499,498,449;,
+   3;448,449,498;,
+   3;2461,499,2460;,
+   3;449,2460,499;,
+   3;501,500,451;,
+   3;450,451,500;,
+   3;502,501,452;,
+   3;451,452,501;,
+   3;503,502,453;,
+   3;452,453,502;,
+   3;504,503,454;,
+   3;453,454,503;,
+   3;505,504,455;,
+   3;454,455,504;,
+   3;506,505,456;,
+   3;455,456,505;,
+   3;507,506,457;,
+   3;456,457,506;,
+   3;508,507,458;,
+   3;457,458,507;,
+   3;509,508,459;,
+   3;458,459,508;,
+   3;510,509,460;,
+   3;459,460,509;,
+   3;511,510,461;,
+   3;460,461,510;,
+   3;512,511,462;,
+   3;461,462,511;,
+   3;513,512,463;,
+   3;462,463,512;,
+   3;514,513,464;,
+   3;463,464,513;,
+   3;515,514,465;,
+   3;464,465,514;,
+   3;516,515,466;,
+   3;465,466,515;,
+   3;517,516,467;,
+   3;466,467,516;,
+   3;518,517,468;,
+   3;467,468,517;,
+   3;519,518,469;,
+   3;468,469,518;,
+   3;520,519,470;,
+   3;469,470,519;,
+   3;521,520,471;,
+   3;470,471,520;,
+   3;522,521,472;,
+   3;471,472,521;,
+   3;523,522,473;,
+   3;472,473,522;,
+   3;524,523,474;,
+   3;473,474,523;,
+   3;525,524,475;,
+   3;474,475,524;,
+   3;526,525,476;,
+   3;475,476,525;,
+   3;527,526,477;,
+   3;476,477,526;,
+   3;528,527,478;,
+   3;477,478,527;,
+   3;529,528,479;,
+   3;478,479,528;,
+   3;530,529,480;,
+   3;479,480,529;,
+   3;531,530,481;,
+   3;480,481,530;,
+   3;532,531,482;,
+   3;481,482,531;,
+   3;533,532,483;,
+   3;482,483,532;,
+   3;534,533,484;,
+   3;483,484,533;,
+   3;535,534,485;,
+   3;484,485,534;,
+   3;536,535,486;,
+   3;485,486,535;,
+   3;537,536,487;,
+   3;486,487,536;,
+   3;538,537,488;,
+   3;487,488,537;,
+   3;539,538,489;,
+   3;488,489,538;,
+   3;540,539,490;,
+   3;489,490,539;,
+   3;541,540,491;,
+   3;490,491,540;,
+   3;542,541,492;,
+   3;491,492,541;,
+   3;543,542,493;,
+   3;492,493,542;,
+   3;544,543,494;,
+   3;493,494,543;,
+   3;545,544,495;,
+   3;494,495,544;,
+   3;546,545,496;,
+   3;495,496,545;,
+   3;547,546,497;,
+   3;496,497,546;,
+   3;548,547,498;,
+   3;497,498,547;,
+   3;549,548,499;,
+   3;498,499,548;,
+   3;2462,549,2461;,
+   3;499,2461,549;,
+   3;551,550,501;,
+   3;500,501,550;,
+   3;552,551,502;,
+   3;501,502,551;,
+   3;553,552,503;,
+   3;502,503,552;,
+   3;554,553,504;,
+   3;503,504,553;,
+   3;555,554,505;,
+   3;504,505,554;,
+   3;556,555,506;,
+   3;505,506,555;,
+   3;557,556,507;,
+   3;506,507,556;,
+   3;558,557,508;,
+   3;507,508,557;,
+   3;559,558,509;,
+   3;508,509,558;,
+   3;560,559,510;,
+   3;509,510,559;,
+   3;561,560,511;,
+   3;510,511,560;,
+   3;562,561,512;,
+   3;511,512,561;,
+   3;563,562,513;,
+   3;512,513,562;,
+   3;564,563,514;,
+   3;513,514,563;,
+   3;565,564,515;,
+   3;514,515,564;,
+   3;566,565,516;,
+   3;515,516,565;,
+   3;567,566,517;,
+   3;516,517,566;,
+   3;568,567,518;,
+   3;517,518,567;,
+   3;569,568,519;,
+   3;518,519,568;,
+   3;570,569,520;,
+   3;519,520,569;,
+   3;571,570,521;,
+   3;520,521,570;,
+   3;572,571,522;,
+   3;521,522,571;,
+   3;573,572,523;,
+   3;522,523,572;,
+   3;574,573,524;,
+   3;523,524,573;,
+   3;575,574,525;,
+   3;524,525,574;,
+   3;576,575,526;,
+   3;525,526,575;,
+   3;577,576,527;,
+   3;526,527,576;,
+   3;578,577,528;,
+   3;527,528,577;,
+   3;579,578,529;,
+   3;528,529,578;,
+   3;580,579,530;,
+   3;529,530,579;,
+   3;581,580,531;,
+   3;530,531,580;,
+   3;582,581,532;,
+   3;531,532,581;,
+   3;583,582,533;,
+   3;532,533,582;,
+   3;584,583,534;,
+   3;533,534,583;,
+   3;585,584,535;,
+   3;534,535,584;,
+   3;586,585,536;,
+   3;535,536,585;,
+   3;587,586,537;,
+   3;536,537,586;,
+   3;588,587,538;,
+   3;537,538,587;,
+   3;589,588,539;,
+   3;538,539,588;,
+   3;590,589,540;,
+   3;539,540,589;,
+   3;591,590,541;,
+   3;540,541,590;,
+   3;592,591,542;,
+   3;541,542,591;,
+   3;593,592,543;,
+   3;542,543,592;,
+   3;594,593,544;,
+   3;543,544,593;,
+   3;595,594,545;,
+   3;544,545,594;,
+   3;596,595,546;,
+   3;545,546,595;,
+   3;597,596,547;,
+   3;546,547,596;,
+   3;598,597,548;,
+   3;547,548,597;,
+   3;599,598,549;,
+   3;548,549,598;,
+   3;2463,599,2462;,
+   3;549,2462,599;,
+   3;601,600,551;,
+   3;550,551,600;,
+   3;602,601,552;,
+   3;551,552,601;,
+   3;603,602,553;,
+   3;552,553,602;,
+   3;604,603,554;,
+   3;553,554,603;,
+   3;605,604,555;,
+   3;554,555,604;,
+   3;606,605,556;,
+   3;555,556,605;,
+   3;607,606,557;,
+   3;556,557,606;,
+   3;608,607,558;,
+   3;557,558,607;,
+   3;609,608,559;,
+   3;558,559,608;,
+   3;610,609,560;,
+   3;559,560,609;,
+   3;611,610,561;,
+   3;560,561,610;,
+   3;612,611,562;,
+   3;561,562,611;,
+   3;613,612,563;,
+   3;562,563,612;,
+   3;614,613,564;,
+   3;563,564,613;,
+   3;615,614,565;,
+   3;564,565,614;,
+   3;616,615,566;,
+   3;565,566,615;,
+   3;617,616,567;,
+   3;566,567,616;,
+   3;618,617,568;,
+   3;567,568,617;,
+   3;619,618,569;,
+   3;568,569,618;,
+   3;620,619,570;,
+   3;569,570,619;,
+   3;621,620,571;,
+   3;570,571,620;,
+   3;622,621,572;,
+   3;571,572,621;,
+   3;623,622,573;,
+   3;572,573,622;,
+   3;624,623,574;,
+   3;573,574,623;,
+   3;625,624,575;,
+   3;574,575,624;,
+   3;626,625,576;,
+   3;575,576,625;,
+   3;627,626,577;,
+   3;576,577,626;,
+   3;628,627,578;,
+   3;577,578,627;,
+   3;629,628,579;,
+   3;578,579,628;,
+   3;630,629,580;,
+   3;579,580,629;,
+   3;631,630,581;,
+   3;580,581,630;,
+   3;632,631,582;,
+   3;581,582,631;,
+   3;633,632,583;,
+   3;582,583,632;,
+   3;634,633,584;,
+   3;583,584,633;,
+   3;635,634,585;,
+   3;584,585,634;,
+   3;636,635,586;,
+   3;585,586,635;,
+   3;637,636,587;,
+   3;586,587,636;,
+   3;638,637,588;,
+   3;587,588,637;,
+   3;639,638,589;,
+   3;588,589,638;,
+   3;640,639,590;,
+   3;589,590,639;,
+   3;641,640,591;,
+   3;590,591,640;,
+   3;642,641,592;,
+   3;591,592,641;,
+   3;643,642,593;,
+   3;592,593,642;,
+   3;644,643,594;,
+   3;593,594,643;,
+   3;645,644,595;,
+   3;594,595,644;,
+   3;646,645,596;,
+   3;595,596,645;,
+   3;647,646,597;,
+   3;596,597,646;,
+   3;648,647,598;,
+   3;597,598,647;,
+   3;649,648,599;,
+   3;598,599,648;,
+   3;2464,649,2463;,
+   3;599,2463,649;,
+   3;651,650,601;,
+   3;600,601,650;,
+   3;652,651,602;,
+   3;601,602,651;,
+   3;653,652,603;,
+   3;602,603,652;,
+   3;654,653,604;,
+   3;603,604,653;,
+   3;655,654,605;,
+   3;604,605,654;,
+   3;656,655,606;,
+   3;605,606,655;,
+   3;657,656,607;,
+   3;606,607,656;,
+   3;658,657,608;,
+   3;607,608,657;,
+   3;659,658,609;,
+   3;608,609,658;,
+   3;660,659,610;,
+   3;609,610,659;,
+   3;661,660,611;,
+   3;610,611,660;,
+   3;662,661,612;,
+   3;611,612,661;,
+   3;663,662,613;,
+   3;612,613,662;,
+   3;664,663,614;,
+   3;613,614,663;,
+   3;665,664,615;,
+   3;614,615,664;,
+   3;666,665,616;,
+   3;615,616,665;,
+   3;667,666,617;,
+   3;616,617,666;,
+   3;668,667,618;,
+   3;617,618,667;,
+   3;669,668,619;,
+   3;618,619,668;,
+   3;670,669,620;,
+   3;619,620,669;,
+   3;671,670,621;,
+   3;620,621,670;,
+   3;672,671,622;,
+   3;621,622,671;,
+   3;673,672,623;,
+   3;622,623,672;,
+   3;674,673,624;,
+   3;623,624,673;,
+   3;675,674,625;,
+   3;624,625,674;,
+   3;676,675,626;,
+   3;625,626,675;,
+   3;677,676,627;,
+   3;626,627,676;,
+   3;678,677,628;,
+   3;627,628,677;,
+   3;679,678,629;,
+   3;628,629,678;,
+   3;680,679,630;,
+   3;629,630,679;,
+   3;681,680,631;,
+   3;630,631,680;,
+   3;682,681,632;,
+   3;631,632,681;,
+   3;683,682,633;,
+   3;632,633,682;,
+   3;684,683,634;,
+   3;633,634,683;,
+   3;685,684,635;,
+   3;634,635,684;,
+   3;686,685,636;,
+   3;635,636,685;,
+   3;687,686,637;,
+   3;636,637,686;,
+   3;688,687,638;,
+   3;637,638,687;,
+   3;689,688,639;,
+   3;638,639,688;,
+   3;690,689,640;,
+   3;639,640,689;,
+   3;691,690,641;,
+   3;640,641,690;,
+   3;692,691,642;,
+   3;641,642,691;,
+   3;693,692,643;,
+   3;642,643,692;,
+   3;694,693,644;,
+   3;643,644,693;,
+   3;695,694,645;,
+   3;644,645,694;,
+   3;696,695,646;,
+   3;645,646,695;,
+   3;697,696,647;,
+   3;646,647,696;,
+   3;698,697,648;,
+   3;647,648,697;,
+   3;699,698,649;,
+   3;648,649,698;,
+   3;2465,699,2464;,
+   3;649,2464,699;,
+   3;701,700,651;,
+   3;650,651,700;,
+   3;702,701,652;,
+   3;651,652,701;,
+   3;703,702,653;,
+   3;652,653,702;,
+   3;704,703,654;,
+   3;653,654,703;,
+   3;705,704,655;,
+   3;654,655,704;,
+   3;706,705,656;,
+   3;655,656,705;,
+   3;707,706,657;,
+   3;656,657,706;,
+   3;708,707,658;,
+   3;657,658,707;,
+   3;709,708,659;,
+   3;658,659,708;,
+   3;710,709,660;,
+   3;659,660,709;,
+   3;711,710,661;,
+   3;660,661,710;,
+   3;712,711,662;,
+   3;661,662,711;,
+   3;713,712,663;,
+   3;662,663,712;,
+   3;714,713,664;,
+   3;663,664,713;,
+   3;715,714,665;,
+   3;664,665,714;,
+   3;716,715,666;,
+   3;665,666,715;,
+   3;717,716,667;,
+   3;666,667,716;,
+   3;718,717,668;,
+   3;667,668,717;,
+   3;719,718,669;,
+   3;668,669,718;,
+   3;720,719,670;,
+   3;669,670,719;,
+   3;721,720,671;,
+   3;670,671,720;,
+   3;722,721,672;,
+   3;671,672,721;,
+   3;723,722,673;,
+   3;672,673,722;,
+   3;724,723,674;,
+   3;673,674,723;,
+   3;725,724,675;,
+   3;674,675,724;,
+   3;726,725,676;,
+   3;675,676,725;,
+   3;727,726,677;,
+   3;676,677,726;,
+   3;728,727,678;,
+   3;677,678,727;,
+   3;729,728,679;,
+   3;678,679,728;,
+   3;730,729,680;,
+   3;679,680,729;,
+   3;731,730,681;,
+   3;680,681,730;,
+   3;732,731,682;,
+   3;681,682,731;,
+   3;733,732,683;,
+   3;682,683,732;,
+   3;734,733,684;,
+   3;683,684,733;,
+   3;735,734,685;,
+   3;684,685,734;,
+   3;736,735,686;,
+   3;685,686,735;,
+   3;737,736,687;,
+   3;686,687,736;,
+   3;738,737,688;,
+   3;687,688,737;,
+   3;739,738,689;,
+   3;688,689,738;,
+   3;740,739,690;,
+   3;689,690,739;,
+   3;741,740,691;,
+   3;690,691,740;,
+   3;742,741,692;,
+   3;691,692,741;,
+   3;743,742,693;,
+   3;692,693,742;,
+   3;744,743,694;,
+   3;693,694,743;,
+   3;745,744,695;,
+   3;694,695,744;,
+   3;746,745,696;,
+   3;695,696,745;,
+   3;747,746,697;,
+   3;696,697,746;,
+   3;748,747,698;,
+   3;697,698,747;,
+   3;749,748,699;,
+   3;698,699,748;,
+   3;2466,749,2465;,
+   3;699,2465,749;,
+   3;751,750,701;,
+   3;700,701,750;,
+   3;752,751,702;,
+   3;701,702,751;,
+   3;753,752,703;,
+   3;702,703,752;,
+   3;754,753,704;,
+   3;703,704,753;,
+   3;755,754,705;,
+   3;704,705,754;,
+   3;756,755,706;,
+   3;705,706,755;,
+   3;757,756,707;,
+   3;706,707,756;,
+   3;758,757,708;,
+   3;707,708,757;,
+   3;759,758,709;,
+   3;708,709,758;,
+   3;760,759,710;,
+   3;709,710,759;,
+   3;761,760,711;,
+   3;710,711,760;,
+   3;762,761,712;,
+   3;711,712,761;,
+   3;763,762,713;,
+   3;712,713,762;,
+   3;764,763,714;,
+   3;713,714,763;,
+   3;765,764,715;,
+   3;714,715,764;,
+   3;766,765,716;,
+   3;715,716,765;,
+   3;767,766,717;,
+   3;716,717,766;,
+   3;768,767,718;,
+   3;717,718,767;,
+   3;769,768,719;,
+   3;718,719,768;,
+   3;770,769,720;,
+   3;719,720,769;,
+   3;771,770,721;,
+   3;720,721,770;,
+   3;772,771,722;,
+   3;721,722,771;,
+   3;773,772,723;,
+   3;722,723,772;,
+   3;774,773,724;,
+   3;723,724,773;,
+   3;775,774,725;,
+   3;724,725,774;,
+   3;776,775,726;,
+   3;725,726,775;,
+   3;777,776,727;,
+   3;726,727,776;,
+   3;778,777,728;,
+   3;727,728,777;,
+   3;779,778,729;,
+   3;728,729,778;,
+   3;780,779,730;,
+   3;729,730,779;,
+   3;781,780,731;,
+   3;730,731,780;,
+   3;782,781,732;,
+   3;731,732,781;,
+   3;783,782,733;,
+   3;732,733,782;,
+   3;784,783,734;,
+   3;733,734,783;,
+   3;785,784,735;,
+   3;734,735,784;,
+   3;786,785,736;,
+   3;735,736,785;,
+   3;787,786,737;,
+   3;736,737,786;,
+   3;788,787,738;,
+   3;737,738,787;,
+   3;789,788,739;,
+   3;738,739,788;,
+   3;790,789,740;,
+   3;739,740,789;,
+   3;791,790,741;,
+   3;740,741,790;,
+   3;792,791,742;,
+   3;741,742,791;,
+   3;793,792,743;,
+   3;742,743,792;,
+   3;794,793,744;,
+   3;743,744,793;,
+   3;795,794,745;,
+   3;744,745,794;,
+   3;796,795,746;,
+   3;745,746,795;,
+   3;797,796,747;,
+   3;746,747,796;,
+   3;798,797,748;,
+   3;747,748,797;,
+   3;799,798,749;,
+   3;748,749,798;,
+   3;2467,799,2466;,
+   3;749,2466,799;,
+   3;801,800,751;,
+   3;750,751,800;,
+   3;802,801,752;,
+   3;751,752,801;,
+   3;803,802,753;,
+   3;752,753,802;,
+   3;804,803,754;,
+   3;753,754,803;,
+   3;805,804,755;,
+   3;754,755,804;,
+   3;806,805,756;,
+   3;755,756,805;,
+   3;807,806,757;,
+   3;756,757,806;,
+   3;808,807,758;,
+   3;757,758,807;,
+   3;809,808,759;,
+   3;758,759,808;,
+   3;810,809,760;,
+   3;759,760,809;,
+   3;811,810,761;,
+   3;760,761,810;,
+   3;812,811,762;,
+   3;761,762,811;,
+   3;813,812,763;,
+   3;762,763,812;,
+   3;814,813,764;,
+   3;763,764,813;,
+   3;815,814,765;,
+   3;764,765,814;,
+   3;816,815,766;,
+   3;765,766,815;,
+   3;817,816,767;,
+   3;766,767,816;,
+   3;818,817,768;,
+   3;767,768,817;,
+   3;819,818,769;,
+   3;768,769,818;,
+   3;820,819,770;,
+   3;769,770,819;,
+   3;821,820,771;,
+   3;770,771,820;,
+   3;822,821,772;,
+   3;771,772,821;,
+   3;823,822,773;,
+   3;772,773,822;,
+   3;824,823,774;,
+   3;773,774,823;,
+   3;825,824,775;,
+   3;774,775,824;,
+   3;826,825,776;,
+   3;775,776,825;,
+   3;827,826,777;,
+   3;776,777,826;,
+   3;828,827,778;,
+   3;777,778,827;,
+   3;829,828,779;,
+   3;778,779,828;,
+   3;830,829,780;,
+   3;779,780,829;,
+   3;831,830,781;,
+   3;780,781,830;,
+   3;832,831,782;,
+   3;781,782,831;,
+   3;833,832,783;,
+   3;782,783,832;,
+   3;834,833,784;,
+   3;783,784,833;,
+   3;835,834,785;,
+   3;784,785,834;,
+   3;836,835,786;,
+   3;785,786,835;,
+   3;837,836,787;,
+   3;786,787,836;,
+   3;838,837,788;,
+   3;787,788,837;,
+   3;839,838,789;,
+   3;788,789,838;,
+   3;840,839,790;,
+   3;789,790,839;,
+   3;841,840,791;,
+   3;790,791,840;,
+   3;842,841,792;,
+   3;791,792,841;,
+   3;843,842,793;,
+   3;792,793,842;,
+   3;844,843,794;,
+   3;793,794,843;,
+   3;845,844,795;,
+   3;794,795,844;,
+   3;846,845,796;,
+   3;795,796,845;,
+   3;847,846,797;,
+   3;796,797,846;,
+   3;848,847,798;,
+   3;797,798,847;,
+   3;849,848,799;,
+   3;798,799,848;,
+   3;2468,849,2467;,
+   3;799,2467,849;,
+   3;851,850,801;,
+   3;800,801,850;,
+   3;852,851,802;,
+   3;801,802,851;,
+   3;853,852,803;,
+   3;802,803,852;,
+   3;854,853,804;,
+   3;803,804,853;,
+   3;855,854,805;,
+   3;804,805,854;,
+   3;856,855,806;,
+   3;805,806,855;,
+   3;857,856,807;,
+   3;806,807,856;,
+   3;858,857,808;,
+   3;807,808,857;,
+   3;859,858,809;,
+   3;808,809,858;,
+   3;860,859,810;,
+   3;809,810,859;,
+   3;861,860,811;,
+   3;810,811,860;,
+   3;862,861,812;,
+   3;811,812,861;,
+   3;863,862,813;,
+   3;812,813,862;,
+   3;864,863,814;,
+   3;813,814,863;,
+   3;865,864,815;,
+   3;814,815,864;,
+   3;866,865,816;,
+   3;815,816,865;,
+   3;867,866,817;,
+   3;816,817,866;,
+   3;868,867,818;,
+   3;817,818,867;,
+   3;869,868,819;,
+   3;818,819,868;,
+   3;870,869,820;,
+   3;819,820,869;,
+   3;871,870,821;,
+   3;820,821,870;,
+   3;872,871,822;,
+   3;821,822,871;,
+   3;873,872,823;,
+   3;822,823,872;,
+   3;874,873,824;,
+   3;823,824,873;,
+   3;875,874,825;,
+   3;824,825,874;,
+   3;876,875,826;,
+   3;825,826,875;,
+   3;877,876,827;,
+   3;826,827,876;,
+   3;878,877,828;,
+   3;827,828,877;,
+   3;879,878,829;,
+   3;828,829,878;,
+   3;880,879,830;,
+   3;829,830,879;,
+   3;881,880,831;,
+   3;830,831,880;,
+   3;882,881,832;,
+   3;831,832,881;,
+   3;883,882,833;,
+   3;832,833,882;,
+   3;884,883,834;,
+   3;833,834,883;,
+   3;885,884,835;,
+   3;834,835,884;,
+   3;886,885,836;,
+   3;835,836,885;,
+   3;887,886,837;,
+   3;836,837,886;,
+   3;888,887,838;,
+   3;837,838,887;,
+   3;889,888,839;,
+   3;838,839,888;,
+   3;890,889,840;,
+   3;839,840,889;,
+   3;891,890,841;,
+   3;840,841,890;,
+   3;892,891,842;,
+   3;841,842,891;,
+   3;893,892,843;,
+   3;842,843,892;,
+   3;894,893,844;,
+   3;843,844,893;,
+   3;895,894,845;,
+   3;844,845,894;,
+   3;896,895,846;,
+   3;845,846,895;,
+   3;897,896,847;,
+   3;846,847,896;,
+   3;898,897,848;,
+   3;847,848,897;,
+   3;899,898,849;,
+   3;848,849,898;,
+   3;2469,899,2468;,
+   3;849,2468,899;,
+   3;901,900,851;,
+   3;850,851,900;,
+   3;902,901,852;,
+   3;851,852,901;,
+   3;903,902,853;,
+   3;852,853,902;,
+   3;904,903,854;,
+   3;853,854,903;,
+   3;905,904,855;,
+   3;854,855,904;,
+   3;906,905,856;,
+   3;855,856,905;,
+   3;907,906,857;,
+   3;856,857,906;,
+   3;908,907,858;,
+   3;857,858,907;,
+   3;909,908,859;,
+   3;858,859,908;,
+   3;910,909,860;,
+   3;859,860,909;,
+   3;911,910,861;,
+   3;860,861,910;,
+   3;912,911,862;,
+   3;861,862,911;,
+   3;913,912,863;,
+   3;862,863,912;,
+   3;914,913,864;,
+   3;863,864,913;,
+   3;915,914,865;,
+   3;864,865,914;,
+   3;916,915,866;,
+   3;865,866,915;,
+   3;917,916,867;,
+   3;866,867,916;,
+   3;918,917,868;,
+   3;867,868,917;,
+   3;919,918,869;,
+   3;868,869,918;,
+   3;920,919,870;,
+   3;869,870,919;,
+   3;921,920,871;,
+   3;870,871,920;,
+   3;922,921,872;,
+   3;871,872,921;,
+   3;923,922,873;,
+   3;872,873,922;,
+   3;924,923,874;,
+   3;873,874,923;,
+   3;925,924,875;,
+   3;874,875,924;,
+   3;926,925,876;,
+   3;875,876,925;,
+   3;927,926,877;,
+   3;876,877,926;,
+   3;928,927,878;,
+   3;877,878,927;,
+   3;929,928,879;,
+   3;878,879,928;,
+   3;930,929,880;,
+   3;879,880,929;,
+   3;931,930,881;,
+   3;880,881,930;,
+   3;932,931,882;,
+   3;881,882,931;,
+   3;933,932,883;,
+   3;882,883,932;,
+   3;934,933,884;,
+   3;883,884,933;,
+   3;935,934,885;,
+   3;884,885,934;,
+   3;936,935,886;,
+   3;885,886,935;,
+   3;937,936,887;,
+   3;886,887,936;,
+   3;938,937,888;,
+   3;887,888,937;,
+   3;939,938,889;,
+   3;888,889,938;,
+   3;940,939,890;,
+   3;889,890,939;,
+   3;941,940,891;,
+   3;890,891,940;,
+   3;942,941,892;,
+   3;891,892,941;,
+   3;943,942,893;,
+   3;892,893,942;,
+   3;944,943,894;,
+   3;893,894,943;,
+   3;945,944,895;,
+   3;894,895,944;,
+   3;946,945,896;,
+   3;895,896,945;,
+   3;947,946,897;,
+   3;896,897,946;,
+   3;948,947,898;,
+   3;897,898,947;,
+   3;949,948,899;,
+   3;898,899,948;,
+   3;2470,949,2469;,
+   3;899,2469,949;,
+   3;951,950,901;,
+   3;900,901,950;,
+   3;952,951,902;,
+   3;901,902,951;,
+   3;953,952,903;,
+   3;902,903,952;,
+   3;954,953,904;,
+   3;903,904,953;,
+   3;955,954,905;,
+   3;904,905,954;,
+   3;956,955,906;,
+   3;905,906,955;,
+   3;957,956,907;,
+   3;906,907,956;,
+   3;958,957,908;,
+   3;907,908,957;,
+   3;959,958,909;,
+   3;908,909,958;,
+   3;960,959,910;,
+   3;909,910,959;,
+   3;961,960,911;,
+   3;910,911,960;,
+   3;962,961,912;,
+   3;911,912,961;,
+   3;963,962,913;,
+   3;912,913,962;,
+   3;964,963,914;,
+   3;913,914,963;,
+   3;965,964,915;,
+   3;914,915,964;,
+   3;966,965,916;,
+   3;915,916,965;,
+   3;967,966,917;,
+   3;916,917,966;,
+   3;968,967,918;,
+   3;917,918,967;,
+   3;969,968,919;,
+   3;918,919,968;,
+   3;970,969,920;,
+   3;919,920,969;,
+   3;971,970,921;,
+   3;920,921,970;,
+   3;972,971,922;,
+   3;921,922,971;,
+   3;973,972,923;,
+   3;922,923,972;,
+   3;974,973,924;,
+   3;923,924,973;,
+   3;975,974,925;,
+   3;924,925,974;,
+   3;976,975,926;,
+   3;925,926,975;,
+   3;977,976,927;,
+   3;926,927,976;,
+   3;978,977,928;,
+   3;927,928,977;,
+   3;979,978,929;,
+   3;928,929,978;,
+   3;980,979,930;,
+   3;929,930,979;,
+   3;981,980,931;,
+   3;930,931,980;,
+   3;982,981,932;,
+   3;931,932,981;,
+   3;983,982,933;,
+   3;932,933,982;,
+   3;984,983,934;,
+   3;933,934,983;,
+   3;985,984,935;,
+   3;934,935,984;,
+   3;986,985,936;,
+   3;935,936,985;,
+   3;987,986,937;,
+   3;936,937,986;,
+   3;988,987,938;,
+   3;937,938,987;,
+   3;989,988,939;,
+   3;938,939,988;,
+   3;990,989,940;,
+   3;939,940,989;,
+   3;991,990,941;,
+   3;940,941,990;,
+   3;992,991,942;,
+   3;941,942,991;,
+   3;993,992,943;,
+   3;942,943,992;,
+   3;994,993,944;,
+   3;943,944,993;,
+   3;995,994,945;,
+   3;944,945,994;,
+   3;996,995,946;,
+   3;945,946,995;,
+   3;997,996,947;,
+   3;946,947,996;,
+   3;998,997,948;,
+   3;947,948,997;,
+   3;999,998,949;,
+   3;948,949,998;,
+   3;2471,999,2470;,
+   3;949,2470,999;,
+   3;1001,1000,951;,
+   3;950,951,1000;,
+   3;1002,1001,952;,
+   3;951,952,1001;,
+   3;1003,1002,953;,
+   3;952,953,1002;,
+   3;1004,1003,954;,
+   3;953,954,1003;,
+   3;1005,1004,955;,
+   3;954,955,1004;,
+   3;1006,1005,956;,
+   3;955,956,1005;,
+   3;1007,1006,957;,
+   3;956,957,1006;,
+   3;1008,1007,958;,
+   3;957,958,1007;,
+   3;1009,1008,959;,
+   3;958,959,1008;,
+   3;1010,1009,960;,
+   3;959,960,1009;,
+   3;1011,1010,961;,
+   3;960,961,1010;,
+   3;1012,1011,962;,
+   3;961,962,1011;,
+   3;1013,1012,963;,
+   3;962,963,1012;,
+   3;1014,1013,964;,
+   3;963,964,1013;,
+   3;1015,1014,965;,
+   3;964,965,1014;,
+   3;1016,1015,966;,
+   3;965,966,1015;,
+   3;1017,1016,967;,
+   3;966,967,1016;,
+   3;1018,1017,968;,
+   3;967,968,1017;,
+   3;1019,1018,969;,
+   3;968,969,1018;,
+   3;1020,1019,970;,
+   3;969,970,1019;,
+   3;1021,1020,971;,
+   3;970,971,1020;,
+   3;1022,1021,972;,
+   3;971,972,1021;,
+   3;1023,1022,973;,
+   3;972,973,1022;,
+   3;1024,1023,974;,
+   3;973,974,1023;,
+   3;1025,1024,975;,
+   3;974,975,1024;,
+   3;1026,1025,976;,
+   3;975,976,1025;,
+   3;1027,1026,977;,
+   3;976,977,1026;,
+   3;1028,1027,978;,
+   3;977,978,1027;,
+   3;1029,1028,979;,
+   3;978,979,1028;,
+   3;1030,1029,980;,
+   3;979,980,1029;,
+   3;1031,1030,981;,
+   3;980,981,1030;,
+   3;1032,1031,982;,
+   3;981,982,1031;,
+   3;1033,1032,983;,
+   3;982,983,1032;,
+   3;1034,1033,984;,
+   3;983,984,1033;,
+   3;1035,1034,985;,
+   3;984,985,1034;,
+   3;1036,1035,986;,
+   3;985,986,1035;,
+   3;1037,1036,987;,
+   3;986,987,1036;,
+   3;1038,1037,988;,
+   3;987,988,1037;,
+   3;1039,1038,989;,
+   3;988,989,1038;,
+   3;1040,1039,990;,
+   3;989,990,1039;,
+   3;1041,1040,991;,
+   3;990,991,1040;,
+   3;1042,1041,992;,
+   3;991,992,1041;,
+   3;1043,1042,993;,
+   3;992,993,1042;,
+   3;1044,1043,994;,
+   3;993,994,1043;,
+   3;1045,1044,995;,
+   3;994,995,1044;,
+   3;1046,1045,996;,
+   3;995,996,1045;,
+   3;1047,1046,997;,
+   3;996,997,1046;,
+   3;1048,1047,998;,
+   3;997,998,1047;,
+   3;1049,1048,999;,
+   3;998,999,1048;,
+   3;2472,1049,2471;,
+   3;999,2471,1049;,
+   3;1051,1050,1001;,
+   3;1000,1001,1050;,
+   3;1052,1051,1002;,
+   3;1001,1002,1051;,
+   3;1053,1052,1003;,
+   3;1002,1003,1052;,
+   3;1054,1053,1004;,
+   3;1003,1004,1053;,
+   3;1055,1054,1005;,
+   3;1004,1005,1054;,
+   3;1056,1055,1006;,
+   3;1005,1006,1055;,
+   3;1057,1056,1007;,
+   3;1006,1007,1056;,
+   3;1058,1057,1008;,
+   3;1007,1008,1057;,
+   3;1059,1058,1009;,
+   3;1008,1009,1058;,
+   3;1060,1059,1010;,
+   3;1009,1010,1059;,
+   3;1061,1060,1011;,
+   3;1010,1011,1060;,
+   3;1062,1061,1012;,
+   3;1011,1012,1061;,
+   3;1063,1062,1013;,
+   3;1012,1013,1062;,
+   3;1064,1063,1014;,
+   3;1013,1014,1063;,
+   3;1065,1064,1015;,
+   3;1014,1015,1064;,
+   3;1066,1065,1016;,
+   3;1015,1016,1065;,
+   3;1067,1066,1017;,
+   3;1016,1017,1066;,
+   3;1068,1067,1018;,
+   3;1017,1018,1067;,
+   3;1069,1068,1019;,
+   3;1018,1019,1068;,
+   3;1070,1069,1020;,
+   3;1019,1020,1069;,
+   3;1071,1070,1021;,
+   3;1020,1021,1070;,
+   3;1072,1071,1022;,
+   3;1021,1022,1071;,
+   3;1073,1072,1023;,
+   3;1022,1023,1072;,
+   3;1074,1073,1024;,
+   3;1023,1024,1073;,
+   3;1075,1074,1025;,
+   3;1024,1025,1074;,
+   3;1076,1075,1026;,
+   3;1025,1026,1075;,
+   3;1077,1076,1027;,
+   3;1026,1027,1076;,
+   3;1078,1077,1028;,
+   3;1027,1028,1077;,
+   3;1079,1078,1029;,
+   3;1028,1029,1078;,
+   3;1080,1079,1030;,
+   3;1029,1030,1079;,
+   3;1081,1080,1031;,
+   3;1030,1031,1080;,
+   3;1082,1081,1032;,
+   3;1031,1032,1081;,
+   3;1083,1082,1033;,
+   3;1032,1033,1082;,
+   3;1084,1083,1034;,
+   3;1033,1034,1083;,
+   3;1085,1084,1035;,
+   3;1034,1035,1084;,
+   3;1086,1085,1036;,
+   3;1035,1036,1085;,
+   3;1087,1086,1037;,
+   3;1036,1037,1086;,
+   3;1088,1087,1038;,
+   3;1037,1038,1087;,
+   3;1089,1088,1039;,
+   3;1038,1039,1088;,
+   3;1090,1089,1040;,
+   3;1039,1040,1089;,
+   3;1091,1090,1041;,
+   3;1040,1041,1090;,
+   3;1092,1091,1042;,
+   3;1041,1042,1091;,
+   3;1093,1092,1043;,
+   3;1042,1043,1092;,
+   3;1094,1093,1044;,
+   3;1043,1044,1093;,
+   3;1095,1094,1045;,
+   3;1044,1045,1094;,
+   3;1096,1095,1046;,
+   3;1045,1046,1095;,
+   3;1097,1096,1047;,
+   3;1046,1047,1096;,
+   3;1098,1097,1048;,
+   3;1047,1048,1097;,
+   3;1099,1098,1049;,
+   3;1048,1049,1098;,
+   3;2473,1099,2472;,
+   3;1049,2472,1099;,
+   3;1101,1100,1051;,
+   3;1050,1051,1100;,
+   3;1102,1101,1052;,
+   3;1051,1052,1101;,
+   3;1103,1102,1053;,
+   3;1052,1053,1102;,
+   3;1104,1103,1054;,
+   3;1053,1054,1103;,
+   3;1105,1104,1055;,
+   3;1054,1055,1104;,
+   3;1106,1105,1056;,
+   3;1055,1056,1105;,
+   3;1107,1106,1057;,
+   3;1056,1057,1106;,
+   3;1108,1107,1058;,
+   3;1057,1058,1107;,
+   3;1109,1108,1059;,
+   3;1058,1059,1108;,
+   3;1110,1109,1060;,
+   3;1059,1060,1109;,
+   3;1111,1110,1061;,
+   3;1060,1061,1110;,
+   3;1112,1111,1062;,
+   3;1061,1062,1111;,
+   3;1113,1112,1063;,
+   3;1062,1063,1112;,
+   3;1114,1113,1064;,
+   3;1063,1064,1113;,
+   3;1115,1114,1065;,
+   3;1064,1065,1114;,
+   3;1116,1115,1066;,
+   3;1065,1066,1115;,
+   3;1117,1116,1067;,
+   3;1066,1067,1116;,
+   3;1118,1117,1068;,
+   3;1067,1068,1117;,
+   3;1119,1118,1069;,
+   3;1068,1069,1118;,
+   3;1120,1119,1070;,
+   3;1069,1070,1119;,
+   3;1121,1120,1071;,
+   3;1070,1071,1120;,
+   3;1122,1121,1072;,
+   3;1071,1072,1121;,
+   3;1123,1122,1073;,
+   3;1072,1073,1122;,
+   3;1124,1123,1074;,
+   3;1073,1074,1123;,
+   3;1125,1124,1075;,
+   3;1074,1075,1124;,
+   3;1126,1125,1076;,
+   3;1075,1076,1125;,
+   3;1127,1126,1077;,
+   3;1076,1077,1126;,
+   3;1128,1127,1078;,
+   3;1077,1078,1127;,
+   3;1129,1128,1079;,
+   3;1078,1079,1128;,
+   3;1130,1129,1080;,
+   3;1079,1080,1129;,
+   3;1131,1130,1081;,
+   3;1080,1081,1130;,
+   3;1132,1131,1082;,
+   3;1081,1082,1131;,
+   3;1133,1132,1083;,
+   3;1082,1083,1132;,
+   3;1134,1133,1084;,
+   3;1083,1084,1133;,
+   3;1135,1134,1085;,
+   3;1084,1085,1134;,
+   3;1136,1135,1086;,
+   3;1085,1086,1135;,
+   3;1137,1136,1087;,
+   3;1086,1087,1136;,
+   3;1138,1137,1088;,
+   3;1087,1088,1137;,
+   3;1139,1138,1089;,
+   3;1088,1089,1138;,
+   3;1140,1139,1090;,
+   3;1089,1090,1139;,
+   3;1141,1140,1091;,
+   3;1090,1091,1140;,
+   3;1142,1141,1092;,
+   3;1091,1092,1141;,
+   3;1143,1142,1093;,
+   3;1092,1093,1142;,
+   3;1144,1143,1094;,
+   3;1093,1094,1143;,
+   3;1145,1144,1095;,
+   3;1094,1095,1144;,
+   3;1146,1145,1096;,
+   3;1095,1096,1145;,
+   3;1147,1146,1097;,
+   3;1096,1097,1146;,
+   3;1148,1147,1098;,
+   3;1097,1098,1147;,
+   3;1149,1148,1099;,
+   3;1098,1099,1148;,
+   3;2474,1149,2473;,
+   3;1099,2473,1149;,
+   3;1151,1150,1101;,
+   3;1100,1101,1150;,
+   3;1152,1151,1102;,
+   3;1101,1102,1151;,
+   3;1153,1152,1103;,
+   3;1102,1103,1152;,
+   3;1154,1153,1104;,
+   3;1103,1104,1153;,
+   3;1155,1154,1105;,
+   3;1104,1105,1154;,
+   3;1156,1155,1106;,
+   3;1105,1106,1155;,
+   3;1157,1156,1107;,
+   3;1106,1107,1156;,
+   3;1158,1157,1108;,
+   3;1107,1108,1157;,
+   3;1159,1158,1109;,
+   3;1108,1109,1158;,
+   3;1160,1159,1110;,
+   3;1109,1110,1159;,
+   3;1161,1160,1111;,
+   3;1110,1111,1160;,
+   3;1162,1161,1112;,
+   3;1111,1112,1161;,
+   3;1163,1162,1113;,
+   3;1112,1113,1162;,
+   3;1164,1163,1114;,
+   3;1113,1114,1163;,
+   3;1165,1164,1115;,
+   3;1114,1115,1164;,
+   3;1166,1165,1116;,
+   3;1115,1116,1165;,
+   3;1167,1166,1117;,
+   3;1116,1117,1166;,
+   3;1168,1167,1118;,
+   3;1117,1118,1167;,
+   3;1169,1168,1119;,
+   3;1118,1119,1168;,
+   3;1170,1169,1120;,
+   3;1119,1120,1169;,
+   3;1171,1170,1121;,
+   3;1120,1121,1170;,
+   3;1172,1171,1122;,
+   3;1121,1122,1171;,
+   3;1173,1172,1123;,
+   3;1122,1123,1172;,
+   3;1174,1173,1124;,
+   3;1123,1124,1173;,
+   3;1175,1174,1125;,
+   3;1124,1125,1174;,
+   3;1176,1175,1126;,
+   3;1125,1126,1175;,
+   3;1177,1176,1127;,
+   3;1126,1127,1176;,
+   3;1178,1177,1128;,
+   3;1127,1128,1177;,
+   3;1179,1178,1129;,
+   3;1128,1129,1178;,
+   3;1180,1179,1130;,
+   3;1129,1130,1179;,
+   3;1181,1180,1131;,
+   3;1130,1131,1180;,
+   3;1182,1181,1132;,
+   3;1131,1132,1181;,
+   3;1183,1182,1133;,
+   3;1132,1133,1182;,
+   3;1184,1183,1134;,
+   3;1133,1134,1183;,
+   3;1185,1184,1135;,
+   3;1134,1135,1184;,
+   3;1186,1185,1136;,
+   3;1135,1136,1185;,
+   3;1187,1186,1137;,
+   3;1136,1137,1186;,
+   3;1188,1187,1138;,
+   3;1137,1138,1187;,
+   3;1189,1188,1139;,
+   3;1138,1139,1188;,
+   3;1190,1189,1140;,
+   3;1139,1140,1189;,
+   3;1191,1190,1141;,
+   3;1140,1141,1190;,
+   3;1192,1191,1142;,
+   3;1141,1142,1191;,
+   3;1193,1192,1143;,
+   3;1142,1143,1192;,
+   3;1194,1193,1144;,
+   3;1143,1144,1193;,
+   3;1195,1194,1145;,
+   3;1144,1145,1194;,
+   3;1196,1195,1146;,
+   3;1145,1146,1195;,
+   3;1197,1196,1147;,
+   3;1146,1147,1196;,
+   3;1198,1197,1148;,
+   3;1147,1148,1197;,
+   3;1199,1198,1149;,
+   3;1148,1149,1198;,
+   3;2475,1199,2474;,
+   3;1149,2474,1199;,
+   3;1201,1200,1151;,
+   3;1150,1151,1200;,
+   3;1202,1201,1152;,
+   3;1151,1152,1201;,
+   3;1203,1202,1153;,
+   3;1152,1153,1202;,
+   3;1204,1203,1154;,
+   3;1153,1154,1203;,
+   3;1205,1204,1155;,
+   3;1154,1155,1204;,
+   3;1206,1205,1156;,
+   3;1155,1156,1205;,
+   3;1207,1206,1157;,
+   3;1156,1157,1206;,
+   3;1208,1207,1158;,
+   3;1157,1158,1207;,
+   3;1209,1208,1159;,
+   3;1158,1159,1208;,
+   3;1210,1209,1160;,
+   3;1159,1160,1209;,
+   3;1211,1210,1161;,
+   3;1160,1161,1210;,
+   3;1212,1211,1162;,
+   3;1161,1162,1211;,
+   3;1213,1212,1163;,
+   3;1162,1163,1212;,
+   3;1214,1213,1164;,
+   3;1163,1164,1213;,
+   3;1215,1214,1165;,
+   3;1164,1165,1214;,
+   3;1216,1215,1166;,
+   3;1165,1166,1215;,
+   3;1217,1216,1167;,
+   3;1166,1167,1216;,
+   3;1218,1217,1168;,
+   3;1167,1168,1217;,
+   3;1219,1218,1169;,
+   3;1168,1169,1218;,
+   3;1220,1219,1170;,
+   3;1169,1170,1219;,
+   3;1221,1220,1171;,
+   3;1170,1171,1220;,
+   3;1222,1221,1172;,
+   3;1171,1172,1221;,
+   3;1223,1222,1173;,
+   3;1172,1173,1222;,
+   3;1224,1223,1174;,
+   3;1173,1174,1223;,
+   3;1225,1224,1175;,
+   3;1174,1175,1224;,
+   3;1226,1225,1176;,
+   3;1175,1176,1225;,
+   3;1227,1226,1177;,
+   3;1176,1177,1226;,
+   3;1228,1227,1178;,
+   3;1177,1178,1227;,
+   3;1229,1228,1179;,
+   3;1178,1179,1228;,
+   3;1230,1229,1180;,
+   3;1179,1180,1229;,
+   3;1231,1230,1181;,
+   3;1180,1181,1230;,
+   3;1232,1231,1182;,
+   3;1181,1182,1231;,
+   3;1233,1232,1183;,
+   3;1182,1183,1232;,
+   3;1234,1233,1184;,
+   3;1183,1184,1233;,
+   3;1235,1234,1185;,
+   3;1184,1185,1234;,
+   3;1236,1235,1186;,
+   3;1185,1186,1235;,
+   3;1237,1236,1187;,
+   3;1186,1187,1236;,
+   3;1238,1237,1188;,
+   3;1187,1188,1237;,
+   3;1239,1238,1189;,
+   3;1188,1189,1238;,
+   3;1240,1239,1190;,
+   3;1189,1190,1239;,
+   3;1241,1240,1191;,
+   3;1190,1191,1240;,
+   3;1242,1241,1192;,
+   3;1191,1192,1241;,
+   3;1243,1242,1193;,
+   3;1192,1193,1242;,
+   3;1244,1243,1194;,
+   3;1193,1194,1243;,
+   3;1245,1244,1195;,
+   3;1194,1195,1244;,
+   3;1246,1245,1196;,
+   3;1195,1196,1245;,
+   3;1247,1246,1197;,
+   3;1196,1197,1246;,
+   3;1248,1247,1198;,
+   3;1197,1198,1247;,
+   3;1249,1248,1199;,
+   3;1198,1199,1248;,
+   3;2476,1249,2475;,
+   3;1199,2475,1249;,
+   3;1200,1201,1250;,
+   3;1201,1251,1250;,
+   3;1201,1202,1251;,
+   3;1202,1252,1251;,
+   3;1202,1203,1252;,
+   3;1203,1253,1252;,
+   3;1203,1204,1253;,
+   3;1204,1254,1253;,
+   3;1204,1205,1254;,
+   3;1205,1255,1254;,
+   3;1205,1206,1255;,
+   3;1206,1256,1255;,
+   3;1206,1207,1256;,
+   3;1207,1257,1256;,
+   3;1207,1208,1257;,
+   3;1208,1258,1257;,
+   3;1208,1209,1258;,
+   3;1209,1259,1258;,
+   3;1209,1210,1259;,
+   3;1210,1260,1259;,
+   3;1210,1211,1260;,
+   3;1211,1261,1260;,
+   3;1211,1212,1261;,
+   3;1212,1262,1261;,
+   3;1212,1213,1262;,
+   3;1213,1263,1262;,
+   3;1213,1214,1263;,
+   3;1214,1264,1263;,
+   3;1214,1215,1264;,
+   3;1215,1265,1264;,
+   3;1215,1216,1265;,
+   3;1216,1266,1265;,
+   3;1216,1217,1266;,
+   3;1217,1267,1266;,
+   3;1217,1218,1267;,
+   3;1218,1268,1267;,
+   3;1218,1219,1268;,
+   3;1219,1269,1268;,
+   3;1219,1220,1269;,
+   3;1220,1270,1269;,
+   3;1220,1221,1270;,
+   3;1221,1271,1270;,
+   3;1221,1222,1271;,
+   3;1222,1272,1271;,
+   3;1222,1223,1272;,
+   3;1223,1273,1272;,
+   3;1223,1224,1273;,
+   3;1224,1274,1273;,
+   3;1224,1225,1274;,
+   3;1225,1275,1274;,
+   3;1225,1226,1275;,
+   3;1226,1276,1275;,
+   3;1226,1227,1276;,
+   3;1227,1277,1276;,
+   3;1227,1228,1277;,
+   3;1228,1278,1277;,
+   3;1228,1229,1278;,
+   3;1229,1279,1278;,
+   3;1229,1230,1279;,
+   3;1230,1280,1279;,
+   3;1230,1231,1280;,
+   3;1231,1281,1280;,
+   3;1231,1232,1281;,
+   3;1232,1282,1281;,
+   3;1232,1233,1282;,
+   3;1233,1283,1282;,
+   3;1233,1234,1283;,
+   3;1234,1284,1283;,
+   3;1234,1235,1284;,
+   3;1235,1285,1284;,
+   3;1235,1236,1285;,
+   3;1236,1286,1285;,
+   3;1236,1237,1286;,
+   3;1237,1287,1286;,
+   3;1237,1238,1287;,
+   3;1238,1288,1287;,
+   3;1238,1239,1288;,
+   3;1239,1289,1288;,
+   3;1239,1240,1289;,
+   3;1240,1290,1289;,
+   3;1240,1241,1290;,
+   3;1241,1291,1290;,
+   3;1241,1242,1291;,
+   3;1242,1292,1291;,
+   3;1242,1243,1292;,
+   3;1243,1293,1292;,
+   3;1243,1244,1293;,
+   3;1244,1294,1293;,
+   3;1244,1245,1294;,
+   3;1245,1295,1294;,
+   3;1245,1246,1295;,
+   3;1246,1296,1295;,
+   3;1246,1247,1296;,
+   3;1247,1297,1296;,
+   3;1247,1248,1297;,
+   3;1248,1298,1297;,
+   3;1248,1249,1298;,
+   3;1249,1299,1298;,
+   3;1249,2476,1299;,
+   3;2476,2477,1299;,
+   3;1250,1251,1300;,
+   3;1251,1301,1300;,
+   3;1251,1252,1301;,
+   3;1252,1302,1301;,
+   3;1252,1253,1302;,
+   3;1253,1303,1302;,
+   3;1253,1254,1303;,
+   3;1254,1304,1303;,
+   3;1254,1255,1304;,
+   3;1255,1305,1304;,
+   3;1255,1256,1305;,
+   3;1256,1306,1305;,
+   3;1256,1257,1306;,
+   3;1257,1307,1306;,
+   3;1257,1258,1307;,
+   3;1258,1308,1307;,
+   3;1258,1259,1308;,
+   3;1259,1309,1308;,
+   3;1259,1260,1309;,
+   3;1260,1310,1309;,
+   3;1260,1261,1310;,
+   3;1261,1311,1310;,
+   3;1261,1262,1311;,
+   3;1262,1312,1311;,
+   3;1262,1263,1312;,
+   3;1263,1313,1312;,
+   3;1263,1264,1313;,
+   3;1264,1314,1313;,
+   3;1264,1265,1314;,
+   3;1265,1315,1314;,
+   3;1265,1266,1315;,
+   3;1266,1316,1315;,
+   3;1266,1267,1316;,
+   3;1267,1317,1316;,
+   3;1267,1268,1317;,
+   3;1268,1318,1317;,
+   3;1268,1269,1318;,
+   3;1269,1319,1318;,
+   3;1269,1270,1319;,
+   3;1270,1320,1319;,
+   3;1270,1271,1320;,
+   3;1271,1321,1320;,
+   3;1271,1272,1321;,
+   3;1272,1322,1321;,
+   3;1272,1273,1322;,
+   3;1273,1323,1322;,
+   3;1273,1274,1323;,
+   3;1274,1324,1323;,
+   3;1274,1275,1324;,
+   3;1275,1325,1324;,
+   3;1275,1276,1325;,
+   3;1276,1326,1325;,
+   3;1276,1277,1326;,
+   3;1277,1327,1326;,
+   3;1277,1278,1327;,
+   3;1278,1328,1327;,
+   3;1278,1279,1328;,
+   3;1279,1329,1328;,
+   3;1279,1280,1329;,
+   3;1280,1330,1329;,
+   3;1280,1281,1330;,
+   3;1281,1331,1330;,
+   3;1281,1282,1331;,
+   3;1282,1332,1331;,
+   3;1282,1283,1332;,
+   3;1283,1333,1332;,
+   3;1283,1284,1333;,
+   3;1284,1334,1333;,
+   3;1284,1285,1334;,
+   3;1285,1335,1334;,
+   3;1285,1286,1335;,
+   3;1286,1336,1335;,
+   3;1286,1287,1336;,
+   3;1287,1337,1336;,
+   3;1287,1288,1337;,
+   3;1288,1338,1337;,
+   3;1288,1289,1338;,
+   3;1289,1339,1338;,
+   3;1289,1290,1339;,
+   3;1290,1340,1339;,
+   3;1290,1291,1340;,
+   3;1291,1341,1340;,
+   3;1291,1292,1341;,
+   3;1292,1342,1341;,
+   3;1292,1293,1342;,
+   3;1293,1343,1342;,
+   3;1293,1294,1343;,
+   3;1294,1344,1343;,
+   3;1294,1295,1344;,
+   3;1295,1345,1344;,
+   3;1295,1296,1345;,
+   3;1296,1346,1345;,
+   3;1296,1297,1346;,
+   3;1297,1347,1346;,
+   3;1297,1298,1347;,
+   3;1298,1348,1347;,
+   3;1298,1299,1348;,
+   3;1299,1349,1348;,
+   3;1299,2477,1349;,
+   3;2477,2478,1349;,
+   3;1300,1301,1350;,
+   3;1301,1351,1350;,
+   3;1301,1302,1351;,
+   3;1302,1352,1351;,
+   3;1302,1303,1352;,
+   3;1303,1353,1352;,
+   3;1303,1304,1353;,
+   3;1304,1354,1353;,
+   3;1304,1305,1354;,
+   3;1305,1355,1354;,
+   3;1305,1306,1355;,
+   3;1306,1356,1355;,
+   3;1306,1307,1356;,
+   3;1307,1357,1356;,
+   3;1307,1308,1357;,
+   3;1308,1358,1357;,
+   3;1308,1309,1358;,
+   3;1309,1359,1358;,
+   3;1309,1310,1359;,
+   3;1310,1360,1359;,
+   3;1310,1311,1360;,
+   3;1311,1361,1360;,
+   3;1311,1312,1361;,
+   3;1312,1362,1361;,
+   3;1312,1313,1362;,
+   3;1313,1363,1362;,
+   3;1313,1314,1363;,
+   3;1314,1364,1363;,
+   3;1314,1315,1364;,
+   3;1315,1365,1364;,
+   3;1315,1316,1365;,
+   3;1316,1366,1365;,
+   3;1316,1317,1366;,
+   3;1317,1367,1366;,
+   3;1317,1318,1367;,
+   3;1318,1368,1367;,
+   3;1318,1319,1368;,
+   3;1319,1369,1368;,
+   3;1319,1320,1369;,
+   3;1320,1370,1369;,
+   3;1320,1321,1370;,
+   3;1321,1371,1370;,
+   3;1321,1322,1371;,
+   3;1322,1372,1371;,
+   3;1322,1323,1372;,
+   3;1323,1373,1372;,
+   3;1323,1324,1373;,
+   3;1324,1374,1373;,
+   3;1324,1325,1374;,
+   3;1325,1375,1374;,
+   3;1325,1326,1375;,
+   3;1326,1376,1375;,
+   3;1326,1327,1376;,
+   3;1327,1377,1376;,
+   3;1327,1328,1377;,
+   3;1328,1378,1377;,
+   3;1328,1329,1378;,
+   3;1329,1379,1378;,
+   3;1329,1330,1379;,
+   3;1330,1380,1379;,
+   3;1330,1331,1380;,
+   3;1331,1381,1380;,
+   3;1331,1332,1381;,
+   3;1332,1382,1381;,
+   3;1332,1333,1382;,
+   3;1333,1383,1382;,
+   3;1333,1334,1383;,
+   3;1334,1384,1383;,
+   3;1334,1335,1384;,
+   3;1335,1385,1384;,
+   3;1335,1336,1385;,
+   3;1336,1386,1385;,
+   3;1336,1337,1386;,
+   3;1337,1387,1386;,
+   3;1337,1338,1387;,
+   3;1338,1388,1387;,
+   3;1338,1339,1388;,
+   3;1339,1389,1388;,
+   3;1339,1340,1389;,
+   3;1340,1390,1389;,
+   3;1340,1341,1390;,
+   3;1341,1391,1390;,
+   3;1341,1342,1391;,
+   3;1342,1392,1391;,
+   3;1342,1343,1392;,
+   3;1343,1393,1392;,
+   3;1343,1344,1393;,
+   3;1344,1394,1393;,
+   3;1344,1345,1394;,
+   3;1345,1395,1394;,
+   3;1345,1346,1395;,
+   3;1346,1396,1395;,
+   3;1346,1347,1396;,
+   3;1347,1397,1396;,
+   3;1347,1348,1397;,
+   3;1348,1398,1397;,
+   3;1348,1349,1398;,
+   3;1349,1399,1398;,
+   3;1349,2478,1399;,
+   3;2478,2479,1399;,
+   3;1350,1351,1400;,
+   3;1351,1401,1400;,
+   3;1351,1352,1401;,
+   3;1352,1402,1401;,
+   3;1352,1353,1402;,
+   3;1353,1403,1402;,
+   3;1353,1354,1403;,
+   3;1354,1404,1403;,
+   3;1354,1355,1404;,
+   3;1355,1405,1404;,
+   3;1355,1356,1405;,
+   3;1356,1406,1405;,
+   3;1356,1357,1406;,
+   3;1357,1407,1406;,
+   3;1357,1358,1407;,
+   3;1358,1408,1407;,
+   3;1358,1359,1408;,
+   3;1359,1409,1408;,
+   3;1359,1360,1409;,
+   3;1360,1410,1409;,
+   3;1360,1361,1410;,
+   3;1361,1411,1410;,
+   3;1361,1362,1411;,
+   3;1362,1412,1411;,
+   3;1362,1363,1412;,
+   3;1363,1413,1412;,
+   3;1363,1364,1413;,
+   3;1364,1414,1413;,
+   3;1364,1365,1414;,
+   3;1365,1415,1414;,
+   3;1365,1366,1415;,
+   3;1366,1416,1415;,
+   3;1366,1367,1416;,
+   3;1367,1417,1416;,
+   3;1367,1368,1417;,
+   3;1368,1418,1417;,
+   3;1368,1369,1418;,
+   3;1369,1419,1418;,
+   3;1369,1370,1419;,
+   3;1370,1420,1419;,
+   3;1370,1371,1420;,
+   3;1371,1421,1420;,
+   3;1371,1372,1421;,
+   3;1372,1422,1421;,
+   3;1372,1373,1422;,
+   3;1373,1423,1422;,
+   3;1373,1374,1423;,
+   3;1374,1424,1423;,
+   3;1374,1375,1424;,
+   3;1375,1425,1424;,
+   3;1375,1376,1425;,
+   3;1376,1426,1425;,
+   3;1376,1377,1426;,
+   3;1377,1427,1426;,
+   3;1377,1378,1427;,
+   3;1378,1428,1427;,
+   3;1378,1379,1428;,
+   3;1379,1429,1428;,
+   3;1379,1380,1429;,
+   3;1380,1430,1429;,
+   3;1380,1381,1430;,
+   3;1381,1431,1430;,
+   3;1381,1382,1431;,
+   3;1382,1432,1431;,
+   3;1382,1383,1432;,
+   3;1383,1433,1432;,
+   3;1383,1384,1433;,
+   3;1384,1434,1433;,
+   3;1384,1385,1434;,
+   3;1385,1435,1434;,
+   3;1385,1386,1435;,
+   3;1386,1436,1435;,
+   3;1386,1387,1436;,
+   3;1387,1437,1436;,
+   3;1387,1388,1437;,
+   3;1388,1438,1437;,
+   3;1388,1389,1438;,
+   3;1389,1439,1438;,
+   3;1389,1390,1439;,
+   3;1390,1440,1439;,
+   3;1390,1391,1440;,
+   3;1391,1441,1440;,
+   3;1391,1392,1441;,
+   3;1392,1442,1441;,
+   3;1392,1393,1442;,
+   3;1393,1443,1442;,
+   3;1393,1394,1443;,
+   3;1394,1444,1443;,
+   3;1394,1395,1444;,
+   3;1395,1445,1444;,
+   3;1395,1396,1445;,
+   3;1396,1446,1445;,
+   3;1396,1397,1446;,
+   3;1397,1447,1446;,
+   3;1397,1398,1447;,
+   3;1398,1448,1447;,
+   3;1398,1399,1448;,
+   3;1399,1449,1448;,
+   3;1399,2479,1449;,
+   3;2479,2480,1449;,
+   3;1400,1401,1450;,
+   3;1401,1451,1450;,
+   3;1401,1402,1451;,
+   3;1402,1452,1451;,
+   3;1402,1403,1452;,
+   3;1403,1453,1452;,
+   3;1403,1404,1453;,
+   3;1404,1454,1453;,
+   3;1404,1405,1454;,
+   3;1405,1455,1454;,
+   3;1405,1406,1455;,
+   3;1406,1456,1455;,
+   3;1406,1407,1456;,
+   3;1407,1457,1456;,
+   3;1407,1408,1457;,
+   3;1408,1458,1457;,
+   3;1408,1409,1458;,
+   3;1409,1459,1458;,
+   3;1409,1410,1459;,
+   3;1410,1460,1459;,
+   3;1410,1411,1460;,
+   3;1411,1461,1460;,
+   3;1411,1412,1461;,
+   3;1412,1462,1461;,
+   3;1412,1413,1462;,
+   3;1413,1463,1462;,
+   3;1413,1414,1463;,
+   3;1414,1464,1463;,
+   3;1414,1415,1464;,
+   3;1415,1465,1464;,
+   3;1415,1416,1465;,
+   3;1416,1466,1465;,
+   3;1416,1417,1466;,
+   3;1417,1467,1466;,
+   3;1417,1418,1467;,
+   3;1418,1468,1467;,
+   3;1418,1419,1468;,
+   3;1419,1469,1468;,
+   3;1419,1420,1469;,
+   3;1420,1470,1469;,
+   3;1420,1421,1470;,
+   3;1421,1471,1470;,
+   3;1421,1422,1471;,
+   3;1422,1472,1471;,
+   3;1422,1423,1472;,
+   3;1423,1473,1472;,
+   3;1423,1424,1473;,
+   3;1424,1474,1473;,
+   3;1424,1425,1474;,
+   3;1425,1475,1474;,
+   3;1425,1426,1475;,
+   3;1426,1476,1475;,
+   3;1426,1427,1476;,
+   3;1427,1477,1476;,
+   3;1427,1428,1477;,
+   3;1428,1478,1477;,
+   3;1428,1429,1478;,
+   3;1429,1479,1478;,
+   3;1429,1430,1479;,
+   3;1430,1480,1479;,
+   3;1430,1431,1480;,
+   3;1431,1481,1480;,
+   3;1431,1432,1481;,
+   3;1432,1482,1481;,
+   3;1432,1433,1482;,
+   3;1433,1483,1482;,
+   3;1433,1434,1483;,
+   3;1434,1484,1483;,
+   3;1434,1435,1484;,
+   3;1435,1485,1484;,
+   3;1435,1436,1485;,
+   3;1436,1486,1485;,
+   3;1436,1437,1486;,
+   3;1437,1487,1486;,
+   3;1437,1438,1487;,
+   3;1438,1488,1487;,
+   3;1438,1439,1488;,
+   3;1439,1489,1488;,
+   3;1439,1440,1489;,
+   3;1440,1490,1489;,
+   3;1440,1441,1490;,
+   3;1441,1491,1490;,
+   3;1441,1442,1491;,
+   3;1442,1492,1491;,
+   3;1442,1443,1492;,
+   3;1443,1493,1492;,
+   3;1443,1444,1493;,
+   3;1444,1494,1493;,
+   3;1444,1445,1494;,
+   3;1445,1495,1494;,
+   3;1445,1446,1495;,
+   3;1446,1496,1495;,
+   3;1446,1447,1496;,
+   3;1447,1497,1496;,
+   3;1447,1448,1497;,
+   3;1448,1498,1497;,
+   3;1448,1449,1498;,
+   3;1449,1499,1498;,
+   3;1449,2480,1499;,
+   3;2480,2481,1499;,
+   3;1450,1451,1500;,
+   3;1451,1501,1500;,
+   3;1451,1452,1501;,
+   3;1452,1502,1501;,
+   3;1452,1453,1502;,
+   3;1453,1503,1502;,
+   3;1453,1454,1503;,
+   3;1454,1504,1503;,
+   3;1454,1455,1504;,
+   3;1455,1505,1504;,
+   3;1455,1456,1505;,
+   3;1456,1506,1505;,
+   3;1456,1457,1506;,
+   3;1457,1507,1506;,
+   3;1457,1458,1507;,
+   3;1458,1508,1507;,
+   3;1458,1459,1508;,
+   3;1459,1509,1508;,
+   3;1459,1460,1509;,
+   3;1460,1510,1509;,
+   3;1460,1461,1510;,
+   3;1461,1511,1510;,
+   3;1461,1462,1511;,
+   3;1462,1512,1511;,
+   3;1462,1463,1512;,
+   3;1463,1513,1512;,
+   3;1463,1464,1513;,
+   3;1464,1514,1513;,
+   3;1464,1465,1514;,
+   3;1465,1515,1514;,
+   3;1465,1466,1515;,
+   3;1466,1516,1515;,
+   3;1466,1467,1516;,
+   3;1467,1517,1516;,
+   3;1467,1468,1517;,
+   3;1468,1518,1517;,
+   3;1468,1469,1518;,
+   3;1469,1519,1518;,
+   3;1469,1470,1519;,
+   3;1470,1520,1519;,
+   3;1470,1471,1520;,
+   3;1471,1521,1520;,
+   3;1471,1472,1521;,
+   3;1472,1522,1521;,
+   3;1472,1473,1522;,
+   3;1473,1523,1522;,
+   3;1473,1474,1523;,
+   3;1474,1524,1523;,
+   3;1474,1475,1524;,
+   3;1475,1525,1524;,
+   3;1475,1476,1525;,
+   3;1476,1526,1525;,
+   3;1476,1477,1526;,
+   3;1477,1527,1526;,
+   3;1477,1478,1527;,
+   3;1478,1528,1527;,
+   3;1478,1479,1528;,
+   3;1479,1529,1528;,
+   3;1479,1480,1529;,
+   3;1480,1530,1529;,
+   3;1480,1481,1530;,
+   3;1481,1531,1530;,
+   3;1481,1482,1531;,
+   3;1482,1532,1531;,
+   3;1482,1483,1532;,
+   3;1483,1533,1532;,
+   3;1483,1484,1533;,
+   3;1484,1534,1533;,
+   3;1484,1485,1534;,
+   3;1485,1535,1534;,
+   3;1485,1486,1535;,
+   3;1486,1536,1535;,
+   3;1486,1487,1536;,
+   3;1487,1537,1536;,
+   3;1487,1488,1537;,
+   3;1488,1538,1537;,
+   3;1488,1489,1538;,
+   3;1489,1539,1538;,
+   3;1489,1490,1539;,
+   3;1490,1540,1539;,
+   3;1490,1491,1540;,
+   3;1491,1541,1540;,
+   3;1491,1492,1541;,
+   3;1492,1542,1541;,
+   3;1492,1493,1542;,
+   3;1493,1543,1542;,
+   3;1493,1494,1543;,
+   3;1494,1544,1543;,
+   3;1494,1495,1544;,
+   3;1495,1545,1544;,
+   3;1495,1496,1545;,
+   3;1496,1546,1545;,
+   3;1496,1497,1546;,
+   3;1497,1547,1546;,
+   3;1497,1498,1547;,
+   3;1498,1548,1547;,
+   3;1498,1499,1548;,
+   3;1499,1549,1548;,
+   3;1499,2481,1549;,
+   3;2481,2482,1549;,
+   3;1500,1501,1550;,
+   3;1501,1551,1550;,
+   3;1501,1502,1551;,
+   3;1502,1552,1551;,
+   3;1502,1503,1552;,
+   3;1503,1553,1552;,
+   3;1503,1504,1553;,
+   3;1504,1554,1553;,
+   3;1504,1505,1554;,
+   3;1505,1555,1554;,
+   3;1505,1506,1555;,
+   3;1506,1556,1555;,
+   3;1506,1507,1556;,
+   3;1507,1557,1556;,
+   3;1507,1508,1557;,
+   3;1508,1558,1557;,
+   3;1508,1509,1558;,
+   3;1509,1559,1558;,
+   3;1509,1510,1559;,
+   3;1510,1560,1559;,
+   3;1510,1511,1560;,
+   3;1511,1561,1560;,
+   3;1511,1512,1561;,
+   3;1512,1562,1561;,
+   3;1512,1513,1562;,
+   3;1513,1563,1562;,
+   3;1513,1514,1563;,
+   3;1514,1564,1563;,
+   3;1514,1515,1564;,
+   3;1515,1565,1564;,
+   3;1515,1516,1565;,
+   3;1516,1566,1565;,
+   3;1516,1517,1566;,
+   3;1517,1567,1566;,
+   3;1517,1518,1567;,
+   3;1518,1568,1567;,
+   3;1518,1519,1568;,
+   3;1519,1569,1568;,
+   3;1519,1520,1569;,
+   3;1520,1570,1569;,
+   3;1520,1521,1570;,
+   3;1521,1571,1570;,
+   3;1521,1522,1571;,
+   3;1522,1572,1571;,
+   3;1522,1523,1572;,
+   3;1523,1573,1572;,
+   3;1523,1524,1573;,
+   3;1524,1574,1573;,
+   3;1524,1525,1574;,
+   3;1525,1575,1574;,
+   3;1525,1526,1575;,
+   3;1526,1576,1575;,
+   3;1526,1527,1576;,
+   3;1527,1577,1576;,
+   3;1527,1528,1577;,
+   3;1528,1578,1577;,
+   3;1528,1529,1578;,
+   3;1529,1579,1578;,
+   3;1529,1530,1579;,
+   3;1530,1580,1579;,
+   3;1530,1531,1580;,
+   3;1531,1581,1580;,
+   3;1531,1532,1581;,
+   3;1532,1582,1581;,
+   3;1532,1533,1582;,
+   3;1533,1583,1582;,
+   3;1533,1534,1583;,
+   3;1534,1584,1583;,
+   3;1534,1535,1584;,
+   3;1535,1585,1584;,
+   3;1535,1536,1585;,
+   3;1536,1586,1585;,
+   3;1536,1537,1586;,
+   3;1537,1587,1586;,
+   3;1537,1538,1587;,
+   3;1538,1588,1587;,
+   3;1538,1539,1588;,
+   3;1539,1589,1588;,
+   3;1539,1540,1589;,
+   3;1540,1590,1589;,
+   3;1540,1541,1590;,
+   3;1541,1591,1590;,
+   3;1541,1542,1591;,
+   3;1542,1592,1591;,
+   3;1542,1543,1592;,
+   3;1543,1593,1592;,
+   3;1543,1544,1593;,
+   3;1544,1594,1593;,
+   3;1544,1545,1594;,
+   3;1545,1595,1594;,
+   3;1545,1546,1595;,
+   3;1546,1596,1595;,
+   3;1546,1547,1596;,
+   3;1547,1597,1596;,
+   3;1547,1548,1597;,
+   3;1548,1598,1597;,
+   3;1548,1549,1598;,
+   3;1549,1599,1598;,
+   3;1549,2482,1599;,
+   3;2482,2483,1599;,
+   3;1550,1551,1600;,
+   3;1551,1601,1600;,
+   3;1551,1552,1601;,
+   3;1552,1602,1601;,
+   3;1552,1553,1602;,
+   3;1553,1603,1602;,
+   3;1553,1554,1603;,
+   3;1554,1604,1603;,
+   3;1554,1555,1604;,
+   3;1555,1605,1604;,
+   3;1555,1556,1605;,
+   3;1556,1606,1605;,
+   3;1556,1557,1606;,
+   3;1557,1607,1606;,
+   3;1557,1558,1607;,
+   3;1558,1608,1607;,
+   3;1558,1559,1608;,
+   3;1559,1609,1608;,
+   3;1559,1560,1609;,
+   3;1560,1610,1609;,
+   3;1560,1561,1610;,
+   3;1561,1611,1610;,
+   3;1561,1562,1611;,
+   3;1562,1612,1611;,
+   3;1562,1563,1612;,
+   3;1563,1613,1612;,
+   3;1563,1564,1613;,
+   3;1564,1614,1613;,
+   3;1564,1565,1614;,
+   3;1565,1615,1614;,
+   3;1565,1566,1615;,
+   3;1566,1616,1615;,
+   3;1566,1567,1616;,
+   3;1567,1617,1616;,
+   3;1567,1568,1617;,
+   3;1568,1618,1617;,
+   3;1568,1569,1618;,
+   3;1569,1619,1618;,
+   3;1569,1570,1619;,
+   3;1570,1620,1619;,
+   3;1570,1571,1620;,
+   3;1571,1621,1620;,
+   3;1571,1572,1621;,
+   3;1572,1622,1621;,
+   3;1572,1573,1622;,
+   3;1573,1623,1622;,
+   3;1573,1574,1623;,
+   3;1574,1624,1623;,
+   3;1574,1575,1624;,
+   3;1575,1625,1624;,
+   3;1575,1576,1625;,
+   3;1576,1626,1625;,
+   3;1576,1577,1626;,
+   3;1577,1627,1626;,
+   3;1577,1578,1627;,
+   3;1578,1628,1627;,
+   3;1578,1579,1628;,
+   3;1579,1629,1628;,
+   3;1579,1580,1629;,
+   3;1580,1630,1629;,
+   3;1580,1581,1630;,
+   3;1581,1631,1630;,
+   3;1581,1582,1631;,
+   3;1582,1632,1631;,
+   3;1582,1583,1632;,
+   3;1583,1633,1632;,
+   3;1583,1584,1633;,
+   3;1584,1634,1633;,
+   3;1584,1585,1634;,
+   3;1585,1635,1634;,
+   3;1585,1586,1635;,
+   3;1586,1636,1635;,
+   3;1586,1587,1636;,
+   3;1587,1637,1636;,
+   3;1587,1588,1637;,
+   3;1588,1638,1637;,
+   3;1588,1589,1638;,
+   3;1589,1639,1638;,
+   3;1589,1590,1639;,
+   3;1590,1640,1639;,
+   3;1590,1591,1640;,
+   3;1591,1641,1640;,
+   3;1591,1592,1641;,
+   3;1592,1642,1641;,
+   3;1592,1593,1642;,
+   3;1593,1643,1642;,
+   3;1593,1594,1643;,
+   3;1594,1644,1643;,
+   3;1594,1595,1644;,
+   3;1595,1645,1644;,
+   3;1595,1596,1645;,
+   3;1596,1646,1645;,
+   3;1596,1597,1646;,
+   3;1597,1647,1646;,
+   3;1597,1598,1647;,
+   3;1598,1648,1647;,
+   3;1598,1599,1648;,
+   3;1599,1649,1648;,
+   3;1599,2483,1649;,
+   3;2483,2484,1649;,
+   3;1600,1601,1650;,
+   3;1601,1651,1650;,
+   3;1601,1602,1651;,
+   3;1602,1652,1651;,
+   3;1602,1603,1652;,
+   3;1603,1653,1652;,
+   3;1603,1604,1653;,
+   3;1604,1654,1653;,
+   3;1604,1605,1654;,
+   3;1605,1655,1654;,
+   3;1605,1606,1655;,
+   3;1606,1656,1655;,
+   3;1606,1607,1656;,
+   3;1607,1657,1656;,
+   3;1607,1608,1657;,
+   3;1608,1658,1657;,
+   3;1608,1609,1658;,
+   3;1609,1659,1658;,
+   3;1609,1610,1659;,
+   3;1610,1660,1659;,
+   3;1610,1611,1660;,
+   3;1611,1661,1660;,
+   3;1611,1612,1661;,
+   3;1612,1662,1661;,
+   3;1612,1613,1662;,
+   3;1613,1663,1662;,
+   3;1613,1614,1663;,
+   3;1614,1664,1663;,
+   3;1614,1615,1664;,
+   3;1615,1665,1664;,
+   3;1615,1616,1665;,
+   3;1616,1666,1665;,
+   3;1616,1617,1666;,
+   3;1617,1667,1666;,
+   3;1617,1618,1667;,
+   3;1618,1668,1667;,
+   3;1618,1619,1668;,
+   3;1619,1669,1668;,
+   3;1619,1620,1669;,
+   3;1620,1670,1669;,
+   3;1620,1621,1670;,
+   3;1621,1671,1670;,
+   3;1621,1622,1671;,
+   3;1622,1672,1671;,
+   3;1622,1623,1672;,
+   3;1623,1673,1672;,
+   3;1623,1624,1673;,
+   3;1624,1674,1673;,
+   3;1624,1625,1674;,
+   3;1625,1675,1674;,
+   3;1625,1626,1675;,
+   3;1626,1676,1675;,
+   3;1626,1627,1676;,
+   3;1627,1677,1676;,
+   3;1627,1628,1677;,
+   3;1628,1678,1677;,
+   3;1628,1629,1678;,
+   3;1629,1679,1678;,
+   3;1629,1630,1679;,
+   3;1630,1680,1679;,
+   3;1630,1631,1680;,
+   3;1631,1681,1680;,
+   3;1631,1632,1681;,
+   3;1632,1682,1681;,
+   3;1632,1633,1682;,
+   3;1633,1683,1682;,
+   3;1633,1634,1683;,
+   3;1634,1684,1683;,
+   3;1634,1635,1684;,
+   3;1635,1685,1684;,
+   3;1635,1636,1685;,
+   3;1636,1686,1685;,
+   3;1636,1637,1686;,
+   3;1637,1687,1686;,
+   3;1637,1638,1687;,
+   3;1638,1688,1687;,
+   3;1638,1639,1688;,
+   3;1639,1689,1688;,
+   3;1639,1640,1689;,
+   3;1640,1690,1689;,
+   3;1640,1641,1690;,
+   3;1641,1691,1690;,
+   3;1641,1642,1691;,
+   3;1642,1692,1691;,
+   3;1642,1643,1692;,
+   3;1643,1693,1692;,
+   3;1643,1644,1693;,
+   3;1644,1694,1693;,
+   3;1644,1645,1694;,
+   3;1645,1695,1694;,
+   3;1645,1646,1695;,
+   3;1646,1696,1695;,
+   3;1646,1647,1696;,
+   3;1647,1697,1696;,
+   3;1647,1648,1697;,
+   3;1648,1698,1697;,
+   3;1648,1649,1698;,
+   3;1649,1699,1698;,
+   3;1649,2484,1699;,
+   3;2484,2485,1699;,
+   3;1650,1651,1700;,
+   3;1651,1701,1700;,
+   3;1651,1652,1701;,
+   3;1652,1702,1701;,
+   3;1652,1653,1702;,
+   3;1653,1703,1702;,
+   3;1653,1654,1703;,
+   3;1654,1704,1703;,
+   3;1654,1655,1704;,
+   3;1655,1705,1704;,
+   3;1655,1656,1705;,
+   3;1656,1706,1705;,
+   3;1656,1657,1706;,
+   3;1657,1707,1706;,
+   3;1657,1658,1707;,
+   3;1658,1708,1707;,
+   3;1658,1659,1708;,
+   3;1659,1709,1708;,
+   3;1659,1660,1709;,
+   3;1660,1710,1709;,
+   3;1660,1661,1710;,
+   3;1661,1711,1710;,
+   3;1661,1662,1711;,
+   3;1662,1712,1711;,
+   3;1662,1663,1712;,
+   3;1663,1713,1712;,
+   3;1663,1664,1713;,
+   3;1664,1714,1713;,
+   3;1664,1665,1714;,
+   3;1665,1715,1714;,
+   3;1665,1666,1715;,
+   3;1666,1716,1715;,
+   3;1666,1667,1716;,
+   3;1667,1717,1716;,
+   3;1667,1668,1717;,
+   3;1668,1718,1717;,
+   3;1668,1669,1718;,
+   3;1669,1719,1718;,
+   3;1669,1670,1719;,
+   3;1670,1720,1719;,
+   3;1670,1671,1720;,
+   3;1671,1721,1720;,
+   3;1671,1672,1721;,
+   3;1672,1722,1721;,
+   3;1672,1673,1722;,
+   3;1673,1723,1722;,
+   3;1673,1674,1723;,
+   3;1674,1724,1723;,
+   3;1674,1675,1724;,
+   3;1675,1725,1724;,
+   3;1675,1676,1725;,
+   3;1676,1726,1725;,
+   3;1676,1677,1726;,
+   3;1677,1727,1726;,
+   3;1677,1678,1727;,
+   3;1678,1728,1727;,
+   3;1678,1679,1728;,
+   3;1679,1729,1728;,
+   3;1679,1680,1729;,
+   3;1680,1730,1729;,
+   3;1680,1681,1730;,
+   3;1681,1731,1730;,
+   3;1681,1682,1731;,
+   3;1682,1732,1731;,
+   3;1682,1683,1732;,
+   3;1683,1733,1732;,
+   3;1683,1684,1733;,
+   3;1684,1734,1733;,
+   3;1684,1685,1734;,
+   3;1685,1735,1734;,
+   3;1685,1686,1735;,
+   3;1686,1736,1735;,
+   3;1686,1687,1736;,
+   3;1687,1737,1736;,
+   3;1687,1688,1737;,
+   3;1688,1738,1737;,
+   3;1688,1689,1738;,
+   3;1689,1739,1738;,
+   3;1689,1690,1739;,
+   3;1690,1740,1739;,
+   3;1690,1691,1740;,
+   3;1691,1741,1740;,
+   3;1691,1692,1741;,
+   3;1692,1742,1741;,
+   3;1692,1693,1742;,
+   3;1693,1743,1742;,
+   3;1693,1694,1743;,
+   3;1694,1744,1743;,
+   3;1694,1695,1744;,
+   3;1695,1745,1744;,
+   3;1695,1696,1745;,
+   3;1696,1746,1745;,
+   3;1696,1697,1746;,
+   3;1697,1747,1746;,
+   3;1697,1698,1747;,
+   3;1698,1748,1747;,
+   3;1698,1699,1748;,
+   3;1699,1749,1748;,
+   3;1699,2485,1749;,
+   3;2485,2486,1749;,
+   3;1700,1701,1750;,
+   3;1701,1751,1750;,
+   3;1701,1702,1751;,
+   3;1702,1752,1751;,
+   3;1702,1703,1752;,
+   3;1703,1753,1752;,
+   3;1703,1704,1753;,
+   3;1704,1754,1753;,
+   3;1704,1705,1754;,
+   3;1705,1755,1754;,
+   3;1705,1706,1755;,
+   3;1706,1756,1755;,
+   3;1706,1707,1756;,
+   3;1707,1757,1756;,
+   3;1707,1708,1757;,
+   3;1708,1758,1757;,
+   3;1708,1709,1758;,
+   3;1709,1759,1758;,
+   3;1709,1710,1759;,
+   3;1710,1760,1759;,
+   3;1710,1711,1760;,
+   3;1711,1761,1760;,
+   3;1711,1712,1761;,
+   3;1712,1762,1761;,
+   3;1712,1713,1762;,
+   3;1713,1763,1762;,
+   3;1713,1714,1763;,
+   3;1714,1764,1763;,
+   3;1714,1715,1764;,
+   3;1715,1765,1764;,
+   3;1715,1716,1765;,
+   3;1716,1766,1765;,
+   3;1716,1717,1766;,
+   3;1717,1767,1766;,
+   3;1717,1718,1767;,
+   3;1718,1768,1767;,
+   3;1718,1719,1768;,
+   3;1719,1769,1768;,
+   3;1719,1720,1769;,
+   3;1720,1770,1769;,
+   3;1720,1721,1770;,
+   3;1721,1771,1770;,
+   3;1721,1722,1771;,
+   3;1722,1772,1771;,
+   3;1722,1723,1772;,
+   3;1723,1773,1772;,
+   3;1723,1724,1773;,
+   3;1724,1774,1773;,
+   3;1724,1725,1774;,
+   3;1725,1775,1774;,
+   3;1725,1726,1775;,
+   3;1726,1776,1775;,
+   3;1726,1727,1776;,
+   3;1727,1777,1776;,
+   3;1727,1728,1777;,
+   3;1728,1778,1777;,
+   3;1728,1729,1778;,
+   3;1729,1779,1778;,
+   3;1729,1730,1779;,
+   3;1730,1780,1779;,
+   3;1730,1731,1780;,
+   3;1731,1781,1780;,
+   3;1731,1732,1781;,
+   3;1732,1782,1781;,
+   3;1732,1733,1782;,
+   3;1733,1783,1782;,
+   3;1733,1734,1783;,
+   3;1734,1784,1783;,
+   3;1734,1735,1784;,
+   3;1735,1785,1784;,
+   3;1735,1736,1785;,
+   3;1736,1786,1785;,
+   3;1736,1737,1786;,
+   3;1737,1787,1786;,
+   3;1737,1738,1787;,
+   3;1738,1788,1787;,
+   3;1738,1739,1788;,
+   3;1739,1789,1788;,
+   3;1739,1740,1789;,
+   3;1740,1790,1789;,
+   3;1740,1741,1790;,
+   3;1741,1791,1790;,
+   3;1741,1742,1791;,
+   3;1742,1792,1791;,
+   3;1742,1743,1792;,
+   3;1743,1793,1792;,
+   3;1743,1744,1793;,
+   3;1744,1794,1793;,
+   3;1744,1745,1794;,
+   3;1745,1795,1794;,
+   3;1745,1746,1795;,
+   3;1746,1796,1795;,
+   3;1746,1747,1796;,
+   3;1747,1797,1796;,
+   3;1747,1748,1797;,
+   3;1748,1798,1797;,
+   3;1748,1749,1798;,
+   3;1749,1799,1798;,
+   3;1749,2486,1799;,
+   3;2486,2487,1799;,
+   3;1750,1751,1800;,
+   3;1751,1801,1800;,
+   3;1751,1752,1801;,
+   3;1752,1802,1801;,
+   3;1752,1753,1802;,
+   3;1753,1803,1802;,
+   3;1753,1754,1803;,
+   3;1754,1804,1803;,
+   3;1754,1755,1804;,
+   3;1755,1805,1804;,
+   3;1755,1756,1805;,
+   3;1756,1806,1805;,
+   3;1756,1757,1806;,
+   3;1757,1807,1806;,
+   3;1757,1758,1807;,
+   3;1758,1808,1807;,
+   3;1758,1759,1808;,
+   3;1759,1809,1808;,
+   3;1759,1760,1809;,
+   3;1760,1810,1809;,
+   3;1760,1761,1810;,
+   3;1761,1811,1810;,
+   3;1761,1762,1811;,
+   3;1762,1812,1811;,
+   3;1762,1763,1812;,
+   3;1763,1813,1812;,
+   3;1763,1764,1813;,
+   3;1764,1814,1813;,
+   3;1764,1765,1814;,
+   3;1765,1815,1814;,
+   3;1765,1766,1815;,
+   3;1766,1816,1815;,
+   3;1766,1767,1816;,
+   3;1767,1817,1816;,
+   3;1767,1768,1817;,
+   3;1768,1818,1817;,
+   3;1768,1769,1818;,
+   3;1769,1819,1818;,
+   3;1769,1770,1819;,
+   3;1770,1820,1819;,
+   3;1770,1771,1820;,
+   3;1771,1821,1820;,
+   3;1771,1772,1821;,
+   3;1772,1822,1821;,
+   3;1772,1773,1822;,
+   3;1773,1823,1822;,
+   3;1773,1774,1823;,
+   3;1774,1824,1823;,
+   3;1774,1775,1824;,
+   3;1775,1825,1824;,
+   3;1775,1776,1825;,
+   3;1776,1826,1825;,
+   3;1776,1777,1826;,
+   3;1777,1827,1826;,
+   3;1777,1778,1827;,
+   3;1778,1828,1827;,
+   3;1778,1779,1828;,
+   3;1779,1829,1828;,
+   3;1779,1780,1829;,
+   3;1780,1830,1829;,
+   3;1780,1781,1830;,
+   3;1781,1831,1830;,
+   3;1781,1782,1831;,
+   3;1782,1832,1831;,
+   3;1782,1783,1832;,
+   3;1783,1833,1832;,
+   3;1783,1784,1833;,
+   3;1784,1834,1833;,
+   3;1784,1785,1834;,
+   3;1785,1835,1834;,
+   3;1785,1786,1835;,
+   3;1786,1836,1835;,
+   3;1786,1787,1836;,
+   3;1787,1837,1836;,
+   3;1787,1788,1837;,
+   3;1788,1838,1837;,
+   3;1788,1789,1838;,
+   3;1789,1839,1838;,
+   3;1789,1790,1839;,
+   3;1790,1840,1839;,
+   3;1790,1791,1840;,
+   3;1791,1841,1840;,
+   3;1791,1792,1841;,
+   3;1792,1842,1841;,
+   3;1792,1793,1842;,
+   3;1793,1843,1842;,
+   3;1793,1794,1843;,
+   3;1794,1844,1843;,
+   3;1794,1795,1844;,
+   3;1795,1845,1844;,
+   3;1795,1796,1845;,
+   3;1796,1846,1845;,
+   3;1796,1797,1846;,
+   3;1797,1847,1846;,
+   3;1797,1798,1847;,
+   3;1798,1848,1847;,
+   3;1798,1799,1848;,
+   3;1799,1849,1848;,
+   3;1799,2487,1849;,
+   3;2487,2488,1849;,
+   3;1800,1801,1850;,
+   3;1801,1851,1850;,
+   3;1801,1802,1851;,
+   3;1802,1852,1851;,
+   3;1802,1803,1852;,
+   3;1803,1853,1852;,
+   3;1803,1804,1853;,
+   3;1804,1854,1853;,
+   3;1804,1805,1854;,
+   3;1805,1855,1854;,
+   3;1805,1806,1855;,
+   3;1806,1856,1855;,
+   3;1806,1807,1856;,
+   3;1807,1857,1856;,
+   3;1807,1808,1857;,
+   3;1808,1858,1857;,
+   3;1808,1809,1858;,
+   3;1809,1859,1858;,
+   3;1809,1810,1859;,
+   3;1810,1860,1859;,
+   3;1810,1811,1860;,
+   3;1811,1861,1860;,
+   3;1811,1812,1861;,
+   3;1812,1862,1861;,
+   3;1812,1813,1862;,
+   3;1813,1863,1862;,
+   3;1813,1814,1863;,
+   3;1814,1864,1863;,
+   3;1814,1815,1864;,
+   3;1815,1865,1864;,
+   3;1815,1816,1865;,
+   3;1816,1866,1865;,
+   3;1816,1817,1866;,
+   3;1817,1867,1866;,
+   3;1817,1818,1867;,
+   3;1818,1868,1867;,
+   3;1818,1819,1868;,
+   3;1819,1869,1868;,
+   3;1819,1820,1869;,
+   3;1820,1870,1869;,
+   3;1820,1821,1870;,
+   3;1821,1871,1870;,
+   3;1821,1822,1871;,
+   3;1822,1872,1871;,
+   3;1822,1823,1872;,
+   3;1823,1873,1872;,
+   3;1823,1824,1873;,
+   3;1824,1874,1873;,
+   3;1824,1825,1874;,
+   3;1825,1875,1874;,
+   3;1825,1826,1875;,
+   3;1826,1876,1875;,
+   3;1826,1827,1876;,
+   3;1827,1877,1876;,
+   3;1827,1828,1877;,
+   3;1828,1878,1877;,
+   3;1828,1829,1878;,
+   3;1829,1879,1878;,
+   3;1829,1830,1879;,
+   3;1830,1880,1879;,
+   3;1830,1831,1880;,
+   3;1831,1881,1880;,
+   3;1831,1832,1881;,
+   3;1832,1882,1881;,
+   3;1832,1833,1882;,
+   3;1833,1883,1882;,
+   3;1833,1834,1883;,
+   3;1834,1884,1883;,
+   3;1834,1835,1884;,
+   3;1835,1885,1884;,
+   3;1835,1836,1885;,
+   3;1836,1886,1885;,
+   3;1836,1837,1886;,
+   3;1837,1887,1886;,
+   3;1837,1838,1887;,
+   3;1838,1888,1887;,
+   3;1838,1839,1888;,
+   3;1839,1889,1888;,
+   3;1839,1840,1889;,
+   3;1840,1890,1889;,
+   3;1840,1841,1890;,
+   3;1841,1891,1890;,
+   3;1841,1842,1891;,
+   3;1842,1892,1891;,
+   3;1842,1843,1892;,
+   3;1843,1893,1892;,
+   3;1843,1844,1893;,
+   3;1844,1894,1893;,
+   3;1844,1845,1894;,
+   3;1845,1895,1894;,
+   3;1845,1846,1895;,
+   3;1846,1896,1895;,
+   3;1846,1847,1896;,
+   3;1847,1897,1896;,
+   3;1847,1848,1897;,
+   3;1848,1898,1897;,
+   3;1848,1849,1898;,
+   3;1849,1899,1898;,
+   3;1849,2488,1899;,
+   3;2488,2489,1899;,
+   3;1850,1851,1900;,
+   3;1851,1901,1900;,
+   3;1851,1852,1901;,
+   3;1852,1902,1901;,
+   3;1852,1853,1902;,
+   3;1853,1903,1902;,
+   3;1853,1854,1903;,
+   3;1854,1904,1903;,
+   3;1854,1855,1904;,
+   3;1855,1905,1904;,
+   3;1855,1856,1905;,
+   3;1856,1906,1905;,
+   3;1856,1857,1906;,
+   3;1857,1907,1906;,
+   3;1857,1858,1907;,
+   3;1858,1908,1907;,
+   3;1858,1859,1908;,
+   3;1859,1909,1908;,
+   3;1859,1860,1909;,
+   3;1860,1910,1909;,
+   3;1860,1861,1910;,
+   3;1861,1911,1910;,
+   3;1861,1862,1911;,
+   3;1862,1912,1911;,
+   3;1862,1863,1912;,
+   3;1863,1913,1912;,
+   3;1863,1864,1913;,
+   3;1864,1914,1913;,
+   3;1864,1865,1914;,
+   3;1865,1915,1914;,
+   3;1865,1866,1915;,
+   3;1866,1916,1915;,
+   3;1866,1867,1916;,
+   3;1867,1917,1916;,
+   3;1867,1868,1917;,
+   3;1868,1918,1917;,
+   3;1868,1869,1918;,
+   3;1869,1919,1918;,
+   3;1869,1870,1919;,
+   3;1870,1920,1919;,
+   3;1870,1871,1920;,
+   3;1871,1921,1920;,
+   3;1871,1872,1921;,
+   3;1872,1922,1921;,
+   3;1872,1873,1922;,
+   3;1873,1923,1922;,
+   3;1873,1874,1923;,
+   3;1874,1924,1923;,
+   3;1874,1875,1924;,
+   3;1875,1925,1924;,
+   3;1875,1876,1925;,
+   3;1876,1926,1925;,
+   3;1876,1877,1926;,
+   3;1877,1927,1926;,
+   3;1877,1878,1927;,
+   3;1878,1928,1927;,
+   3;1878,1879,1928;,
+   3;1879,1929,1928;,
+   3;1879,1880,1929;,
+   3;1880,1930,1929;,
+   3;1880,1881,1930;,
+   3;1881,1931,1930;,
+   3;1881,1882,1931;,
+   3;1882,1932,1931;,
+   3;1882,1883,1932;,
+   3;1883,1933,1932;,
+   3;1883,1884,1933;,
+   3;1884,1934,1933;,
+   3;1884,1885,1934;,
+   3;1885,1935,1934;,
+   3;1885,1886,1935;,
+   3;1886,1936,1935;,
+   3;1886,1887,1936;,
+   3;1887,1937,1936;,
+   3;1887,1888,1937;,
+   3;1888,1938,1937;,
+   3;1888,1889,1938;,
+   3;1889,1939,1938;,
+   3;1889,1890,1939;,
+   3;1890,1940,1939;,
+   3;1890,1891,1940;,
+   3;1891,1941,1940;,
+   3;1891,1892,1941;,
+   3;1892,1942,1941;,
+   3;1892,1893,1942;,
+   3;1893,1943,1942;,
+   3;1893,1894,1943;,
+   3;1894,1944,1943;,
+   3;1894,1895,1944;,
+   3;1895,1945,1944;,
+   3;1895,1896,1945;,
+   3;1896,1946,1945;,
+   3;1896,1897,1946;,
+   3;1897,1947,1946;,
+   3;1897,1898,1947;,
+   3;1898,1948,1947;,
+   3;1898,1899,1948;,
+   3;1899,1949,1948;,
+   3;1899,2489,1949;,
+   3;2489,2490,1949;,
+   3;1900,1901,1950;,
+   3;1901,1951,1950;,
+   3;1901,1902,1951;,
+   3;1902,1952,1951;,
+   3;1902,1903,1952;,
+   3;1903,1953,1952;,
+   3;1903,1904,1953;,
+   3;1904,1954,1953;,
+   3;1904,1905,1954;,
+   3;1905,1955,1954;,
+   3;1905,1906,1955;,
+   3;1906,1956,1955;,
+   3;1906,1907,1956;,
+   3;1907,1957,1956;,
+   3;1907,1908,1957;,
+   3;1908,1958,1957;,
+   3;1908,1909,1958;,
+   3;1909,1959,1958;,
+   3;1909,1910,1959;,
+   3;1910,1960,1959;,
+   3;1910,1911,1960;,
+   3;1911,1961,1960;,
+   3;1911,1912,1961;,
+   3;1912,1962,1961;,
+   3;1912,1913,1962;,
+   3;1913,1963,1962;,
+   3;1913,1914,1963;,
+   3;1914,1964,1963;,
+   3;1914,1915,1964;,
+   3;1915,1965,1964;,
+   3;1915,1916,1965;,
+   3;1916,1966,1965;,
+   3;1916,1917,1966;,
+   3;1917,1967,1966;,
+   3;1917,1918,1967;,
+   3;1918,1968,1967;,
+   3;1918,1919,1968;,
+   3;1919,1969,1968;,
+   3;1919,1920,1969;,
+   3;1920,1970,1969;,
+   3;1920,1921,1970;,
+   3;1921,1971,1970;,
+   3;1921,1922,1971;,
+   3;1922,1972,1971;,
+   3;1922,1923,1972;,
+   3;1923,1973,1972;,
+   3;1923,1924,1973;,
+   3;1924,1974,1973;,
+   3;1924,1925,1974;,
+   3;1925,1975,1974;,
+   3;1925,1926,1975;,
+   3;1926,1976,1975;,
+   3;1926,1927,1976;,
+   3;1927,1977,1976;,
+   3;1927,1928,1977;,
+   3;1928,1978,1977;,
+   3;1928,1929,1978;,
+   3;1929,1979,1978;,
+   3;1929,1930,1979;,
+   3;1930,1980,1979;,
+   3;1930,1931,1980;,
+   3;1931,1981,1980;,
+   3;1931,1932,1981;,
+   3;1932,1982,1981;,
+   3;1932,1933,1982;,
+   3;1933,1983,1982;,
+   3;1933,1934,1983;,
+   3;1934,1984,1983;,
+   3;1934,1935,1984;,
+   3;1935,1985,1984;,
+   3;1935,1936,1985;,
+   3;1936,1986,1985;,
+   3;1936,1937,1986;,
+   3;1937,1987,1986;,
+   3;1937,1938,1987;,
+   3;1938,1988,1987;,
+   3;1938,1939,1988;,
+   3;1939,1989,1988;,
+   3;1939,1940,1989;,
+   3;1940,1990,1989;,
+   3;1940,1941,1990;,
+   3;1941,1991,1990;,
+   3;1941,1942,1991;,
+   3;1942,1992,1991;,
+   3;1942,1943,1992;,
+   3;1943,1993,1992;,
+   3;1943,1944,1993;,
+   3;1944,1994,1993;,
+   3;1944,1945,1994;,
+   3;1945,1995,1994;,
+   3;1945,1946,1995;,
+   3;1946,1996,1995;,
+   3;1946,1947,1996;,
+   3;1947,1997,1996;,
+   3;1947,1948,1997;,
+   3;1948,1998,1997;,
+   3;1948,1949,1998;,
+   3;1949,1999,1998;,
+   3;1949,2490,1999;,
+   3;2490,2491,1999;,
+   3;1950,1951,2000;,
+   3;1951,2001,2000;,
+   3;1951,1952,2001;,
+   3;1952,2002,2001;,
+   3;1952,1953,2002;,
+   3;1953,2003,2002;,
+   3;1953,1954,2003;,
+   3;1954,2004,2003;,
+   3;1954,1955,2004;,
+   3;1955,2005,2004;,
+   3;1955,1956,2005;,
+   3;1956,2006,2005;,
+   3;1956,1957,2006;,
+   3;1957,2007,2006;,
+   3;1957,1958,2007;,
+   3;1958,2008,2007;,
+   3;1958,1959,2008;,
+   3;1959,2009,2008;,
+   3;1959,1960,2009;,
+   3;1960,2010,2009;,
+   3;1960,1961,2010;,
+   3;1961,2011,2010;,
+   3;1961,1962,2011;,
+   3;1962,2012,2011;,
+   3;1962,1963,2012;,
+   3;1963,2013,2012;,
+   3;1963,1964,2013;,
+   3;1964,2014,2013;,
+   3;1964,1965,2014;,
+   3;1965,2015,2014;,
+   3;1965,1966,2015;,
+   3;1966,2016,2015;,
+   3;1966,1967,2016;,
+   3;1967,2017,2016;,
+   3;1967,1968,2017;,
+   3;1968,2018,2017;,
+   3;1968,1969,2018;,
+   3;1969,2019,2018;,
+   3;1969,1970,2019;,
+   3;1970,2020,2019;,
+   3;1970,1971,2020;,
+   3;1971,2021,2020;,
+   3;1971,1972,2021;,
+   3;1972,2022,2021;,
+   3;1972,1973,2022;,
+   3;1973,2023,2022;,
+   3;1973,1974,2023;,
+   3;1974,2024,2023;,
+   3;1974,1975,2024;,
+   3;1975,2025,2024;,
+   3;1975,1976,2025;,
+   3;1976,2026,2025;,
+   3;1976,1977,2026;,
+   3;1977,2027,2026;,
+   3;1977,1978,2027;,
+   3;1978,2028,2027;,
+   3;1978,1979,2028;,
+   3;1979,2029,2028;,
+   3;1979,1980,2029;,
+   3;1980,2030,2029;,
+   3;1980,1981,2030;,
+   3;1981,2031,2030;,
+   3;1981,1982,2031;,
+   3;1982,2032,2031;,
+   3;1982,1983,2032;,
+   3;1983,2033,2032;,
+   3;1983,1984,2033;,
+   3;1984,2034,2033;,
+   3;1984,1985,2034;,
+   3;1985,2035,2034;,
+   3;1985,1986,2035;,
+   3;1986,2036,2035;,
+   3;1986,1987,2036;,
+   3;1987,2037,2036;,
+   3;1987,1988,2037;,
+   3;1988,2038,2037;,
+   3;1988,1989,2038;,
+   3;1989,2039,2038;,
+   3;1989,1990,2039;,
+   3;1990,2040,2039;,
+   3;1990,1991,2040;,
+   3;1991,2041,2040;,
+   3;1991,1992,2041;,
+   3;1992,2042,2041;,
+   3;1992,1993,2042;,
+   3;1993,2043,2042;,
+   3;1993,1994,2043;,
+   3;1994,2044,2043;,
+   3;1994,1995,2044;,
+   3;1995,2045,2044;,
+   3;1995,1996,2045;,
+   3;1996,2046,2045;,
+   3;1996,1997,2046;,
+   3;1997,2047,2046;,
+   3;1997,1998,2047;,
+   3;1998,2048,2047;,
+   3;1998,1999,2048;,
+   3;1999,2049,2048;,
+   3;1999,2491,2049;,
+   3;2491,2492,2049;,
+   3;2000,2001,2050;,
+   3;2001,2051,2050;,
+   3;2001,2002,2051;,
+   3;2002,2052,2051;,
+   3;2002,2003,2052;,
+   3;2003,2053,2052;,
+   3;2003,2004,2053;,
+   3;2004,2054,2053;,
+   3;2004,2005,2054;,
+   3;2005,2055,2054;,
+   3;2005,2006,2055;,
+   3;2006,2056,2055;,
+   3;2006,2007,2056;,
+   3;2007,2057,2056;,
+   3;2007,2008,2057;,
+   3;2008,2058,2057;,
+   3;2008,2009,2058;,
+   3;2009,2059,2058;,
+   3;2009,2010,2059;,
+   3;2010,2060,2059;,
+   3;2010,2011,2060;,
+   3;2011,2061,2060;,
+   3;2011,2012,2061;,
+   3;2012,2062,2061;,
+   3;2012,2013,2062;,
+   3;2013,2063,2062;,
+   3;2013,2014,2063;,
+   3;2014,2064,2063;,
+   3;2014,2015,2064;,
+   3;2015,2065,2064;,
+   3;2015,2016,2065;,
+   3;2016,2066,2065;,
+   3;2016,2017,2066;,
+   3;2017,2067,2066;,
+   3;2017,2018,2067;,
+   3;2018,2068,2067;,
+   3;2018,2019,2068;,
+   3;2019,2069,2068;,
+   3;2019,2020,2069;,
+   3;2020,2070,2069;,
+   3;2020,2021,2070;,
+   3;2021,2071,2070;,
+   3;2021,2022,2071;,
+   3;2022,2072,2071;,
+   3;2022,2023,2072;,
+   3;2023,2073,2072;,
+   3;2023,2024,2073;,
+   3;2024,2074,2073;,
+   3;2024,2025,2074;,
+   3;2025,2075,2074;,
+   3;2025,2026,2075;,
+   3;2026,2076,2075;,
+   3;2026,2027,2076;,
+   3;2027,2077,2076;,
+   3;2027,2028,2077;,
+   3;2028,2078,2077;,
+   3;2028,2029,2078;,
+   3;2029,2079,2078;,
+   3;2029,2030,2079;,
+   3;2030,2080,2079;,
+   3;2030,2031,2080;,
+   3;2031,2081,2080;,
+   3;2031,2032,2081;,
+   3;2032,2082,2081;,
+   3;2032,2033,2082;,
+   3;2033,2083,2082;,
+   3;2033,2034,2083;,
+   3;2034,2084,2083;,
+   3;2034,2035,2084;,
+   3;2035,2085,2084;,
+   3;2035,2036,2085;,
+   3;2036,2086,2085;,
+   3;2036,2037,2086;,
+   3;2037,2087,2086;,
+   3;2037,2038,2087;,
+   3;2038,2088,2087;,
+   3;2038,2039,2088;,
+   3;2039,2089,2088;,
+   3;2039,2040,2089;,
+   3;2040,2090,2089;,
+   3;2040,2041,2090;,
+   3;2041,2091,2090;,
+   3;2041,2042,2091;,
+   3;2042,2092,2091;,
+   3;2042,2043,2092;,
+   3;2043,2093,2092;,
+   3;2043,2044,2093;,
+   3;2044,2094,2093;,
+   3;2044,2045,2094;,
+   3;2045,2095,2094;,
+   3;2045,2046,2095;,
+   3;2046,2096,2095;,
+   3;2046,2047,2096;,
+   3;2047,2097,2096;,
+   3;2047,2048,2097;,
+   3;2048,2098,2097;,
+   3;2048,2049,2098;,
+   3;2049,2099,2098;,
+   3;2049,2492,2099;,
+   3;2492,2493,2099;,
+   3;2050,2051,2100;,
+   3;2051,2101,2100;,
+   3;2051,2052,2101;,
+   3;2052,2102,2101;,
+   3;2052,2053,2102;,
+   3;2053,2103,2102;,
+   3;2053,2054,2103;,
+   3;2054,2104,2103;,
+   3;2054,2055,2104;,
+   3;2055,2105,2104;,
+   3;2055,2056,2105;,
+   3;2056,2106,2105;,
+   3;2056,2057,2106;,
+   3;2057,2107,2106;,
+   3;2057,2058,2107;,
+   3;2058,2108,2107;,
+   3;2058,2059,2108;,
+   3;2059,2109,2108;,
+   3;2059,2060,2109;,
+   3;2060,2110,2109;,
+   3;2060,2061,2110;,
+   3;2061,2111,2110;,
+   3;2061,2062,2111;,
+   3;2062,2112,2111;,
+   3;2062,2063,2112;,
+   3;2063,2113,2112;,
+   3;2063,2064,2113;,
+   3;2064,2114,2113;,
+   3;2064,2065,2114;,
+   3;2065,2115,2114;,
+   3;2065,2066,2115;,
+   3;2066,2116,2115;,
+   3;2066,2067,2116;,
+   3;2067,2117,2116;,
+   3;2067,2068,2117;,
+   3;2068,2118,2117;,
+   3;2068,2069,2118;,
+   3;2069,2119,2118;,
+   3;2069,2070,2119;,
+   3;2070,2120,2119;,
+   3;2070,2071,2120;,
+   3;2071,2121,2120;,
+   3;2071,2072,2121;,
+   3;2072,2122,2121;,
+   3;2072,2073,2122;,
+   3;2073,2123,2122;,
+   3;2073,2074,2123;,
+   3;2074,2124,2123;,
+   3;2074,2075,2124;,
+   3;2075,2125,2124;,
+   3;2075,2076,2125;,
+   3;2076,2126,2125;,
+   3;2076,2077,2126;,
+   3;2077,2127,2126;,
+   3;2077,2078,2127;,
+   3;2078,2128,2127;,
+   3;2078,2079,2128;,
+   3;2079,2129,2128;,
+   3;2079,2080,2129;,
+   3;2080,2130,2129;,
+   3;2080,2081,2130;,
+   3;2081,2131,2130;,
+   3;2081,2082,2131;,
+   3;2082,2132,2131;,
+   3;2082,2083,2132;,
+   3;2083,2133,2132;,
+   3;2083,2084,2133;,
+   3;2084,2134,2133;,
+   3;2084,2085,2134;,
+   3;2085,2135,2134;,
+   3;2085,2086,2135;,
+   3;2086,2136,2135;,
+   3;2086,2087,2136;,
+   3;2087,2137,2136;,
+   3;2087,2088,2137;,
+   3;2088,2138,2137;,
+   3;2088,2089,2138;,
+   3;2089,2139,2138;,
+   3;2089,2090,2139;,
+   3;2090,2140,2139;,
+   3;2090,2091,2140;,
+   3;2091,2141,2140;,
+   3;2091,2092,2141;,
+   3;2092,2142,2141;,
+   3;2092,2093,2142;,
+   3;2093,2143,2142;,
+   3;2093,2094,2143;,
+   3;2094,2144,2143;,
+   3;2094,2095,2144;,
+   3;2095,2145,2144;,
+   3;2095,2096,2145;,
+   3;2096,2146,2145;,
+   3;2096,2097,2146;,
+   3;2097,2147,2146;,
+   3;2097,2098,2147;,
+   3;2098,2148,2147;,
+   3;2098,2099,2148;,
+   3;2099,2149,2148;,
+   3;2099,2493,2149;,
+   3;2493,2494,2149;,
+   3;2100,2101,2150;,
+   3;2101,2151,2150;,
+   3;2101,2102,2151;,
+   3;2102,2152,2151;,
+   3;2102,2103,2152;,
+   3;2103,2153,2152;,
+   3;2103,2104,2153;,
+   3;2104,2154,2153;,
+   3;2104,2105,2154;,
+   3;2105,2155,2154;,
+   3;2105,2106,2155;,
+   3;2106,2156,2155;,
+   3;2106,2107,2156;,
+   3;2107,2157,2156;,
+   3;2107,2108,2157;,
+   3;2108,2158,2157;,
+   3;2108,2109,2158;,
+   3;2109,2159,2158;,
+   3;2109,2110,2159;,
+   3;2110,2160,2159;,
+   3;2110,2111,2160;,
+   3;2111,2161,2160;,
+   3;2111,2112,2161;,
+   3;2112,2162,2161;,
+   3;2112,2113,2162;,
+   3;2113,2163,2162;,
+   3;2113,2114,2163;,
+   3;2114,2164,2163;,
+   3;2114,2115,2164;,
+   3;2115,2165,2164;,
+   3;2115,2116,2165;,
+   3;2116,2166,2165;,
+   3;2116,2117,2166;,
+   3;2117,2167,2166;,
+   3;2117,2118,2167;,
+   3;2118,2168,2167;,
+   3;2118,2119,2168;,
+   3;2119,2169,2168;,
+   3;2119,2120,2169;,
+   3;2120,2170,2169;,
+   3;2120,2121,2170;,
+   3;2121,2171,2170;,
+   3;2121,2122,2171;,
+   3;2122,2172,2171;,
+   3;2122,2123,2172;,
+   3;2123,2173,2172;,
+   3;2123,2124,2173;,
+   3;2124,2174,2173;,
+   3;2124,2125,2174;,
+   3;2125,2175,2174;,
+   3;2125,2126,2175;,
+   3;2126,2176,2175;,
+   3;2126,2127,2176;,
+   3;2127,2177,2176;,
+   3;2127,2128,2177;,
+   3;2128,2178,2177;,
+   3;2128,2129,2178;,
+   3;2129,2179,2178;,
+   3;2129,2130,2179;,
+   3;2130,2180,2179;,
+   3;2130,2131,2180;,
+   3;2131,2181,2180;,
+   3;2131,2132,2181;,
+   3;2132,2182,2181;,
+   3;2132,2133,2182;,
+   3;2133,2183,2182;,
+   3;2133,2134,2183;,
+   3;2134,2184,2183;,
+   3;2134,2135,2184;,
+   3;2135,2185,2184;,
+   3;2135,2136,2185;,
+   3;2136,2186,2185;,
+   3;2136,2137,2186;,
+   3;2137,2187,2186;,
+   3;2137,2138,2187;,
+   3;2138,2188,2187;,
+   3;2138,2139,2188;,
+   3;2139,2189,2188;,
+   3;2139,2140,2189;,
+   3;2140,2190,2189;,
+   3;2140,2141,2190;,
+   3;2141,2191,2190;,
+   3;2141,2142,2191;,
+   3;2142,2192,2191;,
+   3;2142,2143,2192;,
+   3;2143,2193,2192;,
+   3;2143,2144,2193;,
+   3;2144,2194,2193;,
+   3;2144,2145,2194;,
+   3;2145,2195,2194;,
+   3;2145,2146,2195;,
+   3;2146,2196,2195;,
+   3;2146,2147,2196;,
+   3;2147,2197,2196;,
+   3;2147,2148,2197;,
+   3;2148,2198,2197;,
+   3;2148,2149,2198;,
+   3;2149,2199,2198;,
+   3;2149,2494,2199;,
+   3;2494,2495,2199;,
+   3;2150,2151,2200;,
+   3;2151,2201,2200;,
+   3;2151,2152,2201;,
+   3;2152,2202,2201;,
+   3;2152,2153,2202;,
+   3;2153,2203,2202;,
+   3;2153,2154,2203;,
+   3;2154,2204,2203;,
+   3;2154,2155,2204;,
+   3;2155,2205,2204;,
+   3;2155,2156,2205;,
+   3;2156,2206,2205;,
+   3;2156,2157,2206;,
+   3;2157,2207,2206;,
+   3;2157,2158,2207;,
+   3;2158,2208,2207;,
+   3;2158,2159,2208;,
+   3;2159,2209,2208;,
+   3;2159,2160,2209;,
+   3;2160,2210,2209;,
+   3;2160,2161,2210;,
+   3;2161,2211,2210;,
+   3;2161,2162,2211;,
+   3;2162,2212,2211;,
+   3;2162,2163,2212;,
+   3;2163,2213,2212;,
+   3;2163,2164,2213;,
+   3;2164,2214,2213;,
+   3;2164,2165,2214;,
+   3;2165,2215,2214;,
+   3;2165,2166,2215;,
+   3;2166,2216,2215;,
+   3;2166,2167,2216;,
+   3;2167,2217,2216;,
+   3;2167,2168,2217;,
+   3;2168,2218,2217;,
+   3;2168,2169,2218;,
+   3;2169,2219,2218;,
+   3;2169,2170,2219;,
+   3;2170,2220,2219;,
+   3;2170,2171,2220;,
+   3;2171,2221,2220;,
+   3;2171,2172,2221;,
+   3;2172,2222,2221;,
+   3;2172,2173,2222;,
+   3;2173,2223,2222;,
+   3;2173,2174,2223;,
+   3;2174,2224,2223;,
+   3;2174,2175,2224;,
+   3;2175,2225,2224;,
+   3;2175,2176,2225;,
+   3;2176,2226,2225;,
+   3;2176,2177,2226;,
+   3;2177,2227,2226;,
+   3;2177,2178,2227;,
+   3;2178,2228,2227;,
+   3;2178,2179,2228;,
+   3;2179,2229,2228;,
+   3;2179,2180,2229;,
+   3;2180,2230,2229;,
+   3;2180,2181,2230;,
+   3;2181,2231,2230;,
+   3;2181,2182,2231;,
+   3;2182,2232,2231;,
+   3;2182,2183,2232;,
+   3;2183,2233,2232;,
+   3;2183,2184,2233;,
+   3;2184,2234,2233;,
+   3;2184,2185,2234;,
+   3;2185,2235,2234;,
+   3;2185,2186,2235;,
+   3;2186,2236,2235;,
+   3;2186,2187,2236;,
+   3;2187,2237,2236;,
+   3;2187,2188,2237;,
+   3;2188,2238,2237;,
+   3;2188,2189,2238;,
+   3;2189,2239,2238;,
+   3;2189,2190,2239;,
+   3;2190,2240,2239;,
+   3;2190,2191,2240;,
+   3;2191,2241,2240;,
+   3;2191,2192,2241;,
+   3;2192,2242,2241;,
+   3;2192,2193,2242;,
+   3;2193,2243,2242;,
+   3;2193,2194,2243;,
+   3;2194,2244,2243;,
+   3;2194,2195,2244;,
+   3;2195,2245,2244;,
+   3;2195,2196,2245;,
+   3;2196,2246,2245;,
+   3;2196,2197,2246;,
+   3;2197,2247,2246;,
+   3;2197,2198,2247;,
+   3;2198,2248,2247;,
+   3;2198,2199,2248;,
+   3;2199,2249,2248;,
+   3;2199,2495,2249;,
+   3;2495,2496,2249;,
+   3;2200,2201,2250;,
+   3;2201,2251,2250;,
+   3;2201,2202,2251;,
+   3;2202,2252,2251;,
+   3;2202,2203,2252;,
+   3;2203,2253,2252;,
+   3;2203,2204,2253;,
+   3;2204,2254,2253;,
+   3;2204,2205,2254;,
+   3;2205,2255,2254;,
+   3;2205,2206,2255;,
+   3;2206,2256,2255;,
+   3;2206,2207,2256;,
+   3;2207,2257,2256;,
+   3;2207,2208,2257;,
+   3;2208,2258,2257;,
+   3;2208,2209,2258;,
+   3;2209,2259,2258;,
+   3;2209,2210,2259;,
+   3;2210,2260,2259;,
+   3;2210,2211,2260;,
+   3;2211,2261,2260;,
+   3;2211,2212,2261;,
+   3;2212,2262,2261;,
+   3;2212,2213,2262;,
+   3;2213,2263,2262;,
+   3;2213,2214,2263;,
+   3;2214,2264,2263;,
+   3;2214,2215,2264;,
+   3;2215,2265,2264;,
+   3;2215,2216,2265;,
+   3;2216,2266,2265;,
+   3;2216,2217,2266;,
+   3;2217,2267,2266;,
+   3;2217,2218,2267;,
+   3;2218,2268,2267;,
+   3;2218,2219,2268;,
+   3;2219,2269,2268;,
+   3;2219,2220,2269;,
+   3;2220,2270,2269;,
+   3;2220,2221,2270;,
+   3;2221,2271,2270;,
+   3;2221,2222,2271;,
+   3;2222,2272,2271;,
+   3;2222,2223,2272;,
+   3;2223,2273,2272;,
+   3;2223,2224,2273;,
+   3;2224,2274,2273;,
+   3;2224,2225,2274;,
+   3;2225,2275,2274;,
+   3;2225,2226,2275;,
+   3;2226,2276,2275;,
+   3;2226,2227,2276;,
+   3;2227,2277,2276;,
+   3;2227,2228,2277;,
+   3;2228,2278,2277;,
+   3;2228,2229,2278;,
+   3;2229,2279,2278;,
+   3;2229,2230,2279;,
+   3;2230,2280,2279;,
+   3;2230,2231,2280;,
+   3;2231,2281,2280;,
+   3;2231,2232,2281;,
+   3;2232,2282,2281;,
+   3;2232,2233,2282;,
+   3;2233,2283,2282;,
+   3;2233,2234,2283;,
+   3;2234,2284,2283;,
+   3;2234,2235,2284;,
+   3;2235,2285,2284;,
+   3;2235,2236,2285;,
+   3;2236,2286,2285;,
+   3;2236,2237,2286;,
+   3;2237,2287,2286;,
+   3;2237,2238,2287;,
+   3;2238,2288,2287;,
+   3;2238,2239,2288;,
+   3;2239,2289,2288;,
+   3;2239,2240,2289;,
+   3;2240,2290,2289;,
+   3;2240,2241,2290;,
+   3;2241,2291,2290;,
+   3;2241,2242,2291;,
+   3;2242,2292,2291;,
+   3;2242,2243,2292;,
+   3;2243,2293,2292;,
+   3;2243,2244,2293;,
+   3;2244,2294,2293;,
+   3;2244,2245,2294;,
+   3;2245,2295,2294;,
+   3;2245,2246,2295;,
+   3;2246,2296,2295;,
+   3;2246,2247,2296;,
+   3;2247,2297,2296;,
+   3;2247,2248,2297;,
+   3;2248,2298,2297;,
+   3;2248,2249,2298;,
+   3;2249,2299,2298;,
+   3;2249,2496,2299;,
+   3;2496,2497,2299;,
+   3;2250,2251,2300;,
+   3;2251,2301,2300;,
+   3;2251,2252,2301;,
+   3;2252,2302,2301;,
+   3;2252,2253,2302;,
+   3;2253,2303,2302;,
+   3;2253,2254,2303;,
+   3;2254,2304,2303;,
+   3;2254,2255,2304;,
+   3;2255,2305,2304;,
+   3;2255,2256,2305;,
+   3;2256,2306,2305;,
+   3;2256,2257,2306;,
+   3;2257,2307,2306;,
+   3;2257,2258,2307;,
+   3;2258,2308,2307;,
+   3;2258,2259,2308;,
+   3;2259,2309,2308;,
+   3;2259,2260,2309;,
+   3;2260,2310,2309;,
+   3;2260,2261,2310;,
+   3;2261,2311,2310;,
+   3;2261,2262,2311;,
+   3;2262,2312,2311;,
+   3;2262,2263,2312;,
+   3;2263,2313,2312;,
+   3;2263,2264,2313;,
+   3;2264,2314,2313;,
+   3;2264,2265,2314;,
+   3;2265,2315,2314;,
+   3;2265,2266,2315;,
+   3;2266,2316,2315;,
+   3;2266,2267,2316;,
+   3;2267,2317,2316;,
+   3;2267,2268,2317;,
+   3;2268,2318,2317;,
+   3;2268,2269,2318;,
+   3;2269,2319,2318;,
+   3;2269,2270,2319;,
+   3;2270,2320,2319;,
+   3;2270,2271,2320;,
+   3;2271,2321,2320;,
+   3;2271,2272,2321;,
+   3;2272,2322,2321;,
+   3;2272,2273,2322;,
+   3;2273,2323,2322;,
+   3;2273,2274,2323;,
+   3;2274,2324,2323;,
+   3;2274,2275,2324;,
+   3;2275,2325,2324;,
+   3;2275,2276,2325;,
+   3;2276,2326,2325;,
+   3;2276,2277,2326;,
+   3;2277,2327,2326;,
+   3;2277,2278,2327;,
+   3;2278,2328,2327;,
+   3;2278,2279,2328;,
+   3;2279,2329,2328;,
+   3;2279,2280,2329;,
+   3;2280,2330,2329;,
+   3;2280,2281,2330;,
+   3;2281,2331,2330;,
+   3;2281,2282,2331;,
+   3;2282,2332,2331;,
+   3;2282,2283,2332;,
+   3;2283,2333,2332;,
+   3;2283,2284,2333;,
+   3;2284,2334,2333;,
+   3;2284,2285,2334;,
+   3;2285,2335,2334;,
+   3;2285,2286,2335;,
+   3;2286,2336,2335;,
+   3;2286,2287,2336;,
+   3;2287,2337,2336;,
+   3;2287,2288,2337;,
+   3;2288,2338,2337;,
+   3;2288,2289,2338;,
+   3;2289,2339,2338;,
+   3;2289,2290,2339;,
+   3;2290,2340,2339;,
+   3;2290,2291,2340;,
+   3;2291,2341,2340;,
+   3;2291,2292,2341;,
+   3;2292,2342,2341;,
+   3;2292,2293,2342;,
+   3;2293,2343,2342;,
+   3;2293,2294,2343;,
+   3;2294,2344,2343;,
+   3;2294,2295,2344;,
+   3;2295,2345,2344;,
+   3;2295,2296,2345;,
+   3;2296,2346,2345;,
+   3;2296,2297,2346;,
+   3;2297,2347,2346;,
+   3;2297,2298,2347;,
+   3;2298,2348,2347;,
+   3;2298,2299,2348;,
+   3;2299,2349,2348;,
+   3;2299,2497,2349;,
+   3;2497,2498,2349;,
+   3;2300,2301,2350;,
+   3;2301,2351,2350;,
+   3;2301,2302,2351;,
+   3;2302,2352,2351;,
+   3;2302,2303,2352;,
+   3;2303,2353,2352;,
+   3;2303,2304,2353;,
+   3;2304,2354,2353;,
+   3;2304,2305,2354;,
+   3;2305,2355,2354;,
+   3;2305,2306,2355;,
+   3;2306,2356,2355;,
+   3;2306,2307,2356;,
+   3;2307,2357,2356;,
+   3;2307,2308,2357;,
+   3;2308,2358,2357;,
+   3;2308,2309,2358;,
+   3;2309,2359,2358;,
+   3;2309,2310,2359;,
+   3;2310,2360,2359;,
+   3;2310,2311,2360;,
+   3;2311,2361,2360;,
+   3;2311,2312,2361;,
+   3;2312,2362,2361;,
+   3;2312,2313,2362;,
+   3;2313,2363,2362;,
+   3;2313,2314,2363;,
+   3;2314,2364,2363;,
+   3;2314,2315,2364;,
+   3;2315,2365,2364;,
+   3;2315,2316,2365;,
+   3;2316,2366,2365;,
+   3;2316,2317,2366;,
+   3;2317,2367,2366;,
+   3;2317,2318,2367;,
+   3;2318,2368,2367;,
+   3;2318,2319,2368;,
+   3;2319,2369,2368;,
+   3;2319,2320,2369;,
+   3;2320,2370,2369;,
+   3;2320,2321,2370;,
+   3;2321,2371,2370;,
+   3;2321,2322,2371;,
+   3;2322,2372,2371;,
+   3;2322,2323,2372;,
+   3;2323,2373,2372;,
+   3;2323,2324,2373;,
+   3;2324,2374,2373;,
+   3;2324,2325,2374;,
+   3;2325,2375,2374;,
+   3;2325,2326,2375;,
+   3;2326,2376,2375;,
+   3;2326,2327,2376;,
+   3;2327,2377,2376;,
+   3;2327,2328,2377;,
+   3;2328,2378,2377;,
+   3;2328,2329,2378;,
+   3;2329,2379,2378;,
+   3;2329,2330,2379;,
+   3;2330,2380,2379;,
+   3;2330,2331,2380;,
+   3;2331,2381,2380;,
+   3;2331,2332,2381;,
+   3;2332,2382,2381;,
+   3;2332,2333,2382;,
+   3;2333,2383,2382;,
+   3;2333,2334,2383;,
+   3;2334,2384,2383;,
+   3;2334,2335,2384;,
+   3;2335,2385,2384;,
+   3;2335,2336,2385;,
+   3;2336,2386,2385;,
+   3;2336,2337,2386;,
+   3;2337,2387,2386;,
+   3;2337,2338,2387;,
+   3;2338,2388,2387;,
+   3;2338,2339,2388;,
+   3;2339,2389,2388;,
+   3;2339,2340,2389;,
+   3;2340,2390,2389;,
+   3;2340,2341,2390;,
+   3;2341,2391,2390;,
+   3;2341,2342,2391;,
+   3;2342,2392,2391;,
+   3;2342,2343,2392;,
+   3;2343,2393,2392;,
+   3;2343,2344,2393;,
+   3;2344,2394,2393;,
+   3;2344,2345,2394;,
+   3;2345,2395,2394;,
+   3;2345,2346,2395;,
+   3;2346,2396,2395;,
+   3;2346,2347,2396;,
+   3;2347,2397,2396;,
+   3;2347,2348,2397;,
+   3;2348,2398,2397;,
+   3;2348,2349,2398;,
+   3;2349,2399,2398;,
+   3;2349,2498,2399;,
+   3;2498,2499,2399;,
+   3;2350,2351,2400;,
+   3;2351,2401,2400;,
+   3;2351,2352,2401;,
+   3;2352,2402,2401;,
+   3;2352,2353,2402;,
+   3;2353,2403,2402;,
+   3;2353,2354,2403;,
+   3;2354,2404,2403;,
+   3;2354,2355,2404;,
+   3;2355,2405,2404;,
+   3;2355,2356,2405;,
+   3;2356,2406,2405;,
+   3;2356,2357,2406;,
+   3;2357,2407,2406;,
+   3;2357,2358,2407;,
+   3;2358,2408,2407;,
+   3;2358,2359,2408;,
+   3;2359,2409,2408;,
+   3;2359,2360,2409;,
+   3;2360,2410,2409;,
+   3;2360,2361,2410;,
+   3;2361,2411,2410;,
+   3;2361,2362,2411;,
+   3;2362,2412,2411;,
+   3;2362,2363,2412;,
+   3;2363,2413,2412;,
+   3;2363,2364,2413;,
+   3;2364,2414,2413;,
+   3;2364,2365,2414;,
+   3;2365,2415,2414;,
+   3;2365,2366,2415;,
+   3;2366,2416,2415;,
+   3;2366,2367,2416;,
+   3;2367,2417,2416;,
+   3;2367,2368,2417;,
+   3;2368,2418,2417;,
+   3;2368,2369,2418;,
+   3;2369,2419,2418;,
+   3;2369,2370,2419;,
+   3;2370,2420,2419;,
+   3;2370,2371,2420;,
+   3;2371,2421,2420;,
+   3;2371,2372,2421;,
+   3;2372,2422,2421;,
+   3;2372,2373,2422;,
+   3;2373,2423,2422;,
+   3;2373,2374,2423;,
+   3;2374,2424,2423;,
+   3;2374,2375,2424;,
+   3;2375,2425,2424;,
+   3;2375,2376,2425;,
+   3;2376,2426,2425;,
+   3;2376,2377,2426;,
+   3;2377,2427,2426;,
+   3;2377,2378,2427;,
+   3;2378,2428,2427;,
+   3;2378,2379,2428;,
+   3;2379,2429,2428;,
+   3;2379,2380,2429;,
+   3;2380,2430,2429;,
+   3;2380,2381,2430;,
+   3;2381,2431,2430;,
+   3;2381,2382,2431;,
+   3;2382,2432,2431;,
+   3;2382,2383,2432;,
+   3;2383,2433,2432;,
+   3;2383,2384,2433;,
+   3;2384,2434,2433;,
+   3;2384,2385,2434;,
+   3;2385,2435,2434;,
+   3;2385,2386,2435;,
+   3;2386,2436,2435;,
+   3;2386,2387,2436;,
+   3;2387,2437,2436;,
+   3;2387,2388,2437;,
+   3;2388,2438,2437;,
+   3;2388,2389,2438;,
+   3;2389,2439,2438;,
+   3;2389,2390,2439;,
+   3;2390,2440,2439;,
+   3;2390,2391,2440;,
+   3;2391,2441,2440;,
+   3;2391,2392,2441;,
+   3;2392,2442,2441;,
+   3;2392,2393,2442;,
+   3;2393,2443,2442;,
+   3;2393,2394,2443;,
+   3;2394,2444,2443;,
+   3;2394,2395,2444;,
+   3;2395,2445,2444;,
+   3;2395,2396,2445;,
+   3;2396,2446,2445;,
+   3;2396,2397,2446;,
+   3;2397,2447,2446;,
+   3;2397,2398,2447;,
+   3;2398,2448,2447;,
+   3;2398,2399,2448;,
+   3;2399,2449,2448;,
+   3;2399,2499,2449;,
+   3;2499,2500,2449;,
+   3;1,0,2450;,
+   3;2,1,2450;,
+   3;3,2,2450;,
+   3;4,3,2450;,
+   3;5,4,2450;,
+   3;6,5,2450;,
+   3;7,6,2450;,
+   3;8,7,2450;,
+   3;9,8,2450;,
+   3;10,9,2450;,
+   3;11,10,2450;,
+   3;12,11,2450;,
+   3;13,12,2450;,
+   3;14,13,2450;,
+   3;15,14,2450;,
+   3;16,15,2450;,
+   3;17,16,2450;,
+   3;18,17,2450;,
+   3;19,18,2450;,
+   3;20,19,2450;,
+   3;21,20,2450;,
+   3;22,21,2450;,
+   3;23,22,2450;,
+   3;24,23,2450;,
+   3;25,24,2450;,
+   3;26,25,2450;,
+   3;27,26,2450;,
+   3;28,27,2450;,
+   3;29,28,2450;,
+   3;30,29,2450;,
+   3;31,30,2450;,
+   3;32,31,2450;,
+   3;33,32,2450;,
+   3;34,33,2450;,
+   3;35,34,2450;,
+   3;36,35,2450;,
+   3;37,36,2450;,
+   3;38,37,2450;,
+   3;39,38,2450;,
+   3;40,39,2450;,
+   3;41,40,2450;,
+   3;42,41,2450;,
+   3;43,42,2450;,
+   3;44,43,2450;,
+   3;45,44,2450;,
+   3;46,45,2450;,
+   3;47,46,2450;,
+   3;48,47,2450;,
+   3;49,48,2450;,
+   3;2453,49,2450;,
+   3;2400,2401,2451;,
+   3;2401,2402,2451;,
+   3;2402,2403,2451;,
+   3;2403,2404,2451;,
+   3;2404,2405,2451;,
+   3;2405,2406,2451;,
+   3;2406,2407,2451;,
+   3;2407,2408,2451;,
+   3;2408,2409,2451;,
+   3;2409,2410,2451;,
+   3;2410,2411,2451;,
+   3;2411,2412,2451;,
+   3;2412,2413,2451;,
+   3;2413,2414,2451;,
+   3;2414,2415,2451;,
+   3;2415,2416,2451;,
+   3;2416,2417,2451;,
+   3;2417,2418,2451;,
+   3;2418,2419,2451;,
+   3;2419,2420,2451;,
+   3;2420,2421,2451;,
+   3;2421,2422,2451;,
+   3;2422,2423,2451;,
+   3;2423,2424,2451;,
+   3;2424,2425,2451;,
+   3;2425,2426,2451;,
+   3;2426,2427,2451;,
+   3;2427,2428,2451;,
+   3;2428,2429,2451;,
+   3;2429,2430,2451;,
+   3;2430,2431,2451;,
+   3;2431,2432,2451;,
+   3;2432,2433,2451;,
+   3;2433,2434,2451;,
+   3;2434,2435,2451;,
+   3;2435,2436,2451;,
+   3;2436,2437,2451;,
+   3;2437,2438,2451;,
+   3;2438,2439,2451;,
+   3;2439,2440,2451;,
+   3;2440,2441,2451;,
+   3;2441,2442,2451;,
+   3;2442,2443,2451;,
+   3;2443,2444,2451;,
+   3;2444,2445,2451;,
+   3;2445,2446,2451;,
+   3;2446,2447,2451;,
+   3;2447,2448,2451;,
+   3;2448,2449,2451;,
+   3;2449,2500,2451;;
+
+   MeshNormals {
+    2452;
+    -1.000000;0.000000;0.000000;,
+    -0.998027;-0.062791;-0.000041;,
+    -0.998027;0.062791;0.000041;,
+    -0.992115;-0.125334;-0.000082;,
+    -0.992115;-0.000000;-0.125333;,
+    -0.992115;0.000000;0.125334;,
+    -0.992115;0.125334;0.000083;,
+    -0.990162;-0.062791;0.125045;,
+    -0.990162;0.062791;-0.125045;,
+    -0.990152;-0.062791;-0.125127;,
+    -0.990152;0.062791;0.125127;,
+    -0.984302;0.125333;-0.124263;,
+    -0.984302;-0.125333;0.124264;,
+    -0.984281;-0.125334;-0.124427;,
+    -0.984281;0.125334;0.124427;,
+    -0.982287;-0.187382;-0.000123;,
+    -0.982287;0.187382;0.000123;,
+    -0.974557;-0.187382;0.122991;,
+    -0.974557;0.187382;-0.122991;,
+    -0.974526;-0.187381;-0.123235;,
+    -0.974526;0.187381;0.123235;,
+    -0.968583;-0.000000;-0.248690;,
+    -0.968583;0.000000;0.248690;,
+    -0.968583;-0.248690;-0.000163;,
+    -0.968583;0.248691;0.000164;,
+    -0.966682;0.062791;-0.248159;,
+    -0.966682;-0.062791;0.248160;,
+    -0.966662;-0.062791;-0.248239;,
+    -0.966662;0.062791;0.248239;,
+    -0.960966;0.125333;-0.246649;,
+    -0.960966;-0.125333;0.246649;,
+    -0.960966;-0.248690;0.121234;,
+    -0.960966;0.248691;-0.121233;,
+    -0.960925;-0.125333;-0.246808;,
+    -0.960925;0.125333;0.246809;,
+    -0.960925;-0.248691;-0.121557;,
+    -0.960925;0.248690;0.121558;,
+    -0.951457;-0.187381;0.244166;,
+    -0.951457;0.187382;-0.244166;,
+    -0.951396;-0.187381;-0.244404;,
+    -0.951396;0.187381;0.244404;,
+    -0.951056;0.309018;0.000203;,
+    -0.951056;-0.309018;-0.000203;,
+    -0.943582;-0.309018;0.118998;,
+    -0.943582;0.309018;-0.118997;,
+    -0.943531;-0.309018;-0.119400;,
+    -0.943531;0.309018;0.119400;,
+    -0.938194;0.248690;-0.240719;,
+    -0.938194;-0.248691;0.240719;,
+    -0.938113;-0.248691;-0.241035;,
+    -0.938113;0.248690;0.241035;,
+    -0.929776;0.000000;-0.368124;,
+    -0.929776;0.000000;0.368125;,
+    -0.929776;-0.368126;-0.000242;,
+    -0.929776;0.368126;0.000242;,
+    -0.927957;-0.062791;0.367360;,
+    -0.927957;0.062791;-0.367360;,
+    -0.927927;-0.062791;-0.367436;,
+    -0.927927;0.062790;0.367437;,
+    -0.922475;0.125333;-0.365145;,
+    -0.922475;-0.125333;0.365145;,
+    -0.922475;0.368126;-0.116292;,
+    -0.922475;-0.368126;0.116292;,
+    -0.922415;-0.125333;-0.365298;,
+    -0.922415;0.125333;0.365298;,
+    -0.922414;0.368126;0.116772;,
+    -0.922414;-0.368126;-0.116772;,
+    -0.921227;-0.309018;0.236322;,
+    -0.921227;0.309018;-0.236321;,
+    -0.921127;-0.309018;-0.236714;,
+    -0.921127;0.309018;0.236715;,
+    -0.913353;0.187382;-0.361489;,
+    -0.913353;-0.187381;0.361490;,
+    -0.913262;-0.187382;-0.361718;,
+    -0.913262;0.187382;0.361719;,
+    -0.904826;0.425781;0.000280;,
+    -0.904826;-0.425781;-0.000280;,
+    -0.900626;0.248690;-0.356407;,
+    -0.900626;-0.248690;0.356408;,
+    -0.900625;0.368126;-0.230992;,
+    -0.900625;-0.368126;0.230992;,
+    -0.900506;-0.248691;-0.356711;,
+    -0.900505;0.248691;0.356711;,
+    -0.900505;-0.368126;-0.231460;,
+    -0.900505;0.368126;0.231460;,
+    -0.897726;-0.425781;0.113127;,
+    -0.897726;0.425781;-0.113127;,
+    -0.897656;-0.425781;-0.113682;,
+    -0.897656;0.425781;0.113683;,
+    -0.884344;0.309018;-0.349918;,
+    -0.884344;-0.309018;0.349919;,
+    -0.884195;-0.309018;-0.350296;,
+    -0.884195;0.309018;0.350296;,
+    -0.876469;0.425781;-0.224750;,
+    -0.876469;-0.425781;0.224750;,
+    -0.876330;-0.425781;-0.225292;,
+    -0.876330;0.425781;0.225292;,
+    -0.876307;0.000000;0.481754;,
+    -0.876307;-0.000000;-0.481754;,
+    -0.876306;-0.481755;-0.000316;,
+    -0.876306;0.481755;0.000317;,
+    -0.874597;0.062791;-0.480767;,
+    -0.874597;-0.062791;0.480767;,
+    -0.874558;0.062790;0.480839;,
+    -0.874558;-0.062791;-0.480839;,
+    -0.869436;0.125333;-0.477883;,
+    -0.869436;-0.125333;0.477883;,
+    -0.869436;-0.481755;0.109516;,
+    -0.869436;0.481755;-0.109516;,
+    -0.869357;-0.125333;-0.478027;,
+    -0.869357;0.125334;0.478027;,
+    -0.869356;-0.481755;-0.110144;,
+    -0.869356;0.481755;0.110144;,
+    -0.864573;0.368126;-0.342048;,
+    -0.864573;-0.368126;0.342049;,
+    -0.864395;-0.368126;-0.342498;,
+    -0.864395;0.368126;0.342498;,
+    -0.860844;0.187381;-0.473113;,
+    -0.860844;-0.187382;0.473113;,
+    -0.860726;-0.187381;-0.473328;,
+    -0.860725;0.187382;0.473328;,
+    -0.848854;0.248691;-0.466475;,
+    -0.848854;-0.248691;0.466475;,
+    -0.848854;0.481755;-0.217622;,
+    -0.848854;-0.481755;0.217622;,
+    -0.848697;-0.248691;-0.466761;,
+    -0.848697;0.248691;0.466762;,
+    -0.848696;-0.481755;-0.218235;,
+    -0.848696;0.481755;0.218235;,
+    -0.844327;0.535828;0.000352;,
+    -0.844327;-0.535828;-0.000352;,
+    -0.841389;0.425781;-0.332829;,
+    -0.841389;-0.425781;0.332829;,
+    -0.841183;-0.425781;-0.333349;,
+    -0.841183;0.425781;0.333349;,
+    -0.837713;-0.535828;0.105473;,
+    -0.837713;0.535828;-0.105473;,
+    -0.837625;-0.535828;-0.106171;,
+    -0.837625;0.535828;0.106172;,
+    -0.833515;-0.309018;0.457997;,
+    -0.833515;0.309018;-0.457997;,
+    -0.833319;-0.309018;-0.458353;,
+    -0.833319;0.309018;0.458353;,
+    -0.817889;-0.535828;0.209635;,
+    -0.817889;0.535828;-0.209634;,
+    -0.817713;-0.535828;-0.210317;,
+    -0.817713;0.535828;0.210317;,
+    -0.814885;-0.368126;0.447711;,
+    -0.814885;0.481755;-0.322295;,
+    -0.814885;0.368126;-0.447711;,
+    -0.814885;-0.481755;0.322296;,
+    -0.814652;0.368126;0.448135;,
+    -0.814652;-0.368126;-0.448135;,
+    -0.814652;-0.481755;-0.322884;,
+    -0.814652;0.481755;0.322884;,
+    -0.809017;-0.000000;-0.587785;,
+    -0.809017;-0.000000;0.587785;,
+    -0.809016;-0.587787;-0.000386;,
+    -0.809016;0.587787;0.000387;,
+    -0.807445;0.062790;-0.586592;,
+    -0.807445;-0.062791;0.586592;,
+    -0.807397;-0.062790;-0.586658;,
+    -0.807396;0.062791;0.586659;,
+    -0.802686;0.125333;-0.583084;,
+    -0.802686;-0.125334;0.583084;,
+    -0.802685;0.587787;-0.101013;,
+    -0.802685;-0.587787;0.101013;,
+    -0.802589;-0.125333;-0.583217;,
+    -0.802589;0.125334;0.583217;,
+    -0.802588;-0.587787;-0.101780;,
+    -0.802588;0.587787;0.101780;,
+    -0.794759;0.187382;-0.577274;,
+    -0.794759;-0.187382;0.577275;,
+    -0.794615;-0.187382;-0.577473;,
+    -0.794615;0.187382;0.577474;,
+    -0.793040;-0.425781;0.435658;,
+    -0.793040;0.425781;-0.435658;,
+    -0.792771;0.425781;0.436148;,
+    -0.792771;-0.425781;-0.436149;,
+    -0.785165;-0.535828;0.310490;,
+    -0.785165;0.535828;-0.310490;,
+    -0.784906;0.535828;0.311145;,
+    -0.784906;-0.535828;-0.311145;,
+    -0.783696;0.248691;-0.569187;,
+    -0.783696;-0.248691;0.569187;,
+    -0.783695;-0.587787;0.200820;,
+    -0.783695;0.587787;-0.200820;,
+    -0.783504;0.248690;0.569451;,
+    -0.783504;-0.248691;-0.569451;,
+    -0.783503;0.587787;0.201568;,
+    -0.783503;-0.587787;-0.201568;,
+    -0.770512;0.637425;0.000419;,
+    -0.770512;-0.637425;-0.000419;,
+    -0.769540;0.309018;-0.558852;,
+    -0.769540;-0.309018;0.558853;,
+    -0.769301;-0.309018;-0.559181;,
+    -0.769301;0.309018;0.559181;,
+    -0.768065;0.481755;-0.421886;,
+    -0.768065;-0.481755;0.421886;,
+    -0.767760;-0.481755;-0.422441;,
+    -0.767760;0.481755;0.422441;,
+    -0.764489;0.637425;-0.096155;,
+    -0.764489;-0.637426;0.096155;,
+    -0.764384;0.637425;0.096987;,
+    -0.764384;-0.637426;-0.096987;,
+    -0.752347;0.368126;-0.546313;,
+    -0.752347;-0.368126;0.546313;,
+    -0.752346;-0.587787;0.297459;,
+    -0.752346;0.587787;-0.297459;,
+    -0.752062;-0.368126;-0.546704;,
+    -0.752062;0.368126;0.546704;,
+    -0.752062;0.587787;0.298178;,
+    -0.752061;-0.587787;-0.298178;,
+    -0.746409;0.637425;-0.191213;,
+    -0.746409;-0.637425;0.191213;,
+    -0.746201;0.637425;0.192024;,
+    -0.746201;-0.637425;-0.192024;,
+    -0.740059;-0.535828;0.406449;,
+    -0.740059;0.535828;-0.406449;,
+    -0.739720;-0.535828;-0.407066;,
+    -0.739720;0.535828;0.407066;,
+    -0.732184;0.425781;-0.531617;,
+    -0.732184;-0.425781;0.531617;,
+    -0.731856;-0.425781;-0.532070;,
+    -0.731855;0.425781;0.532070;,
+    -0.728969;0.000000;-0.684547;,
+    -0.728968;-0.000000;0.684547;,
+    -0.728967;0.684549;0.000451;,
+    -0.728967;-0.684549;-0.000450;,
+    -0.727559;0.062790;-0.683166;,
+    -0.727558;-0.062791;0.683167;,
+    -0.727502;-0.062790;-0.683226;,
+    -0.727502;0.062791;0.683227;,
+    -0.723277;0.125333;-0.679089;,
+    -0.723277;-0.125333;0.679089;,
+    -0.723275;-0.684549;0.090917;,
+    -0.723275;0.684549;-0.090917;,
+    -0.723164;-0.125333;-0.679209;,
+    -0.723164;0.125333;0.679209;,
+    -0.723163;-0.684549;-0.091810;,
+    -0.723162;0.684549;0.091811;,
+    -0.716558;-0.637425;0.283255;,
+    -0.716558;0.637426;-0.283254;,
+    -0.716250;-0.637425;-0.284034;,
+    -0.716249;0.637426;0.284034;,
+    -0.716141;0.187382;-0.672332;,
+    -0.716141;-0.187381;0.672332;,
+    -0.715973;-0.187382;-0.672511;,
+    -0.715972;0.187381;0.672512;,
+    -0.709133;0.481755;-0.514823;,
+    -0.709132;-0.481755;0.514824;,
+    -0.709132;-0.587787;0.389408;,
+    -0.709132;0.587787;-0.389408;,
+    -0.708761;-0.481755;-0.515336;,
+    -0.708760;0.481755;0.515336;,
+    -0.708760;-0.587787;-0.390085;,
+    -0.708760;0.587787;0.390085;,
+    -0.706179;0.248691;-0.662921;,
+    -0.706178;-0.248691;0.662922;,
+    -0.706177;0.684549;-0.180851;,
+    -0.706177;-0.684549;0.180851;,
+    -0.705955;-0.248691;-0.663159;,
+    -0.705955;0.248691;0.663160;,
+    -0.705953;-0.684549;-0.181723;,
+    -0.705953;0.684549;0.181723;,
+    -0.693429;0.309018;-0.650895;,
+    -0.693429;-0.309018;0.650895;,
+    -0.693151;-0.309018;-0.651190;,
+    -0.693151;0.309018;0.651191;,
+    -0.684545;-0.728970;-0.000479;,
+    -0.684545;0.728970;0.000480;,
+    -0.683282;0.535828;-0.495998;,
+    -0.683282;-0.535828;0.495998;,
+    -0.682868;0.535828;0.496568;,
+    -0.682868;-0.535828;-0.496568;,
+    -0.679208;0.728970;-0.085321;,
+    -0.679208;-0.728970;0.085321;,
+    -0.679088;0.728970;0.086272;,
+    -0.679088;-0.728970;-0.086272;,
+    -0.677943;0.368126;-0.636299;,
+    -0.677943;-0.368126;0.636299;,
+    -0.677942;0.684549;-0.267932;,
+    -0.677942;-0.684549;0.267932;,
+    -0.677612;-0.368126;-0.636651;,
+    -0.677612;0.368126;0.636652;,
+    -0.677611;-0.684549;-0.268769;,
+    -0.677610;0.684549;0.268769;,
+    -0.675407;0.637425;-0.370830;,
+    -0.675407;-0.637426;0.370830;,
+    -0.675003;-0.637425;-0.371564;,
+    -0.675003;0.637426;0.371564;,
+    -0.663158;-0.728970;0.169775;,
+    -0.663158;0.728970;-0.169775;,
+    -0.662920;-0.728970;-0.170704;,
+    -0.662920;0.728970;0.170704;,
+    -0.659782;0.425781;-0.619192;,
+    -0.659781;-0.425781;0.619192;,
+    -0.659399;-0.425781;-0.619600;,
+    -0.659398;0.425781;0.619600;,
+    -0.654735;0.587787;-0.475215;,
+    -0.654735;-0.587787;0.475215;,
+    -0.654280;-0.587787;-0.475840;,
+    -0.654280;0.587787;0.475840;,
+    -0.639016;0.481755;-0.599642;,
+    -0.639016;-0.481755;0.599642;,
+    -0.639016;-0.684549;0.350788;,
+    -0.639016;0.684549;-0.350788;,
+    -0.638583;-0.481755;-0.600103;,
+    -0.638583;0.481755;0.600103;,
+    -0.638582;-0.684549;-0.351577;,
+    -0.638582;0.684549;0.351577;,
+    -0.637424;-0.000000;-0.770513;,
+    -0.637424;-0.000000;0.770513;,
+    -0.637423;-0.770514;-0.000507;,
+    -0.637422;0.770514;0.000507;,
+    -0.636651;0.728970;-0.251552;,
+    -0.636651;-0.728970;0.251552;,
+    -0.636298;-0.728970;-0.252444;,
+    -0.636298;0.728970;0.252444;,
+    -0.636198;0.062791;-0.768966;,
+    -0.636198;-0.062791;0.768967;,
+    -0.636135;-0.062791;-0.769019;,
+    -0.636134;0.062791;0.769019;,
+    -0.632461;0.125333;-0.764385;,
+    -0.632461;-0.125333;0.764385;,
+    -0.632460;-0.770514;0.079387;,
+    -0.632460;0.770514;-0.079387;,
+    -0.632334;-0.125333;-0.764490;,
+    -0.632334;0.125333;0.764490;,
+    -0.632333;0.770514;0.080393;,
+    -0.632333;-0.770514;-0.080393;,
+    -0.626228;0.187382;-0.756787;,
+    -0.626228;-0.187382;0.756787;,
+    -0.626039;-0.187382;-0.756944;,
+    -0.626038;0.187381;0.756944;,
+    -0.623604;0.637425;-0.452556;,
+    -0.623603;-0.637426;0.452556;,
+    -0.623111;-0.637425;-0.453235;,
+    -0.623111;0.637426;0.453235;,
+    -0.617524;0.248691;-0.746202;,
+    -0.617524;-0.248690;0.746202;,
+    -0.617523;-0.770514;0.158030;,
+    -0.617523;0.770514;-0.158030;,
+    -0.617272;-0.248691;-0.746410;,
+    -0.617272;0.248691;0.746410;,
+    -0.617271;-0.770514;-0.159012;,
+    -0.617271;0.770514;0.159012;,
+    -0.615729;0.535828;-0.577725;,
+    -0.615729;-0.535828;0.577725;,
+    -0.615247;-0.535828;-0.578238;,
+    -0.615247;0.535828;0.578239;,
+    -0.606383;0.309018;-0.732672;,
+    -0.606382;-0.309018;0.732672;,
+    -0.606070;-0.309018;-0.732931;,
+    -0.606070;0.309018;0.732931;,
+    -0.600103;-0.728970;0.329362;,
+    -0.600103;0.728970;-0.329362;,
+    -0.599641;0.728970;0.330203;,
+    -0.599641;-0.728970;-0.330202;,
+    -0.592848;0.368126;-0.716250;,
+    -0.592848;-0.368126;0.716251;,
+    -0.592847;0.770514;-0.234180;,
+    -0.592847;-0.770514;0.234180;,
+    -0.592475;-0.368126;-0.716559;,
+    -0.592475;0.368126;0.716559;,
+    -0.592474;0.770514;0.235122;,
+    -0.592474;-0.770514;-0.235122;,
+    -0.590012;0.587787;-0.553528;,
+    -0.590012;-0.587787;0.553528;,
+    -0.590011;0.684549;-0.428112;,
+    -0.590011;-0.684549;0.428112;,
+    -0.589483;-0.587787;-0.554091;,
+    -0.589482;0.587787;0.554091;,
+    -0.589482;-0.684549;-0.428840;,
+    -0.589482;0.684549;0.428840;,
+    -0.587783;0.809018;0.000533;,
+    -0.587783;-0.809018;-0.000532;,
+    -0.583215;-0.809018;0.073141;,
+    -0.583215;0.809018;-0.073140;,
+    -0.583082;0.809018;0.074197;,
+    -0.583082;-0.809018;-0.074197;,
+    -0.576974;0.425781;-0.697002;,
+    -0.576973;-0.425781;0.697002;,
+    -0.576543;-0.425781;-0.697359;,
+    -0.576542;0.425781;0.697359;,
+    -0.569450;-0.809018;0.145660;,
+    -0.569450;0.809018;-0.145660;,
+    -0.569185;0.809018;0.146692;,
+    -0.569185;-0.809018;-0.146692;,
+    -0.561966;0.637425;-0.527146;,
+    -0.561966;-0.637426;0.527146;,
+    -0.561392;-0.637425;-0.527757;,
+    -0.561392;0.637425;0.527757;,
+    -0.558822;0.481755;-0.675004;,
+    -0.558822;-0.481755;0.675004;,
+    -0.558822;-0.770514;0.306636;,
+    -0.558822;0.770514;-0.306636;,
+    -0.558335;-0.481755;-0.675407;,
+    -0.558334;0.481755;0.675407;,
+    -0.558333;0.770514;0.307525;,
+    -0.558333;-0.770514;-0.307525;,
+    -0.554091;-0.728970;0.401978;,
+    -0.554091;0.728970;-0.401978;,
+    -0.553527;0.728970;0.402754;,
+    -0.553527;-0.728970;-0.402754;,
+    -0.546703;-0.809018;0.215883;,
+    -0.546703;0.809018;-0.215882;,
+    -0.546311;-0.809018;-0.216873;,
+    -0.546311;0.809018;0.216873;,
+    -0.538466;0.535828;-0.650341;,
+    -0.538466;-0.535828;0.650341;,
+    -0.537923;-0.535828;-0.650790;,
+    -0.537923;0.535828;0.650790;,
+    -0.535827;-0.000000;-0.844328;,
+    -0.535827;0.000000;0.844328;,
+    -0.535825;0.844329;0.000556;,
+    -0.535825;-0.844329;-0.000556;,
+    -0.534805;0.062791;-0.842640;,
+    -0.534804;-0.062791;0.842640;,
+    -0.534735;-0.062791;-0.842684;,
+    -0.534735;0.062791;0.842684;,
+    -0.531702;0.684549;-0.498684;,
+    -0.531702;-0.684549;0.498684;,
+    -0.531671;0.125333;-0.837626;,
+    -0.531671;-0.125333;0.837626;,
+    -0.531670;-0.844329;0.066605;,
+    -0.531670;0.844329;-0.066605;,
+    -0.531532;-0.125333;-0.837714;,
+    -0.531532;0.125333;0.837714;,
+    -0.531530;-0.844329;-0.067708;,
+    -0.531530;0.844329;0.067708;,
+    -0.531086;-0.684549;-0.499340;,
+    -0.531086;0.684549;0.499341;,
+    -0.526440;0.187381;-0.829307;,
+    -0.526439;-0.187382;0.829307;,
+    -0.526232;-0.187382;-0.829438;,
+    -0.526232;0.187382;0.829439;,
+    -0.519131;0.248691;-0.817714;,
+    -0.519130;-0.248691;0.817714;,
+    -0.519130;-0.844329;0.132716;,
+    -0.519130;0.844329;-0.132716;,
+    -0.518855;-0.248691;-0.817889;,
+    -0.518855;0.248691;0.817889;,
+    -0.518853;-0.844329;-0.133793;,
+    -0.518853;0.844329;0.133793;,
+    -0.515984;0.587787;-0.623111;,
+    -0.515984;0.770514;-0.374257;,
+    -0.515984;-0.770514;0.374257;,
+    -0.515984;-0.587787;0.623111;,
+    -0.515389;-0.587787;-0.623604;,
+    -0.515388;0.587787;0.623604;,
+    -0.515388;-0.770514;-0.375078;,
+    -0.515388;0.770514;0.375078;,
+    -0.515335;0.809018;-0.282700;,
+    -0.515335;-0.809018;0.282700;,
+    -0.514822;-0.809018;-0.283633;,
+    -0.514822;0.809018;0.283634;,
+    -0.509773;0.309018;-0.802894;,
+    -0.509773;-0.309018;0.802895;,
+    -0.509430;-0.309018;-0.803112;,
+    -0.509430;0.309018;0.803112;,
+    -0.499341;0.728970;-0.468254;,
+    -0.499340;-0.728970;0.468254;,
+    -0.498684;-0.728970;-0.468953;,
+    -0.498684;0.728970;0.468953;,
+    -0.498403;0.368126;-0.784906;,
+    -0.498403;-0.368126;0.784906;,
+    -0.498402;-0.844329;0.196734;,
+    -0.498402;0.844329;-0.196734;,
+    -0.497995;-0.368126;-0.785165;,
+    -0.497994;0.368126;0.785165;,
+    -0.497993;-0.844329;-0.197767;,
+    -0.497993;0.844329;0.197767;,
+    -0.491466;0.637425;-0.593423;,
+    -0.491466;-0.637425;0.593423;,
+    -0.490820;-0.637425;-0.593957;,
+    -0.490820;0.637425;0.593957;,
+    -0.485067;0.425781;-0.763820;,
+    -0.485066;-0.425781;0.763820;,
+    -0.484594;-0.425781;-0.764120;,
+    -0.484594;0.425781;0.764120;,
+    -0.481752;-0.876307;-0.000577;,
+    -0.481752;0.876307;0.000577;,
+    -0.478026;-0.876307;0.059807;,
+    -0.478026;0.876307;-0.059807;,
+    -0.477881;-0.876307;-0.060952;,
+    -0.477881;0.876307;0.060952;,
+    -0.475840;0.809018;-0.345060;,
+    -0.475840;-0.809018;0.345060;,
+    -0.475214;-0.809018;-0.345921;,
+    -0.475214;0.809018;0.345921;,
+    -0.469816;0.481755;-0.739720;,
+    -0.469815;-0.481755;0.739720;,
+    -0.469815;-0.844329;0.257649;,
+    -0.469815;0.844329;-0.257649;,
+    -0.469281;-0.481755;-0.740059;,
+    -0.469281;0.481755;0.740059;,
+    -0.469280;0.844329;0.258623;,
+    -0.469279;-0.844329;-0.258623;,
+    -0.466760;0.876307;-0.119248;,
+    -0.466760;-0.876307;0.119248;,
+    -0.466473;0.876307;0.120366;,
+    -0.466473;-0.876307;-0.120366;,
+    -0.465008;0.770514;-0.435976;,
+    -0.465008;-0.770514;0.435976;,
+    -0.465008;0.684549;-0.561392;,
+    -0.465008;-0.684549;0.561392;,
+    -0.464314;-0.684549;-0.561966;,
+    -0.464314;0.684549;0.561966;,
+    -0.464314;-0.770514;-0.436715;,
+    -0.464314;0.770514;0.436715;,
+    -0.452711;0.535828;-0.712700;,
+    -0.452710;-0.535828;0.712700;,
+    -0.452116;-0.535828;-0.713078;,
+    -0.452116;0.535828;0.713078;,
+    -0.448134;0.876307;-0.176808;,
+    -0.448134;-0.876307;0.176808;,
+    -0.447709;-0.876307;-0.177881;,
+    -0.447709;0.876307;0.177881;,
+    -0.436715;-0.728970;0.527146;,
+    -0.436715;0.728970;-0.527146;,
+    -0.435976;0.728970;0.527757;,
+    -0.435976;-0.728970;-0.527757;,
+    -0.433819;0.587787;-0.682867;,
+    -0.433818;0.844329;-0.314500;,
+    -0.433818;-0.844329;0.314501;,
+    -0.433818;-0.587787;0.682868;,
+    -0.433166;-0.587787;-0.683282;,
+    -0.433166;0.587787;0.683282;,
+    -0.433165;-0.844329;-0.315400;,
+    -0.433165;0.844329;0.315400;,
+    -0.428840;0.809018;-0.401977;,
+    -0.428840;-0.809018;0.401977;,
+    -0.428111;-0.809018;-0.402753;,
+    -0.428111;0.809018;0.402754;,
+    -0.425779;-0.000000;-0.904827;,
+    -0.425779;0.000000;0.904827;,
+    -0.425778;0.904828;0.000596;,
+    -0.425777;-0.904828;-0.000596;,
+    -0.424977;0.062791;-0.903024;,
+    -0.424976;-0.062791;0.903024;,
+    -0.424902;-0.062791;-0.903059;,
+    -0.424901;0.062791;0.903059;,
+    -0.422497;0.125334;-0.897657;,
+    -0.422496;-0.125333;0.897657;,
+    -0.422495;-0.904828;0.052773;,
+    -0.422495;0.904828;-0.052773;,
+    -0.422440;-0.876307;0.231580;,
+    -0.422440;0.876307;-0.231580;,
+    -0.422347;-0.125334;-0.897727;,
+    -0.422347;0.125333;0.897727;,
+    -0.422345;-0.904828;-0.053955;,
+    -0.422345;0.904828;0.053955;,
+    -0.421885;-0.876307;-0.232591;,
+    -0.421885;0.876307;0.232592;,
+    -0.418349;0.187381;-0.888748;,
+    -0.418348;-0.187381;0.888748;,
+    -0.418126;-0.187382;-0.888852;,
+    -0.418126;0.187381;0.888853;,
+    -0.413215;0.637425;-0.650340;,
+    -0.413215;-0.637425;0.650340;,
+    -0.412550;0.248690;-0.876331;,
+    -0.412550;-0.248691;0.876331;,
+    -0.412549;-0.904828;0.105310;,
+    -0.412549;0.904828;-0.105309;,
+    -0.412507;-0.637425;-0.650789;,
+    -0.412507;0.637425;0.650789;,
+    -0.412255;-0.248690;-0.876470;,
+    -0.412255;0.248691;0.876470;,
+    -0.412253;-0.904828;-0.106464;,
+    -0.412253;0.904828;0.106464;,
+    -0.406699;0.770514;-0.490819;,
+    -0.406699;-0.770514;0.490819;,
+    -0.405918;-0.770514;-0.491465;,
+    -0.405918;0.770514;0.491466;,
+    -0.405124;0.309018;-0.860455;,
+    -0.405123;-0.309018;0.860455;,
+    -0.404756;-0.309018;-0.860628;,
+    -0.404756;0.309018;0.860628;,
+    -0.396098;0.368126;-0.841183;,
+    -0.396098;-0.368126;0.841184;,
+    -0.396097;-0.904828;0.156185;,
+    -0.396097;0.904828;-0.156185;,
+    -0.395661;-0.368126;-0.841389;,
+    -0.395660;0.368126;0.841389;,
+    -0.395659;-0.904828;-0.157293;,
+    -0.395658;0.904828;0.157293;,
+    -0.390980;0.844329;-0.366392;,
+    -0.390980;-0.844329;0.366393;,
+    -0.390980;0.684549;-0.615246;,
+    -0.390980;-0.684549;0.615246;,
+    -0.390220;0.684548;0.615729;,
+    -0.390220;-0.684549;-0.615728;,
+    -0.390219;-0.844329;-0.367203;,
+    -0.390219;0.844329;0.367203;,
+    -0.390085;0.876307;-0.282700;,
+    -0.390085;-0.876307;0.282700;,
+    -0.389406;-0.876307;-0.283633;,
+    -0.389406;0.876307;0.283634;,
+    -0.385509;0.425781;-0.818592;,
+    -0.385509;-0.425781;0.818592;,
+    -0.385003;-0.425781;-0.818830;,
+    -0.385003;0.425781;0.818831;,
+    -0.375078;0.809018;-0.452555;,
+    -0.375077;-0.809018;0.452556;,
+    -0.374257;-0.809018;-0.453234;,
+    -0.374257;0.809018;0.453234;,
+    -0.373399;0.481755;-0.792770;,
+    -0.373399;-0.481755;0.792771;,
+    -0.373399;-0.904828;0.204598;,
+    -0.373399;0.904828;-0.204598;,
+    -0.372827;-0.481755;-0.793040;,
+    -0.372826;0.481755;0.793040;,
+    -0.372825;0.904828;0.205642;,
+    -0.372825;-0.904828;-0.205642;,
+    -0.368123;-0.929777;-0.000612;,
+    -0.368123;0.929777;0.000613;,
+    -0.367203;0.728970;-0.577724;,
+    -0.367203;-0.728970;0.577724;,
+    -0.366393;-0.728970;-0.578238;,
+    -0.366393;0.728970;0.578238;,
+    -0.365297;0.929777;-0.045531;,
+    -0.365297;-0.929777;0.045531;,
+    -0.365144;-0.929777;-0.046746;,
+    -0.365144;0.929777;0.046746;,
+    -0.359816;0.535828;-0.763820;,
+    -0.359815;-0.535828;0.763820;,
+    -0.359179;-0.535828;-0.764120;,
+    -0.359178;0.535828;0.764120;,
+    -0.356710;0.929777;-0.090955;,
+    -0.356710;-0.929777;0.090955;,
+    -0.356406;-0.929777;-0.092142;,
+    -0.356406;0.929777;0.092142;,
+    -0.351577;0.876307;-0.329361;,
+    -0.351577;-0.876307;0.329361;,
+    -0.350787;-0.876307;-0.330202;,
+    -0.350787;0.876307;0.330203;,
+    -0.344812;0.587787;-0.731855;,
+    -0.344812;-0.587787;0.731855;,
+    -0.344812;0.904828;-0.249784;,
+    -0.344811;-0.904828;0.249784;,
+    -0.344113;-0.587787;-0.732184;,
+    -0.344112;0.587787;0.732184;,
+    -0.344111;-0.904828;-0.250748;,
+    -0.344111;0.904828;0.250748;,
+    -0.342498;-0.929777;0.134946;,
+    -0.342498;0.929777;-0.134946;,
+    -0.342047;-0.929777;-0.136085;,
+    -0.342047;0.929777;0.136085;,
+    -0.341976;0.770514;-0.537922;,
+    -0.341976;0.844329;-0.412506;,
+    -0.341976;-0.844329;0.412506;,
+    -0.341976;-0.770514;0.537922;,
+    -0.341120;-0.770514;-0.538465;,
+    -0.341120;0.770514;0.538465;,
+    -0.341120;-0.844329;-0.413215;,
+    -0.341120;0.844329;0.413215;,
+    -0.328447;0.637426;-0.697001;,
+    -0.328447;-0.637425;0.697002;,
+    -0.327689;-0.637425;-0.697358;,
+    -0.327689;0.637425;0.697359;,
+    -0.322884;-0.929777;0.176808;,
+    -0.322884;0.929777;-0.176808;,
+    -0.322294;-0.929777;-0.177881;,
+    -0.322294;0.929777;0.177881;,
+    -0.315400;0.809018;-0.495997;,
+    -0.315400;-0.809018;0.495997;,
+    -0.314501;-0.809018;-0.496567;,
+    -0.314500;0.809018;0.496567;,
+    -0.310786;0.684549;-0.659397;,
+    -0.310786;0.904828;-0.291030;,
+    -0.310786;-0.904828;0.291030;,
+    -0.310786;-0.684548;0.659398;,
+    -0.309972;-0.684549;-0.659781;,
+    -0.309972;0.684548;0.659781;,
+    -0.309971;-0.904828;-0.291899;,
+    -0.309970;0.904828;0.291899;,
+    -0.309017;-0.000000;-0.951057;,
+    -0.309016;0.000000;0.951057;,
+    -0.309016;-0.951057;-0.000626;,
+    -0.309016;0.951057;0.000627;,
+    -0.308446;0.062791;-0.949167;,
+    -0.308446;-0.062791;0.949167;,
+    -0.308368;-0.062790;-0.949193;,
+    -0.308368;0.062791;0.949193;,
+    -0.307525;-0.876307;0.370829;,
+    -0.307525;0.876307;-0.370829;,
+    -0.306659;0.125334;-0.943532;,
+    -0.306658;-0.125334;0.943532;,
+    -0.306658;-0.951057;0.038108;,
+    -0.306658;0.951057;-0.038108;,
+    -0.306636;-0.876307;-0.371564;,
+    -0.306636;0.876307;0.371564;,
+    -0.306502;-0.125334;-0.943583;,
+    -0.306502;0.125333;0.943583;,
+    -0.306501;-0.951057;-0.039352;,
+    -0.306501;0.951057;0.039352;,
+    -0.303660;0.187382;-0.934173;,
+    -0.303660;-0.187381;0.934173;,
+    -0.303426;-0.187381;-0.934249;,
+    -0.303426;0.187381;0.934249;,
+    -0.299464;0.248691;-0.921127;,
+    -0.299464;0.951057;-0.076242;,
+    -0.299464;-0.951057;0.076242;,
+    -0.299464;-0.248690;0.921127;,
+    -0.299153;-0.248691;-0.921228;,
+    -0.299153;0.248690;0.921228;,
+    -0.299152;-0.951057;-0.077456;,
+    -0.299152;0.951057;0.077456;,
+    -0.298178;0.929777;-0.215882;,
+    -0.298178;-0.929777;0.215882;,
+    -0.297458;-0.929777;-0.216873;,
+    -0.297458;0.929777;0.216873;,
+    -0.294085;0.309018;-0.904446;,
+    -0.294085;-0.309018;0.904446;,
+    -0.293699;-0.309018;-0.904571;,
+    -0.293699;0.309018;0.904571;,
+    -0.291899;0.728970;-0.619191;,
+    -0.291899;-0.728970;0.619191;,
+    -0.291031;-0.728970;-0.619599;,
+    -0.291031;0.728970;0.619600;,
+    -0.287579;0.844329;-0.452114;,
+    -0.287579;-0.844329;0.452115;,
+    -0.287547;-0.951057;0.113174;,
+    -0.287547;0.951057;-0.113174;,
+    -0.287546;0.368126;-0.884195;,
+    -0.287546;-0.368126;0.884195;,
+    -0.287086;-0.368126;-0.884344;,
+    -0.287086;0.368126;0.884344;,
+    -0.287085;-0.951057;-0.114339;,
+    -0.287085;0.951057;0.114339;,
+    -0.286640;-0.844329;-0.452710;,
+    -0.286640;0.844329;0.452710;,
+    -0.279873;0.425781;-0.860454;,
+    -0.279872;-0.425781;0.860455;,
+    -0.279341;-0.425781;-0.860627;,
+    -0.279340;0.425781;0.860628;,
+    -0.271860;0.770514;-0.576541;,
+    -0.271860;0.904828;-0.327687;,
+    -0.271860;-0.904828;0.327687;,
+    -0.271860;-0.770514;0.576541;,
+    -0.271095;0.951057;-0.148320;,
+    -0.271095;-0.951057;0.148321;,
+    -0.271094;0.481755;-0.833319;,
+    -0.271094;-0.481755;0.833319;,
+    -0.270943;-0.770514;-0.576973;,
+    -0.270942;0.770514;0.576973;,
+    -0.270942;-0.904828;-0.328447;,
+    -0.270942;0.904828;0.328447;,
+    -0.270492;-0.481755;-0.833514;,
+    -0.270492;0.481755;0.833514;,
+    -0.270491;-0.951057;-0.149419;,
+    -0.270491;0.951057;0.149419;,
+    -0.268770;0.929777;-0.251551;,
+    -0.268770;-0.929777;0.251551;,
+    -0.267931;-0.929777;-0.252444;,
+    -0.267931;0.929777;0.252444;,
+    -0.261246;0.535828;-0.802894;,
+    -0.261246;-0.535828;0.802894;,
+    -0.260576;-0.535828;-0.803111;,
+    -0.260576;0.535828;0.803112;,
+    -0.258623;0.876307;-0.406447;,
+    -0.258623;-0.876307;0.406448;,
+    -0.257649;-0.876307;-0.407066;,
+    -0.257648;0.876307;0.407066;,
+    -0.250748;0.809018;-0.531616;,
+    -0.250748;-0.809018;0.531616;,
+    -0.250368;0.951057;-0.181128;,
+    -0.250368;-0.951057;0.181128;,
+    -0.250367;0.587787;-0.769300;,
+    -0.250367;-0.587787;0.769300;,
+    -0.249784;-0.809018;-0.532069;,
+    -0.249784;0.809018;0.532069;,
+    -0.249632;-0.587787;-0.769539;,
+    -0.249632;0.587787;0.769539;,
+    -0.249631;-0.951057;-0.182142;,
+    -0.249631;0.951057;0.182142;,
+    -0.248689;0.968583;0.000638;,
+    -0.248689;-0.968583;-0.000638;,
+    -0.246808;0.968583;-0.030536;,
+    -0.246808;-0.968583;0.030536;,
+    -0.246648;0.968583;0.031802;,
+    -0.246648;-0.968583;-0.031802;,
+    -0.241034;-0.968583;0.061228;,
+    -0.241034;0.968583;-0.061228;,
+    -0.240717;0.968583;0.062465;,
+    -0.240717;-0.968583;-0.062465;,
+    -0.238500;0.637425;-0.732671;,
+    -0.238500;-0.637425;0.732671;,
+    -0.237703;-0.637425;-0.732930;,
+    -0.237702;0.637425;0.732930;,
+    -0.235123;0.929777;-0.283253;,
+    -0.235122;-0.929777;0.283254;,
+    -0.234179;-0.929777;-0.284034;,
+    -0.234179;0.929777;0.284034;,
+    -0.231460;0.968583;-0.090955;,
+    -0.231460;-0.968583;0.090955;,
+    -0.230990;0.968583;0.092142;,
+    -0.230990;-0.968583;-0.092142;,
+    -0.228646;0.844329;-0.484592;,
+    -0.228646;-0.844329;0.484593;,
+    -0.228646;0.904828;-0.359176;,
+    -0.228646;-0.904828;0.359177;,
+    -0.227640;-0.844329;-0.485066;,
+    -0.227640;0.844329;0.485066;,
+    -0.227640;-0.904828;-0.359815;,
+    -0.227640;0.904828;0.359815;,
+    -0.225692;0.951057;-0.211079;,
+    -0.225692;-0.951057;0.211079;,
+    -0.225691;0.684549;-0.693150;,
+    -0.225691;-0.684548;0.693150;,
+    -0.224835;-0.684549;-0.693428;,
+    -0.224835;0.684549;0.693428;,
+    -0.224834;-0.951057;-0.211993;,
+    -0.224834;0.951057;0.211993;,
+    -0.218235;0.968583;-0.119247;,
+    -0.218235;-0.968583;0.119247;,
+    -0.217620;0.968583;0.120366;,
+    -0.217620;-0.968583;-0.120366;,
+    -0.211992;0.728970;-0.650893;,
+    -0.211992;-0.728970;0.650893;,
+    -0.211080;-0.728970;-0.651190;,
+    -0.211080;0.728970;0.651190;,
+    -0.205642;0.876307;-0.435656;,
+    -0.205642;-0.876307;0.435657;,
+    -0.204598;-0.876307;-0.436148;,
+    -0.204598;0.876307;0.436148;,
+    -0.201568;0.968583;-0.145659;,
+    -0.201568;-0.968583;0.145659;,
+    -0.200818;0.968583;0.146692;,
+    -0.200818;-0.968583;-0.146692;,
+    -0.197767;0.929777;-0.310489;,
+    -0.197767;-0.929777;0.310489;,
+    -0.197457;0.951057;-0.237702;,
+    -0.197457;-0.951057;0.237702;,
+    -0.197456;0.770514;-0.606068;,
+    -0.197456;-0.770514;0.606068;,
+    -0.196733;-0.929777;-0.311145;,
+    -0.196733;0.929777;0.311145;,
+    -0.196492;-0.770514;-0.606381;,
+    -0.196492;0.770514;0.606382;,
+    -0.196491;-0.951057;-0.238500;,
+    -0.196491;0.951057;0.238500;,
+    -0.187381;0.000000;-0.982287;,
+    -0.187381;0.000000;0.982287;,
+    -0.187380;-0.982287;-0.000647;,
+    -0.187380;0.982287;0.000647;,
+    -0.187052;0.062790;-0.980341;,
+    -0.187052;-0.062791;0.980341;,
+    -0.186971;-0.062791;-0.980357;,
+    -0.186971;0.062790;0.980357;,
+    -0.185985;0.125334;-0.974526;,
+    -0.185984;-0.125333;0.974526;,
+    -0.185984;-0.982287;0.022843;,
+    -0.185984;0.982287;-0.022843;,
+    -0.185823;-0.125333;-0.974557;,
+    -0.185823;0.125334;0.974557;,
+    -0.185822;0.982287;0.024127;,
+    -0.185822;-0.982287;-0.024127;,
+    -0.184183;0.187382;-0.964865;,
+    -0.184183;-0.187381;0.964865;,
+    -0.183941;-0.187382;-0.964911;,
+    -0.183941;0.187381;0.964911;,
+    -0.182141;0.809018;-0.558851;,
+    -0.182141;-0.809018;0.558851;,
+    -0.181826;0.904828;-0.385001;,
+    -0.181826;-0.904828;0.385001;,
+    -0.181723;0.968583;-0.169774;,
+    -0.181723;-0.968583;0.169774;,
+    -0.181655;0.248691;-0.951396;,
+    -0.181655;-0.982287;0.045973;,
+    -0.181655;0.982287;-0.045973;,
+    -0.181654;-0.248690;0.951396;,
+    -0.181334;-0.248691;-0.951457;,
+    -0.181334;0.248691;0.951457;,
+    -0.181333;-0.982287;-0.047227;,
+    -0.181333;0.982287;0.047227;,
+    -0.181129;-0.809018;-0.559180;,
+    -0.181128;0.809018;0.559180;,
+    -0.180849;-0.968583;-0.170704;,
+    -0.180849;0.968583;0.170704;,
+    -0.180748;-0.904828;-0.385509;,
+    -0.180748;0.904828;0.385509;,
+    -0.178410;0.309018;-0.934172;,
+    -0.178409;-0.309018;0.934172;,
+    -0.178011;-0.309018;-0.934248;,
+    -0.178010;0.309018;0.934248;,
+    -0.174460;0.982287;-0.068377;,
+    -0.174460;-0.982287;0.068378;,
+    -0.174460;0.368126;-0.913262;,
+    -0.174460;-0.368126;0.913262;,
+    -0.173985;-0.368126;-0.913352;,
+    -0.173985;0.368126;0.913352;,
+    -0.173984;-0.982287;-0.069581;,
+    -0.173984;0.982287;0.069581;,
+    -0.169822;0.425781;-0.888747;,
+    -0.169822;-0.425781;0.888747;,
+    -0.169273;-0.425781;-0.888852;,
+    -0.169272;0.425781;0.888852;,
+    -0.166108;0.951057;-0.260575;,
+    -0.166108;-0.951057;0.260575;,
+    -0.166108;0.844329;-0.509428;,
+    -0.166107;-0.844329;0.509429;,
+    -0.165050;-0.844329;-0.509772;,
+    -0.165050;0.844329;0.509772;,
+    -0.165050;-0.951057;-0.261247;,
+    -0.165050;0.951057;0.261247;,
+    -0.164515;-0.982287;0.089704;,
+    -0.164515;0.982287;-0.089704;,
+    -0.164514;0.481755;-0.860725;,
+    -0.164514;-0.481755;0.860725;,
+    -0.163892;-0.481755;-0.860843;,
+    -0.163892;0.481755;0.860844;,
+    -0.163891;-0.982287;-0.090838;,
+    -0.163891;0.982287;0.090838;,
+    -0.159012;0.968583;-0.191211;,
+    -0.159012;-0.968583;0.191211;,
+    -0.158557;0.535828;-0.829306;,
+    -0.158557;-0.535828;0.829306;,
+    -0.158028;-0.968583;-0.192025;,
+    -0.158028;0.968583;0.192025;,
+    -0.157865;-0.535828;-0.829438;,
+    -0.157865;0.535828;0.829438;,
+    -0.157293;0.929777;-0.332827;,
+    -0.157293;-0.929777;0.332827;,
+    -0.156185;-0.929777;-0.333349;,
+    -0.156185;0.929777;0.333349;,
+    -0.151974;0.982287;-0.109616;,
+    -0.151974;-0.982287;0.109616;,
+    -0.151974;0.587787;-0.794613;,
+    -0.151974;-0.587787;0.794614;,
+    -0.151215;-0.587787;-0.794758;,
+    -0.151215;0.587787;0.794758;,
+    -0.151214;-0.982287;-0.110663;,
+    -0.151214;0.982287;0.110663;,
+    -0.149418;0.876307;-0.457995;,
+    -0.149418;-0.876307;0.457995;,
+    -0.148321;-0.876307;-0.458352;,
+    -0.148321;0.876307;0.458352;,
+    -0.144791;0.637425;-0.756785;,
+    -0.144791;-0.637425;0.756786;,
+    -0.143968;-0.637426;-0.756942;,
+    -0.143968;0.637425;0.756943;,
+    -0.137038;0.982287;-0.127799;,
+    -0.137038;-0.982287;0.127799;,
+    -0.137037;0.684549;-0.715971;,
+    -0.137037;-0.684548;0.715971;,
+    -0.136153;-0.684549;-0.716139;,
+    -0.136152;0.684549;0.716139;,
+    -0.136151;-0.982287;-0.128743;,
+    -0.136151;0.982287;0.128743;,
+    -0.133793;0.968583;-0.209633;,
+    -0.133793;-0.968583;0.209633;,
+    -0.132715;-0.968583;-0.210317;,
+    -0.132715;0.968583;0.210317;,
+    -0.132140;0.951057;-0.279339;,
+    -0.132140;-0.951057;0.279339;,
+    -0.132139;0.904828;-0.404754;,
+    -0.132139;-0.904828;0.404754;,
+    -0.131006;-0.904828;-0.405123;,
+    -0.131006;-0.951057;-0.279873;,
+    -0.131006;0.951057;0.279873;,
+    -0.131006;0.904828;0.405123;,
+    -0.128742;0.728970;-0.672330;,
+    -0.128742;-0.728970;0.672331;,
+    -0.127800;-0.728970;-0.672510;,
+    -0.127800;0.728970;0.672510;,
+    -0.125333;-0.992115;-0.000654;,
+    -0.125333;0.992115;0.000654;,
+    -0.124427;-0.992115;0.015060;,
+    -0.124427;0.992115;-0.015060;,
+    -0.124263;-0.992115;-0.016357;,
+    -0.124263;0.992115;0.016357;,
+    -0.121558;-0.992115;0.030536;,
+    -0.121558;0.992115;-0.030536;,
+    -0.121233;-0.992115;-0.031802;,
+    -0.121233;0.992115;0.031802;,
+    -0.119940;0.982287;-0.143966;,
+    -0.119940;-0.982287;0.143967;,
+    -0.119939;-0.770514;0.626037;,
+    -0.119939;0.770514;-0.626037;,
+    -0.118943;-0.770514;-0.626227;,
+    -0.118943;0.770514;0.626227;,
+    -0.118942;-0.982287;-0.144792;,
+    -0.118942;0.982287;0.144792;,
+    -0.116772;0.992115;-0.045530;,
+    -0.116772;-0.992115;0.045530;,
+    -0.116291;-0.992115;-0.046746;,
+    -0.116291;0.992115;0.046746;,
+    -0.114339;-0.929777;0.349917;,
+    -0.114339;0.929777;-0.349917;,
+    -0.113174;0.929777;0.350295;,
+    -0.113174;-0.929777;-0.350295;,
+    -0.110663;0.809018;-0.577272;,
+    -0.110663;-0.809018;0.577272;,
+    -0.110145;-0.992115;0.059807;,
+    -0.110145;0.992115;-0.059807;,
+    -0.109617;-0.809018;-0.577472;,
+    -0.109616;0.809018;0.577472;,
+    -0.109515;0.992115;0.060953;,
+    -0.109515;-0.992115;-0.060953;,
+    -0.106464;0.968583;-0.224748;,
+    -0.106464;-0.968583;0.224749;,
+    -0.105309;-0.968583;-0.225292;,
+    -0.105309;0.968583;0.225292;,
+    -0.101781;0.992115;-0.073140;,
+    -0.101781;-0.992115;0.073140;,
+    -0.101012;-0.992115;-0.074198;,
+    -0.101012;0.992115;0.074198;,
+    -0.100950;0.982287;-0.157864;,
+    -0.100950;-0.982287;0.157864;,
+    -0.100950;0.844329;-0.526230;,
+    -0.100949;-0.844329;0.526230;,
+    -0.099858;-0.844329;-0.526439;,
+    -0.099858;0.844329;0.526439;,
+    -0.099857;-0.982287;-0.158557;,
+    -0.099857;0.982287;0.158557;,
+    -0.096087;0.951057;-0.293698;,
+    -0.096087;-0.951057;0.293698;,
+    -0.094895;-0.951057;-0.294085;,
+    -0.094895;0.951057;0.294085;,
+    -0.091811;0.992115;-0.085320;,
+    -0.091811;-0.992115;0.085320;,
+    -0.090916;-0.992115;-0.086273;,
+    -0.090916;0.992115;0.086273;,
+    -0.090838;0.876307;-0.473111;,
+    -0.090838;-0.876307;0.473111;,
+    -0.089705;-0.876307;-0.473327;,
+    -0.089704;0.876307;0.473327;,
+    -0.080394;0.992115;-0.096154;,
+    -0.080394;-0.992115;0.096154;,
+    -0.080368;0.982287;-0.169271;,
+    -0.080368;-0.982287;0.169271;,
+    -0.080368;0.904828;-0.418124;,
+    -0.080368;-0.904828;0.418124;,
+    -0.079386;-0.992115;-0.096987;,
+    -0.079386;0.992115;0.096987;,
+    -0.079197;-0.904828;-0.418347;,
+    -0.079197;0.904828;0.418348;,
+    -0.079197;-0.982287;-0.169822;,
+    -0.079197;0.982287;0.169823;,
+    -0.077456;0.968583;-0.236320;,
+    -0.077456;-0.968583;0.236320;,
+    -0.076242;-0.968583;-0.236714;,
+    -0.076242;0.968583;0.236714;,
+    -0.069581;0.929777;-0.361488;,
+    -0.069581;-0.929777;0.361488;,
+    -0.069062;-0.997612;-0.001185;,
+    -0.069062;0.997612;0.001185;,
+    -0.068665;-0.997612;0.007480;,
+    -0.068665;0.997612;-0.007480;,
+    -0.068378;-0.929777;-0.361718;,
+    -0.068378;0.929777;0.361718;,
+    -0.068368;0.997612;0.009831;,
+    -0.068368;-0.997612;-0.009831;,
+    -0.067709;0.992115;-0.105472;,
+    -0.067709;-0.992115;0.105472;,
+    -0.067186;-0.997612;0.016027;,
+    -0.067186;0.997612;-0.016027;,
+    -0.066605;-0.992115;-0.106172;,
+    -0.066605;0.992115;0.106172;,
+    -0.066597;-0.997612;-0.018322;,
+    -0.066597;0.997612;0.018322;,
+    -0.064648;-0.997612;0.024322;,
+    -0.064648;0.997612;-0.024322;,
+    -0.063776;-0.997612;-0.026525;,
+    -0.063776;0.997612;0.026525;,
+    -0.062791;0.000000;-0.998027;,
+    -0.062790;0.000000;0.998027;,
+    -0.062708;0.062790;-0.996055;,
+    -0.062708;-0.062791;0.996055;,
+    -0.062625;-0.062791;-0.996060;,
+    -0.062625;0.062790;0.996060;,
+    -0.062378;0.125334;-0.990152;,
+    -0.062377;-0.125334;0.990152;,
+    -0.062213;-0.125333;-0.990162;,
+    -0.062213;0.125334;0.990162;,
+    -0.061801;0.187382;-0.980341;,
+    -0.061801;-0.187381;0.980341;,
+    -0.061555;-0.187382;-0.980357;,
+    -0.061555;0.187381;0.980357;,
+    -0.061090;-0.997612;0.032232;,
+    -0.061090;0.997612;-0.032232;,
+    -0.060981;0.248691;-0.966661;,
+    -0.060981;-0.248690;0.966662;,
+    -0.060655;-0.248690;-0.966682;,
+    -0.060655;0.248690;0.966682;,
+    -0.059948;0.997612;0.034309;,
+    -0.059948;-0.997612;-0.034309;,
+    -0.059920;0.309018;-0.949167;,
+    -0.059920;-0.309018;0.949167;,
+    -0.059515;-0.309018;-0.949192;,
+    -0.059515;0.309018;0.949192;,
+    -0.058623;0.368126;-0.927926;,
+    -0.058622;-0.368126;0.927926;,
+    -0.058519;0.982287;-0.178009;,
+    -0.058519;0.951057;-0.303425;,
+    -0.058519;-0.982287;0.178009;,
+    -0.058519;-0.951057;0.303425;,
+    -0.058140;-0.368126;-0.927956;,
+    -0.058140;0.368126;0.927956;,
+    -0.057288;-0.951057;-0.303660;,
+    -0.057288;0.951057;0.303660;,
+    -0.057288;-0.982287;-0.178409;,
+    -0.057288;0.982287;0.178410;,
+    -0.057094;0.425781;-0.903023;,
+    -0.057094;-0.425781;0.903023;,
+    -0.056568;0.997612;-0.039635;,
+    -0.056568;-0.997612;0.039635;,
+    -0.056535;-0.425781;-0.903058;,
+    -0.056535;0.425781;0.903058;,
+    -0.055340;0.481755;-0.874557;,
+    -0.055340;-0.481755;0.874557;,
+    -0.055176;-0.997612;-0.041552;,
+    -0.055176;0.997612;0.041552;,
+    -0.054708;-0.481755;-0.874597;,
+    -0.054708;0.481755;0.874597;,
+    -0.053956;0.992115;-0.113126;,
+    -0.053956;-0.992115;0.113126;,
+    -0.053367;0.535828;-0.842639;,
+    -0.053367;-0.535828;0.842639;,
+    -0.052773;-0.992115;-0.113683;,
+    -0.052773;0.992115;0.113683;,
+    -0.052664;-0.535828;-0.842683;,
+    -0.052664;0.535828;0.842683;,
+    -0.051184;0.587787;-0.807395;,
+    -0.051184;-0.587787;0.807395;,
+    -0.051155;0.997612;-0.046412;,
+    -0.051155;-0.997612;0.046412;,
+    -0.050413;-0.587787;-0.807444;,
+    -0.050413;0.587787;0.807444;,
+    -0.049533;-0.997612;-0.048139;,
+    -0.049533;0.997612;0.048140;,
+    -0.048799;0.637425;-0.768965;,
+    -0.048799;-0.637425;0.768965;,
+    -0.047963;-0.637425;-0.769018;,
+    -0.047962;0.637425;0.769018;,
+    -0.047227;0.968583;-0.244164;,
+    -0.047226;-0.968583;0.244164;,
+    -0.046222;0.684549;-0.727500;,
+    -0.046221;-0.684548;0.727500;,
+    -0.045973;-0.968583;-0.244403;,
+    -0.045973;0.968583;0.244403;,
+    -0.045323;-0.684549;-0.727557;,
+    -0.045323;0.684548;0.727557;,
+    -0.044934;0.997612;-0.052458;,
+    -0.044934;-0.997612;0.052458;,
+    -0.043462;0.728970;-0.683164;,
+    -0.043461;-0.728970;0.683165;,
+    -0.043109;-0.997612;-0.053968;,
+    -0.043109;0.997612;0.053968;,
+    -0.042504;-0.728970;-0.683225;,
+    -0.042504;0.728970;0.683225;,
+    -0.040530;0.770514;-0.636133;,
+    -0.040530;-0.770514;0.636133;,
+    -0.039518;0.770514;0.636197;,
+    -0.039518;-0.770514;-0.636196;,
+    -0.039352;0.992115;-0.118997;,
+    -0.039352;-0.992115;0.118997;,
+    -0.038108;-0.992115;-0.119401;,
+    -0.038108;0.992115;0.119401;,
+    -0.038005;0.997612;-0.057676;,
+    -0.038005;-0.997612;0.057676;,
+    -0.037439;-0.809018;0.586590;,
+    -0.037439;0.809018;-0.586590;,
+    -0.036376;0.809018;0.586657;,
+    -0.036376;-0.809018;-0.586657;,
+    -0.036005;-0.997612;-0.058945;,
+    -0.036005;0.997612;0.058945;,
+    -0.035747;0.982287;-0.183940;,
+    -0.035747;-0.982287;0.183940;,
+    -0.034476;-0.982287;-0.184183;,
+    -0.034476;0.982287;0.184183;,
+    -0.034200;-0.844329;0.534733;,
+    -0.034199;0.844329;-0.534733;,
+    -0.033090;-0.844329;-0.534803;,
+    -0.033090;0.844329;0.534803;,
+    -0.030825;0.876307;-0.480765;,
+    -0.030825;-0.876307;0.480765;,
+    -0.030477;0.997612;-0.061984;,
+    -0.030477;-0.997612;0.061984;,
+    -0.029674;-0.876307;-0.480838;,
+    -0.029674;0.876307;0.480838;,
+    -0.028333;-0.997612;-0.062993;,
+    -0.028333;0.997612;0.062993;,
+    -0.027329;0.904828;-0.424900;,
+    -0.027329;-0.904828;0.424900;,
+    -0.026140;-0.904828;-0.424975;,
+    -0.026140;0.904828;0.424975;,
+    -0.024127;0.992115;-0.122990;,
+    -0.024127;-0.992115;0.122990;,
+    -0.023726;0.929777;-0.367358;,
+    -0.023726;-0.929777;0.367359;,
+    -0.022843;-0.992115;-0.123235;,
+    -0.022843;0.992115;0.123235;,
+    -0.022503;-0.929777;-0.367435;,
+    -0.022503;0.929777;0.367435;,
+    -0.022468;0.997612;-0.065315;,
+    -0.022468;-0.997612;0.065315;,
+    -0.020214;-0.997612;-0.066047;,
+    -0.020214;0.997612;0.066048;,
+    -0.020029;0.951057;-0.308367;,
+    -0.020029;-0.951057;0.308367;,
+    -0.018778;-0.951057;-0.308446;,
+    -0.018778;0.951057;0.308446;,
+    -0.016252;0.968583;-0.248158;,
+    -0.016252;-0.968583;0.248158;,
+    -0.014978;-0.968583;-0.248238;,
+    -0.014978;0.968583;0.248238;,
+    -0.014105;0.997612;-0.067616;,
+    -0.014105;-0.997612;0.067616;,
+    -0.012412;0.982287;-0.186970;,
+    -0.012412;-0.982287;0.186970;,
+    -0.011777;-0.997612;-0.068060;,
+    -0.011777;0.997612;0.068060;,
+    -0.011120;-0.982287;-0.187051;,
+    -0.011120;0.982287;0.187051;,
+    -0.008522;0.992115;-0.125044;,
+    -0.008522;-0.992115;0.125045;,
+    -0.007217;-0.992115;-0.125127;,
+    -0.007217;0.992115;0.125127;,
+    -0.005519;0.997612;-0.068851;,
+    -0.005519;-0.997612;0.068851;,
+    -0.003154;-0.997612;-0.069000;,
+    -0.003154;0.997612;0.069000;,
+    0.000000;-1.000000;0.000000;,
+    0.000000;1.000000;0.000000;,
+    0.003154;0.997612;-0.069000;,
+    0.003154;-0.997612;0.069000;,
+    0.005519;-0.997612;-0.068851;,
+    0.005519;0.997612;0.068851;,
+    0.007217;0.992115;-0.125127;,
+    0.007217;-0.992115;0.125127;,
+    0.008522;-0.992115;-0.125044;,
+    0.008522;0.992115;0.125045;,
+    0.011120;0.982287;-0.187051;,
+    0.011120;-0.982287;0.187051;,
+    0.011777;0.997612;-0.068060;,
+    0.011777;-0.997612;0.068060;,
+    0.012412;-0.982287;-0.186970;,
+    0.012412;0.982287;0.186970;,
+    0.014105;-0.997612;-0.067616;,
+    0.014105;0.997612;0.067616;,
+    0.014978;0.968583;-0.248238;,
+    0.014978;-0.968583;0.248238;,
+    0.016252;-0.968583;-0.248158;,
+    0.016252;0.968583;0.248158;,
+    0.018778;0.951057;-0.308446;,
+    0.018778;-0.951057;0.308446;,
+    0.020029;-0.951057;-0.308367;,
+    0.020029;0.951057;0.308367;,
+    0.020214;0.997612;-0.066047;,
+    0.020214;-0.997612;0.066048;,
+    0.022468;-0.997612;-0.065315;,
+    0.022468;0.997612;0.065315;,
+    0.022503;0.929777;-0.367435;,
+    0.022503;-0.929777;0.367435;,
+    0.022843;0.992115;-0.123235;,
+    0.022843;-0.992115;0.123235;,
+    0.023726;-0.929777;-0.367358;,
+    0.023726;0.929777;0.367359;,
+    0.024127;-0.992115;-0.122990;,
+    0.024127;0.992115;0.122990;,
+    0.026140;0.904828;-0.424975;,
+    0.026140;-0.904828;0.424975;,
+    0.027329;-0.904828;-0.424900;,
+    0.027330;0.904828;0.424900;,
+    0.028333;0.997612;-0.062993;,
+    0.028333;-0.997612;0.062993;,
+    0.029673;0.876307;-0.480838;,
+    0.029674;-0.876307;0.480838;,
+    0.030477;-0.997612;-0.061984;,
+    0.030477;0.997612;0.061984;,
+    0.030825;-0.876307;-0.480765;,
+    0.030825;0.876307;0.480765;,
+    0.033090;0.844329;-0.534803;,
+    0.033090;-0.844329;0.534803;,
+    0.034199;-0.844329;-0.534733;,
+    0.034200;0.844329;0.534733;,
+    0.034476;0.982287;-0.184183;,
+    0.034476;-0.982287;0.184183;,
+    0.035747;-0.982287;-0.183940;,
+    0.035747;0.982287;0.183940;,
+    0.036005;0.997612;-0.058945;,
+    0.036005;-0.997612;0.058945;,
+    0.036376;0.809018;-0.586657;,
+    0.036376;-0.809018;0.586657;,
+    0.037438;-0.809018;-0.586590;,
+    0.037439;0.809018;0.586590;,
+    0.038005;-0.997612;-0.057676;,
+    0.038005;0.997612;0.057676;,
+    0.038108;0.992115;-0.119401;,
+    0.038108;-0.992115;0.119401;,
+    0.039352;-0.992115;-0.118997;,
+    0.039352;0.992115;0.118997;,
+    0.039518;0.770514;-0.636196;,
+    0.039518;-0.770514;0.636197;,
+    0.040530;-0.770514;-0.636133;,
+    0.040530;0.770514;0.636133;,
+    0.042504;0.728970;-0.683225;,
+    0.042505;-0.728970;0.683225;,
+    0.043109;0.997612;-0.053968;,
+    0.043109;-0.997612;0.053968;,
+    0.043461;-0.728970;-0.683164;,
+    0.043462;0.728970;0.683165;,
+    0.044934;-0.997612;-0.052458;,
+    0.044934;0.997612;0.052458;,
+    0.045323;0.684549;-0.727557;,
+    0.045323;-0.684548;0.727557;,
+    0.045973;0.968583;-0.244403;,
+    0.045973;-0.968583;0.244403;,
+    0.046221;-0.684549;-0.727500;,
+    0.046222;0.684548;0.727501;,
+    0.047226;-0.968583;-0.244164;,
+    0.047227;0.968583;0.244164;,
+    0.047962;0.637425;-0.769018;,
+    0.047963;-0.637425;0.769018;,
+    0.048799;-0.637425;-0.768965;,
+    0.048799;0.637425;0.768965;,
+    0.049533;0.997612;-0.048139;,
+    0.049533;-0.997612;0.048139;,
+    0.050413;0.587787;-0.807444;,
+    0.050413;-0.587787;0.807444;,
+    0.051155;-0.997612;-0.046412;,
+    0.051155;0.997612;0.046412;,
+    0.051184;-0.587787;-0.807395;,
+    0.051184;0.587787;0.807395;,
+    0.052664;0.535828;-0.842683;,
+    0.052664;-0.535828;0.842683;,
+    0.052773;0.992115;-0.113683;,
+    0.052773;-0.992115;0.113683;,
+    0.053367;-0.535828;-0.842639;,
+    0.053367;0.535828;0.842639;,
+    0.053956;-0.992115;-0.113126;,
+    0.053956;0.992115;0.113126;,
+    0.054708;0.481755;-0.874597;,
+    0.054708;-0.481755;0.874597;,
+    0.055176;0.997612;-0.041552;,
+    0.055176;-0.997612;0.041552;,
+    0.055339;-0.481755;-0.874557;,
+    0.055340;0.481755;0.874557;,
+    0.056535;0.425781;-0.903058;,
+    0.056536;-0.425781;0.903058;,
+    0.056568;-0.997612;-0.039635;,
+    0.056568;0.997612;0.039635;,
+    0.057094;-0.425781;-0.903023;,
+    0.057094;0.425781;0.903023;,
+    0.057288;0.982287;-0.178409;,
+    0.057288;-0.982287;0.178409;,
+    0.057288;0.951057;-0.303660;,
+    0.057288;-0.951057;0.303660;,
+    0.058140;0.368126;-0.927956;,
+    0.058140;-0.368126;0.927956;,
+    0.058519;-0.951057;-0.303425;,
+    0.058519;-0.982287;-0.178009;,
+    0.058519;0.951057;0.303425;,
+    0.058519;0.982287;0.178009;,
+    0.058622;-0.368126;-0.927926;,
+    0.058623;0.368126;0.927926;,
+    0.059515;0.309018;-0.949192;,
+    0.059515;-0.309018;0.949192;,
+    0.059920;-0.309018;-0.949167;,
+    0.059920;0.309018;0.949167;,
+    0.059948;0.997612;-0.034309;,
+    0.059948;-0.997612;0.034309;,
+    0.060655;0.248690;-0.966682;,
+    0.060655;-0.248690;0.966682;,
+    0.060981;-0.248691;-0.966661;,
+    0.060981;0.248690;0.966661;,
+    0.061090;-0.997612;-0.032232;,
+    0.061090;0.997612;0.032232;,
+    0.061555;0.187382;-0.980357;,
+    0.061556;-0.187381;0.980357;,
+    0.061801;-0.187382;-0.980341;,
+    0.061801;0.187381;0.980341;,
+    0.062213;0.125333;-0.990162;,
+    0.062213;-0.125334;0.990162;,
+    0.062377;-0.125334;-0.990152;,
+    0.062378;0.125334;0.990152;,
+    0.062625;0.062791;-0.996060;,
+    0.062626;-0.062790;0.996060;,
+    0.062707;-0.062790;-0.996055;,
+    0.062708;0.062791;0.996055;,
+    0.062790;-0.000000;-0.998027;,
+    0.062791;-0.000000;0.998027;,
+    0.063776;0.997612;-0.026525;,
+    0.063776;-0.997612;0.026525;,
+    0.064648;-0.997612;-0.024322;,
+    0.064648;0.997612;0.024322;,
+    0.066597;0.997612;-0.018322;,
+    0.066597;-0.997612;0.018322;,
+    0.066605;0.992115;-0.106172;,
+    0.066605;-0.992115;0.106172;,
+    0.067186;-0.997612;-0.016027;,
+    0.067186;0.997612;0.016027;,
+    0.067709;-0.992115;-0.105472;,
+    0.067709;0.992115;0.105472;,
+    0.068368;0.997612;-0.009831;,
+    0.068369;-0.997612;0.009831;,
+    0.068378;0.929777;-0.361718;,
+    0.068378;-0.929777;0.361718;,
+    0.068665;-0.997612;-0.007480;,
+    0.068665;0.997612;0.007480;,
+    0.069062;-0.997612;0.001185;,
+    0.069062;0.997612;-0.001184;,
+    0.069581;-0.929777;-0.361488;,
+    0.069581;0.929777;0.361488;,
+    0.076242;0.968583;-0.236714;,
+    0.076242;-0.968583;0.236714;,
+    0.077456;-0.968583;-0.236320;,
+    0.077456;0.968583;0.236320;,
+    0.079197;0.982287;-0.169822;,
+    0.079197;-0.982287;0.169823;,
+    0.079197;0.904828;-0.418347;,
+    0.079197;-0.904828;0.418348;,
+    0.079386;0.992115;-0.096987;,
+    0.079386;-0.992115;0.096987;,
+    0.080368;-0.904828;-0.418124;,
+    0.080368;0.904828;0.418124;,
+    0.080368;-0.982287;-0.169271;,
+    0.080368;0.982287;0.169271;,
+    0.080394;-0.992115;-0.096154;,
+    0.080394;0.992115;0.096154;,
+    0.089704;0.876307;-0.473327;,
+    0.089705;-0.876307;0.473327;,
+    0.090838;-0.876307;-0.473111;,
+    0.090838;0.876307;0.473111;,
+    0.090916;0.992115;-0.086273;,
+    0.090916;-0.992115;0.086273;,
+    0.091811;-0.992115;-0.085320;,
+    0.091811;0.992115;0.085320;,
+    0.094895;0.951057;-0.294085;,
+    0.094895;-0.951057;0.294085;,
+    0.096087;-0.951057;-0.293698;,
+    0.096087;0.951057;0.293698;,
+    0.099857;0.982287;-0.158557;,
+    0.099857;-0.982287;0.158557;,
+    0.099857;0.844329;-0.526438;,
+    0.099858;-0.844329;0.526439;,
+    0.100949;-0.844329;-0.526230;,
+    0.100950;0.844329;0.526230;,
+    0.100950;-0.982287;-0.157864;,
+    0.100950;0.982287;0.157864;,
+    0.101012;0.992115;-0.074198;,
+    0.101012;-0.992115;0.074198;,
+    0.101781;-0.992115;-0.073140;,
+    0.101781;0.992115;0.073140;,
+    0.105309;0.968583;-0.225292;,
+    0.105309;-0.968583;0.225292;,
+    0.106464;-0.968583;-0.224748;,
+    0.106464;0.968583;0.224749;,
+    0.109515;0.992115;-0.060953;,
+    0.109515;-0.992115;0.060953;,
+    0.109616;0.809018;-0.577472;,
+    0.109617;-0.809018;0.577472;,
+    0.110145;-0.992115;-0.059807;,
+    0.110145;0.992115;0.059807;,
+    0.110663;-0.809018;-0.577272;,
+    0.110663;0.809018;0.577272;,
+    0.113174;0.929777;-0.350295;,
+    0.113174;-0.929777;0.350295;,
+    0.114339;-0.929777;-0.349917;,
+    0.114339;0.929777;0.349917;,
+    0.116291;0.992115;-0.046746;,
+    0.116291;-0.992115;0.046746;,
+    0.116772;-0.992115;-0.045530;,
+    0.116772;0.992115;0.045530;,
+    0.118942;0.982287;-0.144792;,
+    0.118942;-0.982287;0.144792;,
+    0.118943;0.770514;-0.626227;,
+    0.118943;-0.770514;0.626227;,
+    0.119939;-0.770514;-0.626037;,
+    0.119939;0.770514;0.626037;,
+    0.119939;-0.982287;-0.143967;,
+    0.119940;0.982287;0.143967;,
+    0.121233;0.992115;-0.031802;,
+    0.121233;-0.992115;0.031802;,
+    0.121558;-0.992115;-0.030536;,
+    0.121558;0.992115;0.030536;,
+    0.124263;0.992115;-0.016357;,
+    0.124263;-0.992115;0.016357;,
+    0.124427;-0.992115;-0.015059;,
+    0.124427;0.992115;0.015060;,
+    0.125333;0.992115;-0.000653;,
+    0.125333;-0.992115;0.000654;,
+    0.127800;0.728970;-0.672510;,
+    0.127800;-0.728970;0.672510;,
+    0.128742;-0.728970;-0.672330;,
+    0.128742;0.728970;0.672331;,
+    0.131006;0.951057;-0.279873;,
+    0.131006;0.904828;-0.405122;,
+    0.131006;-0.951057;0.279873;,
+    0.131006;-0.904828;0.405123;,
+    0.132139;-0.904828;-0.404754;,
+    0.132139;0.904828;0.404754;,
+    0.132139;-0.951057;-0.279339;,
+    0.132140;0.951057;0.279339;,
+    0.132715;0.968583;-0.210317;,
+    0.132715;-0.968583;0.210317;,
+    0.133793;-0.968583;-0.209633;,
+    0.133793;0.968583;0.209633;,
+    0.136151;0.982287;-0.128743;,
+    0.136151;-0.982287;0.128743;,
+    0.136152;0.684549;-0.716139;,
+    0.136153;-0.684548;0.716140;,
+    0.137037;-0.684549;-0.715971;,
+    0.137037;0.684549;0.715971;,
+    0.137038;-0.982287;-0.127799;,
+    0.137038;0.982287;0.127799;,
+    0.143967;0.637426;-0.756943;,
+    0.143968;-0.637425;0.756943;,
+    0.144791;-0.637425;-0.756786;,
+    0.144791;0.637425;0.756786;,
+    0.148321;0.876307;-0.458352;,
+    0.148321;-0.876307;0.458352;,
+    0.149418;-0.876307;-0.457995;,
+    0.149418;0.876307;0.457995;,
+    0.151213;0.982287;-0.110663;,
+    0.151214;-0.982287;0.110663;,
+    0.151215;0.587787;-0.794758;,
+    0.151215;-0.587787;0.794758;,
+    0.151974;-0.587787;-0.794614;,
+    0.151974;0.587787;0.794614;,
+    0.151974;-0.982287;-0.109616;,
+    0.151975;0.982287;0.109616;,
+    0.156185;0.929777;-0.333349;,
+    0.156185;-0.929777;0.333349;,
+    0.157293;-0.929777;-0.332827;,
+    0.157293;0.929777;0.332827;,
+    0.157865;0.535828;-0.829438;,
+    0.157866;-0.535828;0.829438;,
+    0.158028;0.968583;-0.192025;,
+    0.158028;-0.968583;0.192025;,
+    0.158557;-0.535828;-0.829306;,
+    0.158557;0.535828;0.829306;,
+    0.159012;-0.968583;-0.191211;,
+    0.159012;0.968583;0.191211;,
+    0.163891;0.982287;-0.090838;,
+    0.163891;-0.982287;0.090838;,
+    0.163892;0.481755;-0.860843;,
+    0.163893;-0.481755;0.860844;,
+    0.164514;-0.481755;-0.860725;,
+    0.164514;-0.982287;-0.089704;,
+    0.164514;0.481755;0.860725;,
+    0.164515;0.982287;0.089704;,
+    0.165050;0.951057;-0.261247;,
+    0.165050;-0.951057;0.261247;,
+    0.165050;0.844329;-0.509772;,
+    0.165051;-0.844329;0.509772;,
+    0.166108;-0.844329;-0.509428;,
+    0.166108;0.844329;0.509429;,
+    0.166108;-0.951057;-0.260575;,
+    0.166108;0.951057;0.260575;,
+    0.169273;0.425781;-0.888852;,
+    0.169273;-0.425781;0.888852;,
+    0.169822;-0.425781;-0.888747;,
+    0.169822;0.425781;0.888747;,
+    0.173984;0.982287;-0.069581;,
+    0.173984;-0.982287;0.069581;,
+    0.173985;0.368126;-0.913352;,
+    0.173985;-0.368126;0.913352;,
+    0.174460;-0.368126;-0.913262;,
+    0.174460;-0.982287;-0.068378;,
+    0.174460;0.368126;0.913262;,
+    0.174460;0.982287;0.068378;,
+    0.178011;0.309018;-0.934248;,
+    0.178011;-0.309018;0.934248;,
+    0.178409;-0.309018;-0.934172;,
+    0.178410;0.309018;0.934172;,
+    0.180748;0.904828;-0.385509;,
+    0.180748;-0.904828;0.385509;,
+    0.180849;0.968583;-0.170704;,
+    0.180849;-0.968583;0.170704;,
+    0.181129;0.809018;-0.559180;,
+    0.181129;-0.809018;0.559180;,
+    0.181333;0.982287;-0.047227;,
+    0.181333;-0.982287;0.047227;,
+    0.181334;0.248691;-0.951457;,
+    0.181334;-0.248691;0.951457;,
+    0.181654;-0.982287;-0.045973;,
+    0.181655;-0.248691;-0.951396;,
+    0.181655;0.982287;0.045973;,
+    0.181655;0.248690;0.951396;,
+    0.181723;-0.968583;-0.169774;,
+    0.181723;0.968583;0.169774;,
+    0.181826;-0.904828;-0.385001;,
+    0.181826;0.904828;0.385001;,
+    0.182141;-0.809018;-0.558851;,
+    0.182142;0.809018;0.558851;,
+    0.183941;0.187382;-0.964911;,
+    0.183942;-0.187381;0.964911;,
+    0.184183;-0.187382;-0.964865;,
+    0.184183;0.187381;0.964865;,
+    0.185822;0.982287;-0.024126;,
+    0.185822;-0.982287;0.024127;,
+    0.185823;0.125333;-0.974557;,
+    0.185823;-0.125334;0.974557;,
+    0.185984;-0.982287;-0.022842;,
+    0.185984;0.982287;0.022843;,
+    0.185984;-0.125334;-0.974526;,
+    0.185985;0.125333;0.974526;,
+    0.186971;0.062791;-0.980357;,
+    0.186971;-0.062790;0.980357;,
+    0.187052;-0.062790;-0.980341;,
+    0.187052;0.062791;0.980341;,
+    0.187381;-0.982287;0.000648;,
+    0.187381;0.982287;-0.000647;,
+    0.187381;-0.000000;-0.982287;,
+    0.187381;-0.000000;0.982287;,
+    0.196491;0.951057;-0.238500;,
+    0.196492;-0.951057;0.238500;,
+    0.196492;0.770514;-0.606381;,
+    0.196492;-0.770514;0.606382;,
+    0.196733;0.929777;-0.311145;,
+    0.196733;-0.929777;0.311145;,
+    0.197456;-0.770514;-0.606068;,
+    0.197457;0.770514;0.606068;,
+    0.197457;-0.951057;-0.237702;,
+    0.197457;0.951057;0.237702;,
+    0.197767;-0.929777;-0.310489;,
+    0.197767;0.929777;0.310489;,
+    0.200818;0.968583;-0.146692;,
+    0.200818;-0.968583;0.146692;,
+    0.201568;-0.968583;-0.145659;,
+    0.201569;0.968583;0.145659;,
+    0.204598;0.876307;-0.436148;,
+    0.204598;-0.876307;0.436148;,
+    0.205642;-0.876307;-0.435657;,
+    0.205642;0.876307;0.435657;,
+    0.211080;0.728970;-0.651189;,
+    0.211080;-0.728970;0.651190;,
+    0.211992;-0.728970;-0.650893;,
+    0.211992;0.728970;0.650893;,
+    0.217620;0.968583;-0.120366;,
+    0.217620;-0.968583;0.120366;,
+    0.218235;-0.968583;-0.119247;,
+    0.218235;0.968583;0.119247;,
+    0.224834;0.951057;-0.211993;,
+    0.224834;-0.951057;0.211993;,
+    0.224835;0.684549;-0.693428;,
+    0.224835;-0.684548;0.693428;,
+    0.225691;-0.684549;-0.693150;,
+    0.225691;0.684549;0.693150;,
+    0.225692;-0.951057;-0.211079;,
+    0.225692;0.951057;0.211079;,
+    0.227640;0.904828;-0.359815;,
+    0.227640;-0.904828;0.359815;,
+    0.227640;0.844329;-0.485066;,
+    0.227640;-0.844329;0.485066;,
+    0.228646;-0.904828;-0.359177;,
+    0.228646;-0.844329;-0.484593;,
+    0.228646;0.904828;0.359177;,
+    0.228646;0.844329;0.484593;,
+    0.230990;0.968583;-0.092142;,
+    0.230990;-0.968583;0.092142;,
+    0.231460;-0.968583;-0.090955;,
+    0.231460;0.968583;0.090955;,
+    0.234179;0.929777;-0.284034;,
+    0.234179;-0.929777;0.284034;,
+    0.235122;-0.929777;-0.283253;,
+    0.235123;0.929777;0.283254;,
+    0.237703;0.637425;-0.732930;,
+    0.237703;-0.637425;0.732930;,
+    0.238500;-0.637425;-0.732671;,
+    0.238500;0.637425;0.732671;,
+    0.240717;0.968583;-0.062464;,
+    0.240717;-0.968583;0.062464;,
+    0.241034;-0.968583;-0.061228;,
+    0.241034;0.968583;0.061228;,
+    0.246648;0.968583;-0.031801;,
+    0.246648;-0.968583;0.031802;,
+    0.246808;-0.968583;-0.030535;,
+    0.246808;0.968583;0.030536;,
+    0.248689;0.968583;-0.000637;,
+    0.248689;-0.968583;0.000639;,
+    0.249631;0.951057;-0.182142;,
+    0.249631;-0.951057;0.182142;,
+    0.249632;0.587787;-0.769539;,
+    0.249632;-0.587786;0.769539;,
+    0.249784;0.809018;-0.532069;,
+    0.249784;-0.809018;0.532069;,
+    0.250367;-0.587787;-0.769300;,
+    0.250367;0.587787;0.769300;,
+    0.250367;-0.951057;-0.181128;,
+    0.250368;0.951057;0.181128;,
+    0.250748;-0.809018;-0.531616;,
+    0.250748;0.809018;0.531616;,
+    0.257648;0.876307;-0.407066;,
+    0.257649;-0.876307;0.407066;,
+    0.258623;-0.876307;-0.406447;,
+    0.258623;0.876307;0.406448;,
+    0.260576;0.535828;-0.803112;,
+    0.260577;-0.535828;0.803112;,
+    0.261246;-0.535828;-0.802894;,
+    0.261246;0.535828;0.802894;,
+    0.267931;0.929777;-0.252444;,
+    0.267931;-0.929777;0.252444;,
+    0.268769;-0.929777;-0.251551;,
+    0.268770;0.929777;0.251551;,
+    0.270491;0.951057;-0.149419;,
+    0.270491;-0.951057;0.149419;,
+    0.270492;-0.481755;0.833514;,
+    0.270492;0.481755;-0.833514;,
+    0.270941;0.904828;-0.328447;,
+    0.270942;-0.904828;0.328447;,
+    0.270942;0.770515;-0.576973;,
+    0.270943;-0.770514;0.576973;,
+    0.271094;-0.481755;-0.833319;,
+    0.271095;-0.951057;-0.148321;,
+    0.271095;0.481755;0.833319;,
+    0.271095;0.951057;0.148320;,
+    0.271860;-0.904828;-0.327687;,
+    0.271860;-0.770514;-0.576541;,
+    0.271860;0.904828;0.327687;,
+    0.271860;0.770514;0.576541;,
+    0.279340;0.425781;-0.860627;,
+    0.279341;-0.425781;0.860627;,
+    0.279873;-0.425781;-0.860454;,
+    0.279873;0.425781;0.860454;,
+    0.286640;0.844329;-0.452710;,
+    0.286640;-0.844329;0.452710;,
+    0.287085;0.951057;-0.114339;,
+    0.287085;-0.951057;0.114339;,
+    0.287086;0.368126;-0.884344;,
+    0.287087;-0.368126;0.884344;,
+    0.287546;-0.368126;-0.884195;,
+    0.287546;-0.951057;-0.113174;,
+    0.287547;0.368126;0.884195;,
+    0.287547;0.951057;0.113174;,
+    0.287579;-0.844329;-0.452114;,
+    0.287579;0.844329;0.452115;,
+    0.291031;0.728970;-0.619599;,
+    0.291031;-0.728970;0.619600;,
+    0.291899;-0.728970;-0.619191;,
+    0.291899;0.728970;0.619191;,
+    0.293699;0.309018;-0.904571;,
+    0.293700;-0.309018;0.904571;,
+    0.294085;-0.309018;-0.904446;,
+    0.294086;0.309018;0.904445;,
+    0.297458;0.929777;-0.216873;,
+    0.297458;-0.929777;0.216873;,
+    0.298178;-0.929777;-0.215882;,
+    0.298178;0.929777;0.215882;,
+    0.299152;0.951057;-0.077456;,
+    0.299152;-0.951057;0.077456;,
+    0.299153;0.248691;-0.921228;,
+    0.299154;-0.248690;0.921228;,
+    0.299463;-0.951057;-0.076242;,
+    0.299464;-0.248691;-0.921127;,
+    0.299464;0.951057;0.076242;,
+    0.299464;0.248690;0.921127;,
+    0.303426;0.187381;-0.934249;,
+    0.303427;-0.187381;0.934249;,
+    0.303660;-0.187382;-0.934173;,
+    0.303660;0.187381;0.934173;,
+    0.306501;0.951057;-0.039350;,
+    0.306501;-0.951057;0.039352;,
+    0.306502;0.125334;-0.943583;,
+    0.306502;-0.125334;0.943583;,
+    0.306636;0.876307;-0.371564;,
+    0.306636;-0.876307;0.371564;,
+    0.306658;-0.951057;-0.038107;,
+    0.306658;0.951057;0.038108;,
+    0.306658;-0.125334;-0.943532;,
+    0.306659;0.125333;0.943532;,
+    0.307525;-0.876307;-0.370829;,
+    0.307525;0.876307;0.370829;,
+    0.308368;0.062790;-0.949193;,
+    0.308368;-0.062791;0.949193;,
+    0.308446;-0.062791;-0.949167;,
+    0.308446;0.062791;0.949167;,
+    0.309016;-0.951057;0.000628;,
+    0.309016;0.951057;-0.000625;,
+    0.309017;0.000000;-0.951057;,
+    0.309017;-0.000000;0.951056;,
+    0.309970;0.904828;-0.291899;,
+    0.309971;-0.904828;0.291899;,
+    0.309972;0.684549;-0.659781;,
+    0.309972;-0.684549;0.659781;,
+    0.310786;-0.904828;-0.291030;,
+    0.310786;-0.684549;-0.659397;,
+    0.310786;0.904828;0.291030;,
+    0.310786;0.684548;0.659398;,
+    0.314500;0.809018;-0.496567;,
+    0.314501;-0.809018;0.496567;,
+    0.315399;-0.809018;-0.495997;,
+    0.315400;0.809018;0.495997;,
+    0.322294;0.929777;-0.177881;,
+    0.322294;-0.929777;0.177881;,
+    0.322884;-0.929777;-0.176808;,
+    0.322884;0.929777;0.176808;,
+    0.327689;0.637426;-0.697358;,
+    0.327689;-0.637425;0.697359;,
+    0.328447;-0.637426;-0.697002;,
+    0.328447;0.637425;0.697002;,
+    0.341119;0.844329;-0.413215;,
+    0.341120;0.770515;-0.538465;,
+    0.341120;-0.844329;0.413215;,
+    0.341120;-0.770514;0.538465;,
+    0.341976;-0.770514;-0.537922;,
+    0.341976;-0.844329;-0.412506;,
+    0.341976;0.770514;0.537922;,
+    0.341976;0.844329;0.412506;,
+    0.342047;0.929777;-0.136085;,
+    0.342047;-0.929777;0.136085;,
+    0.342498;-0.929777;-0.134946;,
+    0.342498;0.929777;0.134946;,
+    0.344111;0.904828;-0.250748;,
+    0.344111;-0.904828;0.250748;,
+    0.344112;0.587787;-0.732184;,
+    0.344113;-0.587787;0.732184;,
+    0.344811;-0.904828;-0.249784;,
+    0.344812;-0.587787;-0.731855;,
+    0.344812;0.904828;0.249784;,
+    0.344812;0.587787;0.731855;,
+    0.350787;0.876307;-0.330203;,
+    0.350787;-0.876307;0.330203;,
+    0.351577;-0.876307;-0.329361;,
+    0.351577;0.876307;0.329361;,
+    0.356406;0.929777;-0.092142;,
+    0.356406;-0.929777;0.092142;,
+    0.356710;-0.929777;-0.090955;,
+    0.356710;0.929777;0.090955;,
+    0.359178;0.535828;-0.764120;,
+    0.359178;-0.535828;0.764120;,
+    0.359815;-0.535828;-0.763820;,
+    0.359816;0.535828;0.763820;,
+    0.365144;0.929777;-0.046744;,
+    0.365144;-0.929777;0.046746;,
+    0.365297;-0.929777;-0.045529;,
+    0.365297;0.929777;0.045530;,
+    0.366393;0.728970;-0.578238;,
+    0.366393;-0.728970;0.578238;,
+    0.367202;-0.728970;-0.577724;,
+    0.367203;0.728970;0.577724;,
+    0.368123;0.929777;-0.000611;,
+    0.368123;-0.929777;0.000614;,
+    0.372824;0.904828;-0.205642;,
+    0.372825;-0.904828;0.205642;,
+    0.372826;0.481755;-0.793040;,
+    0.372827;-0.481755;0.793040;,
+    0.373398;-0.904828;-0.204598;,
+    0.373399;0.904828;0.204598;,
+    0.373399;-0.481755;-0.792771;,
+    0.373399;0.481755;0.792771;,
+    0.374257;0.809018;-0.453234;,
+    0.374257;-0.809018;0.453234;,
+    0.375077;-0.809018;-0.452555;,
+    0.375078;0.809018;0.452556;,
+    0.385003;0.425781;-0.818830;,
+    0.385003;-0.425781;0.818830;,
+    0.385509;-0.425781;-0.818592;,
+    0.385509;0.425781;0.818592;,
+    0.389406;0.876307;-0.283634;,
+    0.389407;-0.876307;0.283634;,
+    0.390085;-0.876307;-0.282700;,
+    0.390085;0.876307;0.282700;,
+    0.390219;0.844329;-0.367203;,
+    0.390219;-0.844329;0.367203;,
+    0.390220;0.684549;-0.615728;,
+    0.390220;-0.684548;0.615728;,
+    0.390980;-0.684549;-0.615246;,
+    0.390980;-0.844329;-0.366392;,
+    0.390980;0.684549;0.615246;,
+    0.390980;0.844329;0.366392;,
+    0.395658;0.904828;-0.157293;,
+    0.395659;-0.904828;0.157293;,
+    0.395660;0.368126;-0.841389;,
+    0.395661;-0.368126;0.841389;,
+    0.396097;-0.904828;-0.156185;,
+    0.396097;0.904828;0.156185;,
+    0.396098;-0.368126;-0.841183;,
+    0.396098;0.368126;0.841183;,
+    0.404756;0.309018;-0.860628;,
+    0.404757;-0.309018;0.860628;,
+    0.405123;-0.309018;-0.860455;,
+    0.405124;0.309018;0.860455;,
+    0.405918;0.770514;-0.491466;,
+    0.405918;-0.770514;0.491466;,
+    0.406699;-0.770514;-0.490819;,
+    0.406699;0.770514;0.490819;,
+    0.412252;0.904828;-0.106464;,
+    0.412253;-0.904828;0.106464;,
+    0.412255;0.248690;-0.876470;,
+    0.412255;-0.248691;0.876470;,
+    0.412507;0.637426;-0.650789;,
+    0.412507;-0.637425;0.650789;,
+    0.412549;-0.904828;-0.105309;,
+    0.412549;0.904828;0.105309;,
+    0.412550;-0.248691;-0.876331;,
+    0.412550;0.248691;0.876330;,
+    0.413215;-0.637426;-0.650340;,
+    0.413215;0.637425;0.650340;,
+    0.418126;0.187382;-0.888853;,
+    0.418126;-0.187382;0.888852;,
+    0.418349;-0.187381;-0.888748;,
+    0.418349;0.187382;0.888748;,
+    0.421884;0.876307;-0.232592;,
+    0.421885;-0.876307;0.232591;,
+    0.422345;0.904828;-0.053954;,
+    0.422346;-0.904828;0.053955;,
+    0.422347;0.125334;-0.897727;,
+    0.422347;-0.125333;0.897727;,
+    0.422440;-0.876307;-0.231580;,
+    0.422441;0.876307;0.231580;,
+    0.422495;-0.904828;-0.052771;,
+    0.422495;0.904828;0.052773;,
+    0.422496;-0.125334;-0.897657;,
+    0.422496;0.125334;0.897657;,
+    0.424902;0.062791;-0.903059;,
+    0.424902;-0.062791;0.903059;,
+    0.424976;0.062790;0.903024;,
+    0.424976;-0.062791;-0.903024;,
+    0.425778;-0.904828;0.000598;,
+    0.425778;0.904828;-0.000594;,
+    0.425779;0.000000;-0.904827;,
+    0.425779;0.000000;0.904827;,
+    0.428111;0.809018;-0.402754;,
+    0.428111;-0.809018;0.402754;,
+    0.428840;-0.809018;-0.401977;,
+    0.428840;0.809018;0.401977;,
+    0.433165;0.844329;-0.315400;,
+    0.433165;-0.844329;0.315400;,
+    0.433166;0.587787;-0.683282;,
+    0.433166;-0.587787;0.683282;,
+    0.433818;-0.844329;-0.314500;,
+    0.433818;-0.587787;-0.682868;,
+    0.433819;0.587787;0.682868;,
+    0.433819;0.844329;0.314501;,
+    0.435976;0.728970;-0.527757;,
+    0.435977;-0.728970;0.527757;,
+    0.436715;-0.728970;-0.527146;,
+    0.436715;0.728970;0.527146;,
+    0.447709;0.876307;-0.177881;,
+    0.447710;-0.876307;0.177881;,
+    0.448134;-0.876307;-0.176808;,
+    0.448134;0.876307;0.176808;,
+    0.452116;0.535828;-0.713078;,
+    0.452116;-0.535828;0.713078;,
+    0.452710;-0.535828;-0.712700;,
+    0.452710;0.535828;0.712700;,
+    0.464314;0.770515;-0.436715;,
+    0.464314;0.684549;-0.561966;,
+    0.464314;-0.770514;0.436715;,
+    0.464314;-0.684548;0.561966;,
+    0.465008;-0.684549;-0.561392;,
+    0.465008;-0.770515;-0.435976;,
+    0.465008;0.770514;0.435976;,
+    0.465008;0.684548;0.561392;,
+    0.466473;0.876307;-0.120366;,
+    0.466474;-0.876307;0.120366;,
+    0.466760;-0.876307;-0.119248;,
+    0.466761;0.876307;0.119248;,
+    0.469279;0.844329;-0.258623;,
+    0.469280;-0.844329;0.258623;,
+    0.469281;0.481755;-0.740059;,
+    0.469281;-0.481755;0.740059;,
+    0.469815;-0.844329;-0.257649;,
+    0.469815;-0.481755;-0.739720;,
+    0.469815;0.844329;0.257649;,
+    0.469815;0.481755;0.739720;,
+    0.475214;0.809018;-0.345921;,
+    0.475214;-0.809018;0.345921;,
+    0.475840;-0.809018;-0.345060;,
+    0.475840;0.809018;0.345060;,
+    0.477881;0.876307;-0.060950;,
+    0.477881;-0.876307;0.060952;,
+    0.478026;-0.876307;-0.059805;,
+    0.478026;0.876307;0.059807;,
+    0.481752;-0.876307;0.000579;,
+    0.481752;0.876307;-0.000575;,
+    0.484594;0.425781;-0.764120;,
+    0.484594;-0.425781;0.764120;,
+    0.485066;-0.425781;-0.763820;,
+    0.485066;0.425780;0.763820;,
+    0.490820;0.637426;-0.593957;,
+    0.490820;-0.637426;0.593957;,
+    0.491465;-0.637426;-0.593423;,
+    0.491466;0.637425;0.593422;,
+    0.497993;0.844329;-0.197767;,
+    0.497993;-0.844329;0.197767;,
+    0.497994;0.368126;-0.785165;,
+    0.497995;-0.368126;0.785165;,
+    0.498402;-0.844329;-0.196734;,
+    0.498403;0.844329;0.196734;,
+    0.498403;-0.368126;-0.784906;,
+    0.498403;0.368126;0.784906;,
+    0.498684;0.728970;-0.468953;,
+    0.498684;-0.728970;0.468953;,
+    0.499340;-0.728970;-0.468254;,
+    0.499341;0.728970;0.468254;,
+    0.509430;0.309018;-0.803112;,
+    0.509430;-0.309018;0.803112;,
+    0.509773;-0.309018;-0.802895;,
+    0.509773;0.309018;0.802894;,
+    0.514822;0.809018;-0.283633;,
+    0.514822;-0.809018;0.283633;,
+    0.515335;-0.809018;-0.282700;,
+    0.515335;0.809018;0.282700;,
+    0.515387;0.770515;-0.375078;,
+    0.515388;-0.770514;0.375078;,
+    0.515388;0.587787;-0.623604;,
+    0.515388;-0.587787;0.623604;,
+    0.515983;-0.770514;-0.374257;,
+    0.515984;-0.587787;-0.623111;,
+    0.515984;0.770514;0.374257;,
+    0.515984;0.587787;0.623111;,
+    0.518853;0.844329;-0.133793;,
+    0.518853;-0.844329;0.133793;,
+    0.518855;0.248691;-0.817889;,
+    0.518855;-0.248691;0.817889;,
+    0.519129;-0.844329;-0.132716;,
+    0.519130;0.844329;0.132716;,
+    0.519130;-0.248691;-0.817714;,
+    0.519130;0.248691;0.817714;,
+    0.526232;0.187382;-0.829439;,
+    0.526232;-0.187381;0.829438;,
+    0.526439;-0.187381;-0.829307;,
+    0.526440;0.187381;0.829307;,
+    0.531086;0.684549;-0.499341;,
+    0.531086;-0.684548;0.499341;,
+    0.531530;0.844329;-0.067706;,
+    0.531531;-0.844329;0.067708;,
+    0.531532;0.125333;-0.837714;,
+    0.531532;-0.125334;0.837714;,
+    0.531670;-0.844329;-0.066603;,
+    0.531670;0.844329;0.066605;,
+    0.531671;-0.125333;-0.837626;,
+    0.531671;0.125334;0.837626;,
+    0.531702;-0.684549;-0.498684;,
+    0.531702;0.684549;0.498684;,
+    0.534735;0.062791;-0.842684;,
+    0.534735;-0.062791;0.842684;,
+    0.534804;-0.062791;-0.842640;,
+    0.534804;0.062791;0.842640;,
+    0.535825;0.844329;-0.000554;,
+    0.535825;-0.844329;0.000558;,
+    0.535827;0.000000;-0.844328;,
+    0.535827;-0.000000;0.844328;,
+    0.537923;0.535828;-0.650790;,
+    0.537923;-0.535828;0.650790;,
+    0.538466;-0.535828;-0.650341;,
+    0.538466;0.535828;0.650341;,
+    0.546311;0.809018;-0.216873;,
+    0.546311;-0.809018;0.216873;,
+    0.546703;-0.809018;-0.215883;,
+    0.546703;0.809018;0.215882;,
+    0.553527;0.728970;-0.402754;,
+    0.553527;-0.728970;0.402754;,
+    0.554091;-0.728970;-0.401978;,
+    0.554091;0.728970;0.401978;,
+    0.558333;0.770514;-0.307525;,
+    0.558333;-0.770514;0.307525;,
+    0.558334;0.481755;-0.675407;,
+    0.558335;-0.481755;0.675407;,
+    0.558822;-0.770514;-0.306636;,
+    0.558822;0.770514;0.306636;,
+    0.558822;-0.481755;-0.675004;,
+    0.558823;0.481755;0.675004;,
+    0.561392;0.637426;-0.527757;,
+    0.561392;-0.637425;0.527757;,
+    0.561966;-0.637426;-0.527146;,
+    0.561966;0.637425;0.527146;,
+    0.569184;0.809018;-0.146692;,
+    0.569185;-0.809018;0.146692;,
+    0.569449;-0.809018;-0.145660;,
+    0.569450;0.809018;0.145660;,
+    0.576542;0.425781;-0.697359;,
+    0.576543;-0.425781;0.697359;,
+    0.576973;-0.425781;-0.697002;,
+    0.576974;0.425781;0.697002;,
+    0.583082;-0.809018;0.074197;,
+    0.583082;0.809018;-0.074195;,
+    0.583215;0.809018;0.073140;,
+    0.583216;-0.809018;-0.073138;,
+    0.587784;-0.809018;0.000535;,
+    0.587784;0.809018;-0.000530;,
+    0.589482;0.684549;-0.428840;,
+    0.589482;-0.684549;0.428840;,
+    0.589482;0.587787;-0.554091;,
+    0.589483;-0.587787;0.554091;,
+    0.590011;-0.684549;-0.428112;,
+    0.590011;-0.587787;-0.553528;,
+    0.590011;0.684549;0.428112;,
+    0.590012;0.587787;0.553528;,
+    0.592474;0.770514;-0.235122;,
+    0.592474;-0.770514;0.235122;,
+    0.592475;0.368126;-0.716559;,
+    0.592475;-0.368126;0.716559;,
+    0.592847;-0.770514;-0.234180;,
+    0.592847;0.770514;0.234179;,
+    0.592848;-0.368126;-0.716251;,
+    0.592848;0.368126;0.716251;,
+    0.599641;0.728970;-0.330203;,
+    0.599641;-0.728970;0.330202;,
+    0.600103;-0.728970;-0.329362;,
+    0.600103;0.728970;0.329362;,
+    0.606069;0.309018;-0.732931;,
+    0.606070;-0.309018;0.732931;,
+    0.606382;-0.309018;-0.732672;,
+    0.606382;0.309018;0.732672;,
+    0.615247;0.535828;-0.578238;,
+    0.615247;-0.535828;0.578238;,
+    0.615729;-0.535828;-0.577725;,
+    0.615729;0.535828;0.577725;,
+    0.617270;0.770514;-0.159012;,
+    0.617271;-0.770514;0.159012;,
+    0.617272;0.248691;-0.746410;,
+    0.617272;-0.248691;0.746410;,
+    0.617523;-0.770514;-0.158029;,
+    0.617523;0.770514;0.158030;,
+    0.617524;-0.248691;-0.746202;,
+    0.617524;0.248691;0.746202;,
+    0.623111;0.637426;-0.453235;,
+    0.623111;-0.637425;0.453235;,
+    0.623603;-0.637426;-0.452556;,
+    0.623604;0.637425;0.452556;,
+    0.626038;0.187382;-0.756944;,
+    0.626039;-0.187381;0.756944;,
+    0.626228;-0.187382;-0.756787;,
+    0.626228;0.187381;0.756787;,
+    0.632333;0.770514;-0.080391;,
+    0.632333;-0.770514;0.080393;,
+    0.632334;0.125333;-0.764490;,
+    0.632335;-0.125333;0.764490;,
+    0.632460;-0.770514;-0.079385;,
+    0.632460;0.770514;0.079387;,
+    0.632461;-0.125333;-0.764385;,
+    0.632461;0.125333;0.764385;,
+    0.636134;0.062791;-0.769019;,
+    0.636135;-0.062791;0.769019;,
+    0.636198;-0.062791;-0.768967;,
+    0.636198;0.062791;0.768966;,
+    0.636297;0.728970;-0.252444;,
+    0.636298;-0.728970;0.252444;,
+    0.636651;-0.728970;-0.251552;,
+    0.636651;0.728970;0.251552;,
+    0.637423;0.770514;-0.000505;,
+    0.637423;-0.770514;0.000509;,
+    0.637424;-0.000000;-0.770513;,
+    0.637424;-0.000000;0.770513;,
+    0.638582;0.684549;-0.351577;,
+    0.638582;-0.684548;0.351577;,
+    0.638583;0.481755;-0.600103;,
+    0.638583;-0.481755;0.600103;,
+    0.639015;-0.684549;-0.350788;,
+    0.639016;0.684548;0.350788;,
+    0.639016;-0.481755;-0.599642;,
+    0.639016;0.481755;0.599642;,
+    0.654280;0.587787;-0.475840;,
+    0.654281;-0.587787;0.475840;,
+    0.654734;-0.587787;-0.475215;,
+    0.654735;0.587786;0.475215;,
+    0.659398;0.425781;-0.619600;,
+    0.659399;-0.425781;0.619600;,
+    0.659781;-0.425781;-0.619192;,
+    0.659782;0.425781;0.619192;,
+    0.662920;0.728970;-0.170704;,
+    0.662920;-0.728970;0.170704;,
+    0.663158;-0.728970;-0.169775;,
+    0.663159;0.728970;0.169775;,
+    0.675003;0.637426;-0.371564;,
+    0.675003;-0.637425;0.371564;,
+    0.675406;-0.637426;-0.370830;,
+    0.675407;0.637425;0.370829;,
+    0.677610;0.684549;-0.268769;,
+    0.677611;-0.684548;0.268769;,
+    0.677612;0.368126;-0.636652;,
+    0.677612;-0.368126;0.636652;,
+    0.677942;-0.684549;-0.267932;,
+    0.677942;0.684548;0.267932;,
+    0.677943;-0.368126;-0.636299;,
+    0.677943;0.368126;0.636299;,
+    0.679088;0.728970;-0.086269;,
+    0.679088;-0.728970;0.086272;,
+    0.679208;-0.728970;-0.085318;,
+    0.679208;0.728970;0.085321;,
+    0.682868;0.535828;-0.496568;,
+    0.682868;-0.535828;0.496568;,
+    0.683282;-0.535828;-0.495998;,
+    0.683282;0.535828;0.495998;,
+    0.684546;-0.728970;0.000482;,
+    0.684546;0.728970;-0.000477;,
+    0.693151;0.309018;-0.651191;,
+    0.693151;-0.309018;0.651191;,
+    0.693429;-0.309018;-0.650895;,
+    0.693429;0.309018;0.650895;,
+    0.705953;0.684549;-0.181723;,
+    0.705953;-0.684548;0.181723;,
+    0.705955;0.248691;-0.663160;,
+    0.705955;-0.248690;0.663159;,
+    0.706177;-0.684549;-0.180851;,
+    0.706177;0.684549;0.180850;,
+    0.706178;-0.248691;-0.662922;,
+    0.706179;0.248691;0.662921;,
+    0.708760;0.587787;-0.390085;,
+    0.708760;-0.587787;0.390085;,
+    0.708760;0.481755;-0.515336;,
+    0.708760;-0.481755;0.515336;,
+    0.709132;-0.587787;-0.389408;,
+    0.709132;-0.481755;-0.514824;,
+    0.709132;0.587786;0.389408;,
+    0.709133;0.481755;0.514823;,
+    0.715972;0.187382;-0.672512;,
+    0.715973;-0.187381;0.672511;,
+    0.716141;-0.187382;-0.672332;,
+    0.716141;0.187381;0.672332;,
+    0.716249;0.637426;-0.284034;,
+    0.716250;-0.637425;0.284034;,
+    0.716558;-0.637426;-0.283255;,
+    0.716558;0.637425;0.283254;,
+    0.723163;0.684549;-0.091808;,
+    0.723163;-0.684548;0.091810;,
+    0.723164;0.125333;-0.679209;,
+    0.723164;-0.125333;0.679209;,
+    0.723275;-0.684549;-0.090914;,
+    0.723275;0.684548;0.090917;,
+    0.723277;-0.125333;-0.679089;,
+    0.723277;0.125333;0.679089;,
+    0.727502;0.062791;-0.683226;,
+    0.727502;-0.062791;0.683226;,
+    0.727558;-0.062791;-0.683166;,
+    0.727558;0.062791;0.683166;,
+    0.728967;0.684548;-0.000447;,
+    0.728967;-0.684548;0.000453;,
+    0.728969;0.000000;-0.684547;,
+    0.728969;0.000000;0.684547;,
+    0.731855;0.425781;-0.532070;,
+    0.731856;-0.425781;0.532070;,
+    0.732184;-0.425781;-0.531617;,
+    0.732184;0.425781;0.531617;,
+    0.739720;0.535828;-0.407066;,
+    0.739720;-0.535828;0.407066;,
+    0.740059;-0.535828;-0.406449;,
+    0.740059;0.535828;0.406449;,
+    0.746201;0.637426;-0.192024;,
+    0.746201;-0.637425;0.192024;,
+    0.746409;-0.637426;-0.191213;,
+    0.746409;0.637425;0.191213;,
+    0.752062;0.587787;-0.298178;,
+    0.752062;-0.587787;0.298178;,
+    0.752062;0.368126;-0.546704;,
+    0.752062;-0.368126;0.546704;,
+    0.752346;-0.587787;-0.297460;,
+    0.752346;0.587787;0.297459;,
+    0.752347;-0.368126;-0.546313;,
+    0.752347;0.368126;0.546313;,
+    0.764384;0.637426;-0.096984;,
+    0.764384;-0.637425;0.096986;,
+    0.764489;-0.637426;-0.096152;,
+    0.764489;0.637425;0.096155;,
+    0.767760;0.481755;-0.422441;,
+    0.767760;-0.481755;0.422441;,
+    0.768065;-0.481755;-0.421887;,
+    0.768065;0.481755;0.421886;,
+    0.769301;0.309018;-0.559181;,
+    0.769301;-0.309018;0.559181;,
+    0.769540;-0.309018;-0.558852;,
+    0.769540;0.309018;0.558853;,
+    0.770512;-0.637425;0.000422;,
+    0.770512;0.637425;-0.000416;,
+    0.783503;0.587787;-0.201568;,
+    0.783503;-0.587787;0.201568;,
+    0.783504;0.248691;-0.569451;,
+    0.783504;-0.248690;0.569451;,
+    0.783695;-0.587787;-0.200820;,
+    0.783695;0.587787;0.200819;,
+    0.783696;-0.248691;-0.569187;,
+    0.783696;0.248691;0.569187;,
+    0.784905;0.535828;-0.311145;,
+    0.784906;-0.535828;0.311145;,
+    0.785165;-0.535828;-0.310490;,
+    0.785165;0.535828;0.310490;,
+    0.792770;0.425781;-0.436149;,
+    0.792771;-0.425781;0.436148;,
+    0.793040;-0.425781;-0.435659;,
+    0.793040;0.425781;0.435658;,
+    0.794615;0.187381;-0.577473;,
+    0.794615;-0.187382;0.577473;,
+    0.794759;-0.187382;-0.577274;,
+    0.794760;0.187382;0.577274;,
+    0.802588;-0.587787;0.101780;,
+    0.802588;0.587787;-0.101777;,
+    0.802589;-0.125334;0.583217;,
+    0.802589;0.125333;-0.583217;,
+    0.802685;0.587787;0.101013;,
+    0.802685;-0.587787;-0.101010;,
+    0.802686;-0.125333;-0.583084;,
+    0.802686;0.125334;0.583084;,
+    0.807396;-0.062791;0.586659;,
+    0.807396;0.062790;-0.586659;,
+    0.807445;-0.062791;-0.586592;,
+    0.807445;0.062791;0.586592;,
+    0.809016;-0.587787;0.000390;,
+    0.809016;0.587787;-0.000383;,
+    0.809017;0.000000;-0.587785;,
+    0.809017;0.000000;0.587785;,
+    0.814652;0.481755;-0.322884;,
+    0.814652;-0.481755;0.322884;,
+    0.814652;0.368126;-0.448135;,
+    0.814652;-0.368126;0.448135;,
+    0.814885;-0.481755;-0.322295;,
+    0.814885;-0.368126;-0.447711;,
+    0.814885;0.481755;0.322295;,
+    0.814885;0.368126;0.447711;,
+    0.817713;0.535828;-0.210317;,
+    0.817713;-0.535828;0.210317;,
+    0.817888;-0.535828;-0.209635;,
+    0.817889;0.535828;0.209634;,
+    0.833319;0.309018;-0.458353;,
+    0.833319;-0.309018;0.458352;,
+    0.833514;-0.309018;-0.457997;,
+    0.833515;0.309018;0.457997;,
+    0.837625;-0.535828;0.106171;,
+    0.837626;0.535828;-0.106168;,
+    0.837714;0.535828;0.105473;,
+    0.837714;-0.535828;-0.105469;,
+    0.841183;0.425781;-0.333349;,
+    0.841183;-0.425781;0.333349;,
+    0.841389;-0.425781;-0.332829;,
+    0.841389;0.425781;0.332829;,
+    0.844327;0.535828;-0.000349;,
+    0.844327;-0.535828;0.000355;,
+    0.848696;0.481755;-0.218235;,
+    0.848697;-0.481755;0.218235;,
+    0.848697;0.248691;-0.466762;,
+    0.848697;-0.248690;0.466761;,
+    0.848854;-0.481755;-0.217622;,
+    0.848854;0.481755;0.217622;,
+    0.848854;-0.248691;-0.466475;,
+    0.848855;0.248690;0.466475;,
+    0.860726;0.187382;-0.473328;,
+    0.860726;-0.187382;0.473328;,
+    0.860844;-0.187382;-0.473113;,
+    0.860844;0.187382;0.473112;,
+    0.864395;0.368126;-0.342498;,
+    0.864395;-0.368126;0.342498;,
+    0.864573;-0.368126;-0.342049;,
+    0.864573;0.368126;0.342048;,
+    0.869356;-0.481755;0.110144;,
+    0.869357;0.481755;-0.110141;,
+    0.869357;0.125333;-0.478027;,
+    0.869357;-0.125334;0.478027;,
+    0.869436;0.481755;0.109516;,
+    0.869436;-0.481755;-0.109513;,
+    0.869436;-0.125334;-0.477883;,
+    0.869436;0.125334;0.477883;,
+    0.874557;0.062791;-0.480839;,
+    0.874558;-0.062791;0.480839;,
+    0.874597;-0.062791;-0.480767;,
+    0.874597;0.062790;0.480767;,
+    0.876306;-0.481755;0.000320;,
+    0.876306;0.481755;-0.000313;,
+    0.876306;-0.000000;-0.481754;,
+    0.876307;0.000000;0.481753;,
+    0.876330;0.425781;-0.225292;,
+    0.876330;-0.425781;0.225292;,
+    0.876469;-0.425781;-0.224750;,
+    0.876469;0.425781;0.224750;,
+    0.884195;0.309018;-0.350296;,
+    0.884195;-0.309018;0.350296;,
+    0.884344;-0.309018;-0.349919;,
+    0.884345;0.309018;0.349918;,
+    0.897656;-0.425781;0.113682;,
+    0.897657;0.425781;-0.113679;,
+    0.897727;0.425781;0.113127;,
+    0.897727;-0.425781;-0.113124;,
+    0.900505;0.368126;-0.231460;,
+    0.900505;-0.368126;0.231460;,
+    0.900505;0.248691;-0.356711;,
+    0.900506;-0.248690;0.356711;,
+    0.900625;-0.368126;-0.230992;,
+    0.900626;0.368126;0.230992;,
+    0.900626;-0.248691;-0.356408;,
+    0.900626;0.248690;0.356407;,
+    0.904826;0.425781;-0.000276;,
+    0.904826;-0.425781;0.000283;,
+    0.913262;0.187381;-0.361719;,
+    0.913262;-0.187381;0.361718;,
+    0.913353;-0.187382;-0.361490;,
+    0.913353;0.187381;0.361490;,
+    0.921126;0.309018;-0.236715;,
+    0.921127;-0.309018;0.236714;,
+    0.921227;-0.309018;-0.236322;,
+    0.921228;0.309018;0.236321;,
+    0.922414;-0.368126;0.116771;,
+    0.922414;0.368126;-0.116768;,
+    0.922414;0.125334;-0.365299;,
+    0.922415;-0.125334;0.365298;,
+    0.922475;0.368126;0.116292;,
+    0.922475;-0.368126;-0.116288;,
+    0.922475;-0.125334;-0.365146;,
+    0.922475;0.125334;0.365145;,
+    0.927926;0.062791;-0.367437;,
+    0.927927;-0.062791;0.367436;,
+    0.927957;-0.062791;-0.367360;,
+    0.927957;0.062791;0.367360;,
+    0.929776;-0.368126;0.000245;,
+    0.929776;0.368126;-0.000238;,
+    0.929776;-0.000000;-0.368125;,
+    0.929776;-0.000000;0.368124;,
+    0.938113;0.248690;-0.241035;,
+    0.938113;-0.248690;0.241035;,
+    0.938194;-0.248691;-0.240719;,
+    0.938194;0.248690;0.240719;,
+    0.943531;-0.309018;0.119400;,
+    0.943532;0.309018;-0.119397;,
+    0.943582;0.309018;0.118997;,
+    0.943583;-0.309018;-0.118994;,
+    0.951056;-0.309018;0.000207;,
+    0.951056;0.309018;-0.000199;,
+    0.951396;0.187382;-0.244404;,
+    0.951396;-0.187381;0.244404;,
+    0.951457;-0.187382;-0.244166;,
+    0.951458;0.187381;0.244166;,
+    0.960925;-0.248691;0.121558;,
+    0.960925;0.125334;-0.246809;,
+    0.960925;-0.125334;0.246808;,
+    0.960925;0.248691;-0.121554;,
+    0.960966;0.248690;0.121233;,
+    0.960966;-0.125334;-0.246649;,
+    0.960966;0.125333;0.246649;,
+    0.960966;-0.248691;-0.121230;,
+    0.966662;0.062791;-0.248239;,
+    0.966662;-0.062791;0.248239;,
+    0.966682;-0.062791;-0.248159;,
+    0.966682;0.062791;0.248159;,
+    0.968583;0.248691;-0.000160;,
+    0.968583;-0.248690;0.000167;,
+    0.968583;-0.000000;-0.248690;,
+    0.968583;-0.000000;0.248690;,
+    0.974526;-0.187381;0.123235;,
+    0.974527;0.187382;-0.123232;,
+    0.974557;0.187382;0.122991;,
+    0.974557;-0.187382;-0.122987;,
+    0.982287;-0.187382;0.000127;,
+    0.982287;0.187381;-0.000119;,
+    0.984281;-0.125334;0.124426;,
+    0.984282;0.125334;-0.124423;,
+    0.984302;0.125333;0.124263;,
+    0.984302;-0.125334;-0.124259;,
+    0.990152;-0.062791;0.125127;,
+    0.990152;0.062790;-0.125123;,
+    0.990162;0.062791;0.125045;,
+    0.990163;-0.062791;-0.125041;,
+    0.992115;-0.125333;0.000086;,
+    0.992115;0.125333;-0.000079;,
+    0.992115;0.000000;0.125333;,
+    0.992115;0.000000;-0.125329;,
+    0.998027;-0.062791;0.000045;,
+    0.998027;0.062791;-0.000038;,
+    1.000000;0.000000;0.000004;;
+    4900;
+    3;1477,1481,1393;,
+    3;1401,1393,1481;,
+    3;1465,1477,1387;,
+    3;1393,1387,1477;,
+    3;1455,1465,1369;,
+    3;1387,1369,1465;,
+    3;1445,1455,1343;,
+    3;1369,1343,1455;,
+    3;1429,1445,1323;,
+    3;1343,1323,1445;,
+    3;1421,1429,1305;,
+    3;1323,1305,1429;,
+    3;1395,1421,1289;,
+    3;1305,1289,1421;,
+    3;1333,1395,1271;,
+    3;1289,1271,1395;,
+    3;1293,1333,1253;,
+    3;1271,1253,1333;,
+    3;1261,1293,1241;,
+    3;1253,1241,1293;,
+    3;1233,1261,1229;,
+    3;1241,1229,1261;,
+    3;1219,1233,1223;,
+    3;1229,1223,1233;,
+    3;1193,1219,1213;,
+    3;1223,1213,1219;,
+    3;1159,1193,1199;,
+    3;1213,1199,1193;,
+    3;1121,1159,1183;,
+    3;1199,1183,1159;,
+    3;1059,1121,1167;,
+    3;1183,1167,1121;,
+    3;1035,1059,1149;,
+    3;1167,1149,1059;,
+    3;1023,1035,1131;,
+    3;1149,1131,1035;,
+    3;1007,1023,1113;,
+    3;1131,1113,1023;,
+    3;1000,1007,1088;,
+    3;1113,1088,1007;,
+    3;987,1000,1065;,
+    3;1088,1065,1000;,
+    3;975,987,1061;,
+    3;1065,1061,987;,
+    3;971,975,1054;,
+    3;1061,1054,975;,
+    3;967,971,1047;,
+    3;1054,1047,971;,
+    3;969,967,1049;,
+    3;1047,1049,967;,
+    3;973,969,1057;,
+    3;1049,1057,969;,
+    3;986,973,1063;,
+    3;1057,1063,973;,
+    3;995,986,1081;,
+    3;1063,1081,986;,
+    3;1006,995,1108;,
+    3;1081,1108,995;,
+    3;1022,1006,1128;,
+    3;1108,1128,1006;,
+    3;1030,1022,1146;,
+    3;1128,1146,1022;,
+    3;1056,1030,1162;,
+    3;1146,1162,1030;,
+    3;1118,1056,1180;,
+    3;1162,1180,1056;,
+    3;1158,1118,1198;,
+    3;1180,1198,1118;,
+    3;1190,1158,1210;,
+    3;1198,1210,1158;,
+    3;1218,1190,1222;,
+    3;1210,1222,1190;,
+    3;1232,1218,1228;,
+    3;1222,1228,1218;,
+    3;1258,1232,1238;,
+    3;1228,1238,1232;,
+    3;1292,1258,1252;,
+    3;1238,1252,1258;,
+    3;1330,1292,1268;,
+    3;1252,1268,1292;,
+    3;1392,1330,1284;,
+    3;1268,1284,1330;,
+    3;1416,1392,1302;,
+    3;1284,1302,1392;,
+    3;1428,1416,1320;,
+    3;1302,1320,1416;,
+    3;1444,1428,1338;,
+    3;1320,1338,1428;,
+    3;1452,1444,1364;,
+    3;1338,1364,1444;,
+    3;1464,1452,1386;,
+    3;1364,1386,1452;,
+    3;1476,1464,1390;,
+    3;1386,1390,1464;,
+    3;1480,1476,1398;,
+    3;1390,1398,1476;,
+    3;1484,1480,1403;,
+    3;1398,1403,1480;,
+    3;1481,1484,1401;,
+    3;1403,1401,1484;,
+    3;1579,1597,1477;,
+    3;1481,1477,1597;,
+    3;1562,1579,1465;,
+    3;1477,1465,1579;,
+    3;1542,1562,1455;,
+    3;1465,1455,1562;,
+    3;1523,1542,1445;,
+    3;1455,1445,1542;,
+    3;1507,1523,1429;,
+    3;1445,1429,1523;,
+    3;1473,1507,1421;,
+    3;1429,1421,1507;,
+    3;1441,1473,1395;,
+    3;1421,1395,1473;,
+    3;1419,1441,1333;,
+    3;1395,1333,1441;,
+    3;1354,1419,1293;,
+    3;1333,1293,1419;,
+    3;1281,1354,1261;,
+    3;1293,1261,1354;,
+    3;1239,1281,1233;,
+    3;1261,1233,1281;,
+    3;1215,1239,1219;,
+    3;1233,1219,1239;,
+    3;1171,1215,1193;,
+    3;1219,1193,1215;,
+    3;1103,1171,1159;,
+    3;1193,1159,1171;,
+    3;1039,1103,1121;,
+    3;1159,1121,1103;,
+    3;1015,1039,1059;,
+    3;1121,1059,1039;,
+    3;983,1015,1035;,
+    3;1059,1035,1015;,
+    3;949,983,1023;,
+    3;1035,1023,983;,
+    3;933,949,1007;,
+    3;1023,1007,949;,
+    3;913,933,1000;,
+    3;1007,1000,933;,
+    3;893,913,987;,
+    3;1000,987,913;,
+    3;875,893,975;,
+    3;987,975,893;,
+    3;858,875,971;,
+    3;975,971,875;,
+    3;845,858,967;,
+    3;971,967,858;,
+    3;853,845,969;,
+    3;967,969,845;,
+    3;870,853,973;,
+    3;969,973,853;,
+    3;888,870,986;,
+    3;973,986,870;,
+    3;907,888,995;,
+    3;986,995,888;,
+    3;928,907,1006;,
+    3;995,1006,907;,
+    3;944,928,1022;,
+    3;1006,1022,928;,
+    3;978,944,1030;,
+    3;1022,1030,944;,
+    3;1010,978,1056;,
+    3;1030,1056,978;,
+    3;1032,1010,1118;,
+    3;1056,1118,1010;,
+    3;1097,1032,1158;,
+    3;1118,1158,1032;,
+    3;1170,1097,1190;,
+    3;1158,1190,1097;,
+    3;1212,1170,1218;,
+    3;1190,1218,1170;,
+    3;1236,1212,1232;,
+    3;1218,1232,1212;,
+    3;1280,1236,1258;,
+    3;1232,1258,1236;,
+    3;1348,1280,1292;,
+    3;1258,1292,1280;,
+    3;1412,1348,1330;,
+    3;1292,1330,1348;,
+    3;1436,1412,1392;,
+    3;1330,1392,1412;,
+    3;1468,1436,1416;,
+    3;1392,1416,1436;,
+    3;1502,1468,1428;,
+    3;1416,1428,1468;,
+    3;1518,1502,1444;,
+    3;1428,1444,1502;,
+    3;1538,1518,1452;,
+    3;1444,1452,1518;,
+    3;1558,1538,1464;,
+    3;1452,1464,1538;,
+    3;1576,1558,1476;,
+    3;1464,1476,1558;,
+    3;1594,1576,1480;,
+    3;1476,1480,1576;,
+    3;1605,1594,1484;,
+    3;1480,1484,1594;,
+    3;1597,1605,1481;,
+    3;1484,1481,1605;,
+    3;1667,1671,1579;,
+    3;1597,1579,1671;,
+    3;1655,1667,1562;,
+    3;1579,1562,1667;,
+    3;1635,1655,1542;,
+    3;1562,1542,1655;,
+    3;1623,1635,1523;,
+    3;1542,1523,1635;,
+    3;1583,1623,1507;,
+    3;1523,1507,1623;,
+    3;1535,1583,1473;,
+    3;1507,1473,1583;,
+    3;1499,1535,1441;,
+    3;1473,1441,1535;,
+    3;1449,1499,1419;,
+    3;1441,1419,1499;,
+    3;1409,1449,1354;,
+    3;1419,1354,1449;,
+    3;1313,1409,1281;,
+    3;1354,1281,1409;,
+    3;1245,1313,1239;,
+    3;1281,1239,1313;,
+    3;1207,1245,1215;,
+    3;1239,1215,1245;,
+    3;1141,1207,1171;,
+    3;1215,1171,1207;,
+    3;1043,1141,1103;,
+    3;1171,1103,1141;,
+    3;1003,1043,1039;,
+    3;1103,1039,1043;,
+    3;953,1003,1015;,
+    3;1039,1015,1003;,
+    3;919,953,983;,
+    3;1015,983,953;,
+    3;879,919,949;,
+    3;983,949,919;,
+    3;830,879,933;,
+    3;949,933,879;,
+    3;818,830,913;,
+    3;933,913,830;,
+    3;798,818,893;,
+    3;913,893,818;,
+    3;786,798,875;,
+    3;893,875,798;,
+    3;782,786,858;,
+    3;875,858,786;,
+    3;778,782,845;,
+    3;858,845,782;,
+    3;780,778,853;,
+    3;845,853,778;,
+    3;783,780,870;,
+    3;853,870,780;,
+    3;796,783,888;,
+    3;870,888,783;,
+    3;816,796,907;,
+    3;888,907,796;,
+    3;828,816,928;,
+    3;907,928,816;,
+    3;868,828,944;,
+    3;928,944,828;,
+    3;916,868,978;,
+    3;944,978,868;,
+    3;952,916,1010;,
+    3;978,1010,916;,
+    3;1002,952,1032;,
+    3;1010,1032,952;,
+    3;1042,1002,1097;,
+    3;1032,1097,1002;,
+    3;1138,1042,1170;,
+    3;1097,1170,1042;,
+    3;1206,1138,1212;,
+    3;1170,1212,1138;,
+    3;1244,1206,1236;,
+    3;1212,1236,1206;,
+    3;1310,1244,1280;,
+    3;1236,1280,1244;,
+    3;1408,1310,1348;,
+    3;1280,1348,1310;,
+    3;1448,1408,1412;,
+    3;1348,1412,1408;,
+    3;1498,1448,1436;,
+    3;1412,1436,1448;,
+    3;1532,1498,1468;,
+    3;1436,1468,1498;,
+    3;1572,1532,1502;,
+    3;1468,1502,1532;,
+    3;1622,1572,1518;,
+    3;1502,1518,1572;,
+    3;1634,1622,1538;,
+    3;1518,1538,1622;,
+    3;1654,1634,1558;,
+    3;1538,1558,1634;,
+    3;1666,1654,1576;,
+    3;1558,1576,1654;,
+    3;1670,1666,1594;,
+    3;1576,1594,1666;,
+    3;1674,1670,1605;,
+    3;1594,1605,1670;,
+    3;1671,1674,1597;,
+    3;1605,1597,1674;,
+    3;1747,1761,1667;,
+    3;1671,1667,1761;,
+    3;1726,1747,1655;,
+    3;1667,1655,1747;,
+    3;1708,1726,1635;,
+    3;1655,1635,1726;,
+    3;1683,1708,1623;,
+    3;1635,1623,1708;,
+    3;1643,1683,1583;,
+    3;1623,1583,1683;,
+    3;1617,1643,1535;,
+    3;1583,1535,1643;,
+    3;1551,1617,1499;,
+    3;1535,1499,1617;,
+    3;1495,1551,1449;,
+    3;1499,1449,1551;,
+    3;1433,1495,1409;,
+    3;1449,1409,1495;,
+    3;1353,1433,1313;,
+    3;1409,1313,1433;,
+    3;1249,1353,1245;,
+    3;1313,1245,1353;,
+    3;1203,1249,1207;,
+    3;1245,1207,1249;,
+    3;1101,1203,1141;,
+    3;1207,1141,1203;,
+    3;1019,1101,1043;,
+    3;1141,1043,1101;,
+    3;960,1019,1003;,
+    3;1043,1003,1019;,
+    3;905,960,953;,
+    3;1003,953,960;,
+    3;841,905,919;,
+    3;953,919,905;,
+    3;813,841,879;,
+    3;919,879,841;,
+    3;775,813,830;,
+    3;879,830,813;,
+    3;751,775,818;,
+    3;830,818,775;,
+    3;729,751,798;,
+    3;818,798,751;,
+    3;707,729,786;,
+    3;798,786,729;,
+    3;695,707,782;,
+    3;786,782,707;,
+    3;679,695,778;,
+    3;782,778,695;,
+    3;689,679,780;,
+    3;778,780,679;,
+    3;703,689,783;,
+    3;780,783,689;,
+    3;723,703,796;,
+    3;783,796,703;,
+    3;742,723,816;,
+    3;796,816,723;,
+    3;768,742,828;,
+    3;816,828,742;,
+    3;808,768,868;,
+    3;828,868,768;,
+    3;834,808,916;,
+    3;868,916,808;,
+    3;900,834,952;,
+    3;916,952,834;,
+    3;956,900,1002;,
+    3;952,1002,900;,
+    3;1018,956,1042;,
+    3;1002,1042,956;,
+    3;1098,1018,1138;,
+    3;1042,1138,1018;,
+    3;1202,1098,1206;,
+    3;1138,1206,1098;,
+    3;1248,1202,1244;,
+    3;1206,1244,1202;,
+    3;1350,1248,1310;,
+    3;1244,1310,1248;,
+    3;1432,1350,1408;,
+    3;1310,1408,1350;,
+    3;1491,1432,1448;,
+    3;1408,1448,1432;,
+    3;1546,1491,1498;,
+    3;1448,1498,1491;,
+    3;1610,1546,1532;,
+    3;1498,1532,1546;,
+    3;1638,1610,1572;,
+    3;1532,1572,1610;,
+    3;1676,1638,1622;,
+    3;1572,1622,1638;,
+    3;1700,1676,1634;,
+    3;1622,1634,1676;,
+    3;1722,1700,1654;,
+    3;1634,1654,1700;,
+    3;1744,1722,1666;,
+    3;1654,1666,1722;,
+    3;1756,1744,1670;,
+    3;1666,1670,1744;,
+    3;1771,1756,1674;,
+    3;1670,1674,1756;,
+    3;1761,1771,1671;,
+    3;1674,1671,1771;,
+    3;1821,1829,1747;,
+    3;1761,1747,1829;,
+    3;1805,1821,1726;,
+    3;1747,1726,1821;,
+    3;1789,1805,1708;,
+    3;1726,1708,1805;,
+    3;1741,1789,1683;,
+    3;1708,1683,1789;,
+    3;1697,1741,1643;,
+    3;1683,1643,1741;,
+    3;1659,1697,1617;,
+    3;1643,1617,1697;,
+    3;1619,1659,1551;,
+    3;1617,1551,1659;,
+    3;1527,1619,1495;,
+    3;1551,1495,1619;,
+    3;1461,1527,1433;,
+    3;1495,1433,1527;,
+    3;1405,1461,1353;,
+    3;1433,1353,1461;,
+    3;1259,1405,1249;,
+    3;1353,1249,1405;,
+    3;1195,1259,1203;,
+    3;1249,1203,1259;,
+    3;1051,1195,1101;,
+    3;1203,1101,1195;,
+    3;992,1051,1019;,
+    3;1101,1019,1051;,
+    3;925,992,960;,
+    3;1019,960,992;,
+    3;837,925,905;,
+    3;960,905,925;,
+    3;793,837,841;,
+    3;905,841,837;,
+    3;755,793,813;,
+    3;841,813,793;,
+    3;711,755,775;,
+    3;813,775,755;,
+    3;663,711,751;,
+    3;775,751,711;,
+    3;647,663,729;,
+    3;751,729,663;,
+    3;631,647,707;,
+    3;729,707,647;,
+    3;623,631,695;,
+    3;707,695,631;,
+    3;615,623,679;,
+    3;695,679,623;,
+    3;622,615,689;,
+    3;679,689,615;,
+    3;630,622,703;,
+    3;689,703,622;,
+    3;645,630,723;,
+    3;703,723,630;,
+    3;661,645,742;,
+    3;723,742,645;,
+    3;710,661,768;,
+    3;742,768,661;,
+    3;754,710,808;,
+    3;768,808,710;,
+    3;792,754,834;,
+    3;808,834,754;,
+    3;832,792,900;,
+    3;834,900,792;,
+    3;924,832,956;,
+    3;900,956,832;,
+    3;989,924,1018;,
+    3;956,1018,924;,
+    3;1046,989,1098;,
+    3;1018,1098,989;,
+    3;1192,1046,1202;,
+    3;1098,1202,1046;,
+    3;1256,1192,1248;,
+    3;1202,1248,1192;,
+    3;1400,1256,1350;,
+    3;1248,1350,1256;,
+    3;1460,1400,1432;,
+    3;1350,1432,1400;,
+    3;1526,1460,1491;,
+    3;1432,1491,1460;,
+    3;1614,1526,1546;,
+    3;1491,1546,1526;,
+    3;1658,1614,1610;,
+    3;1546,1610,1614;,
+    3;1696,1658,1638;,
+    3;1610,1638,1658;,
+    3;1740,1696,1676;,
+    3;1638,1676,1696;,
+    3;1788,1740,1700;,
+    3;1676,1700,1740;,
+    3;1804,1788,1722;,
+    3;1700,1722,1788;,
+    3;1820,1804,1744;,
+    3;1722,1744,1804;,
+    3;1828,1820,1756;,
+    3;1744,1756,1820;,
+    3;1836,1828,1771;,
+    3;1756,1771,1828;,
+    3;1829,1836,1761;,
+    3;1771,1761,1836;,
+    3;1887,1905,1821;,
+    3;1829,1821,1905;,
+    3;1869,1887,1805;,
+    3;1821,1805,1887;,
+    3;1841,1869,1789;,
+    3;1805,1789,1869;,
+    3;1811,1841,1741;,
+    3;1789,1741,1841;,
+    3;1779,1811,1697;,
+    3;1741,1697,1811;,
+    3;1711,1779,1659;,
+    3;1697,1659,1779;,
+    3;1649,1711,1619;,
+    3;1659,1619,1711;,
+    3;1585,1649,1527;,
+    3;1619,1527,1649;,
+    3;1493,1585,1461;,
+    3;1527,1461,1585;,
+    3;1417,1493,1405;,
+    3;1461,1405,1493;,
+    3;1265,1417,1259;,
+    3;1405,1259,1417;,
+    3;1187,1265,1195;,
+    3;1259,1195,1265;,
+    3;1037,1187,1051;,
+    3;1195,1051,1187;,
+    3;959,1037,992;,
+    3;1051,992,1037;,
+    3;881,959,925;,
+    3;992,925,959;,
+    3;805,881,837;,
+    3;925,837,881;,
+    3;747,805,793;,
+    3;837,793,805;,
+    3;675,747,755;,
+    3;793,755,747;,
+    3;643,675,711;,
+    3;755,711,675;,
+    3;614,643,663;,
+    3;711,663,643;,
+    3;585,614,647;,
+    3;663,647,614;,
+    3;569,585,631;,
+    3;647,631,585;,
+    3;551,569,623;,
+    3;631,623,569;,
+    3;538,551,615;,
+    3;623,615,551;,
+    3;545,538,622;,
+    3;615,622,538;,
+    3;563,545,630;,
+    3;622,630,545;,
+    3;581,563,645;,
+    3;630,645,563;,
+    3;609,581,661;,
+    3;645,661,581;,
+    3;640,609,710;,
+    3;661,710,609;,
+    3;671,640,754;,
+    3;710,754,640;,
+    3;739,671,792;,
+    3;754,792,671;,
+    3;802,739,832;,
+    3;792,832,739;,
+    3;866,802,924;,
+    3;832,924,802;,
+    3;958,866,989;,
+    3;924,989,866;,
+    3;1034,958,1046;,
+    3;989,1046,958;,
+    3;1186,1034,1192;,
+    3;1046,1192,1034;,
+    3;1264,1186,1256;,
+    3;1192,1256,1186;,
+    3;1414,1264,1400;,
+    3;1256,1400,1264;,
+    3;1492,1414,1460;,
+    3;1400,1460,1414;,
+    3;1570,1492,1526;,
+    3;1460,1526,1492;,
+    3;1646,1570,1614;,
+    3;1526,1614,1570;,
+    3;1704,1646,1658;,
+    3;1614,1658,1646;,
+    3;1776,1704,1696;,
+    3;1658,1696,1704;,
+    3;1808,1776,1740;,
+    3;1696,1740,1776;,
+    3;1838,1808,1788;,
+    3;1740,1788,1808;,
+    3;1866,1838,1804;,
+    3;1788,1804,1838;,
+    3;1882,1866,1820;,
+    3;1804,1820,1866;,
+    3;1900,1882,1828;,
+    3;1820,1828,1882;,
+    3;1913,1900,1836;,
+    3;1828,1836,1900;,
+    3;1905,1913,1829;,
+    3;1836,1829,1913;,
+    3;1951,1967,1887;,
+    3;1905,1887,1967;,
+    3;1935,1951,1869;,
+    3;1887,1869,1951;,
+    3;1903,1935,1841;,
+    3;1869,1841,1935;,
+    3;1855,1903,1811;,
+    3;1841,1811,1903;,
+    3;1817,1855,1779;,
+    3;1811,1779,1855;,
+    3;1765,1817,1711;,
+    3;1779,1711,1817;,
+    3;1689,1765,1649;,
+    3;1711,1649,1765;,
+    3;1627,1689,1585;,
+    3;1649,1585,1689;,
+    3;1515,1627,1493;,
+    3;1585,1493,1627;,
+    3;1425,1515,1417;,
+    3;1493,1417,1515;,
+    3;1273,1425,1265;,
+    3;1417,1265,1425;,
+    3;1181,1273,1187;,
+    3;1265,1187,1273;,
+    3;1027,1181,1037;,
+    3;1187,1037,1181;,
+    3;937,1027,959;,
+    3;1037,959,1027;,
+    3;825,937,881;,
+    3;959,881,937;,
+    3;763,825,805;,
+    3;881,805,825;,
+    3;691,763,747;,
+    3;805,747,763;,
+    3;635,691,675;,
+    3;747,675,691;,
+    3;597,635,643;,
+    3;675,643,635;,
+    3;553,597,614;,
+    3;643,614,597;,
+    3;517,553,585;,
+    3;614,585,553;,
+    3;502,517,569;,
+    3;585,569,517;,
+    3;485,502,551;,
+    3;569,551,502;,
+    3;481,485,538;,
+    3;551,538,485;,
+    3;483,481,545;,
+    3;538,545,481;,
+    3;500,483,563;,
+    3;545,563,483;,
+    3;516,500,581;,
+    3;563,581,500;,
+    3;547,516,609;,
+    3;581,609,516;,
+    3;596,547,640;,
+    3;609,640,547;,
+    3;634,596,671;,
+    3;640,671,596;,
+    3;685,634,739;,
+    3;671,739,634;,
+    3;762,685,802;,
+    3;739,802,685;,
+    3;824,762,866;,
+    3;802,866,762;,
+    3;936,824,958;,
+    3;866,958,824;,
+    3;1026,936,1034;,
+    3;958,1034,936;,
+    3;1178,1026,1186;,
+    3;1034,1186,1026;,
+    3;1270,1178,1264;,
+    3;1186,1264,1178;,
+    3;1424,1270,1414;,
+    3;1264,1414,1270;,
+    3;1514,1424,1492;,
+    3;1414,1492,1424;,
+    3;1626,1514,1570;,
+    3;1492,1570,1514;,
+    3;1688,1626,1646;,
+    3;1570,1646,1626;,
+    3;1760,1688,1704;,
+    3;1646,1704,1688;,
+    3;1816,1760,1776;,
+    3;1704,1776,1760;,
+    3;1854,1816,1808;,
+    3;1776,1808,1816;,
+    3;1898,1854,1838;,
+    3;1808,1838,1854;,
+    3;1934,1898,1866;,
+    3;1838,1866,1898;,
+    3;1950,1934,1882;,
+    3;1866,1882,1934;,
+    3;1966,1950,1900;,
+    3;1882,1900,1950;,
+    3;1969,1966,1913;,
+    3;1900,1913,1966;,
+    3;1967,1969,1905;,
+    3;1913,1905,1969;,
+    3;2011,2025,1951;,
+    3;1967,1951,2025;,
+    3;1983,2011,1935;,
+    3;1951,1935,2011;,
+    3;1957,1983,1903;,
+    3;1935,1903,1983;,
+    3;1925,1957,1855;,
+    3;1903,1855,1957;,
+    3;1862,1925,1817;,
+    3;1855,1817,1925;,
+    3;1800,1862,1765;,
+    3;1817,1765,1862;,
+    3;1729,1800,1689;,
+    3;1765,1689,1800;,
+    3;1650,1729,1627;,
+    3;1689,1627,1729;,
+    3;1549,1650,1515;,
+    3;1627,1515,1650;,
+    3;1439,1549,1425;,
+    3;1515,1425,1549;,
+    3;1277,1439,1273;,
+    3;1425,1273,1439;,
+    3;1175,1277,1181;,
+    3;1273,1181,1277;,
+    3;1013,1175,1027;,
+    3;1181,1027,1175;,
+    3;903,1013,937;,
+    3;1027,937,1013;,
+    3;803,903,825;,
+    3;937,825,903;,
+    3;731,803,763;,
+    3;825,763,803;,
+    3;655,731,691;,
+    3;763,691,731;,
+    3;593,655,635;,
+    3;691,635,655;,
+    3;529,593,597;,
+    3;635,597,593;,
+    3;498,529,553;,
+    3;597,553,529;,
+    3;471,498,517;,
+    3;553,517,498;,
+    3;443,471,502;,
+    3;517,502,471;,
+    3;429,443,485;,
+    3;502,485,443;,
+    3;416,429,481;,
+    3;485,481,429;,
+    3;425,416,483;,
+    3;481,483,416;,
+    3;439,425,500;,
+    3;483,500,425;,
+    3;467,439,516;,
+    3;500,516,439;,
+    3;493,467,547;,
+    3;516,547,467;,
+    3;525,493,596;,
+    3;547,596,493;,
+    3;588,525,634;,
+    3;596,634,525;,
+    3;651,588,685;,
+    3;634,685,588;,
+    3;722,651,762;,
+    3;685,762,651;,
+    3;800,722,824;,
+    3;762,824,722;,
+    3;902,800,936;,
+    3;824,936,800;,
+    3;1012,902,1026;,
+    3;936,1026,902;,
+    3;1173,1012,1178;,
+    3;1026,1178,1012;,
+    3;1276,1173,1270;,
+    3;1178,1270,1173;,
+    3;1438,1276,1424;,
+    3;1270,1424,1276;,
+    3;1548,1438,1514;,
+    3;1424,1514,1438;,
+    3;1648,1548,1626;,
+    3;1514,1626,1548;,
+    3;1720,1648,1688;,
+    3;1626,1688,1648;,
+    3;1797,1720,1760;,
+    3;1688,1760,1720;,
+    3;1858,1797,1816;,
+    3;1760,1816,1797;,
+    3;1922,1858,1854;,
+    3;1816,1854,1858;,
+    3;1954,1922,1898;,
+    3;1854,1898,1922;,
+    3;1980,1954,1934;,
+    3;1898,1934,1954;,
+    3;2008,1980,1950;,
+    3;1934,1950,1980;,
+    3;2022,2008,1966;,
+    3;1950,1966,2008;,
+    3;2036,2022,1969;,
+    3;1966,1969,2022;,
+    3;2025,2036,1967;,
+    3;1969,1967,2036;,
+    3;2065,2074,2011;,
+    3;2025,2011,2074;,
+    3;2045,2065,1983;,
+    3;2011,1983,2065;,
+    3;1997,2045,1957;,
+    3;1983,1957,2045;,
+    3;1963,1997,1925;,
+    3;1957,1925,1997;,
+    3;1919,1963,1862;,
+    3;1925,1862,1963;,
+    3;1847,1919,1800;,
+    3;1862,1800,1919;,
+    3;1785,1847,1729;,
+    3;1800,1729,1847;,
+    3;1685,1785,1650;,
+    3;1729,1650,1785;,
+    3;1587,1685,1549;,
+    3;1650,1549,1685;,
+    3;1457,1587,1439;,
+    3;1549,1439,1587;,
+    3;1287,1457,1277;,
+    3;1439,1277,1457;,
+    3;1166,1287,1175;,
+    3;1277,1175,1287;,
+    3;997,1166,1013;,
+    3;1175,1013,1166;,
+    3;877,997,903;,
+    3;1013,903,997;,
+    3;771,877,803;,
+    3;903,803,877;,
+    3;667,771,731;,
+    3;803,731,771;,
+    3;605,667,655;,
+    3;731,655,667;,
+    3;533,605,593;,
+    3;655,593,605;,
+    3;489,533,529;,
+    3;593,529,533;,
+    3;455,489,498;,
+    3;529,498,489;,
+    3;407,455,471;,
+    3;498,471,455;,
+    3;388,407,443;,
+    3;471,443,407;,
+    3;380,388,429;,
+    3;443,429,388;,
+    3;376,380,416;,
+    3;429,416,380;,
+    3;377,376,425;,
+    3;416,425,376;,
+    3;385,377,439;,
+    3;425,439,377;,
+    3;405,385,467;,
+    3;439,467,385;,
+    3;454,405,493;,
+    3;467,493,405;,
+    3;488,454,525;,
+    3;493,525,454;,
+    3;532,488,588;,
+    3;525,588,488;,
+    3;604,532,651;,
+    3;588,651,532;,
+    3;666,604,722;,
+    3;651,722,604;,
+    3;766,666,800;,
+    3;722,800,666;,
+    3;864,766,902;,
+    3;800,902,766;,
+    3;994,864,1012;,
+    3;902,1012,864;,
+    3;1163,994,1173;,
+    3;1012,1173,994;,
+    3;1286,1163,1276;,
+    3;1173,1276,1163;,
+    3;1454,1286,1438;,
+    3;1276,1438,1286;,
+    3;1574,1454,1548;,
+    3;1438,1548,1454;,
+    3;1680,1574,1648;,
+    3;1548,1648,1574;,
+    3;1784,1680,1720;,
+    3;1648,1720,1680;,
+    3;1846,1784,1797;,
+    3;1720,1797,1784;,
+    3;1918,1846,1858;,
+    3;1797,1858,1846;,
+    3;1962,1918,1922;,
+    3;1858,1922,1918;,
+    3;1996,1962,1954;,
+    3;1922,1954,1962;,
+    3;2044,1996,1980;,
+    3;1954,1980,1996;,
+    3;2064,2044,2008;,
+    3;1980,2008,2044;,
+    3;2071,2064,2022;,
+    3;2008,2022,2064;,
+    3;2075,2071,2036;,
+    3;2022,2036,2071;,
+    3;2074,2075,2025;,
+    3;2036,2025,2075;,
+    3;2109,2125,2065;,
+    3;2074,2065,2125;,
+    3;2089,2109,2045;,
+    3;2065,2045,2109;,
+    3;2055,2089,1997;,
+    3;2045,1997,2089;,
+    3;2003,2055,1963;,
+    3;1997,1963,2055;,
+    3;1946,2003,1919;,
+    3;1963,1919,2003;,
+    3;1879,1946,1847;,
+    3;1919,1847,1946;,
+    3;1799,1879,1785;,
+    3;1847,1785,1879;,
+    3;1712,1799,1685;,
+    3;1785,1685,1799;,
+    3;1615,1712,1587;,
+    3;1685,1587,1712;,
+    3;1471,1615,1457;,
+    3;1587,1457,1615;,
+    3;1297,1471,1287;,
+    3;1457,1287,1471;,
+    3;1156,1297,1166;,
+    3;1287,1166,1297;,
+    3;981,1156,997;,
+    3;1166,997,1156;,
+    3;839,981,877;,
+    3;997,877,981;,
+    3;745,839,771;,
+    3;877,771,839;,
+    3;653,745,667;,
+    3;771,667,745;,
+    3;573,653,605;,
+    3;667,605,653;,
+    3;509,573,533;,
+    3;605,533,573;,
+    3;451,509,489;,
+    3;533,489,509;,
+    3;400,451,455;,
+    3;489,455,451;,
+    3;366,400,407;,
+    3;455,407,400;,
+    3;345,366,388;,
+    3;407,388,366;,
+    3;330,345,380;,
+    3;388,380,345;,
+    3;313,330,376;,
+    3;380,376,330;,
+    3;325,313,377;,
+    3;376,377,313;,
+    3;341,325,385;,
+    3;377,385,325;,
+    3;362,341,405;,
+    3;385,405,341;,
+    3;395,362,454;,
+    3;405,454,362;,
+    3;447,395,488;,
+    3;454,488,395;,
+    3;504,447,532;,
+    3;488,532,447;,
+    3;572,504,604;,
+    3;532,604,504;,
+    3;652,572,666;,
+    3;604,666,572;,
+    3;740,652,766;,
+    3;666,766,652;,
+    3;836,740,864;,
+    3;766,864,740;,
+    3;979,836,994;,
+    3;864,994,836;,
+    3;1154,979,1163;,
+    3;994,1163,979;,
+    3;1296,1154,1286;,
+    3;1163,1286,1154;,
+    3;1470,1296,1454;,
+    3;1286,1454,1296;,
+    3;1612,1470,1574;,
+    3;1454,1574,1470;,
+    3;1706,1612,1680;,
+    3;1574,1680,1612;,
+    3;1798,1706,1784;,
+    3;1680,1784,1706;,
+    3;1878,1798,1846;,
+    3;1784,1846,1798;,
+    3;1943,1878,1918;,
+    3;1846,1918,1878;,
+    3;2000,1943,1962;,
+    3;1918,1962,1943;,
+    3;2052,2000,1996;,
+    3;1962,1996,2000;,
+    3;2086,2052,2044;,
+    3;1996,2044,2052;,
+    3;2106,2086,2064;,
+    3;2044,2064,2086;,
+    3;2122,2106,2071;,
+    3;2064,2071,2106;,
+    3;2138,2122,2075;,
+    3;2071,2075,2122;,
+    3;2125,2138,2074;,
+    3;2075,2074,2138;,
+    3;2159,2175,2109;,
+    3;2125,2109,2175;,
+    3;2135,2159,2089;,
+    3;2109,2089,2159;,
+    3;2095,2135,2055;,
+    3;2089,2055,2135;,
+    3;2049,2095,2003;,
+    3;2055,2003,2095;,
+    3;1989,2049,1946;,
+    3;2003,1946,2049;,
+    3;1931,1989,1879;,
+    3;1946,1879,1989;,
+    3;1833,1931,1799;,
+    3;1879,1799,1931;,
+    3;1733,1833,1712;,
+    3;1799,1712,1833;,
+    3;1631,1733,1615;,
+    3;1712,1615,1733;,
+    3;1487,1631,1471;,
+    3;1615,1471,1631;,
+    3;1303,1487,1297;,
+    3;1471,1297,1487;,
+    3;1151,1303,1156;,
+    3;1297,1156,1303;,
+    3;965,1151,981;,
+    3;1156,981,1151;,
+    3;821,965,839;,
+    3;981,839,965;,
+    3;719,821,745;,
+    3;839,745,821;,
+    3;619,719,653;,
+    3;745,653,719;,
+    3;522,619,573;,
+    3;653,573,619;,
+    3;463,522,509;,
+    3;573,509,522;,
+    3;404,463,451;,
+    3;509,451,463;,
+    3;358,404,400;,
+    3;451,400,404;,
+    3;317,358,366;,
+    3;400,366,358;,
+    3;293,317,345;,
+    3;366,345,317;,
+    3;278,293,330;,
+    3;345,330,293;,
+    3;269,278,313;,
+    3;330,313,278;,
+    3;276,269,325;,
+    3;313,325,269;,
+    3;291,276,341;,
+    3;325,341,276;,
+    3;316,291,362;,
+    3;341,362,291;,
+    3;355,316,395;,
+    3;362,395,316;,
+    3;401,355,447;,
+    3;395,447,355;,
+    3;462,401,504;,
+    3;447,504,401;,
+    3;519,462,572;,
+    3;504,572,462;,
+    3;618,519,652;,
+    3;572,652,519;,
+    3;718,618,740;,
+    3;652,740,618;,
+    3;820,718,836;,
+    3;740,836,718;,
+    3;964,820,979;,
+    3;836,979,820;,
+    3;1148,964,1154;,
+    3;979,1154,964;,
+    3;1300,1148,1296;,
+    3;1154,1296,1148;,
+    3;1486,1300,1470;,
+    3;1296,1470,1300;,
+    3;1630,1486,1612;,
+    3;1470,1612,1486;,
+    3;1732,1630,1706;,
+    3;1612,1706,1630;,
+    3;1832,1732,1798;,
+    3;1706,1798,1732;,
+    3;1930,1832,1878;,
+    3;1798,1878,1832;,
+    3;1988,1930,1943;,
+    3;1878,1943,1930;,
+    3;2048,1988,2000;,
+    3;1943,2000,1988;,
+    3;2094,2048,2052;,
+    3;2000,2052,2048;,
+    3;2134,2094,2086;,
+    3;2052,2086,2094;,
+    3;2158,2134,2106;,
+    3;2086,2106,2134;,
+    3;2174,2158,2122;,
+    3;2106,2122,2158;,
+    3;2181,2174,2138;,
+    3;2122,2138,2174;,
+    3;2175,2181,2125;,
+    3;2138,2125,2181;,
+    3;2191,2215,2159;,
+    3;2175,2159,2215;,
+    3;2169,2191,2135;,
+    3;2159,2135,2191;,
+    3;2145,2169,2095;,
+    3;2135,2095,2169;,
+    3;2081,2145,2049;,
+    3;2095,2049,2145;,
+    3;2029,2081,1989;,
+    3;2049,1989,2081;,
+    3;1945,2029,1931;,
+    3;1989,1931,2029;,
+    3;1861,1945,1833;,
+    3;1931,1833,1945;,
+    3;1780,1861,1733;,
+    3;1833,1733,1861;,
+    3;1641,1780,1631;,
+    3;1733,1631,1780;,
+    3;1505,1641,1487;,
+    3;1631,1487,1641;,
+    3;1311,1505,1303;,
+    3;1487,1303,1505;,
+    3;1143,1311,1151;,
+    3;1303,1151,1311;,
+    3;947,1143,965;,
+    3;1151,965,1143;,
+    3;811,947,821;,
+    3;965,821,947;,
+    3;673,811,719;,
+    3;821,719,811;,
+    3;592,673,619;,
+    3;719,619,673;,
+    3;507,592,522;,
+    3;619,522,592;,
+    3;431,507,463;,
+    3;522,463,507;,
+    3;373,431,404;,
+    3;463,404,431;,
+    3;309,373,358;,
+    3;404,358,373;,
+    3;285,309,317;,
+    3;358,317,309;,
+    3;263,285,293;,
+    3;317,293,285;,
+    3;239,263,278;,
+    3;293,278,263;,
+    3;228,239,269;,
+    3;278,269,239;,
+    3;235,228,276;,
+    3;269,276,228;,
+    3;260,235,291;,
+    3;276,291,235;,
+    3;282,260,316;,
+    3;291,316,260;,
+    3;305,282,355;,
+    3;316,355,282;,
+    3;370,305,401;,
+    3;355,401,305;,
+    3;422,370,462;,
+    3;401,462,370;,
+    3;506,422,519;,
+    3;462,519,422;,
+    3;590,506,618;,
+    3;519,618,506;,
+    3;672,590,718;,
+    3;618,718,590;,
+    3;810,672,820;,
+    3;718,820,672;,
+    3;946,810,964;,
+    3;820,964,810;,
+    3;1140,946,1148;,
+    3;964,1148,946;,
+    3;1308,1140,1300;,
+    3;1148,1300,1140;,
+    3;1504,1308,1486;,
+    3;1300,1486,1308;,
+    3;1640,1504,1630;,
+    3;1486,1630,1504;,
+    3;1778,1640,1732;,
+    3;1630,1732,1640;,
+    3;1860,1778,1832;,
+    3;1732,1832,1778;,
+    3;1944,1860,1930;,
+    3;1832,1930,1860;,
+    3;2020,1944,1988;,
+    3;1930,1988,1944;,
+    3;2078,2020,2048;,
+    3;1988,2048,2020;,
+    3;2142,2078,2094;,
+    3;2048,2094,2078;,
+    3;2166,2142,2134;,
+    3;2094,2134,2142;,
+    3;2188,2166,2158;,
+    3;2134,2158,2166;,
+    3;2212,2188,2174;,
+    3;2158,2174,2188;,
+    3;2224,2212,2181;,
+    3;2174,2181,2212;,
+    3;2215,2224,2175;,
+    3;2181,2175,2224;,
+    3;2237,2249,2191;,
+    3;2215,2191,2249;,
+    3;2209,2237,2169;,
+    3;2191,2169,2237;,
+    3;2163,2209,2145;,
+    3;2169,2145,2209;,
+    3;2115,2163,2081;,
+    3;2145,2081,2163;,
+    3;2061,2115,2029;,
+    3;2081,2029,2115;,
+    3;1977,2061,1945;,
+    3;2029,1945,2061;,
+    3;1891,1977,1861;,
+    3;1945,1861,1977;,
+    3;1793,1891,1780;,
+    3;1861,1780,1891;,
+    3;1663,1793,1641;,
+    3;1780,1641,1793;,
+    3;1511,1663,1505;,
+    3;1641,1505,1663;,
+    3;1317,1511,1311;,
+    3;1505,1311,1511;,
+    3;1135,1317,1143;,
+    3;1311,1143,1317;,
+    3;941,1135,947;,
+    3;1143,947,1135;,
+    3;789,941,811;,
+    3;947,811,941;,
+    3;659,789,673;,
+    3;811,673,789;,
+    3;565,659,592;,
+    3;673,592,659;,
+    3;475,565,507;,
+    3;592,507,565;,
+    3;391,475,431;,
+    3;507,431,475;,
+    3;337,391,373;,
+    3;431,373,391;,
+    3;289,337,309;,
+    3;373,309,337;,
+    3;243,289,285;,
+    3;309,285,289;,
+    3;216,243,263;,
+    3;285,263,243;,
+    3;204,216,239;,
+    3;263,239,216;,
+    3;192,204,228;,
+    3;239,228,204;,
+    3;202,192,235;,
+    3;228,235,192;,
+    3;214,202,260;,
+    3;235,260,202;,
+    3;241,214,282;,
+    3;260,282,214;,
+    3;288,241,305;,
+    3;282,305,241;,
+    3;336,288,370;,
+    3;305,370,288;,
+    3;390,336,422;,
+    3;370,422,336;,
+    3;474,390,506;,
+    3;422,506,390;,
+    3;560,474,590;,
+    3;506,590,474;,
+    3;658,560,672;,
+    3;590,672,560;,
+    3;788,658,810;,
+    3;672,810,658;,
+    3;940,788,946;,
+    3;810,946,788;,
+    3;1134,940,1140;,
+    3;946,1140,940;,
+    3;1316,1134,1308;,
+    3;1140,1308,1134;,
+    3;1510,1316,1504;,
+    3;1308,1504,1316;,
+    3;1662,1510,1640;,
+    3;1504,1640,1510;,
+    3;1792,1662,1778;,
+    3;1640,1778,1662;,
+    3;1886,1792,1860;,
+    3;1778,1860,1792;,
+    3;1976,1886,1944;,
+    3;1860,1944,1886;,
+    3;2060,1976,2020;,
+    3;1944,2020,1976;,
+    3;2114,2060,2078;,
+    3;2020,2078,2060;,
+    3;2162,2114,2142;,
+    3;2078,2142,2114;,
+    3;2208,2162,2166;,
+    3;2142,2166,2162;,
+    3;2236,2208,2188;,
+    3;2166,2188,2208;,
+    3;2248,2236,2212;,
+    3;2188,2212,2236;,
+    3;2259,2248,2224;,
+    3;2212,2224,2248;,
+    3;2249,2259,2215;,
+    3;2224,2215,2259;,
+    3;2265,2286,2237;,
+    3;2249,2237,2286;,
+    3;2243,2265,2209;,
+    3;2237,2209,2265;,
+    3;2199,2243,2163;,
+    3;2209,2163,2243;,
+    3;2151,2199,2115;,
+    3;2163,2115,2199;,
+    3;2082,2151,2061;,
+    3;2115,2061,2151;,
+    3;2004,2082,1977;,
+    3;2061,1977,2082;,
+    3;1926,2004,1891;,
+    3;1977,1891,2004;,
+    3;1812,1926,1793;,
+    3;1891,1793,1926;,
+    3;1681,1812,1663;,
+    3;1793,1663,1812;,
+    3;1521,1681,1511;,
+    3;1663,1511,1681;,
+    3;1325,1521,1317;,
+    3;1511,1317,1521;,
+    3;1129,1325,1135;,
+    3;1317,1135,1325;,
+    3;931,1129,941;,
+    3;1135,941,1129;,
+    3;773,931,789;,
+    3;941,789,931;,
+    3;641,773,659;,
+    3;789,659,773;,
+    3;527,641,565;,
+    3;659,565,641;,
+    3;449,527,475;,
+    3;565,475,527;,
+    3;371,449,391;,
+    3;475,391,449;,
+    3;301,371,337;,
+    3;391,337,371;,
+    3;255,301,289;,
+    3;337,289,301;,
+    3;212,255,243;,
+    3;289,243,255;,
+    3;190,212,216;,
+    3;243,216,212;,
+    3;169,190,204;,
+    3;216,204,190;,
+    3;157,169,192;,
+    3;204,192,169;,
+    3;166,157,202;,
+    3;192,202,157;,
+    3;185,166,214;,
+    3;202,214,166;,
+    3;207,185,241;,
+    3;214,241,185;,
+    3;251,207,288;,
+    3;241,288,207;,
+    3;300,251,336;,
+    3;288,336,251;,
+    3;368,300,390;,
+    3;336,390,300;,
+    3;448,368,474;,
+    3;390,474,368;,
+    3;526,448,560;,
+    3;474,560,448;,
+    3;638,526,658;,
+    3;560,658,526;,
+    3;770,638,788;,
+    3;658,788,638;,
+    3;930,770,940;,
+    3;788,940,770;,
+    3;1126,930,1134;,
+    3;940,1134,930;,
+    3;1322,1126,1316;,
+    3;1134,1316,1126;,
+    3;1520,1322,1510;,
+    3;1316,1510,1322;,
+    3;1678,1520,1662;,
+    3;1510,1662,1520;,
+    3;1810,1678,1792;,
+    3;1662,1792,1678;,
+    3;1924,1810,1886;,
+    3;1792,1886,1810;,
+    3;2002,1924,1976;,
+    3;1886,1976,1924;,
+    3;2080,2002,2060;,
+    3;1976,2060,2002;,
+    3;2150,2080,2114;,
+    3;2060,2114,2080;,
+    3;2196,2150,2162;,
+    3;2114,2162,2150;,
+    3;2240,2196,2208;,
+    3;2162,2208,2196;,
+    3;2262,2240,2236;,
+    3;2208,2236,2240;,
+    3;2281,2262,2248;,
+    3;2236,2248,2262;,
+    3;2293,2281,2259;,
+    3;2248,2259,2281;,
+    3;2286,2293,2249;,
+    3;2259,2249,2293;,
+    3;2307,2316,2265;,
+    3;2286,2265,2316;,
+    3;2271,2307,2243;,
+    3;2265,2243,2307;,
+    3;2233,2271,2199;,
+    3;2243,2199,2271;,
+    3;2179,2233,2151;,
+    3;2199,2151,2233;,
+    3;2103,2179,2082;,
+    3;2151,2082,2179;,
+    3;2041,2103,2004;,
+    3;2082,2004,2103;,
+    3;1939,2041,1926;,
+    3;2004,1926,2041;,
+    3;1825,1939,1812;,
+    3;1926,1812,1939;,
+    3;1693,1825,1681;,
+    3;1812,1681,1825;,
+    3;1533,1693,1521;,
+    3;1681,1521,1693;,
+    3;1331,1533,1325;,
+    3;1521,1325,1533;,
+    3;1123,1331,1129;,
+    3;1325,1129,1331;,
+    3;921,1123,931;,
+    3;1129,931,1123;,
+    3;759,921,773;,
+    3;931,773,921;,
+    3;627,759,641;,
+    3;773,641,759;,
+    3;513,627,527;,
+    3;641,527,627;,
+    3;411,513,449;,
+    3;527,449,513;,
+    3;349,411,371;,
+    3;449,371,411;,
+    3;274,349,301;,
+    3;371,301,349;,
+    3;219,274,255;,
+    3;301,255,274;,
+    3;182,219,212;,
+    3;255,212,219;,
+    3;145,182,190;,
+    3;212,190,182;,
+    3;137,145,169;,
+    3;190,169,145;,
+    3;130,137,157;,
+    3;169,157,137;,
+    3;135,130,166;,
+    3;157,166,130;,
+    3;143,135,185;,
+    3;166,185,135;,
+    3;179,143,207;,
+    3;185,207,143;,
+    3;217,179,251;,
+    3;207,251,179;,
+    3;272,217,300;,
+    3;251,300,217;,
+    3;348,272,368;,
+    3;300,368,272;,
+    3;410,348,448;,
+    3;368,448,348;,
+    3;512,410,526;,
+    3;448,526,410;,
+    3;626,512,638;,
+    3;526,638,512;,
+    3;758,626,770;,
+    3;638,770,626;,
+    3;918,758,930;,
+    3;770,930,758;,
+    3;1120,918,1126;,
+    3;930,1126,918;,
+    3;1328,1120,1322;,
+    3;1126,1322,1120;,
+    3;1530,1328,1520;,
+    3;1322,1520,1328;,
+    3;1692,1530,1678;,
+    3;1520,1678,1530;,
+    3;1824,1692,1810;,
+    3;1678,1810,1692;,
+    3;1938,1824,1924;,
+    3;1810,1924,1824;,
+    3;2040,1938,2002;,
+    3;1924,2002,1938;,
+    3;2102,2040,2080;,
+    3;2002,2080,2040;,
+    3;2178,2102,2150;,
+    3;2080,2150,2102;,
+    3;2232,2178,2196;,
+    3;2150,2196,2178;,
+    3;2270,2232,2240;,
+    3;2196,2240,2232;,
+    3;2306,2270,2262;,
+    3;2240,2262,2270;,
+    3;2313,2306,2281;,
+    3;2262,2281,2306;,
+    3;2322,2313,2293;,
+    3;2281,2293,2313;,
+    3;2316,2322,2286;,
+    3;2293,2286,2322;,
+    3;2327,2344,2307;,
+    3;2316,2307,2344;,
+    3;2301,2327,2271;,
+    3;2307,2271,2327;,
+    3;2253,2301,2233;,
+    3;2271,2233,2301;,
+    3;2200,2253,2179;,
+    3;2233,2179,2253;,
+    3;2147,2200,2103;,
+    3;2179,2103,2200;,
+    3;2057,2147,2041;,
+    3;2103,2041,2147;,
+    3;1958,2057,1939;,
+    3;2041,1939,2057;,
+    3;1843,1958,1825;,
+    3;1939,1825,1958;,
+    3;1707,1843,1693;,
+    3;1825,1693,1843;,
+    3;1541,1707,1533;,
+    3;1693,1533,1707;,
+    3;1339,1541,1331;,
+    3;1533,1331,1541;,
+    3;1115,1339,1123;,
+    3;1331,1123,1339;,
+    3;911,1115,921;,
+    3;1123,921,1115;,
+    3;749,911,759;,
+    3;921,759,911;,
+    3;611,749,627;,
+    3;759,627,749;,
+    3;495,611,513;,
+    3;627,513,611;,
+    3;397,495,411;,
+    3;513,411,495;,
+    3;307,397,349;,
+    3;411,349,397;,
+    3;253,307,274;,
+    3;349,274,307;,
+    3;199,253,219;,
+    3;274,219,253;,
+    3;153,199,182;,
+    3;219,182,199;,
+    3;127,153,145;,
+    3;182,145,153;,
+    3;111,127,137;,
+    3;145,137,127;,
+    3;99,111,130;,
+    3;137,130,111;,
+    3;107,99,135;,
+    3;130,135,99;,
+    3;124,107,143;,
+    3;135,143,107;,
+    3;150,124,179;,
+    3;143,179,124;,
+    3;198,150,217;,
+    3;179,217,150;,
+    3;250,198,272;,
+    3;217,272,198;,
+    3;304,250,348;,
+    3;272,348,250;,
+    3;394,304,410;,
+    3;348,410,304;,
+    3;492,394,512;,
+    3;410,512,394;,
+    3;608,492,626;,
+    3;512,626,492;,
+    3;744,608,758;,
+    3;626,758,608;,
+    3;910,744,918;,
+    3;758,918,744;,
+    3;1112,910,1120;,
+    3;918,1120,910;,
+    3;1336,1112,1328;,
+    3;1120,1328,1112;,
+    3;1540,1336,1530;,
+    3;1328,1530,1336;,
+    3;1701,1540,1692;,
+    3;1530,1692,1540;,
+    3;1840,1701,1824;,
+    3;1692,1824,1701;,
+    3;1956,1840,1938;,
+    3;1824,1938,1840;,
+    3;2054,1956,2040;,
+    3;1938,2040,1956;,
+    3;2144,2054,2102;,
+    3;2040,2102,2054;,
+    3;2198,2144,2178;,
+    3;2102,2178,2144;,
+    3;2252,2198,2232;,
+    3;2178,2232,2198;,
+    3;2298,2252,2270;,
+    3;2232,2270,2252;,
+    3;2324,2298,2306;,
+    3;2270,2306,2298;,
+    3;2339,2324,2313;,
+    3;2306,2313,2324;,
+    3;2351,2339,2322;,
+    3;2313,2322,2339;,
+    3;2344,2351,2316;,
+    3;2322,2316,2351;,
+    3;2357,2366,2327;,
+    3;2344,2327,2366;,
+    3;2319,2357,2301;,
+    3;2327,2301,2357;,
+    3;2275,2319,2253;,
+    3;2301,2253,2319;,
+    3;2229,2275,2200;,
+    3;2253,2200,2275;,
+    3;2155,2229,2147;,
+    3;2200,2147,2229;,
+    3;2069,2155,2057;,
+    3;2147,2057,2155;,
+    3;1973,2069,1958;,
+    3;2057,1958,2069;,
+    3;1851,1973,1843;,
+    3;1958,1843,1973;,
+    3;1717,1851,1707;,
+    3;1843,1707,1851;,
+    3;1555,1717,1541;,
+    3;1707,1541,1717;,
+    3;1345,1555,1339;,
+    3;1541,1339,1555;,
+    3;1109,1345,1115;,
+    3;1339,1115,1345;,
+    3;897,1109,911;,
+    3;1115,911,1109;,
+    3;735,897,749;,
+    3;911,749,897;,
+    3;601,735,611;,
+    3;749,611,735;,
+    3;479,601,495;,
+    3;611,495,601;,
+    3;383,479,397;,
+    3;495,397,479;,
+    3;297,383,307;,
+    3;397,307,383;,
+    3;223,297,253;,
+    3;307,253,297;,
+    3;178,223,199;,
+    3;253,199,223;,
+    3;133,178,153;,
+    3;199,153,178;,
+    3;95,133,127;,
+    3;153,127,133;,
+    3;87,95,111;,
+    3;127,111,95;,
+    3;76,87,99;,
+    3;111,99,87;,
+    3;85,76,107;,
+    3;99,107,76;,
+    3;94,85,124;,
+    3;107,124,85;,
+    3;132,94,150;,
+    3;124,150,94;,
+    3;175,132,198;,
+    3;150,198,132;,
+    3;222,175,250;,
+    3;198,250,175;,
+    3;296,222,304;,
+    3;250,304,222;,
+    3;382,296,394;,
+    3;304,394,296;,
+    3;478,382,492;,
+    3;394,492,382;,
+    3;600,478,608;,
+    3;492,608,478;,
+    3;734,600,744;,
+    3;608,744,600;,
+    3;896,734,910;,
+    3;744,910,734;,
+    3;1106,896,1112;,
+    3;910,1112,896;,
+    3;1342,1106,1336;,
+    3;1112,1336,1106;,
+    3;1554,1342,1540;,
+    3;1336,1540,1342;,
+    3;1716,1554,1701;,
+    3;1540,1701,1554;,
+    3;1850,1716,1840;,
+    3;1701,1840,1716;,
+    3;1972,1850,1956;,
+    3;1840,1956,1850;,
+    3;2068,1972,2054;,
+    3;1956,2054,1972;,
+    3;2154,2068,2144;,
+    3;2054,2144,2068;,
+    3;2228,2154,2198;,
+    3;2144,2198,2154;,
+    3;2274,2228,2252;,
+    3;2198,2252,2228;,
+    3;2318,2274,2298;,
+    3;2252,2298,2274;,
+    3;2356,2318,2324;,
+    3;2298,2324,2318;,
+    3;2363,2356,2339;,
+    3;2324,2339,2356;,
+    3;2376,2363,2351;,
+    3;2339,2351,2363;,
+    3;2366,2376,2344;,
+    3;2351,2344,2376;,
+    3;2371,2390,2357;,
+    3;2366,2357,2390;,
+    3;2337,2371,2319;,
+    3;2357,2319,2371;,
+    3;2302,2337,2275;,
+    3;2319,2275,2337;,
+    3;2245,2302,2229;,
+    3;2275,2229,2302;,
+    3;2171,2245,2155;,
+    3;2229,2155,2245;,
+    3;2091,2171,2069;,
+    3;2155,2069,2171;,
+    3;1985,2091,1973;,
+    3;2069,1973,2091;,
+    3;1871,1985,1851;,
+    3;1973,1851,1985;,
+    3;1725,1871,1717;,
+    3;1851,1717,1871;,
+    3;1561,1725,1555;,
+    3;1717,1555,1725;,
+    3;1357,1561,1345;,
+    3;1555,1345,1561;,
+    3;1099,1357,1109;,
+    3;1345,1109,1357;,
+    3;891,1099,897;,
+    3;1109,897,1099;,
+    3;727,891,735;,
+    3;897,735,891;,
+    3;583,727,601;,
+    3;735,601,727;,
+    3;469,583,479;,
+    3;601,479,583;,
+    3;363,469,383;,
+    3;479,383,469;,
+    3;283,363,297;,
+    3;383,297,363;,
+    3;209,283,223;,
+    3;297,223,283;,
+    3;152,209,178;,
+    3;223,178,209;,
+    3;115,152,133;,
+    3;178,133,152;,
+    3;83,115,95;,
+    3;133,95,115;,
+    3;66,83,87;,
+    3;95,87,83;,
+    3;53,66,76;,
+    3;87,76,66;,
+    3;62,53,85;,
+    3;76,85,53;,
+    3;80,62,94;,
+    3;85,94,62;,
+    3;114,80,132;,
+    3;94,132,80;,
+    3;147,114,175;,
+    3;132,175,114;,
+    3;206,147,222;,
+    3;175,222,147;,
+    3;280,206,296;,
+    3;222,296,206;,
+    3;360,280,382;,
+    3;296,382,280;,
+    3;466,360,478;,
+    3;382,478,360;,
+    3;580,466,600;,
+    3;478,600,466;,
+    3;726,580,734;,
+    3;600,734,580;,
+    3;890,726,896;,
+    3;734,896,726;,
+    3;1094,890,1106;,
+    3;896,1106,890;,
+    3;1352,1094,1342;,
+    3;1106,1342,1094;,
+    3;1560,1352,1554;,
+    3;1342,1554,1352;,
+    3;1724,1560,1716;,
+    3;1554,1716,1560;,
+    3;1868,1724,1850;,
+    3;1716,1850,1724;,
+    3;1982,1868,1972;,
+    3;1850,1972,1868;,
+    3;2088,1982,2068;,
+    3;1972,2068,1982;,
+    3;2168,2088,2154;,
+    3;2068,2154,2088;,
+    3;2242,2168,2228;,
+    3;2154,2228,2168;,
+    3;2300,2242,2274;,
+    3;2228,2274,2242;,
+    3;2336,2300,2318;,
+    3;2274,2318,2300;,
+    3;2368,2336,2356;,
+    3;2318,2356,2336;,
+    3;2385,2368,2363;,
+    3;2356,2363,2368;,
+    3;2397,2385,2376;,
+    3;2363,2376,2385;,
+    3;2390,2397,2366;,
+    3;2376,2366,2397;,
+    3;2383,2408,2371;,
+    3;2390,2371,2408;,
+    3;2361,2383,2337;,
+    3;2371,2337,2383;,
+    3;2311,2361,2302;,
+    3;2337,2302,2361;,
+    3;2257,2311,2245;,
+    3;2302,2245,2311;,
+    3;2185,2257,2171;,
+    3;2245,2171,2257;,
+    3;2099,2185,2091;,
+    3;2171,2091,2185;,
+    3;1993,2099,1985;,
+    3;2091,1985,2099;,
+    3;1875,1993,1871;,
+    3;1985,1871,1993;,
+    3;1737,1875,1725;,
+    3;1871,1725,1875;,
+    3;1567,1737,1561;,
+    3;1725,1561,1737;,
+    3;1361,1567,1357;,
+    3;1561,1357,1567;,
+    3;1091,1361,1099;,
+    3;1357,1099,1361;,
+    3;885,1091,891;,
+    3;1099,891,1091;,
+    3;715,885,727;,
+    3;891,727,885;,
+    3;577,715,583;,
+    3;727,583,715;,
+    3;459,577,469;,
+    3;583,469,577;,
+    3;353,459,363;,
+    3;469,363,459;,
+    3;267,353,283;,
+    3;363,283,353;,
+    3;195,267,209;,
+    3;283,209,267;,
+    3;141,195,152;,
+    3;209,152,195;,
+    3;91,141,115;,
+    3;152,115,141;,
+    3;69,91,83;,
+    3;115,83,91;,
+    3;45,69,66;,
+    3;83,66,69;,
+    3;42,45,53;,
+    3;66,53,45;,
+    3;43,42,62;,
+    3;53,62,42;,
+    3;67,43,80;,
+    3;62,80,43;,
+    3;90,67,114;,
+    3;80,114,67;,
+    3;139,90,147;,
+    3;114,147,90;,
+    3;194,139,206;,
+    3;147,206,139;,
+    3;266,194,280;,
+    3;206,280,194;,
+    3;352,266,360;,
+    3;280,360,266;,
+    3;458,352,466;,
+    3;360,466,352;,
+    3;576,458,580;,
+    3;466,580,458;,
+    3;714,576,726;,
+    3;580,726,576;,
+    3;884,714,890;,
+    3;726,890,714;,
+    3;1090,884,1094;,
+    3;890,1094,884;,
+    3;1360,1090,1352;,
+    3;1094,1352,1090;,
+    3;1566,1360,1560;,
+    3;1352,1560,1360;,
+    3;1736,1566,1724;,
+    3;1560,1724,1566;,
+    3;1874,1736,1868;,
+    3;1724,1868,1736;,
+    3;1992,1874,1982;,
+    3;1868,1982,1874;,
+    3;2098,1992,2088;,
+    3;1982,2088,1992;,
+    3;2184,2098,2168;,
+    3;2088,2168,2098;,
+    3;2256,2184,2242;,
+    3;2168,2242,2184;,
+    3;2310,2256,2300;,
+    3;2242,2300,2256;,
+    3;2360,2310,2336;,
+    3;2300,2336,2310;,
+    3;2382,2360,2368;,
+    3;2336,2368,2360;,
+    3;2405,2382,2385;,
+    3;2368,2385,2382;,
+    3;2409,2405,2397;,
+    3;2385,2397,2405;,
+    3;2408,2409,2390;,
+    3;2397,2390,2409;,
+    3;2403,2422,2383;,
+    3;2408,2383,2422;,
+    3;2373,2403,2361;,
+    3;2383,2361,2403;,
+    3;2329,2373,2311;,
+    3;2361,2311,2373;,
+    3;2267,2329,2257;,
+    3;2311,2257,2329;,
+    3;2193,2267,2185;,
+    3;2257,2185,2267;,
+    3;2111,2193,2099;,
+    3;2185,2099,2193;,
+    3;2013,2111,1993;,
+    3;2099,1993,2111;,
+    3;1889,2013,1875;,
+    3;1993,1875,2013;,
+    3;1748,1889,1737;,
+    3;1875,1737,1889;,
+    3;1580,1748,1567;,
+    3;1737,1567,1748;,
+    3;1367,1580,1361;,
+    3;1567,1361,1580;,
+    3;1085,1367,1091;,
+    3;1361,1091,1367;,
+    3;873,1085,885;,
+    3;1091,885,1085;,
+    3;705,873,715;,
+    3;885,715,873;,
+    3;567,705,577;,
+    3;715,577,705;,
+    3;441,567,459;,
+    3;577,459,567;,
+    3;343,441,353;,
+    3;459,353,441;,
+    3;261,343,267;,
+    3;353,267,343;,
+    3;188,261,195;,
+    3;267,195,261;,
+    3;125,188,141;,
+    3;195,141,188;,
+    3;81,125,91;,
+    3;141,91,125;,
+    3;49,81,69;,
+    3;91,69,81;,
+    3;35,49,45;,
+    3;69,45,49;,
+    3;23,35,42;,
+    3;45,42,35;,
+    3;31,23,43;,
+    3;42,43,23;,
+    3;48,31,67;,
+    3;43,67,31;,
+    3;78,48,90;,
+    3;67,90,48;,
+    3;122,78,139;,
+    3;90,139,78;,
+    3;184,122,194;,
+    3;139,194,122;,
+    3;258,184,266;,
+    3;194,266,184;,
+    3;340,258,352;,
+    3;266,352,258;,
+    3;438,340,458;,
+    3;352,458,340;,
+    3;562,438,576;,
+    3;458,576,438;,
+    3;704,562,714;,
+    3;576,714,562;,
+    3;872,704,884;,
+    3;714,884,704;,
+    3;1084,872,1090;,
+    3;884,1090,872;,
+    3;1366,1084,1360;,
+    3;1090,1360,1084;,
+    3;1578,1366,1566;,
+    3;1360,1566,1366;,
+    3;1746,1578,1736;,
+    3;1566,1736,1578;,
+    3;1884,1746,1874;,
+    3;1736,1874,1746;,
+    3;2010,1884,1992;,
+    3;1874,1992,1884;,
+    3;2108,2010,2098;,
+    3;1992,2098,2010;,
+    3;2190,2108,2184;,
+    3;2098,2184,2108;,
+    3;2264,2190,2256;,
+    3;2184,2256,2190;,
+    3;2326,2264,2310;,
+    3;2256,2310,2264;,
+    3;2370,2326,2360;,
+    3;2310,2360,2326;,
+    3;2402,2370,2382;,
+    3;2360,2382,2370;,
+    3;2415,2402,2405;,
+    3;2382,2405,2402;,
+    3;2428,2415,2409;,
+    3;2405,2409,2415;,
+    3;2422,2428,2408;,
+    3;2409,2408,2428;,
+    3;2413,2434,2403;,
+    3;2422,2403,2434;,
+    3;2379,2413,2373;,
+    3;2403,2373,2413;,
+    3;2333,2379,2329;,
+    3;2373,2329,2379;,
+    3;2279,2333,2267;,
+    3;2329,2267,2333;,
+    3;2205,2279,2193;,
+    3;2267,2193,2279;,
+    3;2119,2205,2111;,
+    3;2193,2111,2205;,
+    3;2017,2119,2013;,
+    3;2111,2013,2119;,
+    3;1895,2017,1889;,
+    3;2013,1889,2017;,
+    3;1753,1895,1748;,
+    3;1889,1748,1895;,
+    3;1591,1753,1580;,
+    3;1748,1580,1753;,
+    3;1373,1591,1367;,
+    3;1580,1367,1591;,
+    3;1079,1373,1085;,
+    3;1367,1085,1373;,
+    3;861,1079,873;,
+    3;1085,873,1079;,
+    3;699,861,705;,
+    3;873,705,861;,
+    3;557,699,567;,
+    3;705,567,699;,
+    3;435,557,441;,
+    3;567,441,557;,
+    3;333,435,343;,
+    3;441,343,435;,
+    3;247,333,261;,
+    3;343,261,333;,
+    3;173,247,188;,
+    3;261,188,247;,
+    3;119,173,125;,
+    3;188,125,173;,
+    3;73,119,81;,
+    3;125,81,119;,
+    3;39,73,49;,
+    3;81,49,73;,
+    3;19,39,35;,
+    3;49,35,39;,
+    3;15,19,23;,
+    3;35,23,19;,
+    3;17,15,31;,
+    3;23,31,15;,
+    3;37,17,48;,
+    3;31,48,17;,
+    3;72,37,78;,
+    3;48,78,37;,
+    3;118,72,122;,
+    3;78,122,72;,
+    3;172,118,184;,
+    3;122,184,118;,
+    3;246,172,258;,
+    3;184,258,172;,
+    3;332,246,340;,
+    3;258,340,246;,
+    3;434,332,438;,
+    3;340,438,332;,
+    3;556,434,562;,
+    3;438,562,434;,
+    3;698,556,704;,
+    3;562,704,556;,
+    3;860,698,872;,
+    3;704,872,698;,
+    3;1078,860,1084;,
+    3;872,1084,860;,
+    3;1372,1078,1366;,
+    3;1084,1366,1078;,
+    3;1590,1372,1578;,
+    3;1366,1578,1372;,
+    3;1752,1590,1746;,
+    3;1578,1746,1590;,
+    3;1894,1752,1884;,
+    3;1746,1884,1752;,
+    3;2016,1894,2010;,
+    3;1884,2010,1894;,
+    3;2118,2016,2108;,
+    3;2010,2108,2016;,
+    3;2204,2118,2190;,
+    3;2108,2190,2118;,
+    3;2278,2204,2264;,
+    3;2190,2264,2204;,
+    3;2332,2278,2326;,
+    3;2264,2326,2278;,
+    3;2378,2332,2370;,
+    3;2326,2370,2332;,
+    3;2412,2378,2402;,
+    3;2370,2402,2378;,
+    3;2431,2412,2415;,
+    3;2402,2415,2412;,
+    3;2435,2431,2428;,
+    3;2415,2428,2431;,
+    3;2434,2435,2422;,
+    3;2428,2422,2435;,
+    3;2420,2440,2413;,
+    3;2434,2413,2440;,
+    3;2391,2420,2379;,
+    3;2413,2379,2420;,
+    3;2345,2391,2333;,
+    3;2379,2333,2391;,
+    3;2287,2345,2279;,
+    3;2333,2279,2345;,
+    3;2217,2287,2205;,
+    3;2279,2205,2287;,
+    3;2127,2217,2119;,
+    3;2205,2119,2217;,
+    3;2027,2127,2017;,
+    3;2119,2017,2127;,
+    3;1907,2027,1895;,
+    3;2017,1895,2027;,
+    3;1763,1907,1753;,
+    3;1895,1753,1907;,
+    3;1599,1763,1591;,
+    3;1753,1591,1763;,
+    3;1377,1599,1373;,
+    3;1591,1373,1599;,
+    3;1075,1377,1079;,
+    3;1373,1079,1377;,
+    3;855,1075,861;,
+    3;1079,861,1075;,
+    3;693,855,699;,
+    3;861,699,855;,
+    3;549,693,557;,
+    3;699,557,693;,
+    3;427,549,435;,
+    3;557,435,549;,
+    3;327,427,333;,
+    3;435,333,427;,
+    3;237,327,247;,
+    3;333,247,327;,
+    3;167,237,173;,
+    3;247,173,237;,
+    3;109,167,119;,
+    3;173,119,167;,
+    3;63,109,73;,
+    3;119,73,109;,
+    3;33,63,39;,
+    3;73,39,63;,
+    3;13,33,19;,
+    3;39,19,33;,
+    3;3,13,15;,
+    3;19,15,13;,
+    3;12,3,17;,
+    3;15,17,3;,
+    3;30,12,37;,
+    3;17,37,12;,
+    3;60,30,72;,
+    3;37,72,30;,
+    3;106,60,118;,
+    3;72,118,60;,
+    3;164,106,172;,
+    3;118,172,106;,
+    3;234,164,246;,
+    3;172,246,164;,
+    3;324,234,332;,
+    3;246,332,234;,
+    3;424,324,434;,
+    3;332,434,324;,
+    3;544,424,556;,
+    3;434,556,424;,
+    3;688,544,698;,
+    3;556,698,544;,
+    3;852,688,860;,
+    3;698,860,688;,
+    3;1074,852,1078;,
+    3;860,1078,852;,
+    3;1376,1074,1372;,
+    3;1078,1372,1074;,
+    3;1596,1376,1590;,
+    3;1372,1590,1376;,
+    3;1758,1596,1752;,
+    3;1590,1752,1596;,
+    3;1902,1758,1894;,
+    3;1752,1894,1758;,
+    3;2024,1902,2016;,
+    3;1894,2016,1902;,
+    3;2124,2024,2118;,
+    3;2016,2118,2024;,
+    3;2214,2124,2204;,
+    3;2118,2204,2124;,
+    3;2283,2214,2278;,
+    3;2204,2278,2214;,
+    3;2342,2283,2332;,
+    3;2278,2332,2283;,
+    3;2388,2342,2378;,
+    3;2332,2378,2342;,
+    3;2417,2388,2412;,
+    3;2378,2412,2388;,
+    3;2437,2417,2431;,
+    3;2412,2431,2417;,
+    3;2445,2437,2435;,
+    3;2431,2435,2437;,
+    3;2440,2445,2434;,
+    3;2435,2434,2445;,
+    3;2425,2444,2420;,
+    3;2440,2420,2444;,
+    3;2395,2425,2391;,
+    3;2420,2391,2425;,
+    3;2349,2395,2345;,
+    3;2391,2345,2395;,
+    3;2291,2349,2287;,
+    3;2345,2287,2349;,
+    3;2221,2291,2217;,
+    3;2287,2217,2291;,
+    3;2131,2221,2127;,
+    3;2217,2127,2221;,
+    3;2033,2131,2027;,
+    3;2127,2027,2131;,
+    3;1912,2033,1907;,
+    3;2027,1907,2033;,
+    3;1769,1912,1763;,
+    3;1907,1763,1912;,
+    3;1603,1769,1599;,
+    3;1763,1599,1769;,
+    3;1381,1603,1377;,
+    3;1599,1377,1603;,
+    3;1071,1381,1075;,
+    3;1377,1075,1381;,
+    3;849,1071,855;,
+    3;1075,855,1071;,
+    3;683,849,693;,
+    3;855,693,849;,
+    3;541,683,549;,
+    3;693,549,683;,
+    3;419,541,427;,
+    3;549,427,541;,
+    3;321,419,327;,
+    3;427,327,419;,
+    3;231,321,237;,
+    3;327,237,321;,
+    3;161,231,167;,
+    3;237,167,231;,
+    3;104,161,109;,
+    3;167,109,161;,
+    3;57,104,63;,
+    3;109,63,104;,
+    3;27,57,33;,
+    3;63,33,57;,
+    3;9,27,13;,
+    3;33,13,27;,
+    3;1,9,3;,
+    3;13,3,9;,
+    3;7,1,12;,
+    3;3,12,1;,
+    3;26,7,30;,
+    3;12,30,7;,
+    3;55,26,60;,
+    3;30,60,26;,
+    3;102,55,106;,
+    3;60,106,55;,
+    3;160,102,164;,
+    3;106,164,102;,
+    3;230,160,234;,
+    3;164,234,160;,
+    3;320,230,324;,
+    3;234,324,230;,
+    3;418,320,424;,
+    3;324,424,320;,
+    3;540,418,544;,
+    3;424,544,418;,
+    3;682,540,688;,
+    3;544,688,540;,
+    3;848,682,852;,
+    3;688,852,682;,
+    3;1070,848,1074;,
+    3;852,1074,848;,
+    3;1380,1070,1376;,
+    3;1074,1376,1070;,
+    3;1602,1380,1596;,
+    3;1376,1596,1380;,
+    3;1768,1602,1758;,
+    3;1596,1758,1602;,
+    3;1910,1768,1902;,
+    3;1758,1902,1768;,
+    3;2032,1910,2024;,
+    3;1902,2024,1910;,
+    3;2130,2032,2124;,
+    3;2024,2124,2032;,
+    3;2220,2130,2214;,
+    3;2124,2214,2130;,
+    3;2289,2220,2283;,
+    3;2214,2283,2220;,
+    3;2348,2289,2342;,
+    3;2283,2342,2289;,
+    3;2394,2348,2388;,
+    3;2342,2388,2348;,
+    3;2424,2394,2417;,
+    3;2388,2417,2394;,
+    3;2441,2424,2437;,
+    3;2417,2437,2424;,
+    3;2449,2441,2445;,
+    3;2437,2445,2441;,
+    3;2444,2449,2440;,
+    3;2445,2440,2449;,
+    3;2429,2448,2425;,
+    3;2444,2425,2448;,
+    3;2399,2429,2395;,
+    3;2425,2395,2429;,
+    3;2353,2399,2349;,
+    3;2395,2349,2399;,
+    3;2295,2353,2291;,
+    3;2349,2291,2353;,
+    3;2225,2295,2221;,
+    3;2291,2221,2295;,
+    3;2139,2225,2131;,
+    3;2221,2131,2225;,
+    3;2037,2139,2033;,
+    3;2131,2033,2139;,
+    3;1915,2037,1912;,
+    3;2033,1912,2037;,
+    3;1773,1915,1769;,
+    3;1912,1769,1915;,
+    3;1607,1773,1603;,
+    3;1769,1603,1773;,
+    3;1383,1607,1381;,
+    3;1603,1381,1607;,
+    3;1067,1383,1071;,
+    3;1381,1071,1383;,
+    3;843,1067,849;,
+    3;1071,849,1067;,
+    3;677,843,683;,
+    3;849,683,843;,
+    3;535,677,541;,
+    3;683,541,677;,
+    3;413,535,419;,
+    3;541,419,535;,
+    3;311,413,321;,
+    3;419,321,413;,
+    3;225,311,231;,
+    3;321,231,311;,
+    3;155,225,161;,
+    3;231,161,225;,
+    3;98,155,104;,
+    3;161,104,155;,
+    3;51,98,57;,
+    3;104,57,98;,
+    3;21,51,27;,
+    3;57,27,51;,
+    3;4,21,9;,
+    3;27,9,21;,
+    3;0,4,1;,
+    3;9,1,4;,
+    3;5,0,7;,
+    3;1,7,0;,
+    3;22,5,26;,
+    3;7,26,5;,
+    3;52,22,55;,
+    3;26,55,22;,
+    3;97,52,102;,
+    3;55,102,52;,
+    3;156,97,160;,
+    3;102,160,97;,
+    3;226,156,230;,
+    3;160,230,156;,
+    3;312,226,320;,
+    3;230,320,226;,
+    3;414,312,418;,
+    3;320,418,312;,
+    3;536,414,540;,
+    3;418,540,414;,
+    3;678,536,682;,
+    3;540,682,536;,
+    3;844,678,848;,
+    3;682,848,678;,
+    3;1068,844,1070;,
+    3;848,1070,844;,
+    3;1384,1068,1380;,
+    3;1070,1380,1068;,
+    3;1608,1384,1602;,
+    3;1380,1602,1384;,
+    3;1774,1608,1768;,
+    3;1602,1768,1608;,
+    3;1916,1774,1910;,
+    3;1768,1910,1774;,
+    3;2038,1916,2032;,
+    3;1910,2032,1916;,
+    3;2140,2038,2130;,
+    3;2032,2130,2038;,
+    3;2226,2140,2220;,
+    3;2130,2220,2140;,
+    3;2296,2226,2289;,
+    3;2220,2289,2226;,
+    3;2354,2296,2348;,
+    3;2289,2348,2296;,
+    3;2400,2354,2394;,
+    3;2348,2394,2354;,
+    3;2430,2400,2424;,
+    3;2394,2424,2400;,
+    3;2447,2430,2441;,
+    3;2424,2441,2430;,
+    3;2451,2447,2449;,
+    3;2441,2449,2447;,
+    3;2448,2451,2444;,
+    3;2449,2444,2451;,
+    3;2448,2429,2442;,
+    3;2429,2423,2442;,
+    3;2429,2399,2423;,
+    3;2399,2393,2423;,
+    3;2399,2353,2393;,
+    3;2353,2347,2393;,
+    3;2353,2295,2347;,
+    3;2295,2290,2347;,
+    3;2295,2225,2290;,
+    3;2225,2219,2290;,
+    3;2225,2139,2219;,
+    3;2139,2129,2219;,
+    3;2139,2037,2129;,
+    3;2037,2031,2129;,
+    3;2037,1915,2031;,
+    3;1915,1909,2031;,
+    3;1915,1773,1909;,
+    3;1773,1767,1909;,
+    3;1773,1607,1767;,
+    3;1607,1601,1767;,
+    3;1607,1383,1601;,
+    3;1383,1379,1601;,
+    3;1383,1067,1379;,
+    3;1067,1069,1379;,
+    3;1067,843,1069;,
+    3;843,847,1069;,
+    3;843,677,847;,
+    3;677,681,847;,
+    3;677,535,681;,
+    3;535,539,681;,
+    3;535,413,539;,
+    3;413,417,539;,
+    3;413,311,417;,
+    3;311,319,417;,
+    3;311,225,319;,
+    3;225,229,319;,
+    3;225,155,229;,
+    3;155,159,229;,
+    3;155,98,159;,
+    3;98,101,159;,
+    3;98,51,101;,
+    3;51,56,101;,
+    3;51,21,56;,
+    3;21,25,56;,
+    3;21,4,25;,
+    3;4,8,25;,
+    3;4,0,8;,
+    3;0,2,8;,
+    3;0,5,2;,
+    3;5,10,2;,
+    3;5,22,10;,
+    3;22,28,10;,
+    3;22,52,28;,
+    3;52,58,28;,
+    3;52,97,58;,
+    3;97,103,58;,
+    3;97,156,103;,
+    3;156,162,103;,
+    3;156,226,162;,
+    3;226,232,162;,
+    3;226,312,232;,
+    3;312,322,232;,
+    3;312,414,322;,
+    3;414,420,322;,
+    3;414,536,420;,
+    3;536,542,420;,
+    3;536,678,542;,
+    3;678,684,542;,
+    3;678,844,684;,
+    3;844,850,684;,
+    3;844,1068,850;,
+    3;1068,1072,850;,
+    3;1068,1384,1072;,
+    3;1384,1382,1072;,
+    3;1384,1608,1382;,
+    3;1608,1604,1382;,
+    3;1608,1774,1604;,
+    3;1774,1770,1604;,
+    3;1774,1916,1770;,
+    3;1916,1911,1770;,
+    3;1916,2038,1911;,
+    3;2038,2034,1911;,
+    3;2038,2140,2034;,
+    3;2140,2132,2034;,
+    3;2140,2226,2132;,
+    3;2226,2222,2132;,
+    3;2226,2296,2222;,
+    3;2296,2292,2222;,
+    3;2296,2354,2292;,
+    3;2354,2350,2292;,
+    3;2354,2400,2350;,
+    3;2400,2396,2350;,
+    3;2400,2430,2396;,
+    3;2430,2426,2396;,
+    3;2430,2447,2426;,
+    3;2447,2443,2426;,
+    3;2447,2451,2443;,
+    3;2451,2450,2443;,
+    3;2451,2448,2450;,
+    3;2448,2442,2450;,
+    3;2442,2423,2438;,
+    3;2423,2416,2438;,
+    3;2423,2393,2416;,
+    3;2393,2387,2416;,
+    3;2393,2347,2387;,
+    3;2347,2341,2387;,
+    3;2347,2290,2341;,
+    3;2290,2284,2341;,
+    3;2290,2219,2284;,
+    3;2219,2213,2284;,
+    3;2219,2129,2213;,
+    3;2129,2123,2213;,
+    3;2129,2031,2123;,
+    3;2031,2023,2123;,
+    3;2031,1909,2023;,
+    3;1909,1901,2023;,
+    3;1909,1767,1901;,
+    3;1767,1757,1901;,
+    3;1767,1601,1757;,
+    3;1601,1595,1757;,
+    3;1601,1379,1595;,
+    3;1379,1375,1595;,
+    3;1379,1069,1375;,
+    3;1069,1073,1375;,
+    3;1069,847,1073;,
+    3;847,851,1073;,
+    3;847,681,851;,
+    3;681,687,851;,
+    3;681,539,687;,
+    3;539,543,687;,
+    3;539,417,543;,
+    3;417,423,543;,
+    3;417,319,423;,
+    3;319,323,423;,
+    3;319,229,323;,
+    3;229,233,323;,
+    3;229,159,233;,
+    3;159,163,233;,
+    3;159,101,163;,
+    3;101,105,163;,
+    3;101,56,105;,
+    3;56,59,105;,
+    3;56,25,59;,
+    3;25,29,59;,
+    3;25,8,29;,
+    3;8,11,29;,
+    3;8,2,11;,
+    3;2,6,11;,
+    3;2,10,6;,
+    3;10,14,6;,
+    3;10,28,14;,
+    3;28,34,14;,
+    3;28,58,34;,
+    3;58,64,34;,
+    3;58,103,64;,
+    3;103,110,64;,
+    3;103,162,110;,
+    3;162,168,110;,
+    3;162,232,168;,
+    3;232,238,168;,
+    3;232,322,238;,
+    3;322,328,238;,
+    3;322,420,328;,
+    3;420,428,328;,
+    3;420,542,428;,
+    3;542,550,428;,
+    3;542,684,550;,
+    3;684,694,550;,
+    3;684,850,694;,
+    3;850,856,694;,
+    3;850,1072,856;,
+    3;1072,1076,856;,
+    3;1072,1382,1076;,
+    3;1382,1378,1076;,
+    3;1382,1604,1378;,
+    3;1604,1600,1378;,
+    3;1604,1770,1600;,
+    3;1770,1764,1600;,
+    3;1770,1911,1764;,
+    3;1911,1908,1764;,
+    3;1911,2034,1908;,
+    3;2034,2028,1908;,
+    3;2034,2132,2028;,
+    3;2132,2128,2028;,
+    3;2132,2222,2128;,
+    3;2222,2218,2128;,
+    3;2222,2292,2218;,
+    3;2292,2288,2218;,
+    3;2292,2350,2288;,
+    3;2350,2346,2288;,
+    3;2350,2396,2346;,
+    3;2396,2392,2346;,
+    3;2396,2426,2392;,
+    3;2426,2421,2392;,
+    3;2426,2443,2421;,
+    3;2443,2439,2421;,
+    3;2443,2450,2439;,
+    3;2450,2446,2439;,
+    3;2450,2442,2446;,
+    3;2442,2438,2446;,
+    3;2438,2416,2432;,
+    3;2416,2411,2432;,
+    3;2416,2387,2411;,
+    3;2387,2377,2411;,
+    3;2387,2341,2377;,
+    3;2341,2331,2377;,
+    3;2341,2284,2331;,
+    3;2284,2277,2331;,
+    3;2284,2213,2277;,
+    3;2213,2203,2277;,
+    3;2213,2123,2203;,
+    3;2123,2117,2203;,
+    3;2123,2023,2117;,
+    3;2023,2015,2117;,
+    3;2023,1901,2015;,
+    3;1901,1893,2015;,
+    3;1901,1757,1893;,
+    3;1757,1751,1893;,
+    3;1757,1595,1751;,
+    3;1595,1589,1751;,
+    3;1595,1375,1589;,
+    3;1375,1371,1589;,
+    3;1375,1073,1371;,
+    3;1073,1077,1371;,
+    3;1073,851,1077;,
+    3;851,859,1077;,
+    3;851,687,859;,
+    3;687,697,859;,
+    3;687,543,697;,
+    3;543,555,697;,
+    3;543,423,555;,
+    3;423,433,555;,
+    3;423,323,433;,
+    3;323,331,433;,
+    3;323,233,331;,
+    3;233,245,331;,
+    3;233,163,245;,
+    3;163,171,245;,
+    3;163,105,171;,
+    3;105,117,171;,
+    3;105,59,117;,
+    3;59,71,117;,
+    3;59,29,71;,
+    3;29,38,71;,
+    3;29,11,38;,
+    3;11,18,38;,
+    3;11,6,18;,
+    3;6,16,18;,
+    3;6,14,16;,
+    3;14,20,16;,
+    3;14,34,20;,
+    3;34,40,20;,
+    3;34,64,40;,
+    3;64,74,40;,
+    3;64,110,74;,
+    3;110,120,74;,
+    3;110,168,120;,
+    3;168,174,120;,
+    3;168,238,174;,
+    3;238,248,174;,
+    3;238,328,248;,
+    3;328,334,248;,
+    3;328,428,334;,
+    3;428,436,334;,
+    3;428,550,436;,
+    3;550,558,436;,
+    3;550,694,558;,
+    3;694,700,558;,
+    3;694,856,700;,
+    3;856,862,700;,
+    3;856,1076,862;,
+    3;1076,1080,862;,
+    3;1076,1378,1080;,
+    3;1378,1374,1080;,
+    3;1378,1600,1374;,
+    3;1600,1592,1374;,
+    3;1600,1764,1592;,
+    3;1764,1754,1592;,
+    3;1764,1908,1754;,
+    3;1908,1896,1754;,
+    3;1908,2028,1896;,
+    3;2028,2018,1896;,
+    3;2028,2128,2018;,
+    3;2128,2120,2018;,
+    3;2128,2218,2120;,
+    3;2218,2206,2120;,
+    3;2218,2288,2206;,
+    3;2288,2280,2206;,
+    3;2288,2346,2280;,
+    3;2346,2334,2280;,
+    3;2346,2392,2334;,
+    3;2392,2380,2334;,
+    3;2392,2421,2380;,
+    3;2421,2414,2380;,
+    3;2421,2439,2414;,
+    3;2439,2433,2414;,
+    3;2439,2446,2433;,
+    3;2446,2436,2433;,
+    3;2446,2438,2436;,
+    3;2438,2432,2436;,
+    3;2432,2411,2418;,
+    3;2411,2401,2418;,
+    3;2411,2377,2401;,
+    3;2377,2369,2401;,
+    3;2377,2331,2369;,
+    3;2331,2325,2369;,
+    3;2331,2277,2325;,
+    3;2277,2263,2325;,
+    3;2277,2203,2263;,
+    3;2203,2189,2263;,
+    3;2203,2117,2189;,
+    3;2117,2107,2189;,
+    3;2117,2015,2107;,
+    3;2015,2009,2107;,
+    3;2015,1893,2009;,
+    3;1893,1883,2009;,
+    3;1893,1751,1883;,
+    3;1751,1745,1883;,
+    3;1751,1589,1745;,
+    3;1589,1577,1745;,
+    3;1589,1371,1577;,
+    3;1371,1365,1577;,
+    3;1371,1077,1365;,
+    3;1077,1083,1365;,
+    3;1077,859,1083;,
+    3;859,869,1083;,
+    3;859,697,869;,
+    3;697,701,869;,
+    3;697,555,701;,
+    3;555,561,701;,
+    3;555,433,561;,
+    3;433,437,561;,
+    3;433,331,437;,
+    3;331,339,437;,
+    3;331,245,339;,
+    3;245,257,339;,
+    3;245,171,257;,
+    3;171,183,257;,
+    3;171,117,183;,
+    3;117,121,183;,
+    3;117,71,121;,
+    3;71,77,121;,
+    3;71,38,77;,
+    3;38,47,77;,
+    3;38,18,47;,
+    3;18,32,47;,
+    3;18,16,32;,
+    3;16,24,32;,
+    3;16,20,24;,
+    3;20,36,24;,
+    3;20,40,36;,
+    3;40,50,36;,
+    3;40,74,50;,
+    3;74,82,50;,
+    3;74,120,82;,
+    3;120,126,82;,
+    3;120,174,126;,
+    3;174,187,126;,
+    3;174,248,187;,
+    3;248,262,187;,
+    3;248,334,262;,
+    3;334,344,262;,
+    3;334,436,344;,
+    3;436,442,344;,
+    3;436,558,442;,
+    3;558,568,442;,
+    3;558,700,568;,
+    3;700,706,568;,
+    3;700,862,706;,
+    3;862,874,706;,
+    3;862,1080,874;,
+    3;1080,1086,874;,
+    3;1080,1374,1086;,
+    3;1374,1368,1086;,
+    3;1374,1592,1368;,
+    3;1592,1582,1368;,
+    3;1592,1754,1582;,
+    3;1754,1750,1582;,
+    3;1754,1896,1750;,
+    3;1896,1890,1750;,
+    3;1896,2018,1890;,
+    3;2018,2014,1890;,
+    3;2018,2120,2014;,
+    3;2120,2112,2014;,
+    3;2120,2206,2112;,
+    3;2206,2194,2112;,
+    3;2206,2280,2194;,
+    3;2280,2268,2194;,
+    3;2280,2334,2268;,
+    3;2334,2330,2268;,
+    3;2334,2380,2330;,
+    3;2380,2374,2330;,
+    3;2380,2414,2374;,
+    3;2414,2404,2374;,
+    3;2414,2433,2404;,
+    3;2433,2419,2404;,
+    3;2433,2436,2419;,
+    3;2436,2427,2419;,
+    3;2436,2432,2427;,
+    3;2432,2418,2427;,
+    3;2418,2401,2406;,
+    3;2401,2381,2406;,
+    3;2401,2369,2381;,
+    3;2369,2359,2381;,
+    3;2369,2325,2359;,
+    3;2325,2309,2359;,
+    3;2325,2263,2309;,
+    3;2263,2255,2309;,
+    3;2263,2189,2255;,
+    3;2189,2183,2255;,
+    3;2189,2107,2183;,
+    3;2107,2097,2183;,
+    3;2107,2009,2097;,
+    3;2009,1991,2097;,
+    3;2009,1883,1991;,
+    3;1883,1873,1991;,
+    3;1883,1745,1873;,
+    3;1745,1735,1873;,
+    3;1745,1577,1735;,
+    3;1577,1565,1735;,
+    3;1577,1365,1565;,
+    3;1365,1359,1565;,
+    3;1365,1083,1359;,
+    3;1083,1089,1359;,
+    3;1083,869,1089;,
+    3;869,883,1089;,
+    3;869,701,883;,
+    3;701,713,883;,
+    3;701,561,713;,
+    3;561,575,713;,
+    3;561,437,575;,
+    3;437,457,575;,
+    3;437,339,457;,
+    3;339,351,457;,
+    3;339,257,351;,
+    3;257,265,351;,
+    3;257,183,265;,
+    3;183,193,265;,
+    3;183,121,193;,
+    3;121,140,193;,
+    3;121,77,140;,
+    3;77,89,140;,
+    3;77,47,89;,
+    3;47,68,89;,
+    3;47,32,68;,
+    3;32,44,68;,
+    3;32,24,44;,
+    3;24,41,44;,
+    3;24,36,41;,
+    3;36,46,41;,
+    3;36,50,46;,
+    3;50,70,46;,
+    3;50,82,70;,
+    3;82,92,70;,
+    3;82,126,92;,
+    3;126,142,92;,
+    3;126,187,142;,
+    3;187,196,142;,
+    3;187,262,196;,
+    3;262,268,196;,
+    3;262,344,268;,
+    3;344,354,268;,
+    3;344,442,354;,
+    3;442,460,354;,
+    3;442,568,460;,
+    3;568,578,460;,
+    3;568,706,578;,
+    3;706,716,578;,
+    3;706,874,716;,
+    3;874,886,716;,
+    3;874,1086,886;,
+    3;1086,1092,886;,
+    3;1086,1368,1092;,
+    3;1368,1362,1092;,
+    3;1368,1582,1362;,
+    3;1582,1568,1362;,
+    3;1582,1750,1568;,
+    3;1750,1738,1568;,
+    3;1750,1890,1738;,
+    3;1890,1876,1738;,
+    3;1890,2014,1876;,
+    3;2014,1994,1876;,
+    3;2014,2112,1994;,
+    3;2112,2100,1994;,
+    3;2112,2194,2100;,
+    3;2194,2186,2100;,
+    3;2194,2268,2186;,
+    3;2268,2258,2186;,
+    3;2268,2330,2258;,
+    3;2330,2312,2258;,
+    3;2330,2374,2312;,
+    3;2374,2362,2312;,
+    3;2374,2404,2362;,
+    3;2404,2384,2362;,
+    3;2404,2419,2384;,
+    3;2419,2407,2384;,
+    3;2419,2427,2407;,
+    3;2427,2410,2407;,
+    3;2427,2418,2410;,
+    3;2418,2406,2410;,
+    3;2406,2381,2386;,
+    3;2381,2367,2386;,
+    3;2381,2359,2367;,
+    3;2359,2335,2367;,
+    3;2359,2309,2335;,
+    3;2309,2299,2335;,
+    3;2309,2255,2299;,
+    3;2255,2241,2299;,
+    3;2255,2183,2241;,
+    3;2183,2167,2241;,
+    3;2183,2097,2167;,
+    3;2097,2087,2167;,
+    3;2097,1991,2087;,
+    3;1991,1981,2087;,
+    3;1991,1873,1981;,
+    3;1873,1867,1981;,
+    3;1873,1735,1867;,
+    3;1735,1723,1867;,
+    3;1735,1565,1723;,
+    3;1565,1559,1723;,
+    3;1565,1359,1559;,
+    3;1359,1351,1559;,
+    3;1359,1089,1351;,
+    3;1089,1093,1351;,
+    3;1089,883,1093;,
+    3;883,889,1093;,
+    3;883,713,889;,
+    3;713,725,889;,
+    3;713,575,725;,
+    3;575,579,725;,
+    3;575,457,579;,
+    3;457,465,579;,
+    3;457,351,465;,
+    3;351,359,465;,
+    3;351,265,359;,
+    3;265,279,359;,
+    3;265,193,279;,
+    3;193,205,279;,
+    3;193,140,205;,
+    3;140,149,205;,
+    3;140,89,149;,
+    3;89,113,149;,
+    3;89,68,113;,
+    3;68,79,113;,
+    3;68,44,79;,
+    3;44,61,79;,
+    3;44,41,61;,
+    3;41,54,61;,
+    3;41,46,54;,
+    3;46,65,54;,
+    3;46,70,65;,
+    3;70,84,65;,
+    3;70,92,84;,
+    3;92,116,84;,
+    3;92,142,116;,
+    3;142,151,116;,
+    3;142,196,151;,
+    3;196,210,151;,
+    3;196,268,210;,
+    3;268,284,210;,
+    3;268,354,284;,
+    3;354,364,284;,
+    3;354,460,364;,
+    3;460,470,364;,
+    3;460,578,470;,
+    3;578,584,470;,
+    3;578,716,584;,
+    3;716,728,584;,
+    3;716,886,728;,
+    3;886,892,728;,
+    3;886,1092,892;,
+    3;1092,1100,892;,
+    3;1092,1362,1100;,
+    3;1362,1358,1100;,
+    3;1362,1568,1358;,
+    3;1568,1563,1358;,
+    3;1568,1738,1563;,
+    3;1738,1727,1563;,
+    3;1738,1876,1727;,
+    3;1876,1872,1727;,
+    3;1876,1994,1872;,
+    3;1994,1986,1872;,
+    3;1994,2100,1986;,
+    3;2100,2092,1986;,
+    3;2100,2186,2092;,
+    3;2186,2172,2092;,
+    3;2186,2258,2172;,
+    3;2258,2246,2172;,
+    3;2258,2312,2246;,
+    3;2312,2304,2246;,
+    3;2312,2362,2304;,
+    3;2362,2338,2304;,
+    3;2362,2384,2338;,
+    3;2384,2372,2338;,
+    3;2384,2407,2372;,
+    3;2407,2389,2372;,
+    3;2407,2410,2389;,
+    3;2410,2398,2389;,
+    3;2410,2406,2398;,
+    3;2406,2386,2398;,
+    3;2386,2367,2364;,
+    3;2367,2355,2364;,
+    3;2367,2335,2355;,
+    3;2335,2317,2355;,
+    3;2335,2299,2317;,
+    3;2299,2273,2317;,
+    3;2299,2241,2273;,
+    3;2241,2227,2273;,
+    3;2241,2167,2227;,
+    3;2167,2153,2227;,
+    3;2167,2087,2153;,
+    3;2087,2067,2153;,
+    3;2087,1981,2067;,
+    3;1981,1971,2067;,
+    3;1981,1867,1971;,
+    3;1867,1849,1971;,
+    3;1867,1723,1849;,
+    3;1723,1715,1849;,
+    3;1723,1559,1715;,
+    3;1559,1553,1715;,
+    3;1559,1351,1553;,
+    3;1351,1341,1553;,
+    3;1351,1093,1341;,
+    3;1093,1105,1341;,
+    3;1093,889,1105;,
+    3;889,895,1105;,
+    3;889,725,895;,
+    3;725,733,895;,
+    3;725,579,733;,
+    3;579,599,733;,
+    3;579,465,599;,
+    3;465,477,599;,
+    3;465,359,477;,
+    3;359,381,477;,
+    3;359,279,381;,
+    3;279,295,381;,
+    3;279,205,295;,
+    3;205,221,295;,
+    3;205,149,221;,
+    3;149,176,221;,
+    3;149,113,176;,
+    3;113,131,176;,
+    3;113,79,131;,
+    3;79,93,131;,
+    3;79,61,93;,
+    3;61,86,93;,
+    3;61,54,86;,
+    3;54,75,86;,
+    3;54,65,75;,
+    3;65,88,75;,
+    3;65,84,88;,
+    3;84,96,88;,
+    3;84,116,96;,
+    3;116,134,96;,
+    3;116,151,134;,
+    3;151,177,134;,
+    3;151,210,177;,
+    3;210,224,177;,
+    3;210,284,224;,
+    3;284,298,224;,
+    3;284,364,298;,
+    3;364,384,298;,
+    3;364,470,384;,
+    3;470,480,384;,
+    3;470,584,480;,
+    3;584,602,480;,
+    3;584,728,602;,
+    3;728,736,602;,
+    3;728,892,736;,
+    3;892,898,736;,
+    3;892,1100,898;,
+    3;1100,1110,898;,
+    3;1100,1358,1110;,
+    3;1358,1346,1110;,
+    3;1358,1563,1346;,
+    3;1563,1556,1346;,
+    3;1563,1727,1556;,
+    3;1727,1718,1556;,
+    3;1727,1872,1718;,
+    3;1872,1852,1718;,
+    3;1872,1986,1852;,
+    3;1986,1974,1852;,
+    3;1986,2092,1974;,
+    3;2092,2070,1974;,
+    3;2092,2172,2070;,
+    3;2172,2156,2070;,
+    3;2172,2246,2156;,
+    3;2246,2230,2156;,
+    3;2246,2304,2230;,
+    3;2304,2276,2230;,
+    3;2304,2338,2276;,
+    3;2338,2320,2276;,
+    3;2338,2372,2320;,
+    3;2372,2358,2320;,
+    3;2372,2389,2358;,
+    3;2389,2365,2358;,
+    3;2389,2398,2365;,
+    3;2398,2375,2365;,
+    3;2398,2386,2375;,
+    3;2386,2364,2375;,
+    3;2364,2355,2340;,
+    3;2355,2323,2340;,
+    3;2355,2317,2323;,
+    3;2317,2297,2323;,
+    3;2317,2273,2297;,
+    3;2273,2251,2297;,
+    3;2273,2227,2251;,
+    3;2227,2197,2251;,
+    3;2227,2153,2197;,
+    3;2153,2143,2197;,
+    3;2153,2067,2143;,
+    3;2067,2053,2143;,
+    3;2067,1971,2053;,
+    3;1971,1955,2053;,
+    3;1971,1849,1955;,
+    3;1849,1839,1955;,
+    3;1849,1715,1839;,
+    3;1715,1702,1839;,
+    3;1715,1553,1702;,
+    3;1553,1539,1702;,
+    3;1553,1341,1539;,
+    3;1341,1335,1539;,
+    3;1341,1105,1335;,
+    3;1105,1111,1335;,
+    3;1105,895,1111;,
+    3;895,909,1111;,
+    3;895,733,909;,
+    3;733,743,909;,
+    3;733,599,743;,
+    3;599,607,743;,
+    3;599,477,607;,
+    3;477,491,607;,
+    3;477,381,491;,
+    3;381,393,491;,
+    3;381,295,393;,
+    3;295,303,393;,
+    3;295,221,303;,
+    3;221,249,303;,
+    3;221,176,249;,
+    3;176,197,249;,
+    3;176,131,197;,
+    3;131,148,197;,
+    3;131,93,148;,
+    3;93,123,148;,
+    3;93,86,123;,
+    3;86,108,123;,
+    3;86,75,108;,
+    3;75,100,108;,
+    3;75,88,100;,
+    3;88,112,100;,
+    3;88,96,112;,
+    3;96,128,112;,
+    3;96,134,128;,
+    3;134,154,128;,
+    3;134,177,154;,
+    3;177,200,154;,
+    3;177,224,200;,
+    3;224,254,200;,
+    3;224,298,254;,
+    3;298,308,254;,
+    3;298,384,308;,
+    3;384,398,308;,
+    3;384,480,398;,
+    3;480,496,398;,
+    3;480,602,496;,
+    3;602,612,496;,
+    3;602,736,612;,
+    3;736,750,612;,
+    3;736,898,750;,
+    3;898,912,750;,
+    3;898,1110,912;,
+    3;1110,1116,912;,
+    3;1110,1346,1116;,
+    3;1346,1340,1116;,
+    3;1346,1556,1340;,
+    3;1556,1543,1340;,
+    3;1556,1718,1543;,
+    3;1718,1709,1543;,
+    3;1718,1852,1709;,
+    3;1852,1844,1709;,
+    3;1852,1974,1844;,
+    3;1974,1960,1844;,
+    3;1974,2070,1960;,
+    3;2070,2058,1960;,
+    3;2070,2156,2058;,
+    3;2156,2148,2058;,
+    3;2156,2230,2148;,
+    3;2230,2202,2148;,
+    3;2230,2276,2202;,
+    3;2276,2254,2202;,
+    3;2276,2320,2254;,
+    3;2320,2303,2254;,
+    3;2320,2358,2303;,
+    3;2358,2328,2303;,
+    3;2358,2365,2328;,
+    3;2365,2343,2328;,
+    3;2365,2375,2343;,
+    3;2375,2352,2343;,
+    3;2375,2364,2352;,
+    3;2364,2340,2352;,
+    3;2340,2323,2314;,
+    3;2323,2305,2314;,
+    3;2323,2297,2305;,
+    3;2297,2269,2305;,
+    3;2297,2251,2269;,
+    3;2251,2231,2269;,
+    3;2251,2197,2231;,
+    3;2197,2177,2231;,
+    3;2197,2143,2177;,
+    3;2143,2101,2177;,
+    3;2143,2053,2101;,
+    3;2053,2039,2101;,
+    3;2053,1955,2039;,
+    3;1955,1937,2039;,
+    3;1955,1839,1937;,
+    3;1839,1823,1937;,
+    3;1839,1702,1823;,
+    3;1702,1691,1823;,
+    3;1702,1539,1691;,
+    3;1539,1529,1691;,
+    3;1539,1335,1529;,
+    3;1335,1327,1529;,
+    3;1335,1111,1327;,
+    3;1111,1119,1327;,
+    3;1111,909,1119;,
+    3;909,917,1119;,
+    3;909,743,917;,
+    3;743,757,917;,
+    3;743,607,757;,
+    3;607,625,757;,
+    3;607,491,625;,
+    3;491,511,625;,
+    3;491,393,511;,
+    3;393,409,511;,
+    3;393,303,409;,
+    3;303,347,409;,
+    3;303,249,347;,
+    3;249,271,347;,
+    3;249,197,271;,
+    3;197,218,271;,
+    3;197,148,218;,
+    3;148,180,218;,
+    3;148,123,180;,
+    3;123,144,180;,
+    3;123,108,144;,
+    3;108,136,144;,
+    3;108,100,136;,
+    3;100,129,136;,
+    3;100,112,129;,
+    3;112,138,129;,
+    3;112,128,138;,
+    3;128,146,138;,
+    3;128,154,146;,
+    3;154,181,146;,
+    3;154,200,181;,
+    3;200,220,181;,
+    3;200,254,220;,
+    3;254,273,220;,
+    3;254,308,273;,
+    3;308,350,273;,
+    3;308,398,350;,
+    3;398,412,350;,
+    3;398,496,412;,
+    3;496,514,412;,
+    3;496,612,514;,
+    3;612,628,514;,
+    3;612,750,628;,
+    3;750,760,628;,
+    3;750,912,760;,
+    3;912,922,760;,
+    3;912,1116,922;,
+    3;1116,1124,922;,
+    3;1116,1340,1124;,
+    3;1340,1332,1124;,
+    3;1340,1543,1332;,
+    3;1543,1534,1332;,
+    3;1543,1709,1534;,
+    3;1709,1694,1534;,
+    3;1709,1844,1694;,
+    3;1844,1826,1694;,
+    3;1844,1960,1826;,
+    3;1960,1940,1826;,
+    3;1960,2058,1940;,
+    3;2058,2042,1940;,
+    3;2058,2148,2042;,
+    3;2148,2104,2042;,
+    3;2148,2202,2104;,
+    3;2202,2180,2104;,
+    3;2202,2254,2180;,
+    3;2254,2234,2180;,
+    3;2254,2303,2234;,
+    3;2303,2272,2234;,
+    3;2303,2328,2272;,
+    3;2328,2308,2272;,
+    3;2328,2343,2308;,
+    3;2343,2315,2308;,
+    3;2343,2352,2315;,
+    3;2352,2321,2315;,
+    3;2352,2340,2321;,
+    3;2340,2314,2321;,
+    3;2314,2305,2282;,
+    3;2305,2261,2282;,
+    3;2305,2269,2261;,
+    3;2269,2239,2261;,
+    3;2269,2231,2239;,
+    3;2231,2195,2239;,
+    3;2231,2177,2195;,
+    3;2177,2149,2195;,
+    3;2177,2101,2149;,
+    3;2101,2079,2149;,
+    3;2101,2039,2079;,
+    3;2039,2001,2079;,
+    3;2039,1937,2001;,
+    3;1937,1923,2001;,
+    3;1937,1823,1923;,
+    3;1823,1809,1923;,
+    3;1823,1691,1809;,
+    3;1691,1677,1809;,
+    3;1691,1529,1677;,
+    3;1529,1519,1677;,
+    3;1529,1327,1519;,
+    3;1327,1321,1519;,
+    3;1327,1119,1321;,
+    3;1119,1125,1321;,
+    3;1119,917,1125;,
+    3;917,929,1125;,
+    3;917,757,929;,
+    3;757,769,929;,
+    3;757,625,769;,
+    3;625,637,769;,
+    3;625,511,637;,
+    3;511,523,637;,
+    3;511,409,523;,
+    3;409,445,523;,
+    3;409,347,445;,
+    3;347,367,445;,
+    3;347,271,367;,
+    3;271,299,367;,
+    3;271,218,299;,
+    3;218,252,299;,
+    3;218,180,252;,
+    3;180,208,252;,
+    3;180,144,208;,
+    3;144,186,208;,
+    3;144,136,186;,
+    3;136,165,186;,
+    3;136,129,165;,
+    3;129,158,165;,
+    3;129,138,158;,
+    3;138,170,158;,
+    3;138,146,170;,
+    3;146,189,170;,
+    3;146,181,189;,
+    3;181,211,189;,
+    3;181,220,211;,
+    3;220,256,211;,
+    3;220,273,256;,
+    3;273,302,256;,
+    3;273,350,302;,
+    3;350,372,302;,
+    3;350,412,372;,
+    3;412,450,372;,
+    3;412,514,450;,
+    3;514,528,450;,
+    3;514,628,528;,
+    3;628,642,528;,
+    3;628,760,642;,
+    3;760,774,642;,
+    3;760,922,774;,
+    3;922,932,774;,
+    3;922,1124,932;,
+    3;1124,1130,932;,
+    3;1124,1332,1130;,
+    3;1332,1326,1130;,
+    3;1332,1534,1326;,
+    3;1534,1522,1326;,
+    3;1534,1694,1522;,
+    3;1694,1682,1522;,
+    3;1694,1826,1682;,
+    3;1826,1814,1682;,
+    3;1826,1940,1814;,
+    3;1940,1927,1814;,
+    3;1940,2042,1927;,
+    3;2042,2006,1927;,
+    3;2042,2104,2006;,
+    3;2104,2084,2006;,
+    3;2104,2180,2084;,
+    3;2180,2152,2084;,
+    3;2180,2234,2152;,
+    3;2234,2201,2152;,
+    3;2234,2272,2201;,
+    3;2272,2244,2201;,
+    3;2272,2308,2244;,
+    3;2308,2266,2244;,
+    3;2308,2315,2266;,
+    3;2315,2285,2266;,
+    3;2315,2321,2285;,
+    3;2321,2294,2285;,
+    3;2321,2314,2294;,
+    3;2314,2282,2294;,
+    3;2282,2261,2247;,
+    3;2261,2235,2247;,
+    3;2261,2239,2235;,
+    3;2239,2207,2235;,
+    3;2239,2195,2207;,
+    3;2195,2161,2207;,
+    3;2195,2149,2161;,
+    3;2149,2113,2161;,
+    3;2149,2079,2113;,
+    3;2079,2059,2113;,
+    3;2079,2001,2059;,
+    3;2001,1975,2059;,
+    3;2001,1923,1975;,
+    3;1923,1885,1975;,
+    3;1923,1809,1885;,
+    3;1809,1791,1885;,
+    3;1809,1677,1791;,
+    3;1677,1661,1791;,
+    3;1677,1519,1661;,
+    3;1519,1509,1661;,
+    3;1519,1321,1509;,
+    3;1321,1315,1509;,
+    3;1321,1125,1315;,
+    3;1125,1133,1315;,
+    3;1125,929,1133;,
+    3;929,939,1133;,
+    3;929,769,939;,
+    3;769,787,939;,
+    3;769,637,787;,
+    3;637,657,787;,
+    3;637,523,657;,
+    3;523,559,657;,
+    3;523,445,559;,
+    3;445,473,559;,
+    3;445,367,473;,
+    3;367,389,473;,
+    3;367,299,389;,
+    3;299,335,389;,
+    3;299,252,335;,
+    3;252,287,335;,
+    3;252,208,287;,
+    3;208,242,287;,
+    3;208,186,242;,
+    3;186,213,242;,
+    3;186,165,213;,
+    3;165,201,213;,
+    3;165,158,201;,
+    3;158,191,201;,
+    3;158,170,191;,
+    3;170,203,191;,
+    3;170,189,203;,
+    3;189,215,203;,
+    3;189,211,215;,
+    3;211,244,215;,
+    3;211,256,244;,
+    3;256,290,244;,
+    3;256,302,290;,
+    3;302,338,290;,
+    3;302,372,338;,
+    3;372,392,338;,
+    3;372,450,392;,
+    3;450,476,392;,
+    3;450,528,476;,
+    3;528,566,476;,
+    3;528,642,566;,
+    3;642,660,566;,
+    3;642,774,660;,
+    3;774,790,660;,
+    3;774,932,790;,
+    3;932,942,790;,
+    3;932,1130,942;,
+    3;1130,1136,942;,
+    3;1130,1326,1136;,
+    3;1326,1318,1136;,
+    3;1326,1522,1318;,
+    3;1522,1512,1318;,
+    3;1522,1682,1512;,
+    3;1682,1664,1512;,
+    3;1682,1814,1664;,
+    3;1814,1794,1664;,
+    3;1814,1927,1794;,
+    3;1927,1892,1794;,
+    3;1927,2006,1892;,
+    3;2006,1978,1892;,
+    3;2006,2084,1978;,
+    3;2084,2062,1978;,
+    3;2084,2152,2062;,
+    3;2152,2116,2062;,
+    3;2152,2201,2116;,
+    3;2201,2164,2116;,
+    3;2201,2244,2164;,
+    3;2244,2210,2164;,
+    3;2244,2266,2210;,
+    3;2266,2238,2210;,
+    3;2266,2285,2238;,
+    3;2285,2250,2238;,
+    3;2285,2294,2250;,
+    3;2294,2260,2250;,
+    3;2294,2282,2260;,
+    3;2282,2247,2260;,
+    3;2247,2235,2211;,
+    3;2235,2187,2211;,
+    3;2235,2207,2187;,
+    3;2207,2165,2187;,
+    3;2207,2161,2165;,
+    3;2161,2141,2165;,
+    3;2161,2113,2141;,
+    3;2113,2077,2141;,
+    3;2113,2059,2077;,
+    3;2059,2019,2077;,
+    3;2059,1975,2019;,
+    3;1975,1942,2019;,
+    3;1975,1885,1942;,
+    3;1885,1859,1942;,
+    3;1885,1791,1859;,
+    3;1791,1777,1859;,
+    3;1791,1661,1777;,
+    3;1661,1639,1777;,
+    3;1661,1509,1639;,
+    3;1509,1503,1639;,
+    3;1509,1315,1503;,
+    3;1315,1307,1503;,
+    3;1315,1133,1307;,
+    3;1133,1139,1307;,
+    3;1133,939,1139;,
+    3;939,945,1139;,
+    3;939,787,945;,
+    3;787,809,945;,
+    3;787,657,809;,
+    3;657,669,809;,
+    3;657,559,669;,
+    3;559,589,669;,
+    3;559,473,589;,
+    3;473,505,589;,
+    3;473,389,505;,
+    3;389,421,505;,
+    3;389,335,421;,
+    3;335,369,421;,
+    3;335,287,369;,
+    3;287,306,369;,
+    3;287,242,306;,
+    3;242,281,306;,
+    3;242,213,281;,
+    3;213,259,281;,
+    3;213,201,259;,
+    3;201,236,259;,
+    3;201,191,236;,
+    3;191,227,236;,
+    3;191,203,227;,
+    3;203,240,227;,
+    3;203,215,240;,
+    3;215,264,240;,
+    3;215,244,264;,
+    3;244,286,264;,
+    3;244,290,286;,
+    3;290,310,286;,
+    3;290,338,310;,
+    3;338,374,310;,
+    3;338,392,374;,
+    3;392,432,374;,
+    3;392,476,432;,
+    3;476,508,432;,
+    3;476,566,508;,
+    3;566,591,508;,
+    3;566,660,591;,
+    3;660,674,591;,
+    3;660,790,674;,
+    3;790,812,674;,
+    3;790,942,812;,
+    3;942,948,812;,
+    3;942,1136,948;,
+    3;1136,1144,948;,
+    3;1136,1318,1144;,
+    3;1318,1312,1144;,
+    3;1318,1512,1312;,
+    3;1512,1506,1312;,
+    3;1512,1664,1506;,
+    3;1664,1642,1506;,
+    3;1664,1794,1642;,
+    3;1794,1782,1642;,
+    3;1794,1892,1782;,
+    3;1892,1863,1782;,
+    3;1892,1978,1863;,
+    3;1978,1948,1863;,
+    3;1978,2062,1948;,
+    3;2062,2030,1948;,
+    3;2062,2116,2030;,
+    3;2116,2083,2030;,
+    3;2116,2164,2083;,
+    3;2164,2146,2083;,
+    3;2164,2210,2146;,
+    3;2210,2170,2146;,
+    3;2210,2238,2170;,
+    3;2238,2192,2170;,
+    3;2238,2250,2192;,
+    3;2250,2216,2192;,
+    3;2250,2260,2216;,
+    3;2260,2223,2216;,
+    3;2260,2247,2223;,
+    3;2247,2211,2223;,
+    3;2211,2187,2173;,
+    3;2187,2157,2173;,
+    3;2187,2165,2157;,
+    3;2165,2133,2157;,
+    3;2165,2141,2133;,
+    3;2141,2093,2133;,
+    3;2141,2077,2093;,
+    3;2077,2047,2093;,
+    3;2077,2019,2047;,
+    3;2019,1987,2047;,
+    3;2019,1942,1987;,
+    3;1942,1929,1987;,
+    3;1942,1859,1929;,
+    3;1859,1831,1929;,
+    3;1859,1777,1831;,
+    3;1777,1731,1831;,
+    3;1777,1639,1731;,
+    3;1639,1629,1731;,
+    3;1639,1503,1629;,
+    3;1503,1485,1629;,
+    3;1503,1307,1485;,
+    3;1307,1299,1485;,
+    3;1307,1139,1299;,
+    3;1139,1147,1299;,
+    3;1139,945,1147;,
+    3;945,963,1147;,
+    3;945,809,963;,
+    3;809,819,963;,
+    3;809,669,819;,
+    3;669,717,819;,
+    3;669,589,717;,
+    3;589,617,717;,
+    3;589,505,617;,
+    3;505,520,617;,
+    3;505,421,520;,
+    3;421,461,520;,
+    3;421,369,461;,
+    3;369,402,461;,
+    3;369,306,402;,
+    3;306,356,402;,
+    3;306,281,356;,
+    3;281,315,356;,
+    3;281,259,315;,
+    3;259,292,315;,
+    3;259,236,292;,
+    3;236,275,292;,
+    3;236,227,275;,
+    3;227,270,275;,
+    3;227,240,270;,
+    3;240,277,270;,
+    3;240,264,277;,
+    3;264,294,277;,
+    3;264,286,294;,
+    3;286,318,294;,
+    3;286,310,318;,
+    3;310,357,318;,
+    3;310,374,357;,
+    3;374,403,357;,
+    3;374,432,403;,
+    3;432,464,403;,
+    3;432,508,464;,
+    3;508,521,464;,
+    3;508,591,521;,
+    3;591,620,521;,
+    3;591,674,620;,
+    3;674,720,620;,
+    3;674,812,720;,
+    3;812,822,720;,
+    3;812,948,822;,
+    3;948,966,822;,
+    3;948,1144,966;,
+    3;1144,1152,966;,
+    3;1144,1312,1152;,
+    3;1312,1304,1152;,
+    3;1312,1506,1304;,
+    3;1506,1488,1304;,
+    3;1506,1642,1488;,
+    3;1642,1632,1488;,
+    3;1642,1782,1632;,
+    3;1782,1734,1632;,
+    3;1782,1863,1734;,
+    3;1863,1834,1734;,
+    3;1863,1948,1834;,
+    3;1948,1932,1834;,
+    3;1948,2030,1932;,
+    3;2030,1990,1932;,
+    3;2030,2083,1990;,
+    3;2083,2050,1990;,
+    3;2083,2146,2050;,
+    3;2146,2096,2050;,
+    3;2146,2170,2096;,
+    3;2170,2136,2096;,
+    3;2170,2192,2136;,
+    3;2192,2160,2136;,
+    3;2192,2216,2160;,
+    3;2216,2176,2160;,
+    3;2216,2223,2176;,
+    3;2223,2182,2176;,
+    3;2223,2211,2182;,
+    3;2211,2173,2182;,
+    3;2173,2157,2121;,
+    3;2157,2105,2121;,
+    3;2157,2133,2105;,
+    3;2133,2085,2105;,
+    3;2133,2093,2085;,
+    3;2093,2051,2085;,
+    3;2093,2047,2051;,
+    3;2047,1999,2051;,
+    3;2047,1987,1999;,
+    3;1987,1941,1999;,
+    3;1987,1929,1941;,
+    3;1929,1877,1941;,
+    3;1929,1831,1877;,
+    3;1831,1796,1877;,
+    3;1831,1731,1796;,
+    3;1731,1705,1796;,
+    3;1731,1629,1705;,
+    3;1629,1611,1705;,
+    3;1629,1485,1611;,
+    3;1485,1469,1611;,
+    3;1485,1299,1469;,
+    3;1299,1295,1469;,
+    3;1299,1147,1295;,
+    3;1147,1153,1295;,
+    3;1147,963,1153;,
+    3;963,980,1153;,
+    3;963,819,980;,
+    3;819,835,980;,
+    3;819,717,835;,
+    3;717,737,835;,
+    3;717,617,737;,
+    3;617,649,737;,
+    3;617,520,649;,
+    3;520,571,649;,
+    3;520,461,571;,
+    3;461,503,571;,
+    3;461,402,503;,
+    3;402,446,503;,
+    3;402,356,446;,
+    3;356,396,446;,
+    3;356,315,396;,
+    3;315,361,396;,
+    3;315,292,361;,
+    3;292,342,361;,
+    3;292,275,342;,
+    3;275,326,342;,
+    3;275,270,326;,
+    3;270,314,326;,
+    3;270,277,314;,
+    3;277,329,314;,
+    3;277,294,329;,
+    3;294,346,329;,
+    3;294,318,346;,
+    3;318,365,346;,
+    3;318,357,365;,
+    3;357,399,365;,
+    3;357,403,399;,
+    3;403,452,399;,
+    3;403,464,452;,
+    3;464,510,452;,
+    3;464,521,510;,
+    3;521,574,510;,
+    3;521,620,574;,
+    3;620,654,574;,
+    3;620,720,654;,
+    3;720,746,654;,
+    3;720,822,746;,
+    3;822,840,746;,
+    3;822,966,840;,
+    3;966,982,840;,
+    3;966,1152,982;,
+    3;1152,1155,982;,
+    3;1152,1304,1155;,
+    3;1304,1298,1155;,
+    3;1304,1488,1298;,
+    3;1488,1472,1298;,
+    3;1488,1632,1472;,
+    3;1632,1616,1472;,
+    3;1632,1734,1616;,
+    3;1734,1714,1616;,
+    3;1734,1834,1714;,
+    3;1834,1801,1714;,
+    3;1834,1932,1801;,
+    3;1932,1880,1801;,
+    3;1932,1990,1880;,
+    3;1990,1947,1880;,
+    3;1990,2050,1947;,
+    3;2050,2005,1947;,
+    3;2050,2096,2005;,
+    3;2096,2056,2005;,
+    3;2096,2136,2056;,
+    3;2136,2090,2056;,
+    3;2136,2160,2090;,
+    3;2160,2110,2090;,
+    3;2160,2176,2110;,
+    3;2176,2126,2110;,
+    3;2176,2182,2126;,
+    3;2182,2137,2126;,
+    3;2182,2173,2137;,
+    3;2173,2121,2137;,
+    3;2121,2105,2072;,
+    3;2105,2063,2072;,
+    3;2105,2085,2063;,
+    3;2085,2043,2063;,
+    3;2085,2051,2043;,
+    3;2051,1995,2043;,
+    3;2051,1999,1995;,
+    3;1999,1961,1995;,
+    3;1999,1941,1961;,
+    3;1941,1917,1961;,
+    3;1941,1877,1917;,
+    3;1877,1845,1917;,
+    3;1877,1796,1845;,
+    3;1796,1783,1845;,
+    3;1796,1705,1783;,
+    3;1705,1679,1783;,
+    3;1705,1611,1679;,
+    3;1611,1573,1679;,
+    3;1611,1469,1573;,
+    3;1469,1453,1573;,
+    3;1469,1295,1453;,
+    3;1295,1285,1453;,
+    3;1295,1153,1285;,
+    3;1153,1164,1285;,
+    3;1153,980,1164;,
+    3;980,993,1164;,
+    3;980,835,993;,
+    3;835,863,993;,
+    3;835,737,863;,
+    3;737,765,863;,
+    3;737,649,765;,
+    3;649,665,765;,
+    3;649,571,665;,
+    3;571,603,665;,
+    3;571,503,603;,
+    3;503,531,603;,
+    3;503,446,531;,
+    3;446,487,531;,
+    3;446,396,487;,
+    3;396,453,487;,
+    3;396,361,453;,
+    3;361,406,453;,
+    3;361,342,406;,
+    3;342,386,406;,
+    3;342,326,386;,
+    3;326,378,386;,
+    3;326,314,378;,
+    3;314,375,378;,
+    3;314,329,375;,
+    3;329,379,375;,
+    3;329,346,379;,
+    3;346,387,379;,
+    3;346,365,387;,
+    3;365,408,387;,
+    3;365,399,408;,
+    3;399,456,408;,
+    3;399,452,456;,
+    3;452,490,456;,
+    3;452,510,490;,
+    3;510,534,490;,
+    3;510,574,534;,
+    3;574,606,534;,
+    3;574,654,606;,
+    3;654,668,606;,
+    3;654,746,668;,
+    3;746,772,668;,
+    3;746,840,772;,
+    3;840,878,772;,
+    3;840,982,878;,
+    3;982,998,878;,
+    3;982,1155,998;,
+    3;1155,1165,998;,
+    3;1155,1298,1165;,
+    3;1298,1288,1165;,
+    3;1298,1472,1288;,
+    3;1472,1458,1288;,
+    3;1472,1616,1458;,
+    3;1616,1588,1458;,
+    3;1616,1714,1588;,
+    3;1714,1686,1588;,
+    3;1714,1801,1686;,
+    3;1801,1786,1686;,
+    3;1801,1880,1786;,
+    3;1880,1848,1786;,
+    3;1880,1947,1848;,
+    3;1947,1920,1848;,
+    3;1947,2005,1920;,
+    3;2005,1964,1920;,
+    3;2005,2056,1964;,
+    3;2056,1998,1964;,
+    3;2056,2090,1998;,
+    3;2090,2046,1998;,
+    3;2090,2110,2046;,
+    3;2110,2066,2046;,
+    3;2110,2126,2066;,
+    3;2126,2073,2066;,
+    3;2126,2137,2073;,
+    3;2137,2076,2073;,
+    3;2137,2121,2076;,
+    3;2121,2072,2076;,
+    3;2072,2063,2021;,
+    3;2063,2007,2021;,
+    3;2063,2043,2007;,
+    3;2043,1979,2007;,
+    3;2043,1995,1979;,
+    3;1995,1953,1979;,
+    3;1995,1961,1953;,
+    3;1961,1921,1953;,
+    3;1961,1917,1921;,
+    3;1917,1857,1921;,
+    3;1917,1845,1857;,
+    3;1845,1795,1857;,
+    3;1845,1783,1795;,
+    3;1783,1719,1795;,
+    3;1783,1679,1719;,
+    3;1679,1647,1719;,
+    3;1679,1573,1647;,
+    3;1573,1547,1647;,
+    3;1573,1453,1547;,
+    3;1453,1437,1547;,
+    3;1453,1285,1437;,
+    3;1285,1275,1437;,
+    3;1285,1164,1275;,
+    3;1164,1174,1275;,
+    3;1164,993,1174;,
+    3;993,1011,1174;,
+    3;993,863,1011;,
+    3;863,901,1011;,
+    3;863,765,901;,
+    3;765,799,901;,
+    3;765,665,799;,
+    3;665,721,799;,
+    3;665,603,721;,
+    3;603,650,721;,
+    3;603,531,650;,
+    3;531,587,650;,
+    3;531,487,587;,
+    3;487,524,587;,
+    3;487,453,524;,
+    3;453,494,524;,
+    3;453,406,494;,
+    3;406,468,494;,
+    3;406,386,468;,
+    3;386,440,468;,
+    3;386,378,440;,
+    3;378,426,440;,
+    3;378,375,426;,
+    3;375,415,426;,
+    3;375,379,415;,
+    3;379,430,415;,
+    3;379,387,430;,
+    3;387,444,430;,
+    3;387,408,444;,
+    3;408,472,444;,
+    3;408,456,472;,
+    3;456,497,472;,
+    3;456,490,497;,
+    3;490,530,497;,
+    3;490,534,530;,
+    3;534,594,530;,
+    3;534,606,594;,
+    3;606,656,594;,
+    3;606,668,656;,
+    3;668,732,656;,
+    3;668,772,732;,
+    3;772,804,732;,
+    3;772,878,804;,
+    3;878,904,804;,
+    3;878,998,904;,
+    3;998,1014,904;,
+    3;998,1165,1014;,
+    3;1165,1176,1014;,
+    3;1165,1288,1176;,
+    3;1288,1278,1176;,
+    3;1288,1458,1278;,
+    3;1458,1440,1278;,
+    3;1458,1588,1440;,
+    3;1588,1550,1440;,
+    3;1588,1686,1550;,
+    3;1686,1652,1550;,
+    3;1686,1786,1652;,
+    3;1786,1730,1652;,
+    3;1786,1848,1730;,
+    3;1848,1802,1730;,
+    3;1848,1920,1802;,
+    3;1920,1864,1802;,
+    3;1920,1964,1864;,
+    3;1964,1928,1864;,
+    3;1964,1998,1928;,
+    3;1998,1959,1928;,
+    3;1998,2046,1959;,
+    3;2046,1984,1959;,
+    3;2046,2066,1984;,
+    3;2066,2012,1984;,
+    3;2066,2073,2012;,
+    3;2073,2026,2012;,
+    3;2073,2076,2026;,
+    3;2076,2035,2026;,
+    3;2076,2072,2035;,
+    3;2072,2021,2035;,
+    3;2021,2007,1965;,
+    3;2007,1949,1965;,
+    3;2007,1979,1949;,
+    3;1979,1933,1949;,
+    3;1979,1953,1933;,
+    3;1953,1897,1933;,
+    3;1953,1921,1897;,
+    3;1921,1853,1897;,
+    3;1921,1857,1853;,
+    3;1857,1815,1853;,
+    3;1857,1795,1815;,
+    3;1795,1759,1815;,
+    3;1795,1719,1759;,
+    3;1719,1687,1759;,
+    3;1719,1647,1687;,
+    3;1647,1625,1687;,
+    3;1647,1547,1625;,
+    3;1547,1513,1625;,
+    3;1547,1437,1513;,
+    3;1437,1423,1513;,
+    3;1437,1275,1423;,
+    3;1275,1269,1423;,
+    3;1275,1174,1269;,
+    3;1174,1177,1269;,
+    3;1174,1011,1177;,
+    3;1011,1025,1177;,
+    3;1011,901,1025;,
+    3;901,935,1025;,
+    3;901,799,935;,
+    3;799,823,935;,
+    3;799,721,823;,
+    3;721,761,823;,
+    3;721,650,761;,
+    3;650,686,761;,
+    3;650,587,686;,
+    3;587,633,686;,
+    3;587,524,633;,
+    3;524,595,633;,
+    3;524,494,595;,
+    3;494,548,595;,
+    3;494,468,548;,
+    3;468,515,548;,
+    3;468,440,515;,
+    3;440,499,515;,
+    3;440,426,499;,
+    3;426,484,499;,
+    3;426,415,484;,
+    3;415,482,484;,
+    3;415,430,482;,
+    3;430,486,482;,
+    3;430,444,486;,
+    3;444,501,486;,
+    3;444,472,501;,
+    3;472,518,501;,
+    3;472,497,518;,
+    3;497,554,518;,
+    3;497,530,554;,
+    3;530,598,554;,
+    3;530,594,598;,
+    3;594,636,598;,
+    3;594,656,636;,
+    3;656,692,636;,
+    3;656,732,692;,
+    3;732,764,692;,
+    3;732,804,764;,
+    3;804,826,764;,
+    3;804,904,826;,
+    3;904,938,826;,
+    3;904,1014,938;,
+    3;1014,1028,938;,
+    3;1014,1176,1028;,
+    3;1176,1182,1028;,
+    3;1176,1278,1182;,
+    3;1278,1274,1182;,
+    3;1278,1440,1274;,
+    3;1440,1426,1274;,
+    3;1440,1550,1426;,
+    3;1550,1516,1426;,
+    3;1550,1652,1516;,
+    3;1652,1628,1516;,
+    3;1652,1730,1628;,
+    3;1730,1690,1628;,
+    3;1730,1802,1690;,
+    3;1802,1766,1690;,
+    3;1802,1864,1766;,
+    3;1864,1818,1766;,
+    3;1864,1928,1818;,
+    3;1928,1856,1818;,
+    3;1928,1959,1856;,
+    3;1959,1904,1856;,
+    3;1959,1984,1904;,
+    3;1984,1936,1904;,
+    3;1984,2012,1936;,
+    3;2012,1952,1936;,
+    3;2012,2026,1952;,
+    3;2026,1968,1952;,
+    3;2026,2035,1968;,
+    3;2035,1970,1968;,
+    3;2035,2021,1970;,
+    3;2021,1965,1970;,
+    3;1965,1949,1899;,
+    3;1949,1881,1899;,
+    3;1949,1933,1881;,
+    3;1933,1865,1881;,
+    3;1933,1897,1865;,
+    3;1897,1837,1865;,
+    3;1897,1853,1837;,
+    3;1853,1807,1837;,
+    3;1853,1815,1807;,
+    3;1815,1775,1807;,
+    3;1815,1759,1775;,
+    3;1759,1703,1775;,
+    3;1759,1687,1703;,
+    3;1687,1645,1703;,
+    3;1687,1625,1645;,
+    3;1625,1569,1645;,
+    3;1625,1513,1569;,
+    3;1513,1490,1569;,
+    3;1513,1423,1490;,
+    3;1423,1413,1490;,
+    3;1423,1269,1413;,
+    3;1269,1263,1413;,
+    3;1269,1177,1263;,
+    3;1177,1185,1263;,
+    3;1177,1025,1185;,
+    3;1025,1033,1185;,
+    3;1025,935,1033;,
+    3;935,957,1033;,
+    3;935,823,957;,
+    3;823,865,957;,
+    3;823,761,865;,
+    3;761,801,865;,
+    3;761,686,801;,
+    3;686,738,801;,
+    3;686,633,738;,
+    3;633,670,738;,
+    3;633,595,670;,
+    3;595,639,670;,
+    3;595,548,639;,
+    3;548,610,639;,
+    3;548,515,610;,
+    3;515,582,610;,
+    3;515,499,582;,
+    3;499,564,582;,
+    3;499,484,564;,
+    3;484,546,564;,
+    3;484,482,546;,
+    3;482,537,546;,
+    3;482,486,537;,
+    3;486,552,537;,
+    3;486,501,552;,
+    3;501,570,552;,
+    3;501,518,570;,
+    3;518,586,570;,
+    3;518,554,586;,
+    3;554,613,586;,
+    3;554,598,613;,
+    3;598,644,613;,
+    3;598,636,644;,
+    3;636,676,644;,
+    3;636,692,676;,
+    3;692,748,676;,
+    3;692,764,748;,
+    3;764,806,748;,
+    3;764,826,806;,
+    3;826,882,806;,
+    3;826,938,882;,
+    3;938,962,882;,
+    3;938,1028,962;,
+    3;1028,1038,962;,
+    3;1028,1182,1038;,
+    3;1182,1188,1038;,
+    3;1182,1274,1188;,
+    3;1274,1266,1188;,
+    3;1274,1426,1266;,
+    3;1426,1418,1266;,
+    3;1426,1516,1418;,
+    3;1516,1494,1418;,
+    3;1516,1628,1494;,
+    3;1628,1586,1494;,
+    3;1628,1690,1586;,
+    3;1690,1651,1586;,
+    3;1690,1766,1651;,
+    3;1766,1713,1651;,
+    3;1766,1818,1713;,
+    3;1818,1781,1713;,
+    3;1818,1856,1781;,
+    3;1856,1813,1781;,
+    3;1856,1904,1813;,
+    3;1904,1842,1813;,
+    3;1904,1936,1842;,
+    3;1936,1870,1842;,
+    3;1936,1952,1870;,
+    3;1952,1888,1870;,
+    3;1952,1968,1888;,
+    3;1968,1906,1888;,
+    3;1968,1970,1906;,
+    3;1970,1914,1906;,
+    3;1970,1965,1914;,
+    3;1965,1899,1914;,
+    3;1899,1881,1827;,
+    3;1881,1819,1827;,
+    3;1881,1865,1819;,
+    3;1865,1803,1819;,
+    3;1865,1837,1803;,
+    3;1837,1787,1803;,
+    3;1837,1807,1787;,
+    3;1807,1739,1787;,
+    3;1807,1775,1739;,
+    3;1775,1695,1739;,
+    3;1775,1703,1695;,
+    3;1703,1657,1695;,
+    3;1703,1645,1657;,
+    3;1645,1613,1657;,
+    3;1645,1569,1613;,
+    3;1569,1525,1613;,
+    3;1569,1490,1525;,
+    3;1490,1459,1525;,
+    3;1490,1413,1459;,
+    3;1413,1399,1459;,
+    3;1413,1263,1399;,
+    3;1263,1255,1399;,
+    3;1263,1185,1255;,
+    3;1185,1191,1255;,
+    3;1185,1033,1191;,
+    3;1033,1045,1191;,
+    3;1033,957,1045;,
+    3;957,990,1045;,
+    3;957,865,990;,
+    3;865,923,990;,
+    3;865,801,923;,
+    3;801,831,923;,
+    3;801,738,831;,
+    3;738,791,831;,
+    3;738,670,791;,
+    3;670,753,791;,
+    3;670,639,753;,
+    3;639,709,753;,
+    3;639,610,709;,
+    3;610,662,709;,
+    3;610,582,662;,
+    3;582,646,662;,
+    3;582,564,646;,
+    3;564,629,646;,
+    3;564,546,629;,
+    3;546,621,629;,
+    3;546,537,621;,
+    3;537,616,621;,
+    3;537,552,616;,
+    3;552,624,616;,
+    3;552,570,624;,
+    3;570,632,624;,
+    3;570,586,632;,
+    3;586,648,632;,
+    3;586,613,648;,
+    3;613,664,648;,
+    3;613,644,664;,
+    3;644,712,664;,
+    3;644,676,712;,
+    3;676,756,712;,
+    3;676,748,756;,
+    3;748,794,756;,
+    3;748,806,794;,
+    3;806,838,794;,
+    3;806,882,838;,
+    3;882,926,838;,
+    3;882,962,926;,
+    3;962,991,926;,
+    3;962,1038,991;,
+    3;1038,1052,991;,
+    3;1038,1188,1052;,
+    3;1188,1196,1052;,
+    3;1188,1266,1196;,
+    3;1266,1260,1196;,
+    3;1266,1418,1260;,
+    3;1418,1406,1260;,
+    3;1418,1494,1406;,
+    3;1494,1462,1406;,
+    3;1494,1586,1462;,
+    3;1586,1528,1462;,
+    3;1586,1651,1528;,
+    3;1651,1620,1528;,
+    3;1651,1713,1620;,
+    3;1713,1660,1620;,
+    3;1713,1781,1660;,
+    3;1781,1698,1660;,
+    3;1781,1813,1698;,
+    3;1813,1742,1698;,
+    3;1813,1842,1742;,
+    3;1842,1790,1742;,
+    3;1842,1870,1790;,
+    3;1870,1806,1790;,
+    3;1870,1888,1806;,
+    3;1888,1822,1806;,
+    3;1888,1906,1822;,
+    3;1906,1830,1822;,
+    3;1906,1914,1830;,
+    3;1914,1835,1830;,
+    3;1914,1899,1835;,
+    3;1899,1827,1835;,
+    3;1827,1819,1755;,
+    3;1819,1743,1755;,
+    3;1819,1803,1743;,
+    3;1803,1721,1743;,
+    3;1803,1787,1721;,
+    3;1787,1699,1721;,
+    3;1787,1739,1699;,
+    3;1739,1675,1699;,
+    3;1739,1695,1675;,
+    3;1695,1637,1675;,
+    3;1695,1657,1637;,
+    3;1657,1609,1637;,
+    3;1657,1613,1609;,
+    3;1613,1545,1609;,
+    3;1613,1525,1545;,
+    3;1525,1489,1545;,
+    3;1525,1459,1489;,
+    3;1459,1431,1489;,
+    3;1459,1399,1431;,
+    3;1399,1349,1431;,
+    3;1399,1255,1349;,
+    3;1255,1247,1349;,
+    3;1255,1191,1247;,
+    3;1191,1201,1247;,
+    3;1191,1045,1201;,
+    3;1045,1096,1201;,
+    3;1045,990,1096;,
+    3;990,1017,1096;,
+    3;990,923,1017;,
+    3;923,955,1017;,
+    3;923,831,955;,
+    3;831,899,955;,
+    3;831,791,899;,
+    3;791,833,899;,
+    3;791,753,833;,
+    3;753,807,833;,
+    3;753,709,807;,
+    3;709,767,807;,
+    3;709,662,767;,
+    3;662,741,767;,
+    3;662,646,741;,
+    3;646,724,741;,
+    3;646,629,724;,
+    3;629,702,724;,
+    3;629,621,702;,
+    3;621,690,702;,
+    3;621,616,690;,
+    3;616,680,690;,
+    3;616,624,680;,
+    3;624,696,680;,
+    3;624,632,696;,
+    3;632,708,696;,
+    3;632,648,708;,
+    3;648,730,708;,
+    3;648,664,730;,
+    3;664,752,730;,
+    3;664,712,752;,
+    3;712,776,752;,
+    3;712,756,776;,
+    3;756,814,776;,
+    3;756,794,814;,
+    3;794,842,814;,
+    3;794,838,842;,
+    3;838,906,842;,
+    3;838,926,906;,
+    3;926,961,906;,
+    3;926,991,961;,
+    3;991,1020,961;,
+    3;991,1052,1020;,
+    3;1052,1102,1020;,
+    3;1052,1196,1102;,
+    3;1196,1204,1102;,
+    3;1196,1260,1204;,
+    3;1260,1250,1204;,
+    3;1260,1406,1250;,
+    3;1406,1355,1250;,
+    3;1406,1462,1355;,
+    3;1462,1434,1355;,
+    3;1462,1528,1434;,
+    3;1528,1496,1434;,
+    3;1528,1620,1496;,
+    3;1620,1552,1496;,
+    3;1620,1660,1552;,
+    3;1660,1618,1552;,
+    3;1660,1698,1618;,
+    3;1698,1644,1618;,
+    3;1698,1742,1644;,
+    3;1742,1684,1644;,
+    3;1742,1790,1684;,
+    3;1790,1710,1684;,
+    3;1790,1806,1710;,
+    3;1806,1728,1710;,
+    3;1806,1822,1728;,
+    3;1822,1749,1728;,
+    3;1822,1830,1749;,
+    3;1830,1762,1749;,
+    3;1830,1835,1762;,
+    3;1835,1772,1762;,
+    3;1835,1827,1772;,
+    3;1827,1755,1772;,
+    3;1755,1743,1669;,
+    3;1743,1665,1669;,
+    3;1743,1721,1665;,
+    3;1721,1653,1665;,
+    3;1721,1699,1653;,
+    3;1699,1633,1653;,
+    3;1699,1675,1633;,
+    3;1675,1621,1633;,
+    3;1675,1637,1621;,
+    3;1637,1571,1621;,
+    3;1637,1609,1571;,
+    3;1609,1531,1571;,
+    3;1609,1545,1531;,
+    3;1545,1497,1531;,
+    3;1545,1489,1497;,
+    3;1489,1447,1497;,
+    3;1489,1431,1447;,
+    3;1431,1407,1447;,
+    3;1431,1349,1407;,
+    3;1349,1309,1407;,
+    3;1349,1247,1309;,
+    3;1247,1243,1309;,
+    3;1247,1201,1243;,
+    3;1201,1205,1243;,
+    3;1201,1096,1205;,
+    3;1096,1137,1205;,
+    3;1096,1017,1137;,
+    3;1017,1041,1137;,
+    3;1017,955,1041;,
+    3;955,1001,1041;,
+    3;955,899,1001;,
+    3;899,951,1001;,
+    3;899,833,951;,
+    3;833,915,951;,
+    3;833,807,915;,
+    3;807,867,915;,
+    3;807,767,867;,
+    3;767,827,867;,
+    3;767,741,827;,
+    3;741,815,827;,
+    3;741,724,815;,
+    3;724,795,815;,
+    3;724,702,795;,
+    3;702,784,795;,
+    3;702,690,784;,
+    3;690,779,784;,
+    3;690,680,779;,
+    3;680,777,779;,
+    3;680,696,777;,
+    3;696,781,777;,
+    3;696,708,781;,
+    3;708,785,781;,
+    3;708,730,785;,
+    3;730,797,785;,
+    3;730,752,797;,
+    3;752,817,797;,
+    3;752,776,817;,
+    3;776,829,817;,
+    3;776,814,829;,
+    3;814,880,829;,
+    3;814,842,880;,
+    3;842,920,880;,
+    3;842,906,920;,
+    3;906,954,920;,
+    3;906,961,954;,
+    3;961,1004,954;,
+    3;961,1020,1004;,
+    3;1020,1044,1004;,
+    3;1020,1102,1044;,
+    3;1102,1142,1044;,
+    3;1102,1204,1142;,
+    3;1204,1208,1142;,
+    3;1204,1250,1208;,
+    3;1250,1246,1208;,
+    3;1250,1355,1246;,
+    3;1355,1314,1246;,
+    3;1355,1434,1314;,
+    3;1434,1410,1314;,
+    3;1434,1496,1410;,
+    3;1496,1450,1410;,
+    3;1496,1552,1450;,
+    3;1552,1500,1450;,
+    3;1552,1618,1500;,
+    3;1618,1536,1500;,
+    3;1618,1644,1536;,
+    3;1644,1584,1536;,
+    3;1644,1684,1584;,
+    3;1684,1624,1584;,
+    3;1684,1710,1624;,
+    3;1710,1636,1624;,
+    3;1710,1728,1636;,
+    3;1728,1656,1636;,
+    3;1728,1749,1656;,
+    3;1749,1668,1656;,
+    3;1749,1762,1668;,
+    3;1762,1672,1668;,
+    3;1762,1772,1672;,
+    3;1772,1673,1672;,
+    3;1772,1755,1673;,
+    3;1755,1669,1673;,
+    3;1669,1665,1593;,
+    3;1665,1575,1593;,
+    3;1665,1653,1575;,
+    3;1653,1557,1575;,
+    3;1653,1633,1557;,
+    3;1633,1537,1557;,
+    3;1633,1621,1537;,
+    3;1621,1517,1537;,
+    3;1621,1571,1517;,
+    3;1571,1501,1517;,
+    3;1571,1531,1501;,
+    3;1531,1467,1501;,
+    3;1531,1497,1467;,
+    3;1497,1435,1467;,
+    3;1497,1447,1435;,
+    3;1447,1411,1435;,
+    3;1447,1407,1411;,
+    3;1407,1347,1411;,
+    3;1407,1309,1347;,
+    3;1309,1279,1347;,
+    3;1309,1243,1279;,
+    3;1243,1235,1279;,
+    3;1243,1205,1235;,
+    3;1205,1211,1235;,
+    3;1205,1137,1211;,
+    3;1137,1169,1211;,
+    3;1137,1041,1169;,
+    3;1041,1095,1169;,
+    3;1041,1001,1095;,
+    3;1001,1031,1095;,
+    3;1001,951,1031;,
+    3;951,1009,1031;,
+    3;951,915,1009;,
+    3;915,977,1009;,
+    3;915,867,977;,
+    3;867,943,977;,
+    3;867,827,943;,
+    3;827,927,943;,
+    3;827,815,927;,
+    3;815,908,927;,
+    3;815,795,908;,
+    3;795,887,908;,
+    3;795,784,887;,
+    3;784,871,887;,
+    3;784,779,871;,
+    3;779,854,871;,
+    3;779,777,854;,
+    3;777,846,854;,
+    3;777,781,846;,
+    3;781,857,846;,
+    3;781,785,857;,
+    3;785,876,857;,
+    3;785,797,876;,
+    3;797,894,876;,
+    3;797,817,894;,
+    3;817,914,894;,
+    3;817,829,914;,
+    3;829,934,914;,
+    3;829,880,934;,
+    3;880,950,934;,
+    3;880,920,950;,
+    3;920,984,950;,
+    3;920,954,984;,
+    3;954,1016,984;,
+    3;954,1004,1016;,
+    3;1004,1040,1016;,
+    3;1004,1044,1040;,
+    3;1044,1104,1040;,
+    3;1044,1142,1104;,
+    3;1142,1172,1104;,
+    3;1142,1208,1172;,
+    3;1208,1216,1172;,
+    3;1208,1246,1216;,
+    3;1246,1240,1216;,
+    3;1246,1314,1240;,
+    3;1314,1282,1240;,
+    3;1314,1410,1282;,
+    3;1410,1356,1282;,
+    3;1410,1450,1356;,
+    3;1450,1420,1356;,
+    3;1450,1500,1420;,
+    3;1500,1442,1420;,
+    3;1500,1536,1442;,
+    3;1536,1474,1442;,
+    3;1536,1584,1474;,
+    3;1584,1508,1474;,
+    3;1584,1624,1508;,
+    3;1624,1524,1508;,
+    3;1624,1636,1524;,
+    3;1636,1544,1524;,
+    3;1636,1656,1544;,
+    3;1656,1564,1544;,
+    3;1656,1668,1564;,
+    3;1668,1581,1564;,
+    3;1668,1672,1581;,
+    3;1672,1598,1581;,
+    3;1672,1673,1598;,
+    3;1673,1606,1598;,
+    3;1673,1669,1606;,
+    3;1669,1593,1606;,
+    3;1593,1575,1479;,
+    3;1575,1475,1479;,
+    3;1575,1557,1475;,
+    3;1557,1463,1475;,
+    3;1557,1537,1463;,
+    3;1537,1451,1463;,
+    3;1537,1517,1451;,
+    3;1517,1443,1451;,
+    3;1517,1501,1443;,
+    3;1501,1427,1443;,
+    3;1501,1467,1427;,
+    3;1467,1415,1427;,
+    3;1467,1435,1415;,
+    3;1435,1391,1415;,
+    3;1435,1411,1391;,
+    3;1411,1329,1391;,
+    3;1411,1347,1329;,
+    3;1347,1291,1329;,
+    3;1347,1279,1291;,
+    3;1279,1257,1291;,
+    3;1279,1235,1257;,
+    3;1235,1231,1257;,
+    3;1235,1211,1231;,
+    3;1211,1217,1231;,
+    3;1211,1169,1217;,
+    3;1169,1189,1217;,
+    3;1169,1095,1189;,
+    3;1095,1157,1189;,
+    3;1095,1031,1157;,
+    3;1031,1117,1157;,
+    3;1031,1009,1117;,
+    3;1009,1055,1117;,
+    3;1009,977,1055;,
+    3;977,1029,1055;,
+    3;977,943,1029;,
+    3;943,1021,1029;,
+    3;943,927,1021;,
+    3;927,1005,1021;,
+    3;927,908,1005;,
+    3;908,996,1005;,
+    3;908,887,996;,
+    3;887,985,996;,
+    3;887,871,985;,
+    3;871,974,985;,
+    3;871,854,974;,
+    3;854,970,974;,
+    3;854,846,970;,
+    3;846,968,970;,
+    3;846,857,968;,
+    3;857,972,968;,
+    3;857,876,972;,
+    3;876,976,972;,
+    3;876,894,976;,
+    3;894,988,976;,
+    3;894,914,988;,
+    3;914,999,988;,
+    3;914,934,999;,
+    3;934,1008,999;,
+    3;934,950,1008;,
+    3;950,1024,1008;,
+    3;950,984,1024;,
+    3;984,1036,1024;,
+    3;984,1016,1036;,
+    3;1016,1060,1036;,
+    3;1016,1040,1060;,
+    3;1040,1122,1060;,
+    3;1040,1104,1122;,
+    3;1104,1160,1122;,
+    3;1104,1172,1160;,
+    3;1172,1194,1160;,
+    3;1172,1216,1194;,
+    3;1216,1220,1194;,
+    3;1216,1240,1220;,
+    3;1240,1234,1220;,
+    3;1240,1282,1234;,
+    3;1282,1262,1234;,
+    3;1282,1356,1262;,
+    3;1356,1294,1262;,
+    3;1356,1420,1294;,
+    3;1420,1334,1294;,
+    3;1420,1442,1334;,
+    3;1442,1396,1334;,
+    3;1442,1474,1396;,
+    3;1474,1422,1396;,
+    3;1474,1508,1422;,
+    3;1508,1430,1422;,
+    3;1508,1524,1430;,
+    3;1524,1446,1430;,
+    3;1524,1544,1446;,
+    3;1544,1456,1446;,
+    3;1544,1564,1456;,
+    3;1564,1466,1456;,
+    3;1564,1581,1466;,
+    3;1581,1478,1466;,
+    3;1581,1598,1478;,
+    3;1598,1482,1478;,
+    3;1598,1606,1482;,
+    3;1606,1483,1482;,
+    3;1606,1593,1483;,
+    3;1593,1479,1483;,
+    3;1479,1475,1397;,
+    3;1475,1389,1397;,
+    3;1475,1463,1389;,
+    3;1463,1385,1389;,
+    3;1463,1451,1385;,
+    3;1451,1363,1385;,
+    3;1451,1443,1363;,
+    3;1443,1337,1363;,
+    3;1443,1427,1337;,
+    3;1427,1319,1337;,
+    3;1427,1415,1319;,
+    3;1415,1301,1319;,
+    3;1415,1391,1301;,
+    3;1391,1283,1301;,
+    3;1391,1329,1283;,
+    3;1329,1267,1283;,
+    3;1329,1291,1267;,
+    3;1291,1251,1267;,
+    3;1291,1257,1251;,
+    3;1257,1237,1251;,
+    3;1257,1231,1237;,
+    3;1231,1227,1237;,
+    3;1231,1217,1227;,
+    3;1217,1221,1227;,
+    3;1217,1189,1221;,
+    3;1189,1209,1221;,
+    3;1189,1157,1209;,
+    3;1157,1197,1209;,
+    3;1157,1117,1197;,
+    3;1117,1179,1197;,
+    3;1117,1055,1179;,
+    3;1055,1161,1179;,
+    3;1055,1029,1161;,
+    3;1029,1145,1161;,
+    3;1029,1021,1145;,
+    3;1021,1127,1145;,
+    3;1021,1005,1127;,
+    3;1005,1107,1127;,
+    3;1005,996,1107;,
+    3;996,1082,1107;,
+    3;996,985,1082;,
+    3;985,1064,1082;,
+    3;985,974,1064;,
+    3;974,1058,1064;,
+    3;974,970,1058;,
+    3;970,1050,1058;,
+    3;970,968,1050;,
+    3;968,1048,1050;,
+    3;968,972,1048;,
+    3;972,1053,1048;,
+    3;972,976,1053;,
+    3;976,1062,1053;,
+    3;976,988,1062;,
+    3;988,1066,1062;,
+    3;988,999,1066;,
+    3;999,1087,1066;,
+    3;999,1008,1087;,
+    3;1008,1114,1087;,
+    3;1008,1024,1114;,
+    3;1024,1132,1114;,
+    3;1024,1036,1132;,
+    3;1036,1150,1132;,
+    3;1036,1060,1150;,
+    3;1060,1168,1150;,
+    3;1060,1122,1168;,
+    3;1122,1184,1168;,
+    3;1122,1160,1184;,
+    3;1160,1200,1184;,
+    3;1160,1194,1200;,
+    3;1194,1214,1200;,
+    3;1194,1220,1214;,
+    3;1220,1224,1214;,
+    3;1220,1234,1224;,
+    3;1234,1230,1224;,
+    3;1234,1262,1230;,
+    3;1262,1242,1230;,
+    3;1262,1294,1242;,
+    3;1294,1254,1242;,
+    3;1294,1334,1254;,
+    3;1334,1272,1254;,
+    3;1334,1396,1272;,
+    3;1396,1290,1272;,
+    3;1396,1422,1290;,
+    3;1422,1306,1290;,
+    3;1422,1430,1306;,
+    3;1430,1324,1306;,
+    3;1430,1446,1324;,
+    3;1446,1344,1324;,
+    3;1446,1456,1344;,
+    3;1456,1370,1344;,
+    3;1456,1466,1370;,
+    3;1466,1388,1370;,
+    3;1466,1478,1388;,
+    3;1478,1394,1388;,
+    3;1478,1482,1394;,
+    3;1482,1402,1394;,
+    3;1482,1483,1402;,
+    3;1483,1404,1402;,
+    3;1483,1479,1404;,
+    3;1479,1397,1404;,
+    3;1393,1401,1225;,
+    3;1387,1393,1225;,
+    3;1369,1387,1225;,
+    3;1343,1369,1225;,
+    3;1323,1343,1225;,
+    3;1305,1323,1225;,
+    3;1289,1305,1225;,
+    3;1271,1289,1225;,
+    3;1253,1271,1225;,
+    3;1241,1253,1225;,
+    3;1229,1241,1225;,
+    3;1223,1229,1225;,
+    3;1213,1223,1225;,
+    3;1199,1213,1225;,
+    3;1183,1199,1225;,
+    3;1167,1183,1225;,
+    3;1149,1167,1225;,
+    3;1131,1149,1225;,
+    3;1113,1131,1225;,
+    3;1088,1113,1225;,
+    3;1065,1088,1225;,
+    3;1061,1065,1225;,
+    3;1054,1061,1225;,
+    3;1047,1054,1225;,
+    3;1049,1047,1225;,
+    3;1057,1049,1225;,
+    3;1063,1057,1225;,
+    3;1081,1063,1225;,
+    3;1108,1081,1225;,
+    3;1128,1108,1225;,
+    3;1146,1128,1225;,
+    3;1162,1146,1225;,
+    3;1180,1162,1225;,
+    3;1198,1180,1225;,
+    3;1210,1198,1225;,
+    3;1222,1210,1225;,
+    3;1228,1222,1225;,
+    3;1238,1228,1225;,
+    3;1252,1238,1225;,
+    3;1268,1252,1225;,
+    3;1284,1268,1225;,
+    3;1302,1284,1225;,
+    3;1320,1302,1225;,
+    3;1338,1320,1225;,
+    3;1364,1338,1225;,
+    3;1386,1364,1225;,
+    3;1390,1386,1225;,
+    3;1398,1390,1225;,
+    3;1403,1398,1225;,
+    3;1401,1403,1225;,
+    3;1397,1389,1226;,
+    3;1389,1385,1226;,
+    3;1385,1363,1226;,
+    3;1363,1337,1226;,
+    3;1337,1319,1226;,
+    3;1319,1301,1226;,
+    3;1301,1283,1226;,
+    3;1283,1267,1226;,
+    3;1267,1251,1226;,
+    3;1251,1237,1226;,
+    3;1237,1227,1226;,
+    3;1227,1221,1226;,
+    3;1221,1209,1226;,
+    3;1209,1197,1226;,
+    3;1197,1179,1226;,
+    3;1179,1161,1226;,
+    3;1161,1145,1226;,
+    3;1145,1127,1226;,
+    3;1127,1107,1226;,
+    3;1107,1082,1226;,
+    3;1082,1064,1226;,
+    3;1064,1058,1226;,
+    3;1058,1050,1226;,
+    3;1050,1048,1226;,
+    3;1048,1053,1226;,
+    3;1053,1062,1226;,
+    3;1062,1066,1226;,
+    3;1066,1087,1226;,
+    3;1087,1114,1226;,
+    3;1114,1132,1226;,
+    3;1132,1150,1226;,
+    3;1150,1168,1226;,
+    3;1168,1184,1226;,
+    3;1184,1200,1226;,
+    3;1200,1214,1226;,
+    3;1214,1224,1226;,
+    3;1224,1230,1226;,
+    3;1230,1242,1226;,
+    3;1242,1254,1226;,
+    3;1254,1272,1226;,
+    3;1272,1290,1226;,
+    3;1290,1306,1226;,
+    3;1306,1324,1226;,
+    3;1324,1344,1226;,
+    3;1344,1370,1226;,
+    3;1370,1388,1226;,
+    3;1388,1394,1226;,
+    3;1394,1402,1226;,
+    3;1402,1404,1226;,
+    3;1404,1397,1226;;
+   }
+
+   MeshTextureCoords {
+    2501;
+    0.000000;-0.020000;,
+    0.020000;-0.020000;,
+    0.040000;-0.020000;,
+    0.060000;-0.020000;,
+    0.080000;-0.020000;,
+    0.100000;-0.020000;,
+    0.120000;-0.020000;,
+    0.140000;-0.020000;,
+    0.160000;-0.020000;,
+    0.180000;-0.020000;,
+    0.200000;-0.020000;,
+    0.220000;-0.020000;,
+    0.240000;-0.020000;,
+    0.260000;-0.020000;,
+    0.280000;-0.020000;,
+    0.300000;-0.020000;,
+    0.320000;-0.020000;,
+    0.340000;-0.020000;,
+    0.360000;-0.020000;,
+    0.380000;-0.020000;,
+    0.400000;-0.020000;,
+    0.420000;-0.020000;,
+    0.440000;-0.020000;,
+    0.460000;-0.020000;,
+    0.480000;-0.020000;,
+    0.500000;-0.020000;,
+    0.520000;-0.020000;,
+    0.540000;-0.020000;,
+    0.560000;-0.020000;,
+    0.580000;-0.020000;,
+    0.600000;-0.020000;,
+    0.620000;-0.020000;,
+    0.640000;-0.020000;,
+    0.660000;-0.020000;,
+    0.680000;-0.020000;,
+    0.700000;-0.020000;,
+    0.720000;-0.020000;,
+    0.740000;-0.020000;,
+    0.760000;-0.020000;,
+    0.780000;-0.020000;,
+    0.800000;-0.020000;,
+    0.820000;-0.020000;,
+    0.840000;-0.020000;,
+    0.860000;-0.020000;,
+    0.880000;-0.020000;,
+    0.900000;-0.020000;,
+    0.920000;-0.020000;,
+    0.940000;-0.020000;,
+    0.960000;-0.020000;,
+    0.980000;-0.020000;,
+    0.000000;-0.040000;,
+    0.020000;-0.040000;,
+    0.040000;-0.040000;,
+    0.060000;-0.040000;,
+    0.080000;-0.040000;,
+    0.100000;-0.040000;,
+    0.120000;-0.040000;,
+    0.140000;-0.040000;,
+    0.160000;-0.040000;,
+    0.180000;-0.040000;,
+    0.200000;-0.040000;,
+    0.220000;-0.040000;,
+    0.240000;-0.040000;,
+    0.260000;-0.040000;,
+    0.280000;-0.040000;,
+    0.300000;-0.040000;,
+    0.320000;-0.040000;,
+    0.340000;-0.040000;,
+    0.360000;-0.040000;,
+    0.380000;-0.040000;,
+    0.400000;-0.040000;,
+    0.420000;-0.040000;,
+    0.440000;-0.040000;,
+    0.460000;-0.040000;,
+    0.480000;-0.040000;,
+    0.500000;-0.040000;,
+    0.520000;-0.040000;,
+    0.540000;-0.040000;,
+    0.560000;-0.040000;,
+    0.580000;-0.040000;,
+    0.600000;-0.040000;,
+    0.620000;-0.040000;,
+    0.640000;-0.040000;,
+    0.660000;-0.040000;,
+    0.680000;-0.040000;,
+    0.700000;-0.040000;,
+    0.720000;-0.040000;,
+    0.740000;-0.040000;,
+    0.760000;-0.040000;,
+    0.780000;-0.040000;,
+    0.800000;-0.040000;,
+    0.820000;-0.040000;,
+    0.840000;-0.040000;,
+    0.860000;-0.040000;,
+    0.880000;-0.040000;,
+    0.900000;-0.040000;,
+    0.920000;-0.040000;,
+    0.940000;-0.040000;,
+    0.960000;-0.040000;,
+    0.980000;-0.040000;,
+    0.000000;-0.060000;,
+    0.020000;-0.060000;,
+    0.040000;-0.060000;,
+    0.060000;-0.060000;,
+    0.080000;-0.060000;,
+    0.100000;-0.060000;,
+    0.120000;-0.060000;,
+    0.140000;-0.060000;,
+    0.160000;-0.060000;,
+    0.180000;-0.060000;,
+    0.200000;-0.060000;,
+    0.220000;-0.060000;,
+    0.240000;-0.060000;,
+    0.260000;-0.060000;,
+    0.280000;-0.060000;,
+    0.300000;-0.060000;,
+    0.320000;-0.060000;,
+    0.340000;-0.060000;,
+    0.360000;-0.060000;,
+    0.380000;-0.060000;,
+    0.400000;-0.060000;,
+    0.420000;-0.060000;,
+    0.440000;-0.060000;,
+    0.460000;-0.060000;,
+    0.480000;-0.060000;,
+    0.500000;-0.060000;,
+    0.520000;-0.060000;,
+    0.540000;-0.060000;,
+    0.560000;-0.060000;,
+    0.580000;-0.060000;,
+    0.600000;-0.060000;,
+    0.620000;-0.060000;,
+    0.640000;-0.060000;,
+    0.660000;-0.060000;,
+    0.680000;-0.060000;,
+    0.700000;-0.060000;,
+    0.720000;-0.060000;,
+    0.740000;-0.060000;,
+    0.760000;-0.060000;,
+    0.780000;-0.060000;,
+    0.800000;-0.060000;,
+    0.820000;-0.060000;,
+    0.840000;-0.060000;,
+    0.860000;-0.060000;,
+    0.880000;-0.060000;,
+    0.900000;-0.060000;,
+    0.920000;-0.060000;,
+    0.940000;-0.060000;,
+    0.960000;-0.060000;,
+    0.980000;-0.060000;,
+    0.000000;-0.080000;,
+    0.020000;-0.080000;,
+    0.040000;-0.080000;,
+    0.060000;-0.080000;,
+    0.080000;-0.080000;,
+    0.100000;-0.080000;,
+    0.120000;-0.080000;,
+    0.140000;-0.080000;,
+    0.160000;-0.080000;,
+    0.180000;-0.080000;,
+    0.200000;-0.080000;,
+    0.220000;-0.080000;,
+    0.240000;-0.080000;,
+    0.260000;-0.080000;,
+    0.280000;-0.080000;,
+    0.300000;-0.080000;,
+    0.320000;-0.080000;,
+    0.340000;-0.080000;,
+    0.360000;-0.080000;,
+    0.380000;-0.080000;,
+    0.400000;-0.080000;,
+    0.420000;-0.080000;,
+    0.440000;-0.080000;,
+    0.460000;-0.080000;,
+    0.480000;-0.080000;,
+    0.500000;-0.080000;,
+    0.520000;-0.080000;,
+    0.540000;-0.080000;,
+    0.560000;-0.080000;,
+    0.580000;-0.080000;,
+    0.600000;-0.080000;,
+    0.620000;-0.080000;,
+    0.640000;-0.080000;,
+    0.660000;-0.080000;,
+    0.680000;-0.080000;,
+    0.700000;-0.080000;,
+    0.720000;-0.080000;,
+    0.740000;-0.080000;,
+    0.760000;-0.080000;,
+    0.780000;-0.080000;,
+    0.800000;-0.080000;,
+    0.820000;-0.080000;,
+    0.840000;-0.080000;,
+    0.860000;-0.080000;,
+    0.880000;-0.080000;,
+    0.900000;-0.080000;,
+    0.920000;-0.080000;,
+    0.940000;-0.080000;,
+    0.960000;-0.080000;,
+    0.980000;-0.080000;,
+    0.000000;-0.100000;,
+    0.020000;-0.100000;,
+    0.040000;-0.100000;,
+    0.060000;-0.100000;,
+    0.080000;-0.100000;,
+    0.100000;-0.100000;,
+    0.120000;-0.100000;,
+    0.140000;-0.100000;,
+    0.160000;-0.100000;,
+    0.180000;-0.100000;,
+    0.200000;-0.100000;,
+    0.220000;-0.100000;,
+    0.240000;-0.100000;,
+    0.260000;-0.100000;,
+    0.280000;-0.100000;,
+    0.300000;-0.100000;,
+    0.320000;-0.100000;,
+    0.340000;-0.100000;,
+    0.360000;-0.100000;,
+    0.380000;-0.100000;,
+    0.400000;-0.100000;,
+    0.420000;-0.100000;,
+    0.440000;-0.100000;,
+    0.460000;-0.100000;,
+    0.480000;-0.100000;,
+    0.500000;-0.100000;,
+    0.520000;-0.100000;,
+    0.540000;-0.100000;,
+    0.560000;-0.100000;,
+    0.580000;-0.100000;,
+    0.600000;-0.100000;,
+    0.620000;-0.100000;,
+    0.640000;-0.100000;,
+    0.660000;-0.100000;,
+    0.680000;-0.100000;,
+    0.700000;-0.100000;,
+    0.720000;-0.100000;,
+    0.740000;-0.100000;,
+    0.760000;-0.100000;,
+    0.780000;-0.100000;,
+    0.800000;-0.100000;,
+    0.820000;-0.100000;,
+    0.840000;-0.100000;,
+    0.860000;-0.100000;,
+    0.880000;-0.100000;,
+    0.900000;-0.100000;,
+    0.920000;-0.100000;,
+    0.940000;-0.100000;,
+    0.960000;-0.100000;,
+    0.980000;-0.100000;,
+    0.000000;-0.120000;,
+    0.020000;-0.120000;,
+    0.040000;-0.120000;,
+    0.060000;-0.120000;,
+    0.080000;-0.120000;,
+    0.100000;-0.120000;,
+    0.120000;-0.120000;,
+    0.140000;-0.120000;,
+    0.160000;-0.120000;,
+    0.180000;-0.120000;,
+    0.200000;-0.120000;,
+    0.220000;-0.120000;,
+    0.240000;-0.120000;,
+    0.260000;-0.120000;,
+    0.280000;-0.120000;,
+    0.300000;-0.120000;,
+    0.320000;-0.120000;,
+    0.340000;-0.120000;,
+    0.360000;-0.120000;,
+    0.380000;-0.120000;,
+    0.400000;-0.120000;,
+    0.420000;-0.120000;,
+    0.440000;-0.120000;,
+    0.460000;-0.120000;,
+    0.480000;-0.120000;,
+    0.500000;-0.120000;,
+    0.520000;-0.120000;,
+    0.540000;-0.120000;,
+    0.560000;-0.120000;,
+    0.580000;-0.120000;,
+    0.600000;-0.120000;,
+    0.620000;-0.120000;,
+    0.640000;-0.120000;,
+    0.660000;-0.120000;,
+    0.680000;-0.120000;,
+    0.700000;-0.120000;,
+    0.720000;-0.120000;,
+    0.740000;-0.120000;,
+    0.760000;-0.120000;,
+    0.780000;-0.120000;,
+    0.800000;-0.120000;,
+    0.820000;-0.120000;,
+    0.840000;-0.120000;,
+    0.860000;-0.120000;,
+    0.880000;-0.120000;,
+    0.900000;-0.120000;,
+    0.920000;-0.120000;,
+    0.940000;-0.120000;,
+    0.960000;-0.120000;,
+    0.980000;-0.120000;,
+    0.000000;-0.140000;,
+    0.020000;-0.140000;,
+    0.040000;-0.140000;,
+    0.060000;-0.140000;,
+    0.080000;-0.140000;,
+    0.100000;-0.140000;,
+    0.120000;-0.140000;,
+    0.140000;-0.140000;,
+    0.160000;-0.140000;,
+    0.180000;-0.140000;,
+    0.200000;-0.140000;,
+    0.220000;-0.140000;,
+    0.240000;-0.140000;,
+    0.260000;-0.140000;,
+    0.280000;-0.140000;,
+    0.300000;-0.140000;,
+    0.320000;-0.140000;,
+    0.340000;-0.140000;,
+    0.360000;-0.140000;,
+    0.380000;-0.140000;,
+    0.400000;-0.140000;,
+    0.420000;-0.140000;,
+    0.440000;-0.140000;,
+    0.460000;-0.140000;,
+    0.480000;-0.140000;,
+    0.500000;-0.140000;,
+    0.520000;-0.140000;,
+    0.540000;-0.140000;,
+    0.560000;-0.140000;,
+    0.580000;-0.140000;,
+    0.600000;-0.140000;,
+    0.620000;-0.140000;,
+    0.640000;-0.140000;,
+    0.660000;-0.140000;,
+    0.680000;-0.140000;,
+    0.700000;-0.140000;,
+    0.720000;-0.140000;,
+    0.740000;-0.140000;,
+    0.760000;-0.140000;,
+    0.780000;-0.140000;,
+    0.800000;-0.140000;,
+    0.820000;-0.140000;,
+    0.840000;-0.140000;,
+    0.860000;-0.140000;,
+    0.880000;-0.140000;,
+    0.900000;-0.140000;,
+    0.920000;-0.140000;,
+    0.940000;-0.140000;,
+    0.960000;-0.140000;,
+    0.980000;-0.140000;,
+    0.000000;-0.160000;,
+    0.020000;-0.160000;,
+    0.040000;-0.160000;,
+    0.060000;-0.160000;,
+    0.080000;-0.160000;,
+    0.100000;-0.160000;,
+    0.120000;-0.160000;,
+    0.140000;-0.160000;,
+    0.160000;-0.160000;,
+    0.180000;-0.160000;,
+    0.200000;-0.160000;,
+    0.220000;-0.160000;,
+    0.240000;-0.160000;,
+    0.260000;-0.160000;,
+    0.280000;-0.160000;,
+    0.300000;-0.160000;,
+    0.320000;-0.160000;,
+    0.340000;-0.160000;,
+    0.360000;-0.160000;,
+    0.380000;-0.160000;,
+    0.400000;-0.160000;,
+    0.420000;-0.160000;,
+    0.440000;-0.160000;,
+    0.460000;-0.160000;,
+    0.480000;-0.160000;,
+    0.500000;-0.160000;,
+    0.520000;-0.160000;,
+    0.540000;-0.160000;,
+    0.560000;-0.160000;,
+    0.580000;-0.160000;,
+    0.600000;-0.160000;,
+    0.620000;-0.160000;,
+    0.640000;-0.160000;,
+    0.660000;-0.160000;,
+    0.680000;-0.160000;,
+    0.700000;-0.160000;,
+    0.720000;-0.160000;,
+    0.740000;-0.160000;,
+    0.760000;-0.160000;,
+    0.780000;-0.160000;,
+    0.800000;-0.160000;,
+    0.820000;-0.160000;,
+    0.840000;-0.160000;,
+    0.860000;-0.160000;,
+    0.880000;-0.160000;,
+    0.900000;-0.160000;,
+    0.920000;-0.160000;,
+    0.940000;-0.160000;,
+    0.960000;-0.160000;,
+    0.980000;-0.160000;,
+    0.000000;-0.180000;,
+    0.020000;-0.180000;,
+    0.040000;-0.180000;,
+    0.060000;-0.180000;,
+    0.080000;-0.180000;,
+    0.100000;-0.180000;,
+    0.120000;-0.180000;,
+    0.140000;-0.180000;,
+    0.160000;-0.180000;,
+    0.180000;-0.180000;,
+    0.200000;-0.180000;,
+    0.220000;-0.180000;,
+    0.240000;-0.180000;,
+    0.260000;-0.180000;,
+    0.280000;-0.180000;,
+    0.300000;-0.180000;,
+    0.320000;-0.180000;,
+    0.340000;-0.180000;,
+    0.360000;-0.180000;,
+    0.380000;-0.180000;,
+    0.400000;-0.180000;,
+    0.420000;-0.180000;,
+    0.440000;-0.180000;,
+    0.460000;-0.180000;,
+    0.480000;-0.180000;,
+    0.500000;-0.180000;,
+    0.520000;-0.180000;,
+    0.540000;-0.180000;,
+    0.560000;-0.180000;,
+    0.580000;-0.180000;,
+    0.600000;-0.180000;,
+    0.620000;-0.180000;,
+    0.640000;-0.180000;,
+    0.660000;-0.180000;,
+    0.680000;-0.180000;,
+    0.700000;-0.180000;,
+    0.720000;-0.180000;,
+    0.740000;-0.180000;,
+    0.760000;-0.180000;,
+    0.780000;-0.180000;,
+    0.800000;-0.180000;,
+    0.820000;-0.180000;,
+    0.840000;-0.180000;,
+    0.860000;-0.180000;,
+    0.880000;-0.180000;,
+    0.900000;-0.180000;,
+    0.920000;-0.180000;,
+    0.940000;-0.180000;,
+    0.960000;-0.180000;,
+    0.980000;-0.180000;,
+    0.000000;-0.200000;,
+    0.020000;-0.200000;,
+    0.040000;-0.200000;,
+    0.060000;-0.200000;,
+    0.080000;-0.200000;,
+    0.100000;-0.200000;,
+    0.120000;-0.200000;,
+    0.140000;-0.200000;,
+    0.160000;-0.200000;,
+    0.180000;-0.200000;,
+    0.200000;-0.200000;,
+    0.220000;-0.200000;,
+    0.240000;-0.200000;,
+    0.260000;-0.200000;,
+    0.280000;-0.200000;,
+    0.300000;-0.200000;,
+    0.320000;-0.200000;,
+    0.340000;-0.200000;,
+    0.360000;-0.200000;,
+    0.380000;-0.200000;,
+    0.400000;-0.200000;,
+    0.420000;-0.200000;,
+    0.440000;-0.200000;,
+    0.460000;-0.200000;,
+    0.480000;-0.200000;,
+    0.500000;-0.200000;,
+    0.520000;-0.200000;,
+    0.540000;-0.200000;,
+    0.560000;-0.200000;,
+    0.580000;-0.200000;,
+    0.600000;-0.200000;,
+    0.620000;-0.200000;,
+    0.640000;-0.200000;,
+    0.660000;-0.200000;,
+    0.680000;-0.200000;,
+    0.700000;-0.200000;,
+    0.720000;-0.200000;,
+    0.740000;-0.200000;,
+    0.760000;-0.200000;,
+    0.780000;-0.200000;,
+    0.800000;-0.200000;,
+    0.820000;-0.200000;,
+    0.840000;-0.200000;,
+    0.860000;-0.200000;,
+    0.880000;-0.200000;,
+    0.900000;-0.200000;,
+    0.920000;-0.200000;,
+    0.940000;-0.200000;,
+    0.960000;-0.200000;,
+    0.980000;-0.200000;,
+    0.000000;-0.220000;,
+    0.020000;-0.220000;,
+    0.040000;-0.220000;,
+    0.060000;-0.220000;,
+    0.080000;-0.220000;,
+    0.100000;-0.220000;,
+    0.120000;-0.220000;,
+    0.140000;-0.220000;,
+    0.160000;-0.220000;,
+    0.180000;-0.220000;,
+    0.200000;-0.220000;,
+    0.220000;-0.220000;,
+    0.240000;-0.220000;,
+    0.260000;-0.220000;,
+    0.280000;-0.220000;,
+    0.300000;-0.220000;,
+    0.320000;-0.220000;,
+    0.340000;-0.220000;,
+    0.360000;-0.220000;,
+    0.380000;-0.220000;,
+    0.400000;-0.220000;,
+    0.420000;-0.220000;,
+    0.440000;-0.220000;,
+    0.460000;-0.220000;,
+    0.480000;-0.220000;,
+    0.500000;-0.220000;,
+    0.520000;-0.220000;,
+    0.540000;-0.220000;,
+    0.560000;-0.220000;,
+    0.580000;-0.220000;,
+    0.600000;-0.220000;,
+    0.620000;-0.220000;,
+    0.640000;-0.220000;,
+    0.660000;-0.220000;,
+    0.680000;-0.220000;,
+    0.700000;-0.220000;,
+    0.720000;-0.220000;,
+    0.740000;-0.220000;,
+    0.760000;-0.220000;,
+    0.780000;-0.220000;,
+    0.800000;-0.220000;,
+    0.820000;-0.220000;,
+    0.840000;-0.220000;,
+    0.860000;-0.220000;,
+    0.880000;-0.220000;,
+    0.900000;-0.220000;,
+    0.920000;-0.220000;,
+    0.940000;-0.220000;,
+    0.960000;-0.220000;,
+    0.980000;-0.220000;,
+    0.000000;-0.240000;,
+    0.020000;-0.240000;,
+    0.040000;-0.240000;,
+    0.060000;-0.240000;,
+    0.080000;-0.240000;,
+    0.100000;-0.240000;,
+    0.120000;-0.240000;,
+    0.140000;-0.240000;,
+    0.160000;-0.240000;,
+    0.180000;-0.240000;,
+    0.200000;-0.240000;,
+    0.220000;-0.240000;,
+    0.240000;-0.240000;,
+    0.260000;-0.240000;,
+    0.280000;-0.240000;,
+    0.300000;-0.240000;,
+    0.320000;-0.240000;,
+    0.340000;-0.240000;,
+    0.360000;-0.240000;,
+    0.380000;-0.240000;,
+    0.400000;-0.240000;,
+    0.420000;-0.240000;,
+    0.440000;-0.240000;,
+    0.460000;-0.240000;,
+    0.480000;-0.240000;,
+    0.500000;-0.240000;,
+    0.520000;-0.240000;,
+    0.540000;-0.240000;,
+    0.560000;-0.240000;,
+    0.580000;-0.240000;,
+    0.600000;-0.240000;,
+    0.620000;-0.240000;,
+    0.640000;-0.240000;,
+    0.660000;-0.240000;,
+    0.680000;-0.240000;,
+    0.700000;-0.240000;,
+    0.720000;-0.240000;,
+    0.740000;-0.240000;,
+    0.760000;-0.240000;,
+    0.780000;-0.240000;,
+    0.800000;-0.240000;,
+    0.820000;-0.240000;,
+    0.840000;-0.240000;,
+    0.860000;-0.240000;,
+    0.880000;-0.240000;,
+    0.900000;-0.240000;,
+    0.920000;-0.240000;,
+    0.940000;-0.240000;,
+    0.960000;-0.240000;,
+    0.980000;-0.240000;,
+    0.000000;-0.260000;,
+    0.020000;-0.260000;,
+    0.040000;-0.260000;,
+    0.060000;-0.260000;,
+    0.080000;-0.260000;,
+    0.100000;-0.260000;,
+    0.120000;-0.260000;,
+    0.140000;-0.260000;,
+    0.160000;-0.260000;,
+    0.180000;-0.260000;,
+    0.200000;-0.260000;,
+    0.220000;-0.260000;,
+    0.240000;-0.260000;,
+    0.260000;-0.260000;,
+    0.280000;-0.260000;,
+    0.300000;-0.260000;,
+    0.320000;-0.260000;,
+    0.340000;-0.260000;,
+    0.360000;-0.260000;,
+    0.380000;-0.260000;,
+    0.400000;-0.260000;,
+    0.420000;-0.260000;,
+    0.440000;-0.260000;,
+    0.460000;-0.260000;,
+    0.480000;-0.260000;,
+    0.500000;-0.260000;,
+    0.520000;-0.260000;,
+    0.540000;-0.260000;,
+    0.560000;-0.260000;,
+    0.580000;-0.260000;,
+    0.600000;-0.260000;,
+    0.620000;-0.260000;,
+    0.640000;-0.260000;,
+    0.660000;-0.260000;,
+    0.680000;-0.260000;,
+    0.700000;-0.260000;,
+    0.720000;-0.260000;,
+    0.740000;-0.260000;,
+    0.760000;-0.260000;,
+    0.780000;-0.260000;,
+    0.800000;-0.260000;,
+    0.820000;-0.260000;,
+    0.840000;-0.260000;,
+    0.860000;-0.260000;,
+    0.880000;-0.260000;,
+    0.900000;-0.260000;,
+    0.920000;-0.260000;,
+    0.940000;-0.260000;,
+    0.960000;-0.260000;,
+    0.980000;-0.260000;,
+    0.000000;-0.280000;,
+    0.020000;-0.280000;,
+    0.040000;-0.280000;,
+    0.060000;-0.280000;,
+    0.080000;-0.280000;,
+    0.100000;-0.280000;,
+    0.120000;-0.280000;,
+    0.140000;-0.280000;,
+    0.160000;-0.280000;,
+    0.180000;-0.280000;,
+    0.200000;-0.280000;,
+    0.220000;-0.280000;,
+    0.240000;-0.280000;,
+    0.260000;-0.280000;,
+    0.280000;-0.280000;,
+    0.300000;-0.280000;,
+    0.320000;-0.280000;,
+    0.340000;-0.280000;,
+    0.360000;-0.280000;,
+    0.380000;-0.280000;,
+    0.400000;-0.280000;,
+    0.420000;-0.280000;,
+    0.440000;-0.280000;,
+    0.460000;-0.280000;,
+    0.480000;-0.280000;,
+    0.500000;-0.280000;,
+    0.520000;-0.280000;,
+    0.540000;-0.280000;,
+    0.560000;-0.280000;,
+    0.580000;-0.280000;,
+    0.600000;-0.280000;,
+    0.620000;-0.280000;,
+    0.640000;-0.280000;,
+    0.660000;-0.280000;,
+    0.680000;-0.280000;,
+    0.700000;-0.280000;,
+    0.720000;-0.280000;,
+    0.740000;-0.280000;,
+    0.760000;-0.280000;,
+    0.780000;-0.280000;,
+    0.800000;-0.280000;,
+    0.820000;-0.280000;,
+    0.840000;-0.280000;,
+    0.860000;-0.280000;,
+    0.880000;-0.280000;,
+    0.900000;-0.280000;,
+    0.920000;-0.280000;,
+    0.940000;-0.280000;,
+    0.960000;-0.280000;,
+    0.980000;-0.280000;,
+    0.000000;-0.300000;,
+    0.020000;-0.300000;,
+    0.040000;-0.300000;,
+    0.060000;-0.300000;,
+    0.080000;-0.300000;,
+    0.100000;-0.300000;,
+    0.120000;-0.300000;,
+    0.140000;-0.300000;,
+    0.160000;-0.300000;,
+    0.180000;-0.300000;,
+    0.200000;-0.300000;,
+    0.220000;-0.300000;,
+    0.240000;-0.300000;,
+    0.260000;-0.300000;,
+    0.280000;-0.300000;,
+    0.300000;-0.300000;,
+    0.320000;-0.300000;,
+    0.340000;-0.300000;,
+    0.360000;-0.300000;,
+    0.380000;-0.300000;,
+    0.400000;-0.300000;,
+    0.420000;-0.300000;,
+    0.440000;-0.300000;,
+    0.460000;-0.300000;,
+    0.480000;-0.300000;,
+    0.500000;-0.300000;,
+    0.520000;-0.300000;,
+    0.540000;-0.300000;,
+    0.560000;-0.300000;,
+    0.580000;-0.300000;,
+    0.600000;-0.300000;,
+    0.620000;-0.300000;,
+    0.640000;-0.300000;,
+    0.660000;-0.300000;,
+    0.680000;-0.300000;,
+    0.700000;-0.300000;,
+    0.720000;-0.300000;,
+    0.740000;-0.300000;,
+    0.760000;-0.300000;,
+    0.780000;-0.300000;,
+    0.800000;-0.300000;,
+    0.820000;-0.300000;,
+    0.840000;-0.300000;,
+    0.860000;-0.300000;,
+    0.880000;-0.300000;,
+    0.900000;-0.300000;,
+    0.920000;-0.300000;,
+    0.940000;-0.300000;,
+    0.960000;-0.300000;,
+    0.980000;-0.300000;,
+    0.000000;-0.320000;,
+    0.020000;-0.320000;,
+    0.040000;-0.320000;,
+    0.060000;-0.320000;,
+    0.080000;-0.320000;,
+    0.100000;-0.320000;,
+    0.120000;-0.320000;,
+    0.140000;-0.320000;,
+    0.160000;-0.320000;,
+    0.180000;-0.320000;,
+    0.200000;-0.320000;,
+    0.220000;-0.320000;,
+    0.240000;-0.320000;,
+    0.260000;-0.320000;,
+    0.280000;-0.320000;,
+    0.300000;-0.320000;,
+    0.320000;-0.320000;,
+    0.340000;-0.320000;,
+    0.360000;-0.320000;,
+    0.380000;-0.320000;,
+    0.400000;-0.320000;,
+    0.420000;-0.320000;,
+    0.440000;-0.320000;,
+    0.460000;-0.320000;,
+    0.480000;-0.320000;,
+    0.500000;-0.320000;,
+    0.520000;-0.320000;,
+    0.540000;-0.320000;,
+    0.560000;-0.320000;,
+    0.580000;-0.320000;,
+    0.600000;-0.320000;,
+    0.620000;-0.320000;,
+    0.640000;-0.320000;,
+    0.660000;-0.320000;,
+    0.680000;-0.320000;,
+    0.700000;-0.320000;,
+    0.720000;-0.320000;,
+    0.740000;-0.320000;,
+    0.760000;-0.320000;,
+    0.780000;-0.320000;,
+    0.800000;-0.320000;,
+    0.820000;-0.320000;,
+    0.840000;-0.320000;,
+    0.860000;-0.320000;,
+    0.880000;-0.320000;,
+    0.900000;-0.320000;,
+    0.920000;-0.320000;,
+    0.940000;-0.320000;,
+    0.960000;-0.320000;,
+    0.980000;-0.320000;,
+    0.000000;-0.340000;,
+    0.020000;-0.340000;,
+    0.040000;-0.340000;,
+    0.060000;-0.340000;,
+    0.080000;-0.340000;,
+    0.100000;-0.340000;,
+    0.120000;-0.340000;,
+    0.140000;-0.340000;,
+    0.160000;-0.340000;,
+    0.180000;-0.340000;,
+    0.200000;-0.340000;,
+    0.220000;-0.340000;,
+    0.240000;-0.340000;,
+    0.260000;-0.340000;,
+    0.280000;-0.340000;,
+    0.300000;-0.340000;,
+    0.320000;-0.340000;,
+    0.340000;-0.340000;,
+    0.360000;-0.340000;,
+    0.380000;-0.340000;,
+    0.400000;-0.340000;,
+    0.420000;-0.340000;,
+    0.440000;-0.340000;,
+    0.460000;-0.340000;,
+    0.480000;-0.340000;,
+    0.500000;-0.340000;,
+    0.520000;-0.340000;,
+    0.540000;-0.340000;,
+    0.560000;-0.340000;,
+    0.580000;-0.340000;,
+    0.600000;-0.340000;,
+    0.620000;-0.340000;,
+    0.640000;-0.340000;,
+    0.660000;-0.340000;,
+    0.680000;-0.340000;,
+    0.700000;-0.340000;,
+    0.720000;-0.340000;,
+    0.740000;-0.340000;,
+    0.760000;-0.340000;,
+    0.780000;-0.340000;,
+    0.800000;-0.340000;,
+    0.820000;-0.340000;,
+    0.840000;-0.340000;,
+    0.860000;-0.340000;,
+    0.880000;-0.340000;,
+    0.900000;-0.340000;,
+    0.920000;-0.340000;,
+    0.940000;-0.340000;,
+    0.960000;-0.340000;,
+    0.980000;-0.340000;,
+    0.000000;-0.360000;,
+    0.020000;-0.360000;,
+    0.040000;-0.360000;,
+    0.060000;-0.360000;,
+    0.080000;-0.360000;,
+    0.100000;-0.360000;,
+    0.120000;-0.360000;,
+    0.140000;-0.360000;,
+    0.160000;-0.360000;,
+    0.180000;-0.360000;,
+    0.200000;-0.360000;,
+    0.220000;-0.360000;,
+    0.240000;-0.360000;,
+    0.260000;-0.360000;,
+    0.280000;-0.360000;,
+    0.300000;-0.360000;,
+    0.320000;-0.360000;,
+    0.340000;-0.360000;,
+    0.360000;-0.360000;,
+    0.380000;-0.360000;,
+    0.400000;-0.360000;,
+    0.420000;-0.360000;,
+    0.440000;-0.360000;,
+    0.460000;-0.360000;,
+    0.480000;-0.360000;,
+    0.500000;-0.360000;,
+    0.520000;-0.360000;,
+    0.540000;-0.360000;,
+    0.560000;-0.360000;,
+    0.580000;-0.360000;,
+    0.600000;-0.360000;,
+    0.620000;-0.360000;,
+    0.640000;-0.360000;,
+    0.660000;-0.360000;,
+    0.680000;-0.360000;,
+    0.700000;-0.360000;,
+    0.720000;-0.360000;,
+    0.740000;-0.360000;,
+    0.760000;-0.360000;,
+    0.780000;-0.360000;,
+    0.800000;-0.360000;,
+    0.820000;-0.360000;,
+    0.840000;-0.360000;,
+    0.860000;-0.360000;,
+    0.880000;-0.360000;,
+    0.900000;-0.360000;,
+    0.920000;-0.360000;,
+    0.940000;-0.360000;,
+    0.960000;-0.360000;,
+    0.980000;-0.360000;,
+    0.000000;-0.380000;,
+    0.020000;-0.380000;,
+    0.040000;-0.380000;,
+    0.060000;-0.380000;,
+    0.080000;-0.380000;,
+    0.100000;-0.380000;,
+    0.120000;-0.380000;,
+    0.140000;-0.380000;,
+    0.160000;-0.380000;,
+    0.180000;-0.380000;,
+    0.200000;-0.380000;,
+    0.220000;-0.380000;,
+    0.240000;-0.380000;,
+    0.260000;-0.380000;,
+    0.280000;-0.380000;,
+    0.300000;-0.380000;,
+    0.320000;-0.380000;,
+    0.340000;-0.380000;,
+    0.360000;-0.380000;,
+    0.380000;-0.380000;,
+    0.400000;-0.380000;,
+    0.420000;-0.380000;,
+    0.440000;-0.380000;,
+    0.460000;-0.380000;,
+    0.480000;-0.380000;,
+    0.500000;-0.380000;,
+    0.520000;-0.380000;,
+    0.540000;-0.380000;,
+    0.560000;-0.380000;,
+    0.580000;-0.380000;,
+    0.600000;-0.380000;,
+    0.620000;-0.380000;,
+    0.640000;-0.380000;,
+    0.660000;-0.380000;,
+    0.680000;-0.380000;,
+    0.700000;-0.380000;,
+    0.720000;-0.380000;,
+    0.740000;-0.380000;,
+    0.760000;-0.380000;,
+    0.780000;-0.380000;,
+    0.800000;-0.380000;,
+    0.820000;-0.380000;,
+    0.840000;-0.380000;,
+    0.860000;-0.380000;,
+    0.880000;-0.380000;,
+    0.900000;-0.380000;,
+    0.920000;-0.380000;,
+    0.940000;-0.380000;,
+    0.960000;-0.380000;,
+    0.980000;-0.380000;,
+    0.000000;-0.400000;,
+    0.020000;-0.400000;,
+    0.040000;-0.400000;,
+    0.060000;-0.400000;,
+    0.080000;-0.400000;,
+    0.100000;-0.400000;,
+    0.120000;-0.400000;,
+    0.140000;-0.400000;,
+    0.160000;-0.400000;,
+    0.180000;-0.400000;,
+    0.200000;-0.400000;,
+    0.220000;-0.400000;,
+    0.240000;-0.400000;,
+    0.260000;-0.400000;,
+    0.280000;-0.400000;,
+    0.300000;-0.400000;,
+    0.320000;-0.400000;,
+    0.340000;-0.400000;,
+    0.360000;-0.400000;,
+    0.380000;-0.400000;,
+    0.400000;-0.400000;,
+    0.420000;-0.400000;,
+    0.440000;-0.400000;,
+    0.460000;-0.400000;,
+    0.480000;-0.400000;,
+    0.500000;-0.400000;,
+    0.520000;-0.400000;,
+    0.540000;-0.400000;,
+    0.560000;-0.400000;,
+    0.580000;-0.400000;,
+    0.600000;-0.400000;,
+    0.620000;-0.400000;,
+    0.640000;-0.400000;,
+    0.660000;-0.400000;,
+    0.680000;-0.400000;,
+    0.700000;-0.400000;,
+    0.720000;-0.400000;,
+    0.740000;-0.400000;,
+    0.760000;-0.400000;,
+    0.780000;-0.400000;,
+    0.800000;-0.400000;,
+    0.820000;-0.400000;,
+    0.840000;-0.400000;,
+    0.860000;-0.400000;,
+    0.880000;-0.400000;,
+    0.900000;-0.400000;,
+    0.920000;-0.400000;,
+    0.940000;-0.400000;,
+    0.960000;-0.400000;,
+    0.980000;-0.400000;,
+    0.000000;-0.420000;,
+    0.020000;-0.420000;,
+    0.040000;-0.420000;,
+    0.060000;-0.420000;,
+    0.080000;-0.420000;,
+    0.100000;-0.420000;,
+    0.120000;-0.420000;,
+    0.140000;-0.420000;,
+    0.160000;-0.420000;,
+    0.180000;-0.420000;,
+    0.200000;-0.420000;,
+    0.220000;-0.420000;,
+    0.240000;-0.420000;,
+    0.260000;-0.420000;,
+    0.280000;-0.420000;,
+    0.300000;-0.420000;,
+    0.320000;-0.420000;,
+    0.340000;-0.420000;,
+    0.360000;-0.420000;,
+    0.380000;-0.420000;,
+    0.400000;-0.420000;,
+    0.420000;-0.420000;,
+    0.440000;-0.420000;,
+    0.460000;-0.420000;,
+    0.480000;-0.420000;,
+    0.500000;-0.420000;,
+    0.520000;-0.420000;,
+    0.540000;-0.420000;,
+    0.560000;-0.420000;,
+    0.580000;-0.420000;,
+    0.600000;-0.420000;,
+    0.620000;-0.420000;,
+    0.640000;-0.420000;,
+    0.660000;-0.420000;,
+    0.680000;-0.420000;,
+    0.700000;-0.420000;,
+    0.720000;-0.420000;,
+    0.740000;-0.420000;,
+    0.760000;-0.420000;,
+    0.780000;-0.420000;,
+    0.800000;-0.420000;,
+    0.820000;-0.420000;,
+    0.840000;-0.420000;,
+    0.860000;-0.420000;,
+    0.880000;-0.420000;,
+    0.900000;-0.420000;,
+    0.920000;-0.420000;,
+    0.940000;-0.420000;,
+    0.960000;-0.420000;,
+    0.980000;-0.420000;,
+    0.000000;-0.440000;,
+    0.020000;-0.440000;,
+    0.040000;-0.440000;,
+    0.060000;-0.440000;,
+    0.080000;-0.440000;,
+    0.100000;-0.440000;,
+    0.120000;-0.440000;,
+    0.140000;-0.440000;,
+    0.160000;-0.440000;,
+    0.180000;-0.440000;,
+    0.200000;-0.440000;,
+    0.220000;-0.440000;,
+    0.240000;-0.440000;,
+    0.260000;-0.440000;,
+    0.280000;-0.440000;,
+    0.300000;-0.440000;,
+    0.320000;-0.440000;,
+    0.340000;-0.440000;,
+    0.360000;-0.440000;,
+    0.380000;-0.440000;,
+    0.400000;-0.440000;,
+    0.420000;-0.440000;,
+    0.440000;-0.440000;,
+    0.460000;-0.440000;,
+    0.480000;-0.440000;,
+    0.500000;-0.440000;,
+    0.520000;-0.440000;,
+    0.540000;-0.440000;,
+    0.560000;-0.440000;,
+    0.580000;-0.440000;,
+    0.600000;-0.440000;,
+    0.620000;-0.440000;,
+    0.640000;-0.440000;,
+    0.660000;-0.440000;,
+    0.680000;-0.440000;,
+    0.700000;-0.440000;,
+    0.720000;-0.440000;,
+    0.740000;-0.440000;,
+    0.760000;-0.440000;,
+    0.780000;-0.440000;,
+    0.800000;-0.440000;,
+    0.820000;-0.440000;,
+    0.840000;-0.440000;,
+    0.860000;-0.440000;,
+    0.880000;-0.440000;,
+    0.900000;-0.440000;,
+    0.920000;-0.440000;,
+    0.940000;-0.440000;,
+    0.960000;-0.440000;,
+    0.980000;-0.440000;,
+    0.000000;-0.460000;,
+    0.020000;-0.460000;,
+    0.040000;-0.460000;,
+    0.060000;-0.460000;,
+    0.080000;-0.460000;,
+    0.100000;-0.460000;,
+    0.120000;-0.460000;,
+    0.140000;-0.460000;,
+    0.160000;-0.460000;,
+    0.180000;-0.460000;,
+    0.200000;-0.460000;,
+    0.220000;-0.460000;,
+    0.240000;-0.460000;,
+    0.260000;-0.460000;,
+    0.280000;-0.460000;,
+    0.300000;-0.460000;,
+    0.320000;-0.460000;,
+    0.340000;-0.460000;,
+    0.360000;-0.460000;,
+    0.380000;-0.460000;,
+    0.400000;-0.460000;,
+    0.420000;-0.460000;,
+    0.440000;-0.460000;,
+    0.460000;-0.460000;,
+    0.480000;-0.460000;,
+    0.500000;-0.460000;,
+    0.520000;-0.460000;,
+    0.540000;-0.460000;,
+    0.560000;-0.460000;,
+    0.580000;-0.460000;,
+    0.600000;-0.460000;,
+    0.620000;-0.460000;,
+    0.640000;-0.460000;,
+    0.660000;-0.460000;,
+    0.680000;-0.460000;,
+    0.700000;-0.460000;,
+    0.720000;-0.460000;,
+    0.740000;-0.460000;,
+    0.760000;-0.460000;,
+    0.780000;-0.460000;,
+    0.800000;-0.460000;,
+    0.820000;-0.460000;,
+    0.840000;-0.460000;,
+    0.860000;-0.460000;,
+    0.880000;-0.460000;,
+    0.900000;-0.460000;,
+    0.920000;-0.460000;,
+    0.940000;-0.460000;,
+    0.960000;-0.460000;,
+    0.980000;-0.460000;,
+    0.000000;-0.480000;,
+    0.020000;-0.480000;,
+    0.040000;-0.480000;,
+    0.060000;-0.480000;,
+    0.080000;-0.480000;,
+    0.100000;-0.480000;,
+    0.120000;-0.480000;,
+    0.140000;-0.480000;,
+    0.160000;-0.480000;,
+    0.180000;-0.480000;,
+    0.200000;-0.480000;,
+    0.220000;-0.480000;,
+    0.240000;-0.480000;,
+    0.260000;-0.480000;,
+    0.280000;-0.480000;,
+    0.300000;-0.480000;,
+    0.320000;-0.480000;,
+    0.340000;-0.480000;,
+    0.360000;-0.480000;,
+    0.380000;-0.480000;,
+    0.400000;-0.480000;,
+    0.420000;-0.480000;,
+    0.440000;-0.480000;,
+    0.460000;-0.480000;,
+    0.480000;-0.480000;,
+    0.500000;-0.480000;,
+    0.520000;-0.480000;,
+    0.540000;-0.480000;,
+    0.560000;-0.480000;,
+    0.580000;-0.480000;,
+    0.600000;-0.480000;,
+    0.620000;-0.480000;,
+    0.640000;-0.480000;,
+    0.660000;-0.480000;,
+    0.680000;-0.480000;,
+    0.700000;-0.480000;,
+    0.720000;-0.480000;,
+    0.740000;-0.480000;,
+    0.760000;-0.480000;,
+    0.780000;-0.480000;,
+    0.800000;-0.480000;,
+    0.820000;-0.480000;,
+    0.840000;-0.480000;,
+    0.860000;-0.480000;,
+    0.880000;-0.480000;,
+    0.900000;-0.480000;,
+    0.920000;-0.480000;,
+    0.940000;-0.480000;,
+    0.960000;-0.480000;,
+    0.980000;-0.480000;,
+    0.000000;-0.500000;,
+    0.020000;-0.500000;,
+    0.040000;-0.500000;,
+    0.060000;-0.500000;,
+    0.080000;-0.500000;,
+    0.100000;-0.500000;,
+    0.120000;-0.500000;,
+    0.140000;-0.500000;,
+    0.160000;-0.500000;,
+    0.180000;-0.500000;,
+    0.200000;-0.500000;,
+    0.220000;-0.500000;,
+    0.240000;-0.500000;,
+    0.260000;-0.500000;,
+    0.280000;-0.500000;,
+    0.300000;-0.500000;,
+    0.320000;-0.500000;,
+    0.340000;-0.500000;,
+    0.360000;-0.500000;,
+    0.380000;-0.500000;,
+    0.400000;-0.500000;,
+    0.420000;-0.500000;,
+    0.440000;-0.500000;,
+    0.460000;-0.500000;,
+    0.480000;-0.500000;,
+    0.500000;-0.500000;,
+    0.520000;-0.500000;,
+    0.540000;-0.500000;,
+    0.560000;-0.500000;,
+    0.580000;-0.500000;,
+    0.600000;-0.500000;,
+    0.620000;-0.500000;,
+    0.640000;-0.500000;,
+    0.660000;-0.500000;,
+    0.680000;-0.500000;,
+    0.700000;-0.500000;,
+    0.720000;-0.500000;,
+    0.740000;-0.500000;,
+    0.760000;-0.500000;,
+    0.780000;-0.500000;,
+    0.800000;-0.500000;,
+    0.820000;-0.500000;,
+    0.840000;-0.500000;,
+    0.860000;-0.500000;,
+    0.880000;-0.500000;,
+    0.900000;-0.500000;,
+    0.920000;-0.500000;,
+    0.940000;-0.500000;,
+    0.960000;-0.500000;,
+    0.980000;-0.500000;,
+    0.000000;-0.520000;,
+    0.020000;-0.520000;,
+    0.040000;-0.520000;,
+    0.060000;-0.520000;,
+    0.080000;-0.520000;,
+    0.100000;-0.520000;,
+    0.120000;-0.520000;,
+    0.140000;-0.520000;,
+    0.160000;-0.520000;,
+    0.180000;-0.520000;,
+    0.200000;-0.520000;,
+    0.220000;-0.520000;,
+    0.240000;-0.520000;,
+    0.260000;-0.520000;,
+    0.280000;-0.520000;,
+    0.300000;-0.520000;,
+    0.320000;-0.520000;,
+    0.340000;-0.520000;,
+    0.360000;-0.520000;,
+    0.380000;-0.520000;,
+    0.400000;-0.520000;,
+    0.420000;-0.520000;,
+    0.440000;-0.520000;,
+    0.460000;-0.520000;,
+    0.480000;-0.520000;,
+    0.500000;-0.520000;,
+    0.520000;-0.520000;,
+    0.540000;-0.520000;,
+    0.560000;-0.520000;,
+    0.580000;-0.520000;,
+    0.600000;-0.520000;,
+    0.620000;-0.520000;,
+    0.640000;-0.520000;,
+    0.660000;-0.520000;,
+    0.680000;-0.520000;,
+    0.700000;-0.520000;,
+    0.720000;-0.520000;,
+    0.740000;-0.520000;,
+    0.760000;-0.520000;,
+    0.780000;-0.520000;,
+    0.800000;-0.520000;,
+    0.820000;-0.520000;,
+    0.840000;-0.520000;,
+    0.860000;-0.520000;,
+    0.880000;-0.520000;,
+    0.900000;-0.520000;,
+    0.920000;-0.520000;,
+    0.940000;-0.520000;,
+    0.960000;-0.520000;,
+    0.980000;-0.520000;,
+    0.000000;-0.540000;,
+    0.020000;-0.540000;,
+    0.040000;-0.540000;,
+    0.060000;-0.540000;,
+    0.080000;-0.540000;,
+    0.100000;-0.540000;,
+    0.120000;-0.540000;,
+    0.140000;-0.540000;,
+    0.160000;-0.540000;,
+    0.180000;-0.540000;,
+    0.200000;-0.540000;,
+    0.220000;-0.540000;,
+    0.240000;-0.540000;,
+    0.260000;-0.540000;,
+    0.280000;-0.540000;,
+    0.300000;-0.540000;,
+    0.320000;-0.540000;,
+    0.340000;-0.540000;,
+    0.360000;-0.540000;,
+    0.380000;-0.540000;,
+    0.400000;-0.540000;,
+    0.420000;-0.540000;,
+    0.440000;-0.540000;,
+    0.460000;-0.540000;,
+    0.480000;-0.540000;,
+    0.500000;-0.540000;,
+    0.520000;-0.540000;,
+    0.540000;-0.540000;,
+    0.560000;-0.540000;,
+    0.580000;-0.540000;,
+    0.600000;-0.540000;,
+    0.620000;-0.540000;,
+    0.640000;-0.540000;,
+    0.660000;-0.540000;,
+    0.680000;-0.540000;,
+    0.700000;-0.540000;,
+    0.720000;-0.540000;,
+    0.740000;-0.540000;,
+    0.760000;-0.540000;,
+    0.780000;-0.540000;,
+    0.800000;-0.540000;,
+    0.820000;-0.540000;,
+    0.840000;-0.540000;,
+    0.860000;-0.540000;,
+    0.880000;-0.540000;,
+    0.900000;-0.540000;,
+    0.920000;-0.540000;,
+    0.940000;-0.540000;,
+    0.960000;-0.540000;,
+    0.980000;-0.540000;,
+    0.000000;-0.560000;,
+    0.020000;-0.560000;,
+    0.040000;-0.560000;,
+    0.060000;-0.560000;,
+    0.080000;-0.560000;,
+    0.100000;-0.560000;,
+    0.120000;-0.560000;,
+    0.140000;-0.560000;,
+    0.160000;-0.560000;,
+    0.180000;-0.560000;,
+    0.200000;-0.560000;,
+    0.220000;-0.560000;,
+    0.240000;-0.560000;,
+    0.260000;-0.560000;,
+    0.280000;-0.560000;,
+    0.300000;-0.560000;,
+    0.320000;-0.560000;,
+    0.340000;-0.560000;,
+    0.360000;-0.560000;,
+    0.380000;-0.560000;,
+    0.400000;-0.560000;,
+    0.420000;-0.560000;,
+    0.440000;-0.560000;,
+    0.460000;-0.560000;,
+    0.480000;-0.560000;,
+    0.500000;-0.560000;,
+    0.520000;-0.560000;,
+    0.540000;-0.560000;,
+    0.560000;-0.560000;,
+    0.580000;-0.560000;,
+    0.600000;-0.560000;,
+    0.620000;-0.560000;,
+    0.640000;-0.560000;,
+    0.660000;-0.560000;,
+    0.680000;-0.560000;,
+    0.700000;-0.560000;,
+    0.720000;-0.560000;,
+    0.740000;-0.560000;,
+    0.760000;-0.560000;,
+    0.780000;-0.560000;,
+    0.800000;-0.560000;,
+    0.820000;-0.560000;,
+    0.840000;-0.560000;,
+    0.860000;-0.560000;,
+    0.880000;-0.560000;,
+    0.900000;-0.560000;,
+    0.920000;-0.560000;,
+    0.940000;-0.560000;,
+    0.960000;-0.560000;,
+    0.980000;-0.560000;,
+    0.000000;-0.580000;,
+    0.020000;-0.580000;,
+    0.040000;-0.580000;,
+    0.060000;-0.580000;,
+    0.080000;-0.580000;,
+    0.100000;-0.580000;,
+    0.120000;-0.580000;,
+    0.140000;-0.580000;,
+    0.160000;-0.580000;,
+    0.180000;-0.580000;,
+    0.200000;-0.580000;,
+    0.220000;-0.580000;,
+    0.240000;-0.580000;,
+    0.260000;-0.580000;,
+    0.280000;-0.580000;,
+    0.300000;-0.580000;,
+    0.320000;-0.580000;,
+    0.340000;-0.580000;,
+    0.360000;-0.580000;,
+    0.380000;-0.580000;,
+    0.400000;-0.580000;,
+    0.420000;-0.580000;,
+    0.440000;-0.580000;,
+    0.460000;-0.580000;,
+    0.480000;-0.580000;,
+    0.500000;-0.580000;,
+    0.520000;-0.580000;,
+    0.540000;-0.580000;,
+    0.560000;-0.580000;,
+    0.580000;-0.580000;,
+    0.600000;-0.580000;,
+    0.620000;-0.580000;,
+    0.640000;-0.580000;,
+    0.660000;-0.580000;,
+    0.680000;-0.580000;,
+    0.700000;-0.580000;,
+    0.720000;-0.580000;,
+    0.740000;-0.580000;,
+    0.760000;-0.580000;,
+    0.780000;-0.580000;,
+    0.800000;-0.580000;,
+    0.820000;-0.580000;,
+    0.840000;-0.580000;,
+    0.860000;-0.580000;,
+    0.880000;-0.580000;,
+    0.900000;-0.580000;,
+    0.920000;-0.580000;,
+    0.940000;-0.580000;,
+    0.960000;-0.580000;,
+    0.980000;-0.580000;,
+    0.000000;-0.600000;,
+    0.020000;-0.600000;,
+    0.040000;-0.600000;,
+    0.060000;-0.600000;,
+    0.080000;-0.600000;,
+    0.100000;-0.600000;,
+    0.120000;-0.600000;,
+    0.140000;-0.600000;,
+    0.160000;-0.600000;,
+    0.180000;-0.600000;,
+    0.200000;-0.600000;,
+    0.220000;-0.600000;,
+    0.240000;-0.600000;,
+    0.260000;-0.600000;,
+    0.280000;-0.600000;,
+    0.300000;-0.600000;,
+    0.320000;-0.600000;,
+    0.340000;-0.600000;,
+    0.360000;-0.600000;,
+    0.380000;-0.600000;,
+    0.400000;-0.600000;,
+    0.420000;-0.600000;,
+    0.440000;-0.600000;,
+    0.460000;-0.600000;,
+    0.480000;-0.600000;,
+    0.500000;-0.600000;,
+    0.520000;-0.600000;,
+    0.540000;-0.600000;,
+    0.560000;-0.600000;,
+    0.580000;-0.600000;,
+    0.600000;-0.600000;,
+    0.620000;-0.600000;,
+    0.640000;-0.600000;,
+    0.660000;-0.600000;,
+    0.680000;-0.600000;,
+    0.700000;-0.600000;,
+    0.720000;-0.600000;,
+    0.740000;-0.600000;,
+    0.760000;-0.600000;,
+    0.780000;-0.600000;,
+    0.800000;-0.600000;,
+    0.820000;-0.600000;,
+    0.840000;-0.600000;,
+    0.860000;-0.600000;,
+    0.880000;-0.600000;,
+    0.900000;-0.600000;,
+    0.920000;-0.600000;,
+    0.940000;-0.600000;,
+    0.960000;-0.600000;,
+    0.980000;-0.600000;,
+    0.000000;-0.620000;,
+    0.020000;-0.620000;,
+    0.040000;-0.620000;,
+    0.060000;-0.620000;,
+    0.080000;-0.620000;,
+    0.100000;-0.620000;,
+    0.120000;-0.620000;,
+    0.140000;-0.620000;,
+    0.160000;-0.620000;,
+    0.180000;-0.620000;,
+    0.200000;-0.620000;,
+    0.220000;-0.620000;,
+    0.240000;-0.620000;,
+    0.260000;-0.620000;,
+    0.280000;-0.620000;,
+    0.300000;-0.620000;,
+    0.320000;-0.620000;,
+    0.340000;-0.620000;,
+    0.360000;-0.620000;,
+    0.380000;-0.620000;,
+    0.400000;-0.620000;,
+    0.420000;-0.620000;,
+    0.440000;-0.620000;,
+    0.460000;-0.620000;,
+    0.480000;-0.620000;,
+    0.500000;-0.620000;,
+    0.520000;-0.620000;,
+    0.540000;-0.620000;,
+    0.560000;-0.620000;,
+    0.580000;-0.620000;,
+    0.600000;-0.620000;,
+    0.620000;-0.620000;,
+    0.640000;-0.620000;,
+    0.660000;-0.620000;,
+    0.680000;-0.620000;,
+    0.700000;-0.620000;,
+    0.720000;-0.620000;,
+    0.740000;-0.620000;,
+    0.760000;-0.620000;,
+    0.780000;-0.620000;,
+    0.800000;-0.620000;,
+    0.820000;-0.620000;,
+    0.840000;-0.620000;,
+    0.860000;-0.620000;,
+    0.880000;-0.620000;,
+    0.900000;-0.620000;,
+    0.920000;-0.620000;,
+    0.940000;-0.620000;,
+    0.960000;-0.620000;,
+    0.980000;-0.620000;,
+    0.000000;-0.640000;,
+    0.020000;-0.640000;,
+    0.040000;-0.640000;,
+    0.060000;-0.640000;,
+    0.080000;-0.640000;,
+    0.100000;-0.640000;,
+    0.120000;-0.640000;,
+    0.140000;-0.640000;,
+    0.160000;-0.640000;,
+    0.180000;-0.640000;,
+    0.200000;-0.640000;,
+    0.220000;-0.640000;,
+    0.240000;-0.640000;,
+    0.260000;-0.640000;,
+    0.280000;-0.640000;,
+    0.300000;-0.640000;,
+    0.320000;-0.640000;,
+    0.340000;-0.640000;,
+    0.360000;-0.640000;,
+    0.380000;-0.640000;,
+    0.400000;-0.640000;,
+    0.420000;-0.640000;,
+    0.440000;-0.640000;,
+    0.460000;-0.640000;,
+    0.480000;-0.640000;,
+    0.500000;-0.640000;,
+    0.520000;-0.640000;,
+    0.540000;-0.640000;,
+    0.560000;-0.640000;,
+    0.580000;-0.640000;,
+    0.600000;-0.640000;,
+    0.620000;-0.640000;,
+    0.640000;-0.640000;,
+    0.660000;-0.640000;,
+    0.680000;-0.640000;,
+    0.700000;-0.640000;,
+    0.720000;-0.640000;,
+    0.740000;-0.640000;,
+    0.760000;-0.640000;,
+    0.780000;-0.640000;,
+    0.800000;-0.640000;,
+    0.820000;-0.640000;,
+    0.840000;-0.640000;,
+    0.860000;-0.640000;,
+    0.880000;-0.640000;,
+    0.900000;-0.640000;,
+    0.920000;-0.640000;,
+    0.940000;-0.640000;,
+    0.960000;-0.640000;,
+    0.980000;-0.640000;,
+    0.000000;-0.660000;,
+    0.020000;-0.660000;,
+    0.040000;-0.660000;,
+    0.060000;-0.660000;,
+    0.080000;-0.660000;,
+    0.100000;-0.660000;,
+    0.120000;-0.660000;,
+    0.140000;-0.660000;,
+    0.160000;-0.660000;,
+    0.180000;-0.660000;,
+    0.200000;-0.660000;,
+    0.220000;-0.660000;,
+    0.240000;-0.660000;,
+    0.260000;-0.660000;,
+    0.280000;-0.660000;,
+    0.300000;-0.660000;,
+    0.320000;-0.660000;,
+    0.340000;-0.660000;,
+    0.360000;-0.660000;,
+    0.380000;-0.660000;,
+    0.400000;-0.660000;,
+    0.420000;-0.660000;,
+    0.440000;-0.660000;,
+    0.460000;-0.660000;,
+    0.480000;-0.660000;,
+    0.500000;-0.660000;,
+    0.520000;-0.660000;,
+    0.540000;-0.660000;,
+    0.560000;-0.660000;,
+    0.580000;-0.660000;,
+    0.600000;-0.660000;,
+    0.620000;-0.660000;,
+    0.640000;-0.660000;,
+    0.660000;-0.660000;,
+    0.680000;-0.660000;,
+    0.700000;-0.660000;,
+    0.720000;-0.660000;,
+    0.740000;-0.660000;,
+    0.760000;-0.660000;,
+    0.780000;-0.660000;,
+    0.800000;-0.660000;,
+    0.820000;-0.660000;,
+    0.840000;-0.660000;,
+    0.860000;-0.660000;,
+    0.880000;-0.660000;,
+    0.900000;-0.660000;,
+    0.920000;-0.660000;,
+    0.940000;-0.660000;,
+    0.960000;-0.660000;,
+    0.980000;-0.660000;,
+    0.000000;-0.680000;,
+    0.020000;-0.680000;,
+    0.040000;-0.680000;,
+    0.060000;-0.680000;,
+    0.080000;-0.680000;,
+    0.100000;-0.680000;,
+    0.120000;-0.680000;,
+    0.140000;-0.680000;,
+    0.160000;-0.680000;,
+    0.180000;-0.680000;,
+    0.200000;-0.680000;,
+    0.220000;-0.680000;,
+    0.240000;-0.680000;,
+    0.260000;-0.680000;,
+    0.280000;-0.680000;,
+    0.300000;-0.680000;,
+    0.320000;-0.680000;,
+    0.340000;-0.680000;,
+    0.360000;-0.680000;,
+    0.380000;-0.680000;,
+    0.400000;-0.680000;,
+    0.420000;-0.680000;,
+    0.440000;-0.680000;,
+    0.460000;-0.680000;,
+    0.480000;-0.680000;,
+    0.500000;-0.680000;,
+    0.520000;-0.680000;,
+    0.540000;-0.680000;,
+    0.560000;-0.680000;,
+    0.580000;-0.680000;,
+    0.600000;-0.680000;,
+    0.620000;-0.680000;,
+    0.640000;-0.680000;,
+    0.660000;-0.680000;,
+    0.680000;-0.680000;,
+    0.700000;-0.680000;,
+    0.720000;-0.680000;,
+    0.740000;-0.680000;,
+    0.760000;-0.680000;,
+    0.780000;-0.680000;,
+    0.800000;-0.680000;,
+    0.820000;-0.680000;,
+    0.840000;-0.680000;,
+    0.860000;-0.680000;,
+    0.880000;-0.680000;,
+    0.900000;-0.680000;,
+    0.920000;-0.680000;,
+    0.940000;-0.680000;,
+    0.960000;-0.680000;,
+    0.980000;-0.680000;,
+    0.000000;-0.700000;,
+    0.020000;-0.700000;,
+    0.040000;-0.700000;,
+    0.060000;-0.700000;,
+    0.080000;-0.700000;,
+    0.100000;-0.700000;,
+    0.120000;-0.700000;,
+    0.140000;-0.700000;,
+    0.160000;-0.700000;,
+    0.180000;-0.700000;,
+    0.200000;-0.700000;,
+    0.220000;-0.700000;,
+    0.240000;-0.700000;,
+    0.260000;-0.700000;,
+    0.280000;-0.700000;,
+    0.300000;-0.700000;,
+    0.320000;-0.700000;,
+    0.340000;-0.700000;,
+    0.360000;-0.700000;,
+    0.380000;-0.700000;,
+    0.400000;-0.700000;,
+    0.420000;-0.700000;,
+    0.440000;-0.700000;,
+    0.460000;-0.700000;,
+    0.480000;-0.700000;,
+    0.500000;-0.700000;,
+    0.520000;-0.700000;,
+    0.540000;-0.700000;,
+    0.560000;-0.700000;,
+    0.580000;-0.700000;,
+    0.600000;-0.700000;,
+    0.620000;-0.700000;,
+    0.640000;-0.700000;,
+    0.660000;-0.700000;,
+    0.680000;-0.700000;,
+    0.700000;-0.700000;,
+    0.720000;-0.700000;,
+    0.740000;-0.700000;,
+    0.760000;-0.700000;,
+    0.780000;-0.700000;,
+    0.800000;-0.700000;,
+    0.820000;-0.700000;,
+    0.840000;-0.700000;,
+    0.860000;-0.700000;,
+    0.880000;-0.700000;,
+    0.900000;-0.700000;,
+    0.920000;-0.700000;,
+    0.940000;-0.700000;,
+    0.960000;-0.700000;,
+    0.980000;-0.700000;,
+    0.000000;-0.720000;,
+    0.020000;-0.720000;,
+    0.040000;-0.720000;,
+    0.060000;-0.720000;,
+    0.080000;-0.720000;,
+    0.100000;-0.720000;,
+    0.120000;-0.720000;,
+    0.140000;-0.720000;,
+    0.160000;-0.720000;,
+    0.180000;-0.720000;,
+    0.200000;-0.720000;,
+    0.220000;-0.720000;,
+    0.240000;-0.720000;,
+    0.260000;-0.720000;,
+    0.280000;-0.720000;,
+    0.300000;-0.720000;,
+    0.320000;-0.720000;,
+    0.340000;-0.720000;,
+    0.360000;-0.720000;,
+    0.380000;-0.720000;,
+    0.400000;-0.720000;,
+    0.420000;-0.720000;,
+    0.440000;-0.720000;,
+    0.460000;-0.720000;,
+    0.480000;-0.720000;,
+    0.500000;-0.720000;,
+    0.520000;-0.720000;,
+    0.540000;-0.720000;,
+    0.560000;-0.720000;,
+    0.580000;-0.720000;,
+    0.600000;-0.720000;,
+    0.620000;-0.720000;,
+    0.640000;-0.720000;,
+    0.660000;-0.720000;,
+    0.680000;-0.720000;,
+    0.700000;-0.720000;,
+    0.720000;-0.720000;,
+    0.740000;-0.720000;,
+    0.760000;-0.720000;,
+    0.780000;-0.720000;,
+    0.800000;-0.720000;,
+    0.820000;-0.720000;,
+    0.840000;-0.720000;,
+    0.860000;-0.720000;,
+    0.880000;-0.720000;,
+    0.900000;-0.720000;,
+    0.920000;-0.720000;,
+    0.940000;-0.720000;,
+    0.960000;-0.720000;,
+    0.980000;-0.720000;,
+    0.000000;-0.740000;,
+    0.020000;-0.740000;,
+    0.040000;-0.740000;,
+    0.060000;-0.740000;,
+    0.080000;-0.740000;,
+    0.100000;-0.740000;,
+    0.120000;-0.740000;,
+    0.140000;-0.740000;,
+    0.160000;-0.740000;,
+    0.180000;-0.740000;,
+    0.200000;-0.740000;,
+    0.220000;-0.740000;,
+    0.240000;-0.740000;,
+    0.260000;-0.740000;,
+    0.280000;-0.740000;,
+    0.300000;-0.740000;,
+    0.320000;-0.740000;,
+    0.340000;-0.740000;,
+    0.360000;-0.740000;,
+    0.380000;-0.740000;,
+    0.400000;-0.740000;,
+    0.420000;-0.740000;,
+    0.440000;-0.740000;,
+    0.460000;-0.740000;,
+    0.480000;-0.740000;,
+    0.500000;-0.740000;,
+    0.520000;-0.740000;,
+    0.540000;-0.740000;,
+    0.560000;-0.740000;,
+    0.580000;-0.740000;,
+    0.600000;-0.740000;,
+    0.620000;-0.740000;,
+    0.640000;-0.740000;,
+    0.660000;-0.740000;,
+    0.680000;-0.740000;,
+    0.700000;-0.740000;,
+    0.720000;-0.740000;,
+    0.740000;-0.740000;,
+    0.760000;-0.740000;,
+    0.780000;-0.740000;,
+    0.800000;-0.740000;,
+    0.820000;-0.740000;,
+    0.840000;-0.740000;,
+    0.860000;-0.740000;,
+    0.880000;-0.740000;,
+    0.900000;-0.740000;,
+    0.920000;-0.740000;,
+    0.940000;-0.740000;,
+    0.960000;-0.740000;,
+    0.980000;-0.740000;,
+    0.000000;-0.760000;,
+    0.020000;-0.760000;,
+    0.040000;-0.760000;,
+    0.060000;-0.760000;,
+    0.080000;-0.760000;,
+    0.100000;-0.760000;,
+    0.120000;-0.760000;,
+    0.140000;-0.760000;,
+    0.160000;-0.760000;,
+    0.180000;-0.760000;,
+    0.200000;-0.760000;,
+    0.220000;-0.760000;,
+    0.240000;-0.760000;,
+    0.260000;-0.760000;,
+    0.280000;-0.760000;,
+    0.300000;-0.760000;,
+    0.320000;-0.760000;,
+    0.340000;-0.760000;,
+    0.360000;-0.760000;,
+    0.380000;-0.760000;,
+    0.400000;-0.760000;,
+    0.420000;-0.760000;,
+    0.440000;-0.760000;,
+    0.460000;-0.760000;,
+    0.480000;-0.760000;,
+    0.500000;-0.760000;,
+    0.520000;-0.760000;,
+    0.540000;-0.760000;,
+    0.560000;-0.760000;,
+    0.580000;-0.760000;,
+    0.600000;-0.760000;,
+    0.620000;-0.760000;,
+    0.640000;-0.760000;,
+    0.660000;-0.760000;,
+    0.680000;-0.760000;,
+    0.700000;-0.760000;,
+    0.720000;-0.760000;,
+    0.740000;-0.760000;,
+    0.760000;-0.760000;,
+    0.780000;-0.760000;,
+    0.800000;-0.760000;,
+    0.820000;-0.760000;,
+    0.840000;-0.760000;,
+    0.860000;-0.760000;,
+    0.880000;-0.760000;,
+    0.900000;-0.760000;,
+    0.920000;-0.760000;,
+    0.940000;-0.760000;,
+    0.960000;-0.760000;,
+    0.980000;-0.760000;,
+    0.000000;-0.780000;,
+    0.020000;-0.780000;,
+    0.040000;-0.780000;,
+    0.060000;-0.780000;,
+    0.080000;-0.780000;,
+    0.100000;-0.780000;,
+    0.120000;-0.780000;,
+    0.140000;-0.780000;,
+    0.160000;-0.780000;,
+    0.180000;-0.780000;,
+    0.200000;-0.780000;,
+    0.220000;-0.780000;,
+    0.240000;-0.780000;,
+    0.260000;-0.780000;,
+    0.280000;-0.780000;,
+    0.300000;-0.780000;,
+    0.320000;-0.780000;,
+    0.340000;-0.780000;,
+    0.360000;-0.780000;,
+    0.380000;-0.780000;,
+    0.400000;-0.780000;,
+    0.420000;-0.780000;,
+    0.440000;-0.780000;,
+    0.460000;-0.780000;,
+    0.480000;-0.780000;,
+    0.500000;-0.780000;,
+    0.520000;-0.780000;,
+    0.540000;-0.780000;,
+    0.560000;-0.780000;,
+    0.580000;-0.780000;,
+    0.600000;-0.780000;,
+    0.620000;-0.780000;,
+    0.640000;-0.780000;,
+    0.660000;-0.780000;,
+    0.680000;-0.780000;,
+    0.700000;-0.780000;,
+    0.720000;-0.780000;,
+    0.740000;-0.780000;,
+    0.760000;-0.780000;,
+    0.780000;-0.780000;,
+    0.800000;-0.780000;,
+    0.820000;-0.780000;,
+    0.840000;-0.780000;,
+    0.860000;-0.780000;,
+    0.880000;-0.780000;,
+    0.900000;-0.780000;,
+    0.920000;-0.780000;,
+    0.940000;-0.780000;,
+    0.960000;-0.780000;,
+    0.980000;-0.780000;,
+    0.000000;-0.800000;,
+    0.020000;-0.800000;,
+    0.040000;-0.800000;,
+    0.060000;-0.800000;,
+    0.080000;-0.800000;,
+    0.100000;-0.800000;,
+    0.120000;-0.800000;,
+    0.140000;-0.800000;,
+    0.160000;-0.800000;,
+    0.180000;-0.800000;,
+    0.200000;-0.800000;,
+    0.220000;-0.800000;,
+    0.240000;-0.800000;,
+    0.260000;-0.800000;,
+    0.280000;-0.800000;,
+    0.300000;-0.800000;,
+    0.320000;-0.800000;,
+    0.340000;-0.800000;,
+    0.360000;-0.800000;,
+    0.380000;-0.800000;,
+    0.400000;-0.800000;,
+    0.420000;-0.800000;,
+    0.440000;-0.800000;,
+    0.460000;-0.800000;,
+    0.480000;-0.800000;,
+    0.500000;-0.800000;,
+    0.520000;-0.800000;,
+    0.540000;-0.800000;,
+    0.560000;-0.800000;,
+    0.580000;-0.800000;,
+    0.600000;-0.800000;,
+    0.620000;-0.800000;,
+    0.640000;-0.800000;,
+    0.660000;-0.800000;,
+    0.680000;-0.800000;,
+    0.700000;-0.800000;,
+    0.720000;-0.800000;,
+    0.740000;-0.800000;,
+    0.760000;-0.800000;,
+    0.780000;-0.800000;,
+    0.800000;-0.800000;,
+    0.820000;-0.800000;,
+    0.840000;-0.800000;,
+    0.860000;-0.800000;,
+    0.880000;-0.800000;,
+    0.900000;-0.800000;,
+    0.920000;-0.800000;,
+    0.940000;-0.800000;,
+    0.960000;-0.800000;,
+    0.980000;-0.800000;,
+    0.000000;-0.820000;,
+    0.020000;-0.820000;,
+    0.040000;-0.820000;,
+    0.060000;-0.820000;,
+    0.080000;-0.820000;,
+    0.100000;-0.820000;,
+    0.120000;-0.820000;,
+    0.140000;-0.820000;,
+    0.160000;-0.820000;,
+    0.180000;-0.820000;,
+    0.200000;-0.820000;,
+    0.220000;-0.820000;,
+    0.240000;-0.820000;,
+    0.260000;-0.820000;,
+    0.280000;-0.820000;,
+    0.300000;-0.820000;,
+    0.320000;-0.820000;,
+    0.340000;-0.820000;,
+    0.360000;-0.820000;,
+    0.380000;-0.820000;,
+    0.400000;-0.820000;,
+    0.420000;-0.820000;,
+    0.440000;-0.820000;,
+    0.460000;-0.820000;,
+    0.480000;-0.820000;,
+    0.500000;-0.820000;,
+    0.520000;-0.820000;,
+    0.540000;-0.820000;,
+    0.560000;-0.820000;,
+    0.580000;-0.820000;,
+    0.600000;-0.820000;,
+    0.620000;-0.820000;,
+    0.640000;-0.820000;,
+    0.660000;-0.820000;,
+    0.680000;-0.820000;,
+    0.700000;-0.820000;,
+    0.720000;-0.820000;,
+    0.740000;-0.820000;,
+    0.760000;-0.820000;,
+    0.780000;-0.820000;,
+    0.800000;-0.820000;,
+    0.820000;-0.820000;,
+    0.840000;-0.820000;,
+    0.860000;-0.820000;,
+    0.880000;-0.820000;,
+    0.900000;-0.820000;,
+    0.920000;-0.820000;,
+    0.940000;-0.820000;,
+    0.960000;-0.820000;,
+    0.980000;-0.820000;,
+    0.000000;-0.840000;,
+    0.020000;-0.840000;,
+    0.040000;-0.840000;,
+    0.060000;-0.840000;,
+    0.080000;-0.840000;,
+    0.100000;-0.840000;,
+    0.120000;-0.840000;,
+    0.140000;-0.840000;,
+    0.160000;-0.840000;,
+    0.180000;-0.840000;,
+    0.200000;-0.840000;,
+    0.220000;-0.840000;,
+    0.240000;-0.840000;,
+    0.260000;-0.840000;,
+    0.280000;-0.840000;,
+    0.300000;-0.840000;,
+    0.320000;-0.840000;,
+    0.340000;-0.840000;,
+    0.360000;-0.840000;,
+    0.380000;-0.840000;,
+    0.400000;-0.840000;,
+    0.420000;-0.840000;,
+    0.440000;-0.840000;,
+    0.460000;-0.840000;,
+    0.480000;-0.840000;,
+    0.500000;-0.840000;,
+    0.520000;-0.840000;,
+    0.540000;-0.840000;,
+    0.560000;-0.840000;,
+    0.580000;-0.840000;,
+    0.600000;-0.840000;,
+    0.620000;-0.840000;,
+    0.640000;-0.840000;,
+    0.660000;-0.840000;,
+    0.680000;-0.840000;,
+    0.700000;-0.840000;,
+    0.720000;-0.840000;,
+    0.740000;-0.840000;,
+    0.760000;-0.840000;,
+    0.780000;-0.840000;,
+    0.800000;-0.840000;,
+    0.820000;-0.840000;,
+    0.840000;-0.840000;,
+    0.860000;-0.840000;,
+    0.880000;-0.840000;,
+    0.900000;-0.840000;,
+    0.920000;-0.840000;,
+    0.940000;-0.840000;,
+    0.960000;-0.840000;,
+    0.980000;-0.840000;,
+    0.000000;-0.860000;,
+    0.020000;-0.860000;,
+    0.040000;-0.860000;,
+    0.060000;-0.860000;,
+    0.080000;-0.860000;,
+    0.100000;-0.860000;,
+    0.120000;-0.860000;,
+    0.140000;-0.860000;,
+    0.160000;-0.860000;,
+    0.180000;-0.860000;,
+    0.200000;-0.860000;,
+    0.220000;-0.860000;,
+    0.240000;-0.860000;,
+    0.260000;-0.860000;,
+    0.280000;-0.860000;,
+    0.300000;-0.860000;,
+    0.320000;-0.860000;,
+    0.340000;-0.860000;,
+    0.360000;-0.860000;,
+    0.380000;-0.860000;,
+    0.400000;-0.860000;,
+    0.420000;-0.860000;,
+    0.440000;-0.860000;,
+    0.460000;-0.860000;,
+    0.480000;-0.860000;,
+    0.500000;-0.860000;,
+    0.520000;-0.860000;,
+    0.540000;-0.860000;,
+    0.560000;-0.860000;,
+    0.580000;-0.860000;,
+    0.600000;-0.860000;,
+    0.620000;-0.860000;,
+    0.640000;-0.860000;,
+    0.660000;-0.860000;,
+    0.680000;-0.860000;,
+    0.700000;-0.860000;,
+    0.720000;-0.860000;,
+    0.740000;-0.860000;,
+    0.760000;-0.860000;,
+    0.780000;-0.860000;,
+    0.800000;-0.860000;,
+    0.820000;-0.860000;,
+    0.840000;-0.860000;,
+    0.860000;-0.860000;,
+    0.880000;-0.860000;,
+    0.900000;-0.860000;,
+    0.920000;-0.860000;,
+    0.940000;-0.860000;,
+    0.960000;-0.860000;,
+    0.980000;-0.860000;,
+    0.000000;-0.880000;,
+    0.020000;-0.880000;,
+    0.040000;-0.880000;,
+    0.060000;-0.880000;,
+    0.080000;-0.880000;,
+    0.100000;-0.880000;,
+    0.120000;-0.880000;,
+    0.140000;-0.880000;,
+    0.160000;-0.880000;,
+    0.180000;-0.880000;,
+    0.200000;-0.880000;,
+    0.220000;-0.880000;,
+    0.240000;-0.880000;,
+    0.260000;-0.880000;,
+    0.280000;-0.880000;,
+    0.300000;-0.880000;,
+    0.320000;-0.880000;,
+    0.340000;-0.880000;,
+    0.360000;-0.880000;,
+    0.380000;-0.880000;,
+    0.400000;-0.880000;,
+    0.420000;-0.880000;,
+    0.440000;-0.880000;,
+    0.460000;-0.880000;,
+    0.480000;-0.880000;,
+    0.500000;-0.880000;,
+    0.520000;-0.880000;,
+    0.540000;-0.880000;,
+    0.560000;-0.880000;,
+    0.580000;-0.880000;,
+    0.600000;-0.880000;,
+    0.620000;-0.880000;,
+    0.640000;-0.880000;,
+    0.660000;-0.880000;,
+    0.680000;-0.880000;,
+    0.700000;-0.880000;,
+    0.720000;-0.880000;,
+    0.740000;-0.880000;,
+    0.760000;-0.880000;,
+    0.780000;-0.880000;,
+    0.800000;-0.880000;,
+    0.820000;-0.880000;,
+    0.840000;-0.880000;,
+    0.860000;-0.880000;,
+    0.880000;-0.880000;,
+    0.900000;-0.880000;,
+    0.920000;-0.880000;,
+    0.940000;-0.880000;,
+    0.960000;-0.880000;,
+    0.980000;-0.880000;,
+    0.000000;-0.900000;,
+    0.020000;-0.900000;,
+    0.040000;-0.900000;,
+    0.060000;-0.900000;,
+    0.080000;-0.900000;,
+    0.100000;-0.900000;,
+    0.120000;-0.900000;,
+    0.140000;-0.900000;,
+    0.160000;-0.900000;,
+    0.180000;-0.900000;,
+    0.200000;-0.900000;,
+    0.220000;-0.900000;,
+    0.240000;-0.900000;,
+    0.260000;-0.900000;,
+    0.280000;-0.900000;,
+    0.300000;-0.900000;,
+    0.320000;-0.900000;,
+    0.340000;-0.900000;,
+    0.360000;-0.900000;,
+    0.380000;-0.900000;,
+    0.400000;-0.900000;,
+    0.420000;-0.900000;,
+    0.440000;-0.900000;,
+    0.460000;-0.900000;,
+    0.480000;-0.900000;,
+    0.500000;-0.900000;,
+    0.520000;-0.900000;,
+    0.540000;-0.900000;,
+    0.560000;-0.900000;,
+    0.580000;-0.900000;,
+    0.600000;-0.900000;,
+    0.620000;-0.900000;,
+    0.640000;-0.900000;,
+    0.660000;-0.900000;,
+    0.680000;-0.900000;,
+    0.700000;-0.900000;,
+    0.720000;-0.900000;,
+    0.740000;-0.900000;,
+    0.760000;-0.900000;,
+    0.780000;-0.900000;,
+    0.800000;-0.900000;,
+    0.820000;-0.900000;,
+    0.840000;-0.900000;,
+    0.860000;-0.900000;,
+    0.880000;-0.900000;,
+    0.900000;-0.900000;,
+    0.920000;-0.900000;,
+    0.940000;-0.900000;,
+    0.960000;-0.900000;,
+    0.980000;-0.900000;,
+    0.000000;-0.920000;,
+    0.020000;-0.920000;,
+    0.040000;-0.920000;,
+    0.060000;-0.920000;,
+    0.080000;-0.920000;,
+    0.100000;-0.920000;,
+    0.120000;-0.920000;,
+    0.140000;-0.920000;,
+    0.160000;-0.920000;,
+    0.180000;-0.920000;,
+    0.200000;-0.920000;,
+    0.220000;-0.920000;,
+    0.240000;-0.920000;,
+    0.260000;-0.920000;,
+    0.280000;-0.920000;,
+    0.300000;-0.920000;,
+    0.320000;-0.920000;,
+    0.340000;-0.920000;,
+    0.360000;-0.920000;,
+    0.380000;-0.920000;,
+    0.400000;-0.920000;,
+    0.420000;-0.920000;,
+    0.440000;-0.920000;,
+    0.460000;-0.920000;,
+    0.480000;-0.920000;,
+    0.500000;-0.920000;,
+    0.520000;-0.920000;,
+    0.540000;-0.920000;,
+    0.560000;-0.920000;,
+    0.580000;-0.920000;,
+    0.600000;-0.920000;,
+    0.620000;-0.920000;,
+    0.640000;-0.920000;,
+    0.660000;-0.920000;,
+    0.680000;-0.920000;,
+    0.700000;-0.920000;,
+    0.720000;-0.920000;,
+    0.740000;-0.920000;,
+    0.760000;-0.920000;,
+    0.780000;-0.920000;,
+    0.800000;-0.920000;,
+    0.820000;-0.920000;,
+    0.840000;-0.920000;,
+    0.860000;-0.920000;,
+    0.880000;-0.920000;,
+    0.900000;-0.920000;,
+    0.920000;-0.920000;,
+    0.940000;-0.920000;,
+    0.960000;-0.920000;,
+    0.980000;-0.920000;,
+    0.000000;-0.940000;,
+    0.020000;-0.940000;,
+    0.040000;-0.940000;,
+    0.060000;-0.940000;,
+    0.080000;-0.940000;,
+    0.100000;-0.940000;,
+    0.120000;-0.940000;,
+    0.140000;-0.940000;,
+    0.160000;-0.940000;,
+    0.180000;-0.940000;,
+    0.200000;-0.940000;,
+    0.220000;-0.940000;,
+    0.240000;-0.940000;,
+    0.260000;-0.940000;,
+    0.280000;-0.940000;,
+    0.300000;-0.940000;,
+    0.320000;-0.940000;,
+    0.340000;-0.940000;,
+    0.360000;-0.940000;,
+    0.380000;-0.940000;,
+    0.400000;-0.940000;,
+    0.420000;-0.940000;,
+    0.440000;-0.940000;,
+    0.460000;-0.940000;,
+    0.480000;-0.940000;,
+    0.500000;-0.940000;,
+    0.520000;-0.940000;,
+    0.540000;-0.940000;,
+    0.560000;-0.940000;,
+    0.580000;-0.940000;,
+    0.600000;-0.940000;,
+    0.620000;-0.940000;,
+    0.640000;-0.940000;,
+    0.660000;-0.940000;,
+    0.680000;-0.940000;,
+    0.700000;-0.940000;,
+    0.720000;-0.940000;,
+    0.740000;-0.940000;,
+    0.760000;-0.940000;,
+    0.780000;-0.940000;,
+    0.800000;-0.940000;,
+    0.820000;-0.940000;,
+    0.840000;-0.940000;,
+    0.860000;-0.940000;,
+    0.880000;-0.940000;,
+    0.900000;-0.940000;,
+    0.920000;-0.940000;,
+    0.940000;-0.940000;,
+    0.960000;-0.940000;,
+    0.980000;-0.940000;,
+    0.000000;-0.960000;,
+    0.020000;-0.960000;,
+    0.040000;-0.960000;,
+    0.060000;-0.960000;,
+    0.080000;-0.960000;,
+    0.100000;-0.960000;,
+    0.120000;-0.960000;,
+    0.140000;-0.960000;,
+    0.160000;-0.960000;,
+    0.180000;-0.960000;,
+    0.200000;-0.960000;,
+    0.220000;-0.960000;,
+    0.240000;-0.960000;,
+    0.260000;-0.960000;,
+    0.280000;-0.960000;,
+    0.300000;-0.960000;,
+    0.320000;-0.960000;,
+    0.340000;-0.960000;,
+    0.360000;-0.960000;,
+    0.380000;-0.960000;,
+    0.400000;-0.960000;,
+    0.420000;-0.960000;,
+    0.440000;-0.960000;,
+    0.460000;-0.960000;,
+    0.480000;-0.960000;,
+    0.500000;-0.960000;,
+    0.520000;-0.960000;,
+    0.540000;-0.960000;,
+    0.560000;-0.960000;,
+    0.580000;-0.960000;,
+    0.600000;-0.960000;,
+    0.620000;-0.960000;,
+    0.640000;-0.960000;,
+    0.660000;-0.960000;,
+    0.680000;-0.960000;,
+    0.700000;-0.960000;,
+    0.720000;-0.960000;,
+    0.740000;-0.960000;,
+    0.760000;-0.960000;,
+    0.780000;-0.960000;,
+    0.800000;-0.960000;,
+    0.820000;-0.960000;,
+    0.840000;-0.960000;,
+    0.860000;-0.960000;,
+    0.880000;-0.960000;,
+    0.900000;-0.960000;,
+    0.920000;-0.960000;,
+    0.940000;-0.960000;,
+    0.960000;-0.960000;,
+    0.980000;-0.960000;,
+    0.000000;-0.980000;,
+    0.020000;-0.980000;,
+    0.040000;-0.980000;,
+    0.060000;-0.980000;,
+    0.080000;-0.980000;,
+    0.100000;-0.980000;,
+    0.120000;-0.980000;,
+    0.140000;-0.980000;,
+    0.160000;-0.980000;,
+    0.180000;-0.980000;,
+    0.200000;-0.980000;,
+    0.220000;-0.980000;,
+    0.240000;-0.980000;,
+    0.260000;-0.980000;,
+    0.280000;-0.980000;,
+    0.300000;-0.980000;,
+    0.320000;-0.980000;,
+    0.340000;-0.980000;,
+    0.360000;-0.980000;,
+    0.380000;-0.980000;,
+    0.400000;-0.980000;,
+    0.420000;-0.980000;,
+    0.440000;-0.980000;,
+    0.460000;-0.980000;,
+    0.480000;-0.980000;,
+    0.500000;-0.980000;,
+    0.520000;-0.980000;,
+    0.540000;-0.980000;,
+    0.560000;-0.980000;,
+    0.580000;-0.980000;,
+    0.600000;-0.980000;,
+    0.620000;-0.980000;,
+    0.640000;-0.980000;,
+    0.660000;-0.980000;,
+    0.680000;-0.980000;,
+    0.700000;-0.980000;,
+    0.720000;-0.980000;,
+    0.740000;-0.980000;,
+    0.760000;-0.980000;,
+    0.780000;-0.980000;,
+    0.800000;-0.980000;,
+    0.820000;-0.980000;,
+    0.840000;-0.980000;,
+    0.860000;-0.980000;,
+    0.880000;-0.980000;,
+    0.900000;-0.980000;,
+    0.920000;-0.980000;,
+    0.940000;-0.980000;,
+    0.960000;-0.980000;,
+    0.980000;-0.980000;,
+    0.500000;0.000000;,
+    0.500000;-1.000000;,
+    1.000000;-0.040000;,
+    1.000000;-0.020000;,
+    1.000000;-0.060000;,
+    1.000000;-0.080000;,
+    1.000000;-0.100000;,
+    1.000000;-0.120000;,
+    1.000000;-0.140000;,
+    1.000000;-0.160000;,
+    1.000000;-0.180000;,
+    1.000000;-0.200000;,
+    1.000000;-0.220000;,
+    1.000000;-0.240000;,
+    1.000000;-0.260000;,
+    1.000000;-0.280000;,
+    1.000000;-0.300000;,
+    1.000000;-0.320000;,
+    1.000000;-0.340000;,
+    1.000000;-0.360000;,
+    1.000000;-0.380000;,
+    1.000000;-0.400000;,
+    1.000000;-0.420000;,
+    1.000000;-0.440000;,
+    1.000000;-0.460000;,
+    1.000000;-0.480000;,
+    1.000000;-0.500000;,
+    1.000000;-0.520000;,
+    1.000000;-0.540000;,
+    1.000000;-0.560000;,
+    1.000000;-0.580000;,
+    1.000000;-0.600000;,
+    1.000000;-0.620000;,
+    1.000000;-0.640000;,
+    1.000000;-0.660000;,
+    1.000000;-0.680000;,
+    1.000000;-0.700000;,
+    1.000000;-0.720000;,
+    1.000000;-0.740000;,
+    1.000000;-0.760000;,
+    1.000000;-0.780000;,
+    1.000000;-0.800000;,
+    1.000000;-0.820000;,
+    1.000000;-0.840000;,
+    1.000000;-0.860000;,
+    1.000000;-0.880000;,
+    1.000000;-0.900000;,
+    1.000000;-0.920000;,
+    1.000000;-0.940000;,
+    1.000000;-0.960000;,
+    1.000000;-0.980000;;
+   }
+
+   MeshMaterialList {
+    1;
+    4900;
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0;
+
+    Material initialShadingGroup {
+     0.400000;0.400000;0.400000;1.000000;;
+     0.000000;
+     0.400000;0.400000;0.400000;;
+     0.000000;0.000000;0.000000;;
+    }
+   }
+
+   VertexDuplicationIndices {
+    2501;
+    2452;
+    0,
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    13,
+    14,
+    15,
+    16,
+    17,
+    18,
+    19,
+    20,
+    21,
+    22,
+    23,
+    24,
+    25,
+    26,
+    27,
+    28,
+    29,
+    30,
+    31,
+    32,
+    33,
+    34,
+    35,
+    36,
+    37,
+    38,
+    39,
+    40,
+    41,
+    42,
+    43,
+    44,
+    45,
+    46,
+    47,
+    48,
+    49,
+    50,
+    51,
+    52,
+    53,
+    54,
+    55,
+    56,
+    57,
+    58,
+    59,
+    60,
+    61,
+    62,
+    63,
+    64,
+    65,
+    66,
+    67,
+    68,
+    69,
+    70,
+    71,
+    72,
+    73,
+    74,
+    75,
+    76,
+    77,
+    78,
+    79,
+    80,
+    81,
+    82,
+    83,
+    84,
+    85,
+    86,
+    87,
+    88,
+    89,
+    90,
+    91,
+    92,
+    93,
+    94,
+    95,
+    96,
+    97,
+    98,
+    99,
+    100,
+    101,
+    102,
+    103,
+    104,
+    105,
+    106,
+    107,
+    108,
+    109,
+    110,
+    111,
+    112,
+    113,
+    114,
+    115,
+    116,
+    117,
+    118,
+    119,
+    120,
+    121,
+    122,
+    123,
+    124,
+    125,
+    126,
+    127,
+    128,
+    129,
+    130,
+    131,
+    132,
+    133,
+    134,
+    135,
+    136,
+    137,
+    138,
+    139,
+    140,
+    141,
+    142,
+    143,
+    144,
+    145,
+    146,
+    147,
+    148,
+    149,
+    150,
+    151,
+    152,
+    153,
+    154,
+    155,
+    156,
+    157,
+    158,
+    159,
+    160,
+    161,
+    162,
+    163,
+    164,
+    165,
+    166,
+    167,
+    168,
+    169,
+    170,
+    171,
+    172,
+    173,
+    174,
+    175,
+    176,
+    177,
+    178,
+    179,
+    180,
+    181,
+    182,
+    183,
+    184,
+    185,
+    186,
+    187,
+    188,
+    189,
+    190,
+    191,
+    192,
+    193,
+    194,
+    195,
+    196,
+    197,
+    198,
+    199,
+    200,
+    201,
+    202,
+    203,
+    204,
+    205,
+    206,
+    207,
+    208,
+    209,
+    210,
+    211,
+    212,
+    213,
+    214,
+    215,
+    216,
+    217,
+    218,
+    219,
+    220,
+    221,
+    222,
+    223,
+    224,
+    225,
+    226,
+    227,
+    228,
+    229,
+    230,
+    231,
+    232,
+    233,
+    234,
+    235,
+    236,
+    237,
+    238,
+    239,
+    240,
+    241,
+    242,
+    243,
+    244,
+    245,
+    246,
+    247,
+    248,
+    249,
+    250,
+    251,
+    252,
+    253,
+    254,
+    255,
+    256,
+    257,
+    258,
+    259,
+    260,
+    261,
+    262,
+    263,
+    264,
+    265,
+    266,
+    267,
+    268,
+    269,
+    270,
+    271,
+    272,
+    273,
+    274,
+    275,
+    276,
+    277,
+    278,
+    279,
+    280,
+    281,
+    282,
+    283,
+    284,
+    285,
+    286,
+    287,
+    288,
+    289,
+    290,
+    291,
+    292,
+    293,
+    294,
+    295,
+    296,
+    297,
+    298,
+    299,
+    300,
+    301,
+    302,
+    303,
+    304,
+    305,
+    306,
+    307,
+    308,
+    309,
+    310,
+    311,
+    312,
+    313,
+    314,
+    315,
+    316,
+    317,
+    318,
+    319,
+    320,
+    321,
+    322,
+    323,
+    324,
+    325,
+    326,
+    327,
+    328,
+    329,
+    330,
+    331,
+    332,
+    333,
+    334,
+    335,
+    336,
+    337,
+    338,
+    339,
+    340,
+    341,
+    342,
+    343,
+    344,
+    345,
+    346,
+    347,
+    348,
+    349,
+    350,
+    351,
+    352,
+    353,
+    354,
+    355,
+    356,
+    357,
+    358,
+    359,
+    360,
+    361,
+    362,
+    363,
+    364,
+    365,
+    366,
+    367,
+    368,
+    369,
+    370,
+    371,
+    372,
+    373,
+    374,
+    375,
+    376,
+    377,
+    378,
+    379,
+    380,
+    381,
+    382,
+    383,
+    384,
+    385,
+    386,
+    387,
+    388,
+    389,
+    390,
+    391,
+    392,
+    393,
+    394,
+    395,
+    396,
+    397,
+    398,
+    399,
+    400,
+    401,
+    402,
+    403,
+    404,
+    405,
+    406,
+    407,
+    408,
+    409,
+    410,
+    411,
+    412,
+    413,
+    414,
+    415,
+    416,
+    417,
+    418,
+    419,
+    420,
+    421,
+    422,
+    423,
+    424,
+    425,
+    426,
+    427,
+    428,
+    429,
+    430,
+    431,
+    432,
+    433,
+    434,
+    435,
+    436,
+    437,
+    438,
+    439,
+    440,
+    441,
+    442,
+    443,
+    444,
+    445,
+    446,
+    447,
+    448,
+    449,
+    450,
+    451,
+    452,
+    453,
+    454,
+    455,
+    456,
+    457,
+    458,
+    459,
+    460,
+    461,
+    462,
+    463,
+    464,
+    465,
+    466,
+    467,
+    468,
+    469,
+    470,
+    471,
+    472,
+    473,
+    474,
+    475,
+    476,
+    477,
+    478,
+    479,
+    480,
+    481,
+    482,
+    483,
+    484,
+    485,
+    486,
+    487,
+    488,
+    489,
+    490,
+    491,
+    492,
+    493,
+    494,
+    495,
+    496,
+    497,
+    498,
+    499,
+    500,
+    501,
+    502,
+    503,
+    504,
+    505,
+    506,
+    507,
+    508,
+    509,
+    510,
+    511,
+    512,
+    513,
+    514,
+    515,
+    516,
+    517,
+    518,
+    519,
+    520,
+    521,
+    522,
+    523,
+    524,
+    525,
+    526,
+    527,
+    528,
+    529,
+    530,
+    531,
+    532,
+    533,
+    534,
+    535,
+    536,
+    537,
+    538,
+    539,
+    540,
+    541,
+    542,
+    543,
+    544,
+    545,
+    546,
+    547,
+    548,
+    549,
+    550,
+    551,
+    552,
+    553,
+    554,
+    555,
+    556,
+    557,
+    558,
+    559,
+    560,
+    561,
+    562,
+    563,
+    564,
+    565,
+    566,
+    567,
+    568,
+    569,
+    570,
+    571,
+    572,
+    573,
+    574,
+    575,
+    576,
+    577,
+    578,
+    579,
+    580,
+    581,
+    582,
+    583,
+    584,
+    585,
+    586,
+    587,
+    588,
+    589,
+    590,
+    591,
+    592,
+    593,
+    594,
+    595,
+    596,
+    597,
+    598,
+    599,
+    600,
+    601,
+    602,
+    603,
+    604,
+    605,
+    606,
+    607,
+    608,
+    609,
+    610,
+    611,
+    612,
+    613,
+    614,
+    615,
+    616,
+    617,
+    618,
+    619,
+    620,
+    621,
+    622,
+    623,
+    624,
+    625,
+    626,
+    627,
+    628,
+    629,
+    630,
+    631,
+    632,
+    633,
+    634,
+    635,
+    636,
+    637,
+    638,
+    639,
+    640,
+    641,
+    642,
+    643,
+    644,
+    645,
+    646,
+    647,
+    648,
+    649,
+    650,
+    651,
+    652,
+    653,
+    654,
+    655,
+    656,
+    657,
+    658,
+    659,
+    660,
+    661,
+    662,
+    663,
+    664,
+    665,
+    666,
+    667,
+    668,
+    669,
+    670,
+    671,
+    672,
+    673,
+    674,
+    675,
+    676,
+    677,
+    678,
+    679,
+    680,
+    681,
+    682,
+    683,
+    684,
+    685,
+    686,
+    687,
+    688,
+    689,
+    690,
+    691,
+    692,
+    693,
+    694,
+    695,
+    696,
+    697,
+    698,
+    699,
+    700,
+    701,
+    702,
+    703,
+    704,
+    705,
+    706,
+    707,
+    708,
+    709,
+    710,
+    711,
+    712,
+    713,
+    714,
+    715,
+    716,
+    717,
+    718,
+    719,
+    720,
+    721,
+    722,
+    723,
+    724,
+    725,
+    726,
+    727,
+    728,
+    729,
+    730,
+    731,
+    732,
+    733,
+    734,
+    735,
+    736,
+    737,
+    738,
+    739,
+    740,
+    741,
+    742,
+    743,
+    744,
+    745,
+    746,
+    747,
+    748,
+    749,
+    750,
+    751,
+    752,
+    753,
+    754,
+    755,
+    756,
+    757,
+    758,
+    759,
+    760,
+    761,
+    762,
+    763,
+    764,
+    765,
+    766,
+    767,
+    768,
+    769,
+    770,
+    771,
+    772,
+    773,
+    774,
+    775,
+    776,
+    777,
+    778,
+    779,
+    780,
+    781,
+    782,
+    783,
+    784,
+    785,
+    786,
+    787,
+    788,
+    789,
+    790,
+    791,
+    792,
+    793,
+    794,
+    795,
+    796,
+    797,
+    798,
+    799,
+    800,
+    801,
+    802,
+    803,
+    804,
+    805,
+    806,
+    807,
+    808,
+    809,
+    810,
+    811,
+    812,
+    813,
+    814,
+    815,
+    816,
+    817,
+    818,
+    819,
+    820,
+    821,
+    822,
+    823,
+    824,
+    825,
+    826,
+    827,
+    828,
+    829,
+    830,
+    831,
+    832,
+    833,
+    834,
+    835,
+    836,
+    837,
+    838,
+    839,
+    840,
+    841,
+    842,
+    843,
+    844,
+    845,
+    846,
+    847,
+    848,
+    849,
+    850,
+    851,
+    852,
+    853,
+    854,
+    855,
+    856,
+    857,
+    858,
+    859,
+    860,
+    861,
+    862,
+    863,
+    864,
+    865,
+    866,
+    867,
+    868,
+    869,
+    870,
+    871,
+    872,
+    873,
+    874,
+    875,
+    876,
+    877,
+    878,
+    879,
+    880,
+    881,
+    882,
+    883,
+    884,
+    885,
+    886,
+    887,
+    888,
+    889,
+    890,
+    891,
+    892,
+    893,
+    894,
+    895,
+    896,
+    897,
+    898,
+    899,
+    900,
+    901,
+    902,
+    903,
+    904,
+    905,
+    906,
+    907,
+    908,
+    909,
+    910,
+    911,
+    912,
+    913,
+    914,
+    915,
+    916,
+    917,
+    918,
+    919,
+    920,
+    921,
+    922,
+    923,
+    924,
+    925,
+    926,
+    927,
+    928,
+    929,
+    930,
+    931,
+    932,
+    933,
+    934,
+    935,
+    936,
+    937,
+    938,
+    939,
+    940,
+    941,
+    942,
+    943,
+    944,
+    945,
+    946,
+    947,
+    948,
+    949,
+    950,
+    951,
+    952,
+    953,
+    954,
+    955,
+    956,
+    957,
+    958,
+    959,
+    960,
+    961,
+    962,
+    963,
+    964,
+    965,
+    966,
+    967,
+    968,
+    969,
+    970,
+    971,
+    972,
+    973,
+    974,
+    975,
+    976,
+    977,
+    978,
+    979,
+    980,
+    981,
+    982,
+    983,
+    984,
+    985,
+    986,
+    987,
+    988,
+    989,
+    990,
+    991,
+    992,
+    993,
+    994,
+    995,
+    996,
+    997,
+    998,
+    999,
+    1000,
+    1001,
+    1002,
+    1003,
+    1004,
+    1005,
+    1006,
+    1007,
+    1008,
+    1009,
+    1010,
+    1011,
+    1012,
+    1013,
+    1014,
+    1015,
+    1016,
+    1017,
+    1018,
+    1019,
+    1020,
+    1021,
+    1022,
+    1023,
+    1024,
+    1025,
+    1026,
+    1027,
+    1028,
+    1029,
+    1030,
+    1031,
+    1032,
+    1033,
+    1034,
+    1035,
+    1036,
+    1037,
+    1038,
+    1039,
+    1040,
+    1041,
+    1042,
+    1043,
+    1044,
+    1045,
+    1046,
+    1047,
+    1048,
+    1049,
+    1050,
+    1051,
+    1052,
+    1053,
+    1054,
+    1055,
+    1056,
+    1057,
+    1058,
+    1059,
+    1060,
+    1061,
+    1062,
+    1063,
+    1064,
+    1065,
+    1066,
+    1067,
+    1068,
+    1069,
+    1070,
+    1071,
+    1072,
+    1073,
+    1074,
+    1075,
+    1076,
+    1077,
+    1078,
+    1079,
+    1080,
+    1081,
+    1082,
+    1083,
+    1084,
+    1085,
+    1086,
+    1087,
+    1088,
+    1089,
+    1090,
+    1091,
+    1092,
+    1093,
+    1094,
+    1095,
+    1096,
+    1097,
+    1098,
+    1099,
+    1100,
+    1101,
+    1102,
+    1103,
+    1104,
+    1105,
+    1106,
+    1107,
+    1108,
+    1109,
+    1110,
+    1111,
+    1112,
+    1113,
+    1114,
+    1115,
+    1116,
+    1117,
+    1118,
+    1119,
+    1120,
+    1121,
+    1122,
+    1123,
+    1124,
+    1125,
+    1126,
+    1127,
+    1128,
+    1129,
+    1130,
+    1131,
+    1132,
+    1133,
+    1134,
+    1135,
+    1136,
+    1137,
+    1138,
+    1139,
+    1140,
+    1141,
+    1142,
+    1143,
+    1144,
+    1145,
+    1146,
+    1147,
+    1148,
+    1149,
+    1150,
+    1151,
+    1152,
+    1153,
+    1154,
+    1155,
+    1156,
+    1157,
+    1158,
+    1159,
+    1160,
+    1161,
+    1162,
+    1163,
+    1164,
+    1165,
+    1166,
+    1167,
+    1168,
+    1169,
+    1170,
+    1171,
+    1172,
+    1173,
+    1174,
+    1175,
+    1176,
+    1177,
+    1178,
+    1179,
+    1180,
+    1181,
+    1182,
+    1183,
+    1184,
+    1185,
+    1186,
+    1187,
+    1188,
+    1189,
+    1190,
+    1191,
+    1192,
+    1193,
+    1194,
+    1195,
+    1196,
+    1197,
+    1198,
+    1199,
+    1200,
+    1201,
+    1202,
+    1203,
+    1204,
+    1205,
+    1206,
+    1207,
+    1208,
+    1209,
+    1210,
+    1211,
+    1212,
+    1213,
+    1214,
+    1215,
+    1216,
+    1217,
+    1218,
+    1219,
+    1220,
+    1221,
+    1222,
+    1223,
+    1224,
+    1225,
+    1226,
+    1227,
+    1228,
+    1229,
+    1230,
+    1231,
+    1232,
+    1233,
+    1234,
+    1235,
+    1236,
+    1237,
+    1238,
+    1239,
+    1240,
+    1241,
+    1242,
+    1243,
+    1244,
+    1245,
+    1246,
+    1247,
+    1248,
+    1249,
+    1250,
+    1251,
+    1252,
+    1253,
+    1254,
+    1255,
+    1256,
+    1257,
+    1258,
+    1259,
+    1260,
+    1261,
+    1262,
+    1263,
+    1264,
+    1265,
+    1266,
+    1267,
+    1268,
+    1269,
+    1270,
+    1271,
+    1272,
+    1273,
+    1274,
+    1275,
+    1276,
+    1277,
+    1278,
+    1279,
+    1280,
+    1281,
+    1282,
+    1283,
+    1284,
+    1285,
+    1286,
+    1287,
+    1288,
+    1289,
+    1290,
+    1291,
+    1292,
+    1293,
+    1294,
+    1295,
+    1296,
+    1297,
+    1298,
+    1299,
+    1300,
+    1301,
+    1302,
+    1303,
+    1304,
+    1305,
+    1306,
+    1307,
+    1308,
+    1309,
+    1310,
+    1311,
+    1312,
+    1313,
+    1314,
+    1315,
+    1316,
+    1317,
+    1318,
+    1319,
+    1320,
+    1321,
+    1322,
+    1323,
+    1324,
+    1325,
+    1326,
+    1327,
+    1328,
+    1329,
+    1330,
+    1331,
+    1332,
+    1333,
+    1334,
+    1335,
+    1336,
+    1337,
+    1338,
+    1339,
+    1340,
+    1341,
+    1342,
+    1343,
+    1344,
+    1345,
+    1346,
+    1347,
+    1348,
+    1349,
+    1350,
+    1351,
+    1352,
+    1353,
+    1354,
+    1355,
+    1356,
+    1357,
+    1358,
+    1359,
+    1360,
+    1361,
+    1362,
+    1363,
+    1364,
+    1365,
+    1366,
+    1367,
+    1368,
+    1369,
+    1370,
+    1371,
+    1372,
+    1373,
+    1374,
+    1375,
+    1376,
+    1377,
+    1378,
+    1379,
+    1380,
+    1381,
+    1382,
+    1383,
+    1384,
+    1385,
+    1386,
+    1387,
+    1388,
+    1389,
+    1390,
+    1391,
+    1392,
+    1393,
+    1394,
+    1395,
+    1396,
+    1397,
+    1398,
+    1399,
+    1400,
+    1401,
+    1402,
+    1403,
+    1404,
+    1405,
+    1406,
+    1407,
+    1408,
+    1409,
+    1410,
+    1411,
+    1412,
+    1413,
+    1414,
+    1415,
+    1416,
+    1417,
+    1418,
+    1419,
+    1420,
+    1421,
+    1422,
+    1423,
+    1424,
+    1425,
+    1426,
+    1427,
+    1428,
+    1429,
+    1430,
+    1431,
+    1432,
+    1433,
+    1434,
+    1435,
+    1436,
+    1437,
+    1438,
+    1439,
+    1440,
+    1441,
+    1442,
+    1443,
+    1444,
+    1445,
+    1446,
+    1447,
+    1448,
+    1449,
+    1450,
+    1451,
+    1452,
+    1453,
+    1454,
+    1455,
+    1456,
+    1457,
+    1458,
+    1459,
+    1460,
+    1461,
+    1462,
+    1463,
+    1464,
+    1465,
+    1466,
+    1467,
+    1468,
+    1469,
+    1470,
+    1471,
+    1472,
+    1473,
+    1474,
+    1475,
+    1476,
+    1477,
+    1478,
+    1479,
+    1480,
+    1481,
+    1482,
+    1483,
+    1484,
+    1485,
+    1486,
+    1487,
+    1488,
+    1489,
+    1490,
+    1491,
+    1492,
+    1493,
+    1494,
+    1495,
+    1496,
+    1497,
+    1498,
+    1499,
+    1500,
+    1501,
+    1502,
+    1503,
+    1504,
+    1505,
+    1506,
+    1507,
+    1508,
+    1509,
+    1510,
+    1511,
+    1512,
+    1513,
+    1514,
+    1515,
+    1516,
+    1517,
+    1518,
+    1519,
+    1520,
+    1521,
+    1522,
+    1523,
+    1524,
+    1525,
+    1526,
+    1527,
+    1528,
+    1529,
+    1530,
+    1531,
+    1532,
+    1533,
+    1534,
+    1535,
+    1536,
+    1537,
+    1538,
+    1539,
+    1540,
+    1541,
+    1542,
+    1543,
+    1544,
+    1545,
+    1546,
+    1547,
+    1548,
+    1549,
+    1550,
+    1551,
+    1552,
+    1553,
+    1554,
+    1555,
+    1556,
+    1557,
+    1558,
+    1559,
+    1560,
+    1561,
+    1562,
+    1563,
+    1564,
+    1565,
+    1566,
+    1567,
+    1568,
+    1569,
+    1570,
+    1571,
+    1572,
+    1573,
+    1574,
+    1575,
+    1576,
+    1577,
+    1578,
+    1579,
+    1580,
+    1581,
+    1582,
+    1583,
+    1584,
+    1585,
+    1586,
+    1587,
+    1588,
+    1589,
+    1590,
+    1591,
+    1592,
+    1593,
+    1594,
+    1595,
+    1596,
+    1597,
+    1598,
+    1599,
+    1600,
+    1601,
+    1602,
+    1603,
+    1604,
+    1605,
+    1606,
+    1607,
+    1608,
+    1609,
+    1610,
+    1611,
+    1612,
+    1613,
+    1614,
+    1615,
+    1616,
+    1617,
+    1618,
+    1619,
+    1620,
+    1621,
+    1622,
+    1623,
+    1624,
+    1625,
+    1626,
+    1627,
+    1628,
+    1629,
+    1630,
+    1631,
+    1632,
+    1633,
+    1634,
+    1635,
+    1636,
+    1637,
+    1638,
+    1639,
+    1640,
+    1641,
+    1642,
+    1643,
+    1644,
+    1645,
+    1646,
+    1647,
+    1648,
+    1649,
+    1650,
+    1651,
+    1652,
+    1653,
+    1654,
+    1655,
+    1656,
+    1657,
+    1658,
+    1659,
+    1660,
+    1661,
+    1662,
+    1663,
+    1664,
+    1665,
+    1666,
+    1667,
+    1668,
+    1669,
+    1670,
+    1671,
+    1672,
+    1673,
+    1674,
+    1675,
+    1676,
+    1677,
+    1678,
+    1679,
+    1680,
+    1681,
+    1682,
+    1683,
+    1684,
+    1685,
+    1686,
+    1687,
+    1688,
+    1689,
+    1690,
+    1691,
+    1692,
+    1693,
+    1694,
+    1695,
+    1696,
+    1697,
+    1698,
+    1699,
+    1700,
+    1701,
+    1702,
+    1703,
+    1704,
+    1705,
+    1706,
+    1707,
+    1708,
+    1709,
+    1710,
+    1711,
+    1712,
+    1713,
+    1714,
+    1715,
+    1716,
+    1717,
+    1718,
+    1719,
+    1720,
+    1721,
+    1722,
+    1723,
+    1724,
+    1725,
+    1726,
+    1727,
+    1728,
+    1729,
+    1730,
+    1731,
+    1732,
+    1733,
+    1734,
+    1735,
+    1736,
+    1737,
+    1738,
+    1739,
+    1740,
+    1741,
+    1742,
+    1743,
+    1744,
+    1745,
+    1746,
+    1747,
+    1748,
+    1749,
+    1750,
+    1751,
+    1752,
+    1753,
+    1754,
+    1755,
+    1756,
+    1757,
+    1758,
+    1759,
+    1760,
+    1761,
+    1762,
+    1763,
+    1764,
+    1765,
+    1766,
+    1767,
+    1768,
+    1769,
+    1770,
+    1771,
+    1772,
+    1773,
+    1774,
+    1775,
+    1776,
+    1777,
+    1778,
+    1779,
+    1780,
+    1781,
+    1782,
+    1783,
+    1784,
+    1785,
+    1786,
+    1787,
+    1788,
+    1789,
+    1790,
+    1791,
+    1792,
+    1793,
+    1794,
+    1795,
+    1796,
+    1797,
+    1798,
+    1799,
+    1800,
+    1801,
+    1802,
+    1803,
+    1804,
+    1805,
+    1806,
+    1807,
+    1808,
+    1809,
+    1810,
+    1811,
+    1812,
+    1813,
+    1814,
+    1815,
+    1816,
+    1817,
+    1818,
+    1819,
+    1820,
+    1821,
+    1822,
+    1823,
+    1824,
+    1825,
+    1826,
+    1827,
+    1828,
+    1829,
+    1830,
+    1831,
+    1832,
+    1833,
+    1834,
+    1835,
+    1836,
+    1837,
+    1838,
+    1839,
+    1840,
+    1841,
+    1842,
+    1843,
+    1844,
+    1845,
+    1846,
+    1847,
+    1848,
+    1849,
+    1850,
+    1851,
+    1852,
+    1853,
+    1854,
+    1855,
+    1856,
+    1857,
+    1858,
+    1859,
+    1860,
+    1861,
+    1862,
+    1863,
+    1864,
+    1865,
+    1866,
+    1867,
+    1868,
+    1869,
+    1870,
+    1871,
+    1872,
+    1873,
+    1874,
+    1875,
+    1876,
+    1877,
+    1878,
+    1879,
+    1880,
+    1881,
+    1882,
+    1883,
+    1884,
+    1885,
+    1886,
+    1887,
+    1888,
+    1889,
+    1890,
+    1891,
+    1892,
+    1893,
+    1894,
+    1895,
+    1896,
+    1897,
+    1898,
+    1899,
+    1900,
+    1901,
+    1902,
+    1903,
+    1904,
+    1905,
+    1906,
+    1907,
+    1908,
+    1909,
+    1910,
+    1911,
+    1912,
+    1913,
+    1914,
+    1915,
+    1916,
+    1917,
+    1918,
+    1919,
+    1920,
+    1921,
+    1922,
+    1923,
+    1924,
+    1925,
+    1926,
+    1927,
+    1928,
+    1929,
+    1930,
+    1931,
+    1932,
+    1933,
+    1934,
+    1935,
+    1936,
+    1937,
+    1938,
+    1939,
+    1940,
+    1941,
+    1942,
+    1943,
+    1944,
+    1945,
+    1946,
+    1947,
+    1948,
+    1949,
+    1950,
+    1951,
+    1952,
+    1953,
+    1954,
+    1955,
+    1956,
+    1957,
+    1958,
+    1959,
+    1960,
+    1961,
+    1962,
+    1963,
+    1964,
+    1965,
+    1966,
+    1967,
+    1968,
+    1969,
+    1970,
+    1971,
+    1972,
+    1973,
+    1974,
+    1975,
+    1976,
+    1977,
+    1978,
+    1979,
+    1980,
+    1981,
+    1982,
+    1983,
+    1984,
+    1985,
+    1986,
+    1987,
+    1988,
+    1989,
+    1990,
+    1991,
+    1992,
+    1993,
+    1994,
+    1995,
+    1996,
+    1997,
+    1998,
+    1999,
+    2000,
+    2001,
+    2002,
+    2003,
+    2004,
+    2005,
+    2006,
+    2007,
+    2008,
+    2009,
+    2010,
+    2011,
+    2012,
+    2013,
+    2014,
+    2015,
+    2016,
+    2017,
+    2018,
+    2019,
+    2020,
+    2021,
+    2022,
+    2023,
+    2024,
+    2025,
+    2026,
+    2027,
+    2028,
+    2029,
+    2030,
+    2031,
+    2032,
+    2033,
+    2034,
+    2035,
+    2036,
+    2037,
+    2038,
+    2039,
+    2040,
+    2041,
+    2042,
+    2043,
+    2044,
+    2045,
+    2046,
+    2047,
+    2048,
+    2049,
+    2050,
+    2051,
+    2052,
+    2053,
+    2054,
+    2055,
+    2056,
+    2057,
+    2058,
+    2059,
+    2060,
+    2061,
+    2062,
+    2063,
+    2064,
+    2065,
+    2066,
+    2067,
+    2068,
+    2069,
+    2070,
+    2071,
+    2072,
+    2073,
+    2074,
+    2075,
+    2076,
+    2077,
+    2078,
+    2079,
+    2080,
+    2081,
+    2082,
+    2083,
+    2084,
+    2085,
+    2086,
+    2087,
+    2088,
+    2089,
+    2090,
+    2091,
+    2092,
+    2093,
+    2094,
+    2095,
+    2096,
+    2097,
+    2098,
+    2099,
+    2100,
+    2101,
+    2102,
+    2103,
+    2104,
+    2105,
+    2106,
+    2107,
+    2108,
+    2109,
+    2110,
+    2111,
+    2112,
+    2113,
+    2114,
+    2115,
+    2116,
+    2117,
+    2118,
+    2119,
+    2120,
+    2121,
+    2122,
+    2123,
+    2124,
+    2125,
+    2126,
+    2127,
+    2128,
+    2129,
+    2130,
+    2131,
+    2132,
+    2133,
+    2134,
+    2135,
+    2136,
+    2137,
+    2138,
+    2139,
+    2140,
+    2141,
+    2142,
+    2143,
+    2144,
+    2145,
+    2146,
+    2147,
+    2148,
+    2149,
+    2150,
+    2151,
+    2152,
+    2153,
+    2154,
+    2155,
+    2156,
+    2157,
+    2158,
+    2159,
+    2160,
+    2161,
+    2162,
+    2163,
+    2164,
+    2165,
+    2166,
+    2167,
+    2168,
+    2169,
+    2170,
+    2171,
+    2172,
+    2173,
+    2174,
+    2175,
+    2176,
+    2177,
+    2178,
+    2179,
+    2180,
+    2181,
+    2182,
+    2183,
+    2184,
+    2185,
+    2186,
+    2187,
+    2188,
+    2189,
+    2190,
+    2191,
+    2192,
+    2193,
+    2194,
+    2195,
+    2196,
+    2197,
+    2198,
+    2199,
+    2200,
+    2201,
+    2202,
+    2203,
+    2204,
+    2205,
+    2206,
+    2207,
+    2208,
+    2209,
+    2210,
+    2211,
+    2212,
+    2213,
+    2214,
+    2215,
+    2216,
+    2217,
+    2218,
+    2219,
+    2220,
+    2221,
+    2222,
+    2223,
+    2224,
+    2225,
+    2226,
+    2227,
+    2228,
+    2229,
+    2230,
+    2231,
+    2232,
+    2233,
+    2234,
+    2235,
+    2236,
+    2237,
+    2238,
+    2239,
+    2240,
+    2241,
+    2242,
+    2243,
+    2244,
+    2245,
+    2246,
+    2247,
+    2248,
+    2249,
+    2250,
+    2251,
+    2252,
+    2253,
+    2254,
+    2255,
+    2256,
+    2257,
+    2258,
+    2259,
+    2260,
+    2261,
+    2262,
+    2263,
+    2264,
+    2265,
+    2266,
+    2267,
+    2268,
+    2269,
+    2270,
+    2271,
+    2272,
+    2273,
+    2274,
+    2275,
+    2276,
+    2277,
+    2278,
+    2279,
+    2280,
+    2281,
+    2282,
+    2283,
+    2284,
+    2285,
+    2286,
+    2287,
+    2288,
+    2289,
+    2290,
+    2291,
+    2292,
+    2293,
+    2294,
+    2295,
+    2296,
+    2297,
+    2298,
+    2299,
+    2300,
+    2301,
+    2302,
+    2303,
+    2304,
+    2305,
+    2306,
+    2307,
+    2308,
+    2309,
+    2310,
+    2311,
+    2312,
+    2313,
+    2314,
+    2315,
+    2316,
+    2317,
+    2318,
+    2319,
+    2320,
+    2321,
+    2322,
+    2323,
+    2324,
+    2325,
+    2326,
+    2327,
+    2328,
+    2329,
+    2330,
+    2331,
+    2332,
+    2333,
+    2334,
+    2335,
+    2336,
+    2337,
+    2338,
+    2339,
+    2340,
+    2341,
+    2342,
+    2343,
+    2344,
+    2345,
+    2346,
+    2347,
+    2348,
+    2349,
+    2350,
+    2351,
+    2352,
+    2353,
+    2354,
+    2355,
+    2356,
+    2357,
+    2358,
+    2359,
+    2360,
+    2361,
+    2362,
+    2363,
+    2364,
+    2365,
+    2366,
+    2367,
+    2368,
+    2369,
+    2370,
+    2371,
+    2372,
+    2373,
+    2374,
+    2375,
+    2376,
+    2377,
+    2378,
+    2379,
+    2380,
+    2381,
+    2382,
+    2383,
+    2384,
+    2385,
+    2386,
+    2387,
+    2388,
+    2389,
+    2390,
+    2391,
+    2392,
+    2393,
+    2394,
+    2395,
+    2396,
+    2397,
+    2398,
+    2399,
+    2400,
+    2401,
+    2402,
+    2403,
+    2404,
+    2405,
+    2406,
+    2407,
+    2408,
+    2409,
+    2410,
+    2411,
+    2412,
+    2413,
+    2414,
+    2415,
+    2416,
+    2417,
+    2418,
+    2419,
+    2420,
+    2421,
+    2422,
+    2423,
+    2424,
+    2425,
+    2426,
+    2427,
+    2428,
+    2429,
+    2430,
+    2431,
+    2432,
+    2433,
+    2434,
+    2435,
+    2436,
+    2437,
+    2438,
+    2439,
+    2440,
+    2441,
+    2442,
+    2443,
+    2444,
+    2445,
+    2446,
+    2447,
+    2448,
+    2449,
+    2450,
+    2451,
+    50,
+    0,
+    100,
+    150,
+    200,
+    250,
+    300,
+    350,
+    400,
+    450,
+    500,
+    550,
+    600,
+    650,
+    700,
+    750,
+    800,
+    850,
+    900,
+    950,
+    1000,
+    1050,
+    1100,
+    1150,
+    1200,
+    1250,
+    1300,
+    1350,
+    1400,
+    1450,
+    1500,
+    1550,
+    1600,
+    1650,
+    1700,
+    1750,
+    1800,
+    1850,
+    1900,
+    1950,
+    2000,
+    2050,
+    2100,
+    2150,
+    2200,
+    2250,
+    2300,
+    2350,
+    2400;
+   }
+  }
+ }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/.params0
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/.params0	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/.params0	(revision 1481)
@@ -0,0 +1,8 @@
+----- RayTraceEffects: Saved parameters of the algorithm -----
+Bool values:
+000
+(Show Help; ; ; )
+Float values:
+0 	(, 0..0)
+0 	(, 0..0)
+0 	(, 0..0)
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HREEffect.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HREEffect.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HREEffect.h	(revision 1481)
@@ -0,0 +1,156 @@
+#pragma once
+#include <vector>
+#include "Parameters.h"
+#include "Vector.hpp"
+#include "half.h"
+
+#define RAY_TABLE_WIDTH		512
+#define RAY_TABLE_HEIGHT		512
+
+#define RAY_ORIGIN_COLOR_FORMAT		D3DFMT_A16B16G16R16F
+#define RAY_DIR_COLOR_FORMAT			D3DFMT_A16B16G16R16F
+#define DEPTH_FORMAT							D3DFMT_D24S8
+
+
+class HREEffect
+{
+	//! pointer to global user-adjustable application parameters object
+	static Parameters*		parameters;
+
+	//! pointer to main DX device
+	LPDIRECT3DDEVICE9		device;
+	//! pointer to main DX effect
+	LPD3DXEFFECT			effect;
+
+	//! frame color buffer surface
+	//! saved before render-to-texture, and restored as the render target for the final rendering to the screen
+	LPDIRECT3DSURFACE9		frameColorBuffer;
+	//! frame depth buffer surface
+	//! saved before render-to-texture, and restored as the render target for the final rendering to the screen
+	LPDIRECT3DSURFACE9		frameDepthStencilBuffer;
+
+    LPDIRECT3DTEXTURE9	rayOriginTableTexture;
+    LPDIRECT3DSURFACE9	rayOriginTableSurface;
+
+    LPDIRECT3DTEXTURE9	rayDirTableTexture;
+    LPDIRECT3DSURFACE9	rayDirTableSurface;
+
+    LPDIRECT3DTEXTURE9	rayOriginTableTexture2;
+    LPDIRECT3DSURFACE9	rayOriginTableSurface2;
+
+    LPDIRECT3DTEXTURE9	rayDirTableTexture2;
+    LPDIRECT3DSURFACE9	rayDirTableSurface2;
+
+    LPDIRECT3DTEXTURE9	conePeakTexture;
+    LPDIRECT3DSURFACE9	conePeakSurface;
+    LPDIRECT3DTEXTURE9	coneDirTexture;
+    LPDIRECT3DSURFACE9	coneDirSurface;
+
+    LPDIRECT3DTEXTURE9	conePeakTextureMem;
+    LPDIRECT3DSURFACE9	conePeakSurfaceMem;
+    LPDIRECT3DTEXTURE9	coneDirTextureMem;
+    LPDIRECT3DSURFACE9	coneDirSurfaceMem;
+
+	LPDIRECT3DCUBETEXTURE9 environmentCubeTexture;
+
+    LPDIRECT3DSURFACE9	depthSurface;
+	LPDIRECT3DSURFACE9	coneStencil;
+
+	LPDIRECT3DVERTEXDECLARATION9 trianglePrimitiveDeclaration;
+
+	//! camera
+	CFirstPersonCamera*			camera;
+	//! primary light source (can be moved just like the real camera, and can be used as the camera)
+	CFirstPersonCamera*			lightCamera;
+
+	//! struct containing all mesh related data. Will be filled from X files in HREEffect constructor
+	class Mesh
+	{
+	public:
+		HREEffect* owner;
+		unsigned int		nSubsets;	//!< number of submeshes (with possible different material)
+		LPD3DXMESH			mesh;		//!< D3D mesh
+		LPD3DXBUFFER		materialBuffer;	//!< D3D material buffer
+		D3DXMATERIAL*		materials;		//!< D3D material array
+		LPDIRECT3DTEXTURE9*	textures;		//!< D3D textures for the materials
+		LPDIRECT3DVERTEXBUFFER9 primitiveVertexBuffer; //!< ray engine representation of the mesh (list of points with a triangle encoded in each)
+
+		HRESULT setVertexFormat(DWORD fvf, LPDIRECT3DDEVICE9 device);	//!< rebuild D3D to have differnet vertex format
+
+	};
+	//! private method that loads a mesh and its textures
+	void loadMesh(LPCWSTR fileName);
+
+	//! private method to load a texture
+	LPDIRECT3DTEXTURE9 loadTexture(LPCWSTR fileName);
+
+	//! release material texture resources
+	void releaseTextures();
+	//! release mesh resources
+	void releaseMeshes();
+	//! release entities
+	void releaseEntities();
+
+	//! struct that represents a virtual world object: a mesh and a model-world transformation matrix
+	friend struct Entity;
+	struct Entity
+	{
+		HREEffect* owner;	//!< enclosing class instance
+
+		Mesh*	mesh;		//!< mesh
+		D3DXMATRIX	modelWorldTransform;	//!< modeling transform
+		D3DXMATRIX	inverseTransposedModelWorldTransform;	//!< IT modeling transform for surface normal transformation
+	};
+
+	//! vector of loaded meshes
+	std::vector<Mesh*>	meshes;
+	//! vector of loaded textures (textures specified in mesh's material will be loaded here)
+	std::vector<LPDIRECT3DTEXTURE9>	materialTextures;
+	//! vector of virtual world objects
+	std::vector<Entity> entities;
+
+	//! for materials with no texture we will render with this texture
+	LPDIRECT3DTEXTURE9		emptyTexture;
+
+	//! render a full-screen quad
+	static void drawFullScreenQuad(LPDIRECT3DDEVICE9 device, float depth = 0.0f, float fLeftU=0.0f, float fTopV=0.0f, float fRightU=1.0f, float fBottomV=1.0f);
+
+		//! clever enum for supported final rendering methods
+	class Method{
+		unsigned int mid;
+		Method(unsigned int mid) {this->mid = mid;}
+		static const wchar_t * methodNames[10];
+	public:
+		Method(const Method& o) {mid = o.mid;}
+		const Method& operator=(const Method& o) {mid = o.mid; return *this;}
+		bool operator==(const Method& o) const {return mid == o.mid;}
+		bool operator!=(const Method& o) const {return mid != o.mid;}
+		const static Method RAYENGINE;
+		const static Method LAST;
+		const Method& next() {mid = (mid + 1)%LAST.mid; return *this;}
+		const Method& prev() {mid = (mid + LAST.mid - 1)%LAST.mid; return *this;}
+		const wchar_t* getName() {return methodNames[mid];}
+	}method;
+public:
+	void nextMethod() {method.next();}
+	void prevMethod() {method.prev();}
+	const wchar_t* getCurrentMethodName() {return method.getName();}
+
+	//! constructor: allocates all resources
+	HREEffect(LPDIRECT3DDEVICE9 device);
+	//! destructor: releases all resources
+	~HREEffect(void);
+
+	//! renders the scene using the currently selected method
+	void render();
+
+	//! moves the virtual world objects (camera, light)
+	void move(float fElapsedTime);
+
+	LRESULT handleMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+	//! adds controls for the user-adjustable application parameters
+	static void addUiParameters(Parameters* parameters);
+
+	LPDIRECT3DDEVICE9 getDevice() {return device;}
+};
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Vector.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Vector.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Vector.cpp	(revision 1481)
@@ -0,0 +1,7 @@
+#include "dxstdafx.h"
+#include "Vector.hpp"
+
+const Vector Vector::RGBBLACK(0.0f, 0.0f, 0.0f);
+const Vector Vector::RGBWHITE(0.9f, 0.9f, 0.9f);
+
+const double Vector::PI = 3.14159265358979323846;
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/rayEngine.mine.fx
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/rayEngine.mine.fx	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/rayEngine.mine.fx	(revision 1481)
@@ -0,0 +1,520 @@
+// transformations
+float4x4	worldProjection;
+float4x4	screenToWorld;
+float4x4	modelWorld;
+float4x4	worldModel;
+float3		eyePos;
+float3		tilePos;
+float		rf;	//refrac coeff
+float		colOrder;
+bool		fini;
+#define maxRayDepth	200.0
+
+float4 conePeak;
+float4 coneDira;
+
+texture rayDirTable;
+sampler rayDirTableSampler = sampler_state
+{
+   Texture = <rayDirTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+texture rayOriginTable;
+sampler rayOriginTableSampler = sampler_state
+{
+   Texture = <rayOriginTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+texture coneDirTable;
+sampler coneDirTableSampler = sampler_state
+{
+   Texture = <coneDirTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+texture conePeakTable;
+sampler conePeakTableSampler = sampler_state
+{
+   Texture = <conePeakTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+textureCUBE environmentTexture;
+sampler environmentSampler = sampler_state
+{
+   Texture = <environmentTexture>;
+   MinFilter = Linear;
+   MagFilter = Linear;
+   MipFilter = None;
+};
+
+struct vsInputRenderPrimaryRayArray
+{
+    float4	pos			: POSITION;
+    float3	normal		: NORMAL;
+};
+
+struct vsOutputRenderPrimaryRayArray
+{
+    float4	pos			: POSITION;
+    float3	normal		: TEXCOORD0;
+    float3	worldPos	: TEXCOORD1;
+};
+
+vsOutputRenderPrimaryRayArray
+	vsRenderPrimaryRayArray(vsInputRenderPrimaryRayArray input)
+{
+    vsOutputRenderPrimaryRayArray output = (vsOutputRenderPrimaryRayArray)0;
+
+	output.pos = mul(input.pos, worldProjection);
+	output.normal = input.normal;
+	float4 worldPos = mul(input.pos, modelWorld);
+	output.worldPos = worldPos.xyz / worldPos.w;
+
+    return output;
+}
+
+struct psOutputRenderPrimaryRayArray
+{
+    float4	origin  : COLOR0;
+    float4	dir		: COLOR1;
+};
+
+psOutputRenderPrimaryRayArray
+	psRenderPrimaryRayArray(vsOutputRenderPrimaryRayArray input) : COLOR
+{   
+	psOutputRenderPrimaryRayArray output = (psOutputRenderPrimaryRayArray)0;
+	output.origin = float4(input.worldPos, 1);
+	float3 normal = normalize(input.normal);
+	float3 viewDir =  input.worldPos - eyePos;
+	viewDir = normalize(viewDir);
+
+	float3 rfd = refract(viewDir, normal, rf);
+	if(dot(rfd, rfd) < 0.5)
+	{
+		rfd = reflect(viewDir, normal);
+	}
+	output.dir = float4(rfd, colOrder);
+	
+	output.dir.xyz = normalize(output.dir.xyz);
+
+	return output;
+}
+
+struct vsInputCopyBack
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;    
+};
+
+struct vsOutputCopyBack
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;
+};
+
+vsOutputCopyBack
+	vsCopyBack(vsInputCopyBack input)
+{
+    vsOutputCopyBack output = (vsOutputCopyBack)0;
+    output.pos = input.pos;
+    output.tex = input.tex;
+    return output;
+}
+
+void
+	psCopyBack(vsOutputCopyBack input, out float4 c0 : COLOR0, out float4 c1 : COLOR1)
+{
+	c0 = tex2D(rayOriginTableSampler, input.tex);
+	c1 = tex2D(rayDirTableSampler, input.tex);
+}
+
+struct vsInputShowTex
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;    
+};
+
+struct vsOutputShowTex
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;
+};
+
+vsOutputShowTex
+	vsShowTex(vsInputShowTex input)
+{
+    vsOutputShowTex output = (vsOutputShowTex)0;
+    output.pos = input.pos;
+    output.tex = input.tex;
+
+    return output;
+}
+
+float4
+	psShowTex(vsOutputShowTex input) : COLOR0
+{   
+//	return abs(float4(tex2D(rayDirTableSampler, input.tex).xyz, 1));
+	return float4(tex2D(rayOriginTableSampler, input.tex).xyz, 1);
+//	return abs(float4(tex2D(conePeakTableSampler, input.tex).xyz, 1));	
+//	return float4(1,1,0,1);	
+//	return float4(input.tex.x,input.tex.y,0,1);	
+//	return float4(1.0 - acos(tex2D(coneDirTableSampler, input.tex).aaa) / 3.14, 1);	
+//	 + float4(0, 0.7, 0, 0);
+//		+	float4(tex2D(rayDirTableSampler, input.tex).xyz, 1);
+	float3 relfDir = tex2D(rayDirTableSampler, input.tex);
+	return float4((relfDir.x +1) / 2,
+		(relfDir.y + 1) / 2,
+		(relfDir.z + 1) / 2,   1);
+}
+
+struct vsInputRayCast
+{
+    half4	sphere		: POSITION;
+    half3	planePos	: NORMAL;
+    half3  invmx0		: TEXCOORD0;
+    half3  invmx1		: TEXCOORD1;
+    half3  invmx2		: TEXCOORD2;
+    half3  normals0	: TEXCOORD3;
+	half3  normals1	: TEXCOORD4;
+	half3  normals2	: TEXCOORD5;
+	half3  tex0		: TEXCOORD6;
+	half3  tex1		: TEXCOORD7;
+	half3  tex2		: TEXCOORD8;	
+};
+
+struct vsOutputRayCast
+{
+	half4	pos		: POSITION;
+    half3  invmx0		: TEXCOORD0;
+    half3  invmx1		: TEXCOORD1;
+    half3  invmx2		: TEXCOORD2;
+    half3  normals0	: TEXCOORD3;
+	half3  normals1	: TEXCOORD4;
+	half3  normals2	: TEXCOORD5;
+	half3  tex0		: TEXCOORD6;
+	half3  tex1		: TEXCOORD7;
+//	float3  tex2		: TEXCOORD8;
+    half3	planePos	: TEXCOORD8;
+};
+
+vsOutputRayCast
+	vsRayCast(vsInputRayCast input)
+{
+    vsOutputRayCast output = (vsOutputRayCast)0;
+	output.planePos = input.planePos;
+	output.invmx0 = input.invmx0;
+	output.invmx1 = input.invmx1;
+	output.invmx2 = input.invmx2;
+	output.normals0 = input.normals0;
+	output.normals1 = input.normals1;
+	output.normals2 = input.normals2;
+	output.tex0 = input.tex0;
+	output.tex1 = input.tex1;
+//	output.tex2 = input.tex2;
+	output.pos = float4(tilePos, 1);
+
+//	float2 coneTexCoords = tilePos * 0.5 + float2(0.5 + 1.0/32.0, 0.5 + 1.0/32.0);
+	tilePos.y = - tilePos.y;
+//	float2 coneTexCoords = (tilePos + 1.0 - 1.0/32.0) * 0.5;
+//	float4 conePeak = tex2Dlod(conePeakTableSampler, float4(coneTexCoords, 0, 0));
+//	float4 coneDira = tex2Dlod(coneDirTableSampler, float4(coneTexCoords, 0, 0));
+
+//	conePeak.xyz = mul(float4(conePeak.xyz, 1.0), worldModel);
+
+	float3 sfc = input.sphere.xyz - conePeak.xyz;
+	float lsfc = length(sfc);
+
+	if(input.sphere.w < lsfc)
+	{
+		float angSpMidConeMid = acos(dot(coneDira.xyz, sfc) / lsfc);
+		float angSpRad = asin(input.sphere.w / lsfc);
+		float angCone = acos(coneDira.w);
+		
+		if(angCone + angSpRad < angSpMidConeMid)
+		{
+			output.pos = float4(10000000.0, 10000000.0, 10000000.0, 1.0);
+		}
+	}/**/
+
+    return output;
+}
+
+void
+	psRayCast(vsOutputRayCast input, in float2 vpos : VPOS,  out float4 origin : COLOR0, out float4 dir : COLOR1, out float1 depth : DEPTH)
+{   
+
+	float2 pixpos = vpos.xy;
+	pixpos /= 512.0;
+	float4 rayOrigin = tex2D(rayOriginTableSampler, pixpos.xy);
+	rayOrigin = mul(rayOrigin, worldModel);
+	float4 rayDirDepth = tex2D(rayDirTableSampler, pixpos.xy);
+	float3 rayDir = rayDirDepth.xyz;
+	
+	float hitDepth = (dot(input.planePos, input.planePos) - dot(rayOrigin, input.planePos)) / dot(rayDir, input.planePos);
+	float toler = 0.1;
+	if(hitDepth < toler || hitDepth > maxRayDepth)
+	{	
+		depth = 1000000.0;
+		origin = dir = 0;
+	}
+	else
+	{
+		float3 hitPoint = rayOrigin + (rayDir * hitDepth);
+
+		float4(10.0, 0, 0, 1);
+		depth = hitDepth / maxRayDepth;
+
+		float baryA = dot(input.invmx0, hitPoint);
+		float baryB = dot(input.invmx1, hitPoint);
+		float baryC = dot(input.invmx2, hitPoint);
+		if(baryA > -0.001 && baryB > -0.001 && baryC > -0.001)
+		{
+			origin = mul(float4(hitPoint, 1), modelWorld);
+			float3 normalAtHitPoint = input.normals0 * baryA;
+			normalAtHitPoint += input.normals1 * baryB;
+			normalAtHitPoint += input.normals2 * baryC;
+			normalAtHitPoint = normalize(normalAtHitPoint);
+			if(dot(normalAtHitPoint, rayDir) > 0)
+			{
+				normalAtHitPoint = -normalAtHitPoint;
+				rf = 1.0 / rf;
+			}
+			float3 rfd = refract(rayDir, normalAtHitPoint, rf);
+			if(dot(rfd, rfd) < 0.5)
+				rfd = reflect(rayDir, normalAtHitPoint);
+			dir = float4(rfd, rayDirDepth.w + colOrder);
+//			dir = float4(reflect(rayDir, normalAtHitPoint), 1);
+		}
+		else
+		{
+			origin = float4(10.0, 0, 0, 1);
+			dir = float4(10.0, 0, 0, 1);
+			depth = 1000000.0;
+		}
+	}
+}
+
+
+struct vsInputBackGround
+{
+    float4 pos  : POSITION; //Pos
+    float2 tex	: TEXCOORD0;
+};
+
+struct vsOutputBackGround
+{
+    float4 pos  : POSITION; //Pos
+	float2 tex	: TEXCOORD0;
+    float3 worldPos : TEXCOORD1;
+};
+
+vsOutputBackGround vsBackground(vsInputBackGround input){
+    vsOutputBackGround output = (vsOutputBackGround)0;
+    output.pos=input.pos;
+    float4 worldpos = mul(input.pos, screenToWorld);
+    worldpos /= worldpos.w;
+    output.worldPos = worldpos.xyz;
+    output.tex = input.tex;
+    return output;
+}
+
+void psBackground(vsOutputBackGround input, out float4 o0 : COLOR0) 
+{   
+	float4 dird = tex2D(rayDirTableSampler, input.tex);
+	float3 dir = dird.xyz;
+	float3 col = 1 ;
+						/*float3(pow(0.7, frac(dird.w / 10.0) * 10.0) ,
+						pow(0.7, frac(dird.w / 100.0) * 10.0) ,
+						pow(0.7, frac(dird.w / 1000.0) * 10.0));*/
+	if(dot(dir, dir) < 0.5)
+	{
+		dir = normalize(input.worldPos.xyz - eyePos.xyz);
+		col = float3(4, 4, 4);
+	}
+	o0 = float4(texCUBE(environmentSampler, dir).xyz * col * 1.1, 0.0);
+//	o0 = float4(dird.w / 5.0, dird.w / 2.0, dird.w / 10.0, 1.0);
+	
+//	o0 = float4(input.tex.x, input.tex.y, 1.0, 1.0);
+}
+
+struct vsInputCone
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;    
+};
+
+struct vsOutputCone
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;
+};
+
+vsOutputCone
+	vsCone(vsInputCone input)
+{
+    vsOutputCone output = (vsOutputCone)0;
+    output.pos = input.pos;
+    output.tex = input.tex;
+    return output;
+}
+
+void
+	psCone(vsInputCone input, out float4 rpeak : COLOR0, out float4 rdir : COLOR1)
+{
+//	rpeak = rdir = tex2D(rayDirTableSampler, input.tex + 2.0/32.0);
+//	return;
+	float3 peak = float3(0, 0, 0);//tex2D(rayOriginTableSampler, input.tex + 1.0/32.0);
+	float3 dir = float3(0, 0, 0);//tex2D(rayDirTableSampler, input.tex + 1.0/32.0);
+	float cosAngle = 1.0;
+	float sinAngle = 0.0;
+	for(int i=0; i < 16; i++)
+		for(int j=0; j < 16; j++)
+		{
+			float3 ndir = tex2D(rayDirTableSampler, input.tex + float2((float)j/512.0, (float)i/512.0));
+			if(dot(ndir, ndir) > 0.5)
+			{
+				float3 npeak = tex2D(rayOriginTableSampler, input.tex + float2((float)j/512.0, (float)i/512.0));
+				if(dot(dir,dir) < 0.5)
+				{
+					dir = ndir;
+					peak = npeak;
+				}
+				else
+				{
+					float ncos = dot(ndir,dir);
+					if(ncos < cosAngle)
+					{
+						float3 perpdir = normalize(ndir - ncos * dir);
+						float3 farConeEdge = cosAngle * dir - sinAngle * perpdir;
+						dir = farConeEdge + ndir;
+						dir = normalize(dir);
+						cosAngle = dot(dir, ndir);
+						sinAngle = sqrt(1.0 - cosAngle * cosAngle);
+					}
+					float3 pd = npeak - peak;
+					float3 ptop = normalize(pd);
+					float cospp = dot(dir, ptop);
+					if(cospp < cosAngle)
+					{
+						float3 perpdir = ptop - cospp * dir;
+						perpdir = normalize(perpdir);
+						float3 farConeEdge = (cosAngle * dir - sinAngle * perpdir);
+						float3 nearConeEdge = (cosAngle * dir + sinAngle * perpdir);
+						float3 g = npeak - peak - nearConeEdge * dot(nearConeEdge, pd);
+						peak += farConeEdge * dot(g,g) / dot(farConeEdge, g);
+					}
+				}
+			}
+		}
+	rpeak = float4(peak, 1.0);
+	rdir = float4(dir, cosAngle);
+	if(dot(dir, dir) < 0.5)
+	{
+		rpeak = float4(1000000.0, 0 , 0, 0.0);
+		rdir = float4(1, 0, 0, 1.0);
+	}
+}
+
+struct vsInputCheck
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;    
+};
+
+struct vsOutputCheck
+{
+    float4	pos			: POSITION;
+    float2	tex			: TEXCOORD0;
+};
+
+vsOutputCheck
+	vsCheck(vsInputCheck input)
+{
+    vsOutputCone output = (vsOutputCone)0;
+    output.pos = input.pos;
+    output.tex = input.tex;
+    return output;
+}
+
+float4 psCheck(vsOutputCheck input) : COLOR
+{
+	float3 orig = tex2D(rayOriginTableSampler, input.tex);
+	float3 dir = tex2D(rayDirTableSampler, input.tex);
+	float3 peak = tex2D(conePeakTableSampler, input.tex);
+	float4 coneDira = tex2D(coneDirTableSampler, input.tex);	
+	float4 ret = float4(0, 1, 0, 1);;
+	if(dot(dir, coneDira.xyz) < coneDira.a - 0.01)
+		ret = float4(1, 0, 0, 1);
+	if( (dot(normalize(orig - peak), coneDira.xyz) < coneDira.a - 0.01))
+		ret = float4(0, 0, 1, 1);
+//	ret = float4(dir + coneDira.xyz, 1);
+//	return abs(float4(peak, 1))  * 100.0;
+	return ret;
+}
+
+technique RenderPrimaryRayArray{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 vsRenderPrimaryRayArray();
+        PixelShader  = compile ps_3_0 psRenderPrimaryRayArray();
+    }
+}
+
+technique RayCast{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 vsRayCast();
+        PixelShader  = compile ps_3_0 psRayCast();
+    }
+}
+
+technique ShowTex{
+	pass P0
+    {
+        VertexShader = compile vs_2_0 vsShowTex();
+        PixelShader  = compile ps_2_0 psShowTex();
+    }
+}
+
+technique Background{
+	pass P0
+    {
+        VertexShader = compile vs_2_0 vsBackground();
+        PixelShader  = compile ps_2_0 psBackground();
+    }
+}
+
+technique CopyBack{
+	pass P0
+    {
+        VertexShader = compile vs_2_0 vsCopyBack();
+        PixelShader  = compile ps_2_0 psCopyBack();
+    }
+}
+
+technique ComputeCones{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 vsCone();
+        PixelShader  = compile ps_3_0 psCone();
+    }
+}
+
+technique ConeChecker{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 vsCheck();
+        PixelShader  = compile ps_3_0 psCheck();
+    }
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Parameters.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Parameters.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Parameters.cpp	(revision 1481)
@@ -0,0 +1,275 @@
+#include "dxstdafx.h" 
+#include "Parameters.h"
+
+float noconvert(float a) {
+	return a;
+}
+
+float convertNSamples(float a)
+{
+	return 8 * (int)(a * 256);
+}
+
+float convertDepthResolution(float a)
+{
+	return 2 << (int)(a * 8);
+}
+
+float convert100(float a)
+{
+	return a * a * a * a * a * 99.0f + 1.0f;
+}
+
+float convert10(float a)
+{
+	return a * 9.8f + 0.2f;
+}
+
+float convert1(float a)
+{
+	return a * 0.9f + 0.1f;
+}
+
+void OnChange() {
+}
+
+void Parameters::Setup( CDXUTDialog* g_HUD ) {
+	Setup(g_HUD, OnChange, OnChange, OnChange);
+}
+
+void Parameters::Setup( CDXUTDialog* g_HUD, ONCHANGE_CALLBACK OnReset, ONCHANGE_CALLBACK OnSave, ONCHANGE_CALLBACK OnLoad )
+{
+	assert( g_HUD != NULL );
+	this->g_HUD = g_HUD;
+	g_HUD->GetDefaultElement( DXUT_CONTROL_STATIC, 0 )->dwTextFormat = DT_VCENTER | DT_LEFT;
+
+	for (int i=0; i<LAST_NUMBER; i++) {
+		ffunc[i] = noconvert;
+		chfunc[i] = OnChange;
+	}
+
+	int posX = 380; 
+	int posY = 50 + LAST_BOOL*16; 
+	g_HUD->AddButton( IDC_RESET_BUTTON, L"[R] Reset", posX, posY += 50, 60, 16, 'R' );
+	g_HUD->AddButton( IDC_SAVE_BUTTON,  L"[X] Save",  posX + 70, posY, 60, 16, 'X' );
+	g_HUD->AddButton( IDC_LOAD_BUTTON,  L"[L] Load",  posX + 140, posY, 60, 16, 'L' );
+//	g_HUD->AddButton( IDC_GEN_BUTTON,  L"[G] Regenerate",  posX - 250, posY, 100, 16, 'L' );
+	chfunc[ LAST_NUMBER ] = OnReset;
+	chfunc[ LAST_NUMBER+1 ] = OnSave;
+	chfunc[ LAST_NUMBER+2 ] = OnLoad;
+}
+
+bool Parameters::Get( bool_t i ) {
+	return bparam[i];
+}
+
+float Parameters::Get( number_t i ) {
+	//assert( ffunc[i] != NULL );
+	return ffunc[i]( (float)param[i] / numsteps[i] );	// 0..1
+}
+
+int Parameters::GetInt( number_t i ) {
+	//assert( ffunc[i] != NULL );
+	float r = ffunc[i]( (float)param[i] / numsteps[i] );
+	return (int)(r+0.5);	// 0..numsteps[i]
+}
+
+void Parameters::Add( bool_t ID, char* label, char cHotKey ) {
+	
+	assert( cHotKey != 'R' && cHotKey != 'S' && cHotKey != 'L' );
+	mbstowcs( bname[ID], label, CHARBUFFER_SIZE );
+
+	int posX = 380; 
+	int posY = 50; 
+	CDXUTCheckBox* c;
+	g_HUD->AddCheckBox( ID+checkboxID0, bname[ID], posX, posY + ID*16, 150, 16, false, cHotKey, 0 );
+	// checked=false
+}
+
+void Parameters::SetBool( bool_t ID, bool b ) {
+	bparam[ID] = b;
+
+	bSilent = true;
+	if( g_HUD->GetCheckBox( ID+checkboxID0 ) != NULL )
+		g_HUD->GetCheckBox( ID+checkboxID0 )->SetChecked( bparam[ID] );
+	bSilent = false;
+}
+
+void Parameters::SetFloat( number_t ID, float v ) {
+	SetInt( ID, (int)( v*numsteps[ID] + 0.5 ));
+}
+
+void Parameters::SetInt( number_t ID, int v ) {
+	param[ID] = v;
+	if ( param[ID] < 0 )	param[ID] = 0;
+	else if ( param[ID] > numsteps[ID] )	param[ID] = numsteps[ID];
+
+	bSilent = true;
+
+	// minden frissül
+	if( g_HUD->GetSlider( ID+sliderID0 ) != NULL )
+		g_HUD->GetSlider( ID+sliderID0 )->SetValue( v );
+
+	wchar_t text[30];
+	_sntprintf( text, 30, L"%.2f", Get( (number_t)ID ) );
+
+	if( g_HUD->GetStatic( ID+staticID0 ) != NULL )
+		g_HUD->GetStatic( ID+staticID0 )->SetText( text );
+
+	// user-defined callback
+	//assert( chfunc[ID] != NULL );
+	chfunc[ID]();
+
+	bSilent = false;
+}
+
+void Parameters::Add( number_t ID, char* label, int num_steps) {
+	Add( ID, label, num_steps, noconvert );
+}
+
+void Parameters::Add( number_t ID, char* label, int num_steps, CONVERTER ff, ONCHANGE_CALLBACK chf ) {
+	char cKeyDown = 0;
+	char cKeyUp = 0;
+	Add( ID, label, num_steps, cKeyDown, cKeyUp, ff, chf);
+}
+
+void Parameters::Add( number_t ID, char* label, int num_steps, char cKeyDecr, char cKeyIncr, CONVERTER ff, ONCHANGE_CALLBACK chf ) {
+
+	assert( cKeyDecr != 'R' && cKeyDecr != 'S' && cKeyDecr != 'L' );
+	assert( cKeyIncr != 'R' && cKeyIncr != 'S' && cKeyIncr != 'L' );
+
+	mbstowcs( name[ID], label, CHARBUFFER_SIZE );
+	/*wchar_t val[30];
+	_sntprintf( val, 30, L"%.2f", param[ID] / 100.0f );	// nem kell */
+
+	//cHotKey
+	ffunc[ID] = ff;
+	chfunc[ID] = chf;
+	numsteps[ID] = num_steps;
+
+	int posX = 210; 
+	int posY = 50; 
+	g_HUD->AddStatic( 0, name[ID], posX-180, posY + ID*16, 120, 14 );
+	g_HUD->AddStatic( ID+staticID0, L"", posX-50, posY + ID*16, 120, 14 );
+	g_HUD->AddSlider( ID+sliderID0, posX, posY + ID*16, 120, 14, 0, num_steps );
+	//UpdateFromHUD( ID+sliderID0 );
+
+	// hogy ne kelljen azt eltárolni, hogy melyik hotkey melyik sliderhez tartozik, 
+	// 2 láthatatlan checkboxot hozok létre ezekkel a hotkeyekkel.
+	// a checkbox id alapján azonosíthatom az érintett slidert.
+	CDXUTCheckBox* c;
+	g_HUD->AddCheckBox( ID+downID0, L"d", posX-20, posY + ID*16, 200, 16, 0, cKeyDecr, 0, &c );
+	c->m_bVisible = false;
+	g_HUD->AddCheckBox( ID+upID0, L"u", posX-20, posY + ID*16, 200, 16, 0, cKeyIncr, 0, &c );
+	c->m_bVisible = false;
+}
+
+void Parameters::UpdateFromHUD( int controlID ) {
+
+	//if (bSilent) return;
+
+	// Reset, Save & Load buttons
+	if (controlID == IDC_RESET_BUTTON ) {
+		LoadFromFile( ".params0" );
+		chfunc[ LAST_NUMBER ]();
+	} 
+	else if (controlID == IDC_SAVE_BUTTON ) {
+		SaveToFile( ".params" );
+		chfunc[ LAST_NUMBER+1 ]();
+	}
+	else if (controlID == IDC_LOAD_BUTTON ) {
+		LoadFromFile( ".params" );
+		chfunc[ LAST_NUMBER+2 ]();
+	}
+
+	// a checkbox
+	else if (controlID >= checkboxID0 && controlID < checkboxID0+LAST_BOOL) {
+		bool b = g_HUD->GetCheckBox( controlID )->GetChecked();
+		int ID = controlID - checkboxID0;
+		SetBool( (bool_t)ID, b);
+	}
+
+	// a slider
+	else if (controlID >= sliderID0 && controlID < sliderID0+LAST_NUMBER)	{
+		int v = g_HUD->GetSlider( controlID )->GetValue();
+		int ID = controlID - sliderID0;
+		SetInt( (number_t)ID, v);
+	}
+
+	// a hotkey (bound to an invisible checkbox) that decrements a slider
+	else if (controlID >= downID0 && controlID < downID0+LAST_NUMBER)	{	// down
+		int ID = controlID-downID0;
+		SetInt( (number_t)ID, param[ID]-1 );
+	}
+
+	// a hotkey (bound to an invisible checkbox) that increments a slider
+	else if (controlID >= upID0 && controlID < upID0+LAST_NUMBER) {			// up
+		int ID = controlID-upID0;
+		SetInt( (number_t)ID, param[ID]+1 );
+	}
+}
+
+void Parameters::SaveToFile( char* fileName ) {
+	FILE* fileS;
+	if( ( fileS = fopen( fileName, "wt" ) ) == NULL )
+	{
+		wchar_t wbuf[ CHARBUF ];
+		mbstowcs( wbuf, fileName, CHARBUF );
+		MessageBox( NULL, wbuf, L"File creation failed!", MB_ICONERROR );			// show error message
+		return;
+	}
+
+	fwprintf( fileS, L"----- RayTraceEffects: Saved parameters of the algorithm -----\n" );
+
+	fwprintf( fileS, L"Bool values:\n" );
+	for ( int i=0; i<LAST_BOOL; i++)
+		fwprintf( fileS, L"%i", (int)bparam[i] );
+	fwprintf( fileS, L"\n" );
+
+	fwprintf( fileS, L"(" );
+	for ( int i=0; i<LAST_BOOL; i++)
+		fwprintf( fileS, L"%s; ", bname[i] );
+	fwprintf( fileS, L")\n" );
+
+	fwprintf( fileS, L"Float values:\n" );
+
+	for ( int i=0; i<LAST_NUMBER; i++)
+		fwprintf( fileS, L"%i \t(%s, 0..%i)\n", param[i], name[i], numsteps[i] );
+
+	fclose(fileS);
+}
+
+void Parameters::LoadFromFile( char* fileName ) {
+	FILE* fileL; 
+    if( ( fileL = fopen( fileName, "rt" ) ) == NULL )
+	{
+		wchar_t wbuf[ CHARBUF ];
+		mbstowcs( wbuf, fileName, CHARBUF );
+		MessageBox( NULL, wbuf, L"File not found!", MB_ICONERROR );			// show error message
+		return;
+	}
+
+	char buf[ CHARBUF ];
+	fgets( buf, CHARBUF, fileL );			// skip comment
+	fgets( buf, CHARBUF, fileL );			// skip comment
+
+	for ( int i=0; i<LAST_BOOL; i++)
+	{
+		int num = fgetc( fileL ) - '0';
+		SetBool( (bool_t)i, num > 0 );
+	}
+
+	fgets( buf, CHARBUF, fileL );			// skip line
+	fgets( buf, CHARBUF, fileL );			// skip comment
+	fgets( buf, CHARBUF, fileL );			// skip comment
+
+	for ( int i=0; i<LAST_NUMBER; i++)
+	{
+		fgets( buf, CHARBUF, fileL );
+		int v;
+		sscanf( buf, "%i", &v );
+		SetInt( (number_t)i, v );
+	}
+
+	fclose(fileL);
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2002.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2002.sln	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2002.sln	(revision 1481)
@@ -0,0 +1,24 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HierRayEngine", "HierRayEngine_2002.vcproj", "{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}"
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		ConfigName.0 = Debug
+		ConfigName.1 = Profile
+		ConfigName.2 = Release
+	EndGlobalSection
+	GlobalSection(ProjectDependencies) = postSolution
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Debug.ActiveCfg = Debug|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Debug.Build.0 = Debug|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Profile.ActiveCfg = Profile|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Profile.Build.0 = Profile|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Release.ActiveCfg = Release|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Vector.hpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Vector.hpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Vector.hpp	(revision 1481)
@@ -0,0 +1,281 @@
+#pragma once
+
+#include <d3dx9math.h>
+#include <float.h>
+#include <math.h>
+#include <iostream>
+#include "half.h"
+
+class Vector {
+public:
+	//constants
+	static const Vector RGBBLACK;
+	static const Vector RGBWHITE;
+	static const Vector RGBRED;
+	static const Vector RGBGREEN;
+	static const Vector RGBBLUE;
+	static const Vector RGBLIGHTBLUE;
+	static const Vector RGBYELLOW;
+	static const Vector RGBORANGE;
+	static const Vector RGBDARKGRAY;
+	static const Vector RGBLIGHTYELLOW;
+
+
+	//Vector is also used for storing colours
+	//data can be accessed through various aliases
+	union{
+		float v[3];
+		struct{ float x; float y; float z; };
+		struct{ float r; float g; float b; };
+		};
+
+	Vector(){}
+
+	Vector(const D3DXVECTOR3& d)
+	{
+		v[0] = d.x;
+		v[1] = d.y;
+		v[2] = d.z;
+	}
+
+	Vector(const D3DXVECTOR2& d)
+	{
+		v[0] = d.x;
+		v[1] = d.y;
+		v[2] = 0.0f;
+	}
+
+	Vector(const float x, const float y, const float z)
+	{
+		v[0] = x; v[1] = y; v[2] = z;
+	}
+
+	void set(const float x, const float y, const float z)
+	{
+		v[0] = x; v[1] = y; v[2] = z;
+	}
+
+	void setScaled(float s, const Vector& a)
+	{
+		v[0] = s * a[0]; v[1] = s * a[1]; v[2] = s * a[2];
+	}
+
+	void addScaled(float s, const Vector& a)
+	{
+		v[0] += s * a[0]; v[1] += s * a[1]; v[2] += s * a[2];
+	}
+
+	void clear()
+	{
+		v[0] = v[1] = v[2] = 0;
+	}
+
+	void setDifference(const Vector& a, const Vector& b)
+	{
+		v[0] = a.v[0] - b.v[0];
+		v[1] = a.v[1] - b.v[1];
+		v[2] = a.v[2] - b.v[2];
+	}
+
+	Vector operator-() const
+	{
+		return Vector(-v[0], -v[1], -v[2]);
+	}
+
+	Vector operator+(const Vector& addOperand) const
+	{
+		return Vector (	v[0] + addOperand.v[0],
+						v[1] + addOperand.v[1],
+						v[2] + addOperand.v[2]);
+	}
+
+	Vector operator-(const Vector& substractOperand) const
+	{
+		return Vector(  v[0] - substractOperand.v[0],
+						v[1] - substractOperand.v[1],
+						v[2] - substractOperand.v[2]);
+	}
+
+	void operator-=(const Vector& a)
+	{
+		v[0] -= a[0];
+		v[1] -= a[1];
+		v[2] -= a[2];
+	}
+
+	void operator+=(const Vector& a)
+	{
+		v[0] += a[0];
+		v[1] += a[1];
+		v[2] += a[2];
+	}
+
+	//blend operator
+	void operator%=(const Vector& a)
+	{
+		v[0] *= a[0];
+		v[1] *= a[1];
+		v[2] *= a[2];
+	}
+
+	//scale operator
+	void operator*=(const float scale)
+	{
+		v[0] *= scale;
+		v[1] *= scale;
+		v[2] *= scale;
+	}
+
+	//blend operator
+	Vector operator%(const Vector& blendOperand) const
+	{
+		return Vector(	v[0] * blendOperand.v[0],
+						v[1] * blendOperand.v[1],
+						v[2] * blendOperand.v[2]);
+	}
+
+	//scale operator
+	Vector operator*(const float scale) const
+	{
+		return Vector(scale * v[0], scale * v[1], scale * v[2]);
+	}
+
+	//dot product operator
+	float operator*(const Vector& dotProductOperand) const
+	{
+		return	v[0] * dotProductOperand[0] + 
+				v[1] * dotProductOperand[1] +
+				v[2] * dotProductOperand[2];
+	}
+
+	//cross product operator
+	Vector operator&&(const Vector& crossProductOperand) const
+	{
+		return Vector(
+			v[1] * crossProductOperand[2] - v[2] * crossProductOperand[1],
+			v[2] * crossProductOperand[0] - v[0] * crossProductOperand[2],
+			v[0] * crossProductOperand[1] - v[1] * crossProductOperand[0]);
+	}
+
+	void setCrossProduct(const Vector& a, const Vector& b)
+	{
+		v[0] = a[1] * b[2] - a[2] * b[1];
+		v[1] = a[2] * b[0] - a[0] * b[2];
+		v[2] = a[0] * b[1] - a[1] * b[0];
+	}
+
+	float norm () const
+	{
+		return sqrtf(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
+	}
+
+	float norm2 () const 
+	{
+		return v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
+	}
+
+	void normalize ()
+	{
+		float length = 1.0f / sqrtf (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
+		v[0] *= length;
+		v[1] *= length;
+		v[2] *= length;
+	}
+
+	float sum () const
+	{
+		return v[0] + v[1] + v[2];
+	}
+
+	const Vector& operator=(const Vector& other)
+	{
+		v[0] = other.v[0];
+		v[1] = other.v[1];
+		v[2] = other.v[2];
+		return *this;
+	}
+
+	float& operator[](const int index)
+	{
+		return v[index];
+	}
+
+	float operator[](const int index) const
+	{
+		return v[index];
+	}
+
+	//accumulate minimum operator
+	void operator<= ( const Vector& zsmall)
+	{
+		if(v[0] > zsmall[0]) v[0] = zsmall[0];
+		if(v[1] > zsmall[1]) v[1] = zsmall[1];
+		if(v[2] > zsmall[2]) v[2] = zsmall[2];
+	}
+
+	//accumulate maximum operator
+	void operator>= ( const Vector& large)
+	{
+		if(v[0] < large[0]) v[0] = large[0];
+		if(v[1] < large[1]) v[1] = large[1];
+		if(v[2] < large[2]) v[2] = large[2];
+	}
+
+	void setIdealReflectedDirection (const Vector& in, const Vector& normal)
+	{
+		*this = in - normal * (2.0f * (normal * in));
+	}
+
+	void setIdealRefractedDirection (const Vector& in, const Vector& normal, float rf)
+	{
+		float nDotIn = in * normal;
+		if(nDotIn < 0.0f)
+		{
+			float anna = -nDotIn * rf;
+			float det = anna * anna - rf * rf + 1.0f;
+			if(det < 0.0f)
+			{ //total reflection
+				*this = in - normal * (2.0f * (normal * in));
+				return;
+			}
+			float sigma = - anna + sqrt(det);
+			*this = (in * rf);	
+			*this += (normal * -sigma);
+		}
+		else
+		{
+			rf = 1.0f / rf;
+			float anna = nDotIn * rf;
+			float det = anna * anna - rf * rf + 1.0f;
+			if(det < 0.0f)
+			{ //total reflection
+				*this = in - normal * (2.0f * (normal * in));
+				return;
+			}
+			float sigma = - anna + sqrt(det);
+			*this = (in * rf);	
+			*this += (normal * sigma);
+		}
+	}
+
+	void addAccumBlendReflecBlendEmissionScaleDist(const Vector& accum,
+													const Vector& reflec,
+													const Vector& emission,
+													const float dist2inv)
+	{
+		v[0] += accum.v[0] * reflec.v[0] * emission.v[0] * dist2inv;
+		v[1] += accum.v[1] * reflec.v[1] * emission.v[1] * dist2inv;
+		v[2] += accum.v[2] * reflec.v[2] * emission.v[2] * dist2inv;
+	}
+
+	void fillHalfArray(half* ret)
+	{
+		ret[0] = (half)v[0];
+		ret[1] = (half)v[1];
+		ret[2] = (half)v[2];
+	}
+
+	static const double PI;
+};
+
+std::istream& operator>>(std::istream& cin, Vector& v);
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTgui.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTgui.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTgui.h	(revision 1481)
@@ -0,0 +1,1109 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTgui.h
+//
+// Desc: 
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#pragma once
+#ifndef DXUT_GUI_H
+#define DXUT_GUI_H
+
+#include <usp10.h>
+#include <dimm.h>
+
+
+//--------------------------------------------------------------------------------------
+// Defines and macros 
+//--------------------------------------------------------------------------------------
+#define EVENT_BUTTON_CLICKED                0x0101
+#define EVENT_COMBOBOX_SELECTION_CHANGED    0x0201
+#define EVENT_RADIOBUTTON_CHANGED           0x0301
+#define EVENT_CHECKBOX_CHANGED              0x0401
+#define EVENT_SLIDER_VALUE_CHANGED          0x0501
+#define EVENT_EDITBOX_STRING                0x0601
+// EVENT_EDITBOX_CHANGE is sent when the listbox content changes
+// due to user input.
+#define EVENT_EDITBOX_CHANGE                0x0602
+#define EVENT_LISTBOX_ITEM_DBLCLK           0x0701
+// EVENT_LISTBOX_SELECTION is fired off when the selection changes in
+// a single selection list box.
+#define EVENT_LISTBOX_SELECTION             0x0702
+#define EVENT_LISTBOX_SELECTION_END         0x0703
+
+
+//--------------------------------------------------------------------------------------
+// Forward declarations
+//--------------------------------------------------------------------------------------
+class CDXUTDialogResourceManager;
+class CDXUTControl;
+class CDXUTButton;
+class CDXUTStatic;
+class CDXUTCheckBox;
+class CDXUTRadioButton;
+class CDXUTComboBox;
+class CDXUTSlider;
+class CDXUTEditBox;
+class CDXUTIMEEditBox;
+class CDXUTListBox;
+class CDXUTScrollBar;
+class CDXUTElement;
+struct DXUTElementHolder;
+struct DXUTTextureNode;
+struct DXUTFontNode;
+typedef VOID (CALLBACK *PCALLBACKDXUTGUIEVENT) ( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext );
+
+
+//--------------------------------------------------------------------------------------
+// Enums for pre-defined control types
+//--------------------------------------------------------------------------------------
+enum DXUT_CONTROL_TYPE 
+{ 
+    DXUT_CONTROL_BUTTON, 
+    DXUT_CONTROL_STATIC, 
+    DXUT_CONTROL_CHECKBOX,
+    DXUT_CONTROL_RADIOBUTTON,
+    DXUT_CONTROL_COMBOBOX,
+    DXUT_CONTROL_SLIDER,
+    DXUT_CONTROL_EDITBOX,
+    DXUT_CONTROL_IMEEDITBOX,
+    DXUT_CONTROL_LISTBOX,
+    DXUT_CONTROL_SCROLLBAR,
+};
+
+enum DXUT_CONTROL_STATE
+{
+    DXUT_STATE_NORMAL = 0,
+    DXUT_STATE_DISABLED,
+    DXUT_STATE_HIDDEN,
+    DXUT_STATE_FOCUS,
+    DXUT_STATE_MOUSEOVER,
+    DXUT_STATE_PRESSED,
+};
+
+#define MAX_CONTROL_STATES 6
+
+struct DXUTBlendColor
+{
+    void Init( D3DCOLOR defaultColor, D3DCOLOR disabledColor = D3DCOLOR_ARGB(200, 128, 128, 128), D3DCOLOR hiddenColor = 0 );
+    void Blend( UINT iState, float fElapsedTime, float fRate = 0.7f );
+    
+    D3DCOLOR  States[ MAX_CONTROL_STATES ]; // Modulate colors for all possible control states
+    D3DXCOLOR Current;
+};
+
+
+//-----------------------------------------------------------------------------
+// Contains all the display tweakables for a sub-control
+//-----------------------------------------------------------------------------
+class CDXUTElement
+{
+public:
+    void SetTexture( UINT iTexture, RECT* prcTexture, D3DCOLOR defaultTextureColor = D3DCOLOR_ARGB(255, 255, 255, 255) );
+    void SetFont( UINT iFont, D3DCOLOR defaultFontColor = D3DCOLOR_ARGB(255, 255, 255, 255), DWORD dwTextFormat = DT_CENTER | DT_VCENTER );
+    
+    void Refresh();
+    
+    UINT iTexture;          // Index of the texture for this Element 
+    UINT iFont;             // Index of the font for this Element
+    DWORD dwTextFormat;     // The format argument to DrawText 
+
+    RECT rcTexture;         // Bounding rect of this element on the composite texture
+    
+    DXUTBlendColor TextureColor;
+    DXUTBlendColor FontColor;
+};
+
+
+//-----------------------------------------------------------------------------
+// All controls must be assigned to a dialog, which handles
+// input and rendering for the controls.
+//-----------------------------------------------------------------------------
+class CDXUTDialog
+{
+    friend class CDXUTDialogResourceManager;
+
+public:
+    CDXUTDialog();
+    ~CDXUTDialog();
+
+    // Need to call this now
+    void Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog = true );
+    void Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog, LPCWSTR pszControlTextureFilename );
+    void Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog, LPCWSTR szControlTextureResourceName, HMODULE hControlTextureResourceModule );
+
+    // Windows message handler
+    bool MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+    // Control creation
+    HRESULT AddStatic( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault=false, CDXUTStatic** ppCreated=NULL );
+    HRESULT AddButton( int ID, LPCWSTR strText, int x, int y, int width, int height, UINT nHotkey=0, bool bIsDefault=false, CDXUTButton** ppCreated=NULL );
+    HRESULT AddCheckBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bChecked=false, UINT nHotkey=0, bool bIsDefault=false, CDXUTCheckBox** ppCreated=NULL );
+    HRESULT AddRadioButton( int ID, UINT nButtonGroup, LPCWSTR strText, int x, int y, int width, int height, bool bChecked=false, UINT nHotkey=0, bool bIsDefault=false, CDXUTRadioButton** ppCreated=NULL );
+    HRESULT AddComboBox( int ID, int x, int y, int width, int height, UINT nHotKey=0, bool bIsDefault=false, CDXUTComboBox** ppCreated=NULL );
+    HRESULT AddSlider( int ID, int x, int y, int width, int height, int min=0, int max=100, int value=50, bool bIsDefault=false, CDXUTSlider** ppCreated=NULL );
+    HRESULT AddEditBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault=false, CDXUTEditBox** ppCreated=NULL );
+    HRESULT AddIMEEditBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault=false, CDXUTIMEEditBox** ppCreated=NULL );
+    HRESULT AddListBox( int ID, int x, int y, int width, int height, DWORD dwStyle=0, CDXUTListBox** ppCreated=NULL );
+    HRESULT AddControl( CDXUTControl* pControl );
+    HRESULT InitControl( CDXUTControl* pControl );
+
+    // Control retrieval
+    CDXUTStatic*      GetStatic( int ID ) { return (CDXUTStatic*) GetControl( ID, DXUT_CONTROL_STATIC ); }
+    CDXUTButton*      GetButton( int ID ) { return (CDXUTButton*) GetControl( ID, DXUT_CONTROL_BUTTON ); }
+    CDXUTCheckBox*    GetCheckBox( int ID ) { return (CDXUTCheckBox*) GetControl( ID, DXUT_CONTROL_CHECKBOX ); }
+    CDXUTRadioButton* GetRadioButton( int ID ) { return (CDXUTRadioButton*) GetControl( ID, DXUT_CONTROL_RADIOBUTTON ); }
+    CDXUTComboBox*    GetComboBox( int ID ) { return (CDXUTComboBox*) GetControl( ID, DXUT_CONTROL_COMBOBOX ); }
+    CDXUTSlider*      GetSlider( int ID ) { return (CDXUTSlider*) GetControl( ID, DXUT_CONTROL_SLIDER ); }
+    CDXUTEditBox*     GetEditBox( int ID ) { return (CDXUTEditBox*) GetControl( ID, DXUT_CONTROL_EDITBOX ); }
+    CDXUTIMEEditBox*  GetIMEEditBox( int ID ) { return (CDXUTIMEEditBox*) GetControl( ID, DXUT_CONTROL_IMEEDITBOX ); }
+    CDXUTListBox*     GetListBox( int ID ) { return (CDXUTListBox*) GetControl( ID, DXUT_CONTROL_LISTBOX ); }
+
+    CDXUTControl* GetControl( int ID );
+    CDXUTControl* GetControl( int ID, UINT nControlType );
+    CDXUTControl* GetControlAtPoint( POINT pt );
+
+    bool GetControlEnabled( int ID );
+    void SetControlEnabled( int ID, bool bEnabled );
+
+    void ClearRadioButtonGroup( UINT nGroup );
+    void ClearComboBox( int ID );
+
+    // Access the default display Elements used when adding new controls
+    HRESULT       SetDefaultElement( UINT nControlType, UINT iElement, CDXUTElement* pElement );
+    CDXUTElement* GetDefaultElement( UINT nControlType, UINT iElement );
+
+    // Methods called by controls
+    void SendEvent( UINT nEvent, bool bTriggeredByUser, CDXUTControl* pControl );
+    void RequestFocus( CDXUTControl* pControl );
+
+    // Render helpers
+    HRESULT DrawRect( RECT* pRect, D3DCOLOR color );
+    HRESULT DrawPolyLine( POINT* apPoints, UINT nNumPoints, D3DCOLOR color );
+    HRESULT DrawSprite( CDXUTElement* pElement, RECT* prcDest );
+    HRESULT CalcTextRect( LPCWSTR strText, CDXUTElement* pElement, RECT* prcDest, int nCount = -1 );
+    HRESULT DrawText( LPCWSTR strText, CDXUTElement* pElement, RECT* prcDest, bool bShadow = false, int nCount = -1 );
+
+    // Attributes
+    bool GetVisible() { return m_bVisible; }
+    void SetVisible( bool bVisible ) { m_bVisible = bVisible; }
+    bool GetMinimized() { return m_bMinimized; }
+    void SetMinimized( bool bMinimized ) { m_bMinimized = bMinimized; }
+    void SetBackgroundColors( D3DCOLOR colorAllCorners ) { SetBackgroundColors( colorAllCorners, colorAllCorners, colorAllCorners, colorAllCorners ); }
+    void SetBackgroundColors( D3DCOLOR colorTopLeft, D3DCOLOR colorTopRight, D3DCOLOR colorBottomLeft, D3DCOLOR colorBottomRight );
+    void EnableCaption( bool bEnable ) { m_bCaption = bEnable; }
+    int GetCaptionHeight() const { return m_nCaptionHeight; }
+    void SetCaptionHeight( int nHeight ) { m_nCaptionHeight = nHeight; }
+    void SetCaptionText( const WCHAR *pwszText ) { StringCchCopy( m_wszCaption, sizeof(m_wszCaption)/sizeof(m_wszCaption[0]), pwszText); }
+    void GetLocation( POINT &Pt ) const { Pt.x = m_x; Pt.y = m_y; }
+    void SetLocation( int x, int y ) { m_x = x; m_y = y; }
+    void SetSize( int width, int height ) { m_width = width; m_height = height;  }
+    int GetWidth() { return m_width; }
+    int GetHeight() { return m_height; }
+
+    static void SetRefreshTime( float fTime ){ s_fTimeRefresh = fTime; }
+
+    static CDXUTControl* GetNextControl( CDXUTControl* pControl );
+    static CDXUTControl* GetPrevControl( CDXUTControl* pControl );
+
+    void RemoveControl( int ID );
+    void RemoveAllControls();
+
+    // Sets the callback used to notify the app of control events
+    void SetCallback( PCALLBACKDXUTGUIEVENT pCallback, void* pUserContext = NULL );
+    void EnableNonUserEvents( bool bEnable ) { m_bNonUserEvents = bEnable; }
+    void EnableKeyboardInput( bool bEnable ) { m_bKeyboardInput = bEnable; }
+    void EnableMouseInput( bool bEnable ) { m_bMouseInput = bEnable; }
+    bool IsKeyboardInputEnabled() const { return m_bKeyboardInput; }
+
+    // Device state notification
+    void Refresh();
+    HRESULT OnRender( float fElapsedTime );
+
+    // Shared resource access. Indexed fonts and textures are shared among
+    // all the controls.
+    HRESULT       SetFont( UINT index, LPCWSTR strFaceName, LONG height, LONG weight );
+    DXUTFontNode* GetFont( UINT index );
+
+    HRESULT          SetTexture( UINT index, LPCWSTR strFilename );
+    HRESULT          SetTexture( UINT index, LPCWSTR strResourceName, HMODULE hResourceModule );
+    DXUTTextureNode* GetTexture( UINT index );
+
+    CDXUTDialogResourceManager* GetManager() { return m_pManager; }
+
+    static void ClearFocus();
+    void FocusDefaultControl();
+
+    bool m_bNonUserEvents;
+    bool m_bKeyboardInput;
+    bool m_bMouseInput;
+
+
+
+private:
+    int m_nDefaultControlID;
+
+    static double s_fTimeRefresh;
+    double m_fTimeLastRefresh;
+
+    // Initialize default Elements
+    void InitDefaultElements();
+
+    // Windows message handlers
+    void OnMouseMove( POINT pt );
+    void OnMouseUp( POINT pt );
+
+    void SetNextDialog( CDXUTDialog* pNextDialog );
+
+    // Control events
+    bool OnCycleFocus( bool bForward );
+
+    static CDXUTControl* s_pControlFocus;        // The control which has focus
+    static CDXUTControl* s_pControlPressed;      // The control currently pressed
+
+    CDXUTControl* m_pControlMouseOver;           // The control which is hovered over
+
+    bool m_bVisible;
+    bool m_bCaption;
+    bool m_bMinimized;
+    bool m_bDrag;
+    WCHAR m_wszCaption[256];
+
+    int m_x;
+    int m_y;
+    int m_width;
+    int m_height;
+    int m_nCaptionHeight;
+
+    D3DCOLOR m_colorTopLeft;
+    D3DCOLOR m_colorTopRight;
+    D3DCOLOR m_colorBottomLeft;
+    D3DCOLOR m_colorBottomRight;
+
+    CDXUTDialogResourceManager* m_pManager;
+    PCALLBACKDXUTGUIEVENT m_pCallbackEvent;
+    void* m_pCallbackEventUserContext;
+
+    CGrowableArray< int > m_Textures;   // Index into m_TextureCache;
+    CGrowableArray< int > m_Fonts;      // Index into m_FontCache;
+
+    CGrowableArray< CDXUTControl* > m_Controls;
+    CGrowableArray< DXUTElementHolder* > m_DefaultElements;
+
+    CDXUTElement m_CapElement;  // Element for the caption
+
+    CDXUTDialog* m_pNextDialog;
+    CDXUTDialog* m_pPrevDialog;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Structs for shared resources
+//--------------------------------------------------------------------------------------
+struct DXUTTextureNode
+{
+    bool bFileSource;  // True if this texture is loaded from a file. False if from resource.
+    HMODULE hResourceModule;
+    int nResourceID;   // Resource ID. If 0, string-based ID is used and stored in strFilename.
+    WCHAR strFilename[MAX_PATH];
+    IDirect3DTexture9* pTexture;
+    DWORD dwWidth;
+    DWORD dwHeight;
+};
+
+struct DXUTFontNode
+{
+    WCHAR strFace[MAX_PATH];
+    ID3DXFont* pFont;
+    LONG  nHeight;
+    LONG  nWeight;
+};
+
+
+//-----------------------------------------------------------------------------
+// Manages shared resources of dialogs
+//-----------------------------------------------------------------------------
+class CDXUTDialogResourceManager
+{
+public:
+    CDXUTDialogResourceManager();
+    ~CDXUTDialogResourceManager();
+
+    HRESULT     OnCreateDevice( LPDIRECT3DDEVICE9 pd3dDevice );
+    HRESULT     OnResetDevice();
+    void        OnLostDevice();
+    void        OnDestroyDevice();
+    bool        MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+    
+    int AddFont( LPCWSTR strFaceName, LONG height, LONG weight );
+    int AddTexture( LPCWSTR strFilename );
+    int AddTexture( LPCWSTR strResourceName, HMODULE hResourceModule );
+
+    DXUTFontNode*     GetFontNode( int iIndex )     { return m_FontCache.GetAt( iIndex ); };
+    DXUTTextureNode*  GetTextureNode( int iIndex )  { return m_TextureCache.GetAt( iIndex ); };
+    IDirect3DDevice9* GetD3DDevice()                { return m_pd3dDevice; }
+
+    bool RegisterDialog( CDXUTDialog *pDialog );
+    void UnregisterDialog( CDXUTDialog *pDialog );
+    void EnableKeyboardInputForAllDialogs();
+
+    // Shared between all dialogs
+    IDirect3DStateBlock9* m_pStateBlock;
+    ID3DXSprite*          m_pSprite;          // Sprite used for drawing
+
+    CGrowableArray< CDXUTDialog* > m_Dialogs;            // Dialogs registered
+
+protected:
+    CGrowableArray< DXUTTextureNode* > m_TextureCache;   // Shared textures
+    CGrowableArray< DXUTFontNode* > m_FontCache;         // Shared fonts
+
+    IDirect3DDevice9* m_pd3dDevice;
+
+    // Resource creation helpers
+    HRESULT CreateFont( UINT index );
+    HRESULT CreateTexture( UINT index );
+};
+
+
+//-----------------------------------------------------------------------------
+// Base class for controls
+//-----------------------------------------------------------------------------
+class CDXUTControl
+{
+public:
+    CDXUTControl( CDXUTDialog *pDialog = NULL );
+    virtual ~CDXUTControl();
+
+    virtual HRESULT OnInit() { return S_OK; }
+    virtual void Refresh();
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime ) { };
+
+    // Windows message handler
+    virtual bool MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam ) { return false; }
+
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam ) { return false; }
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam ) { return false; }
+
+    virtual bool CanHaveFocus() { return false; }
+    virtual void OnFocusIn() { m_bHasFocus = true; }
+    virtual void OnFocusOut() { m_bHasFocus = false; }
+    virtual void OnMouseEnter() { m_bMouseOver = true; }
+    virtual void OnMouseLeave() { m_bMouseOver = false; }
+    virtual void OnHotkey() {}
+
+    virtual BOOL ContainsPoint( POINT pt ) { return PtInRect( &m_rcBoundingBox, pt ); }
+
+    virtual void SetEnabled( bool bEnabled ) { m_bEnabled = bEnabled; }
+    virtual bool GetEnabled() { return m_bEnabled; }
+    virtual void SetVisible( bool bVisible ) { m_bVisible = bVisible; }
+    virtual bool GetVisible() { return m_bVisible; }
+
+    UINT GetType() const { return m_Type; }
+
+    int  GetID() const { return m_ID; }
+    void SetID( int ID ) { m_ID = ID; }
+
+    void SetLocation( int x, int y ) { m_x = x; m_y = y; UpdateRects(); }
+    void SetSize( int width, int height ) { m_width = width; m_height = height; UpdateRects(); }
+
+    void SetHotkey( UINT nHotkey ) { m_nHotkey = nHotkey; }
+    UINT GetHotkey() { return m_nHotkey; }
+
+    void SetUserData( void *pUserData ) { m_pUserData = pUserData; }
+    void *GetUserData() const { return m_pUserData; }
+
+    virtual void SetTextColor( D3DCOLOR Color );
+    CDXUTElement* GetElement( UINT iElement ) { return m_Elements.GetAt( iElement ); }
+    HRESULT SetElement( UINT iElement, CDXUTElement* pElement);
+
+    bool m_bVisible;                // Shown/hidden flag
+    bool m_bMouseOver;              // Mouse pointer is above control
+    bool m_bHasFocus;               // Control has input focus
+    bool m_bIsDefault;              // Is the default control
+
+    // Size, scale, and positioning members
+    int m_x, m_y;
+    int m_width, m_height;
+
+    // These members are set by the container
+    CDXUTDialog* m_pDialog;    // Parent container
+    UINT m_Index;              // Index within the control list
+    
+    CGrowableArray< CDXUTElement* > m_Elements;  // All display elements
+
+protected:
+    virtual void UpdateRects();
+
+    int  m_ID;                 // ID number
+    DXUT_CONTROL_TYPE m_Type;  // Control type, set once in constructor  
+    UINT m_nHotkey;            // Virtual key code for this control's hotkey
+    void *m_pUserData;         // Data associated with this control that is set by user.
+    
+    bool m_bEnabled;           // Enabled/disabled flag
+    
+    RECT m_rcBoundingBox;      // Rectangle defining the active region of the control
+};
+
+
+//-----------------------------------------------------------------------------
+// Contains all the display information for a given control type
+//-----------------------------------------------------------------------------
+struct DXUTElementHolder
+{
+    UINT nControlType;
+    UINT iElement;
+
+    CDXUTElement Element;
+};
+
+
+//-----------------------------------------------------------------------------
+// Static control
+//-----------------------------------------------------------------------------
+class CDXUTStatic : public CDXUTControl
+{
+public:
+    CDXUTStatic( CDXUTDialog *pDialog = NULL );
+
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+    virtual BOOL ContainsPoint( POINT pt ) { return false; }
+
+    HRESULT GetTextCopy( LPWSTR strDest, UINT bufferCount );
+    LPCWSTR GetText() { return m_strText; }
+    HRESULT SetText( LPCWSTR strText );
+
+
+protected:
+    WCHAR m_strText[MAX_PATH];      // Window text  
+};
+
+
+//-----------------------------------------------------------------------------
+// Button control
+//-----------------------------------------------------------------------------
+class CDXUTButton : public CDXUTStatic
+{
+public:
+    CDXUTButton( CDXUTDialog *pDialog = NULL );
+
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual void OnHotkey() { if( m_pDialog->IsKeyboardInputEnabled() ) m_pDialog->RequestFocus( this ); m_pDialog->SendEvent( EVENT_BUTTON_CLICKED, true, this ); }
+    
+    virtual BOOL ContainsPoint( POINT pt ) { return PtInRect( &m_rcBoundingBox, pt ); }
+    virtual bool CanHaveFocus() { return (m_bVisible && m_bEnabled); }
+
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+
+protected:
+    bool m_bPressed;
+};
+
+
+//-----------------------------------------------------------------------------
+// CheckBox control
+//-----------------------------------------------------------------------------
+class CDXUTCheckBox : public CDXUTButton
+{
+public:
+    CDXUTCheckBox( CDXUTDialog *pDialog = NULL );
+
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual void OnHotkey() { if( m_pDialog->IsKeyboardInputEnabled() ) m_pDialog->RequestFocus( this ); SetCheckedInternal( !m_bChecked, true ); }
+
+    virtual BOOL ContainsPoint( POINT pt ); 
+    virtual void UpdateRects(); 
+
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+
+    bool GetChecked() { return m_bChecked; }
+    void SetChecked( bool bChecked ) { SetCheckedInternal( bChecked, false ); }
+    
+protected:
+    virtual void SetCheckedInternal( bool bChecked, bool bFromInput );
+
+    bool m_bChecked;
+    RECT m_rcButton;
+    RECT m_rcText;
+};
+
+
+//-----------------------------------------------------------------------------
+// RadioButton control
+//-----------------------------------------------------------------------------
+class CDXUTRadioButton : public CDXUTCheckBox
+{
+public:
+    CDXUTRadioButton( CDXUTDialog *pDialog = NULL );
+
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual void OnHotkey() { if( m_pDialog->IsKeyboardInputEnabled() ) m_pDialog->RequestFocus( this ); SetCheckedInternal( true, true, true ); }
+    
+    void SetChecked( bool bChecked, bool bClearGroup=true ) { SetCheckedInternal( bChecked, bClearGroup, false ); }
+    void SetButtonGroup( UINT nButtonGroup ) { m_nButtonGroup = nButtonGroup; }
+    UINT GetButtonGroup() { return m_nButtonGroup; }
+    
+protected:
+    virtual void SetCheckedInternal( bool bChecked, bool bClearGroup, bool bFromInput );
+    UINT m_nButtonGroup;
+};
+
+
+//-----------------------------------------------------------------------------
+// Scrollbar control
+//-----------------------------------------------------------------------------
+class CDXUTScrollBar : public CDXUTControl
+{
+public:
+    CDXUTScrollBar( CDXUTDialog *pDialog = NULL );
+    virtual ~CDXUTScrollBar();
+
+    virtual bool    HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool    HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual bool    MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+    virtual void    Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+    virtual void    UpdateRects();
+
+    void SetTrackRange( int nStart, int nEnd );
+    int GetTrackPos() { return m_nPosition; }
+    void SetTrackPos( int nPosition ) { m_nPosition = nPosition; Cap(); UpdateThumbRect(); }
+    int GetPageSize() { return m_nPageSize; }
+    void SetPageSize( int nPageSize ) { m_nPageSize = nPageSize; Cap(); UpdateThumbRect(); }
+
+    void Scroll( int nDelta );    // Scroll by nDelta items (plus or minus)
+    void ShowItem( int nIndex );  // Ensure that item nIndex is displayed, scroll if necessary
+
+protected:
+    // ARROWSTATE indicates the state of the arrow buttons.
+    // CLEAR            No arrow is down.
+    // CLICKED_UP       Up arrow is clicked.
+    // CLICKED_DOWN     Down arrow is clicked.
+    // HELD_UP          Up arrow is held down for sustained period.
+    // HELD_DOWN        Down arrow is held down for sustained period.
+    enum ARROWSTATE { CLEAR, CLICKED_UP, CLICKED_DOWN, HELD_UP, HELD_DOWN };
+
+    void UpdateThumbRect();
+    void Cap();  // Clips position at boundaries. Ensures it stays within legal range.
+
+    bool m_bShowThumb;
+    bool m_bDrag;
+    RECT m_rcUpButton;
+    RECT m_rcDownButton;
+    RECT m_rcTrack;
+    RECT m_rcThumb;
+    int m_nPosition;  // Position of the first displayed item
+    int m_nPageSize;  // How many items are displayable in one page
+    int m_nStart;     // First item
+    int m_nEnd;       // The index after the last item
+    POINT m_LastMouse;// Last mouse position
+    ARROWSTATE m_Arrow; // State of the arrows
+    double m_dArrowTS;  // Timestamp of last arrow event.
+};
+
+
+//-----------------------------------------------------------------------------
+// ListBox control
+//-----------------------------------------------------------------------------
+struct DXUTListBoxItem
+{
+    WCHAR strText[256];
+    void*  pData;
+
+    RECT  rcActive;
+    bool  bSelected;
+};
+
+class CDXUTListBox : public CDXUTControl
+{
+public:
+    CDXUTListBox( CDXUTDialog *pDialog = NULL );
+    virtual ~CDXUTListBox();
+
+    virtual HRESULT OnInit() { return m_pDialog->InitControl( &m_ScrollBar ); }
+    virtual bool    CanHaveFocus() { return (m_bVisible && m_bEnabled); }
+    virtual bool    HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool    HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual bool    MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+    virtual void    Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+    virtual void    UpdateRects();
+
+    DWORD GetStyle() const { return m_dwStyle; }
+    int GetSize() const { return m_Items.GetSize(); }
+    void SetStyle( DWORD dwStyle ) { m_dwStyle = dwStyle; }
+    int  GetScrollBarWidth() const { return m_nSBWidth; }
+    void SetScrollBarWidth( int nWidth ) { m_nSBWidth = nWidth; UpdateRects(); }
+    void SetBorder( int nBorder, int nMargin ) { m_nBorder = nBorder; m_nMargin = nMargin; }
+    HRESULT AddItem( const WCHAR *wszText, void *pData );
+    HRESULT InsertItem( int nIndex, const WCHAR *wszText, void *pData );
+    void RemoveItem( int nIndex );
+    void RemoveItemByText( WCHAR *wszText );
+    void RemoveItemByData( void *pData );
+    void RemoveAllItems();
+
+    DXUTListBoxItem *GetItem( int nIndex );
+    int GetSelectedIndex( int nPreviousSelected = -1 );
+    DXUTListBoxItem *GetSelectedItem( int nPreviousSelected = -1 ) { return GetItem( GetSelectedIndex( nPreviousSelected ) ); }
+    void SelectItem( int nNewIndex );
+
+    enum STYLE { MULTISELECTION = 1 };
+
+protected:
+    RECT m_rcText;      // Text rendering bound
+    RECT m_rcSelection; // Selection box bound
+    CDXUTScrollBar m_ScrollBar;
+    int m_nSBWidth;
+    int m_nBorder;
+    int m_nMargin;
+    int m_nTextHeight;  // Height of a single line of text
+    DWORD m_dwStyle;    // List box style
+    int m_nSelected;    // Index of the selected item for single selection list box
+    int m_nSelStart;    // Index of the item where selection starts (for handling multi-selection)
+    bool m_bDrag;       // Whether the user is dragging the mouse to select
+
+    CGrowableArray< DXUTListBoxItem* > m_Items;
+};
+
+
+//-----------------------------------------------------------------------------
+// ComboBox control
+//-----------------------------------------------------------------------------
+struct DXUTComboBoxItem
+{
+    WCHAR strText[256];
+    void*  pData;
+
+    RECT  rcActive;
+    bool  bVisible;
+};
+
+
+class CDXUTComboBox : public CDXUTButton
+{
+public:
+    CDXUTComboBox( CDXUTDialog *pDialog = NULL );
+    virtual ~CDXUTComboBox();
+    
+    virtual void SetTextColor( D3DCOLOR Color );
+    virtual HRESULT OnInit() { return m_pDialog->InitControl( &m_ScrollBar ); }
+
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual void OnHotkey();
+
+    virtual bool CanHaveFocus() { return (m_bVisible && m_bEnabled); }
+    virtual void OnFocusOut();
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+
+    virtual void UpdateRects(); 
+
+    HRESULT AddItem( const WCHAR* strText, void* pData );
+    void    RemoveAllItems();
+    void    RemoveItem( UINT index );
+    bool    ContainsItem( const WCHAR* strText, UINT iStart=0 );
+    int     FindItem( const WCHAR* strText, UINT iStart=0 );
+    void*   GetItemData( const WCHAR* strText );
+    void*   GetItemData( int nIndex );
+    void    SetDropHeight( UINT nHeight ) { m_nDropHeight = nHeight; UpdateRects(); }
+    int     GetScrollBarWidth() const { return m_nSBWidth; }
+    void    SetScrollBarWidth( int nWidth ) { m_nSBWidth = nWidth; UpdateRects(); }
+
+    void*   GetSelectedData();
+    DXUTComboBoxItem* GetSelectedItem();
+
+    UINT    GetNumItems() { return m_Items.GetSize(); }
+    DXUTComboBoxItem* GetItem( UINT index ) { return m_Items.GetAt( index ); }
+
+    HRESULT SetSelectedByIndex( UINT index );
+    HRESULT SetSelectedByText( const WCHAR* strText );
+    HRESULT SetSelectedByData( void* pData );  
+
+protected:
+    int     m_iSelected;
+    int     m_iFocused;
+    int     m_nDropHeight;
+    CDXUTScrollBar m_ScrollBar;
+    int     m_nSBWidth;
+
+    bool    m_bOpened;
+
+    RECT m_rcText;
+    RECT m_rcButton;
+    RECT m_rcDropdown;
+    RECT m_rcDropdownText;
+
+    
+    CGrowableArray< DXUTComboBoxItem* > m_Items;
+};
+
+
+//-----------------------------------------------------------------------------
+// Slider control
+//-----------------------------------------------------------------------------
+class CDXUTSlider : public CDXUTControl
+{
+public:
+    CDXUTSlider( CDXUTDialog *pDialog = NULL );
+
+    virtual BOOL ContainsPoint( POINT pt ); 
+    virtual bool CanHaveFocus() { return (m_bVisible && m_bEnabled); }
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    
+    virtual void UpdateRects(); 
+
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+
+    void SetValue( int nValue ) { SetValueInternal( nValue, false ); }
+    int  GetValue() const { return m_nValue; };
+
+    void GetRange( int &nMin, int &nMax ) const { nMin = m_nMin; nMax = m_nMax; }
+    void SetRange( int nMin, int nMax );
+
+protected:
+    void SetValueInternal( int nValue, bool bFromInput );
+    int  ValueFromPos( int x ); 
+
+    int m_nValue;
+
+    int m_nMin;
+    int m_nMax;
+
+    int m_nDragX;      // Mouse position at start of drag
+    int m_nDragOffset; // Drag offset from the center of the button
+    int m_nButtonX;
+
+    bool m_bPressed;
+    RECT m_rcButton;
+};
+
+
+//-----------------------------------------------------------------------------
+// CUniBuffer class for the edit control
+//-----------------------------------------------------------------------------
+class CUniBuffer
+{
+public:
+    CUniBuffer( int nInitialSize = 1 );
+    ~CUniBuffer();
+
+    static void Initialize();
+    static void Uninitialize();
+
+    int  GetBufferSize() { return m_nBufferSize; }
+    bool SetBufferSize( int nSize );
+    int  GetTextSize()  { return lstrlenW( m_pwszBuffer ); }
+    const WCHAR* GetBuffer() { return m_pwszBuffer; }
+    const WCHAR& operator[]( int n ) const { return m_pwszBuffer[n]; }
+    WCHAR& operator[]( int n );
+    DXUTFontNode* GetFontNode() { return m_pFontNode; }
+    void SetFontNode( DXUTFontNode *pFontNode ) { m_pFontNode = pFontNode; }
+    void Clear();
+
+    bool InsertChar( int nIndex, WCHAR wChar ); // Inserts the char at specified index. If nIndex == -1, insert to the end.
+    bool RemoveChar( int nIndex );  // Removes the char at specified index. If nIndex == -1, remove the last char.
+    bool InsertString( int nIndex, const WCHAR *pStr, int nCount = -1 );  // Inserts the first nCount characters of the string pStr at specified index.  If nCount == -1, the entire string is inserted. If nIndex == -1, insert to the end.
+    bool SetText( LPCWSTR wszText );
+
+    // Uniscribe
+    HRESULT CPtoX( int nCP, BOOL bTrail, int *pX );
+    HRESULT XtoCP( int nX, int *pCP, int *pnTrail );
+    void GetPriorItemPos( int nCP, int *pPrior );
+    void GetNextItemPos( int nCP, int *pPrior );
+
+private:
+    HRESULT Analyse();      // Uniscribe -- Analyse() analyses the string in the buffer
+
+    WCHAR* m_pwszBuffer;    // Buffer to hold text
+    int    m_nBufferSize;   // Size of the buffer allocated, in characters
+
+    // Uniscribe-specific
+    DXUTFontNode* m_pFontNode;          // Font node for the font that this buffer uses
+    bool m_bAnalyseRequired;            // True if the string has changed since last analysis.
+    SCRIPT_STRING_ANALYSIS m_Analysis;  // Analysis for the current string
+
+private:
+    // Empty implementation of the Uniscribe API
+    static HRESULT WINAPI Dummy_ScriptApplyDigitSubstitution( const SCRIPT_DIGITSUBSTITUTE*, SCRIPT_CONTROL*, SCRIPT_STATE* ) { return E_NOTIMPL; }
+    static HRESULT WINAPI Dummy_ScriptStringAnalyse( HDC, const void *, int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, const int*, SCRIPT_TABDEF*, const BYTE*, SCRIPT_STRING_ANALYSIS* ) { return E_NOTIMPL; }
+    static HRESULT WINAPI Dummy_ScriptStringCPtoX( SCRIPT_STRING_ANALYSIS, int, BOOL, int* ) { return E_NOTIMPL; }
+    static HRESULT WINAPI Dummy_ScriptStringXtoCP( SCRIPT_STRING_ANALYSIS, int, int*, int* ) { return E_NOTIMPL; }
+    static HRESULT WINAPI Dummy_ScriptStringFree( SCRIPT_STRING_ANALYSIS* ) { return E_NOTIMPL; }
+    static const SCRIPT_LOGATTR* WINAPI Dummy_ScriptString_pLogAttr( SCRIPT_STRING_ANALYSIS ) { return NULL; }
+    static const int* WINAPI Dummy_ScriptString_pcOutChars( SCRIPT_STRING_ANALYSIS ) { return NULL; }
+
+    // Function pointers
+    static HRESULT (WINAPI *_ScriptApplyDigitSubstitution)( const SCRIPT_DIGITSUBSTITUTE*, SCRIPT_CONTROL*, SCRIPT_STATE* );
+    static HRESULT (WINAPI *_ScriptStringAnalyse)( HDC, const void *, int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, const int*, SCRIPT_TABDEF*, const BYTE*, SCRIPT_STRING_ANALYSIS* );
+    static HRESULT (WINAPI *_ScriptStringCPtoX)( SCRIPT_STRING_ANALYSIS, int, BOOL, int* );
+    static HRESULT (WINAPI *_ScriptStringXtoCP)( SCRIPT_STRING_ANALYSIS, int, int*, int* );
+    static HRESULT (WINAPI *_ScriptStringFree)( SCRIPT_STRING_ANALYSIS* );
+    static const SCRIPT_LOGATTR* (WINAPI *_ScriptString_pLogAttr)( SCRIPT_STRING_ANALYSIS );
+    static const int* (WINAPI *_ScriptString_pcOutChars)( SCRIPT_STRING_ANALYSIS );
+
+    static HINSTANCE s_hDll;  // Uniscribe DLL handle
+
+};
+
+//-----------------------------------------------------------------------------
+// EditBox control
+//-----------------------------------------------------------------------------
+class CDXUTEditBox : public CDXUTControl
+{
+public:
+    CDXUTEditBox( CDXUTDialog *pDialog = NULL );
+    virtual ~CDXUTEditBox();
+
+    virtual bool HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual bool MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual void UpdateRects();
+    virtual bool CanHaveFocus() { return (m_bVisible && m_bEnabled); }
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+    virtual void OnFocusIn();
+
+    void SetText( LPCWSTR wszText, bool bSelected = false );
+    LPCWSTR GetText() { return m_Buffer.GetBuffer(); }
+    int GetTextLength() { return m_Buffer.GetTextSize(); }  // Returns text length in chars excluding NULL.
+    HRESULT GetTextCopy( LPWSTR strDest, UINT bufferCount );
+    void ClearText();
+    virtual void SetTextColor( D3DCOLOR Color ) { m_TextColor = Color; }  // Text color
+    void SetSelectedTextColor( D3DCOLOR Color ) { m_SelTextColor = Color; }  // Selected text color
+    void SetSelectedBackColor( D3DCOLOR Color ) { m_SelBkColor = Color; }  // Selected background color
+    void SetCaretColor( D3DCOLOR Color ) { m_CaretColor = Color; }  // Caret color
+    void SetBorderWidth( int nBorder ) { m_nBorder = nBorder; UpdateRects(); }  // Border of the window
+    void SetSpacing( int nSpacing ) { m_nSpacing = nSpacing; UpdateRects(); }
+    void ParseFloatArray( float *pNumbers, int nCount );
+    void SetTextFloatArray( const float *pNumbers, int nCount );
+
+protected:
+    void PlaceCaret( int nCP );
+    void DeleteSelectionText();
+    void ResetCaretBlink();
+    void CopyToClipboard();
+    void PasteFromClipboard();
+
+    CUniBuffer m_Buffer;     // Buffer to hold text
+    int      m_nBorder;      // Border of the window
+    int      m_nSpacing;     // Spacing between the text and the edge of border
+    RECT     m_rcText;       // Bounding rectangle for the text
+    RECT     m_rcRender[9];  // Convenient rectangles for rendering elements
+    double   m_dfBlink;      // Caret blink time in milliseconds
+    double   m_dfLastBlink;  // Last timestamp of caret blink
+    bool     m_bCaretOn;     // Flag to indicate whether caret is currently visible
+    int      m_nCaret;       // Caret position, in characters
+    bool     m_bInsertMode;  // If true, control is in insert mode. Else, overwrite mode.
+    int      m_nSelStart;    // Starting position of the selection. The caret marks the end.
+    int      m_nFirstVisible;// First visible character in the edit control
+    D3DCOLOR m_TextColor;    // Text color
+    D3DCOLOR m_SelTextColor; // Selected text color
+    D3DCOLOR m_SelBkColor;   // Selected background color
+    D3DCOLOR m_CaretColor;   // Caret color
+
+    // Mouse-specific
+    bool m_bMouseDrag;       // True to indicate drag in progress
+
+    // Static
+    static bool s_bHideCaret;   // If true, we don't render the caret.
+};
+
+
+//-----------------------------------------------------------------------------
+// IME-enabled EditBox control
+//-----------------------------------------------------------------------------
+#define MAX_CANDLIST 10
+#define MAX_COMPSTRING_SIZE 256
+
+class CDXUTIMEEditBox : public CDXUTEditBox
+{
+protected:
+    // Empty implementation of the IMM32 API
+    static INPUTCONTEXT* WINAPI Dummy_ImmLockIMC( HIMC ) { return NULL; }
+    static BOOL WINAPI Dummy_ImmUnlockIMC( HIMC ) { return FALSE; }
+    static LPVOID WINAPI Dummy_ImmLockIMCC( HIMCC ) { return NULL; }
+    static BOOL WINAPI Dummy_ImmUnlockIMCC( HIMCC ) { return FALSE; }
+    static BOOL WINAPI Dummy_ImmDisableTextFrameService( DWORD ) { return TRUE; }
+    static LONG WINAPI Dummy_ImmGetCompositionStringW( HIMC, DWORD, LPVOID, DWORD ) { return IMM_ERROR_GENERAL; }
+    static DWORD WINAPI Dummy_ImmGetCandidateListW( HIMC, DWORD, LPCANDIDATELIST, DWORD ) { return 0; }
+    static HIMC WINAPI Dummy_ImmGetContext( HWND ) { return NULL; }
+    static BOOL WINAPI Dummy_ImmReleaseContext( HWND, HIMC ) { return FALSE; }
+    static HIMC WINAPI Dummy_ImmAssociateContext( HWND, HIMC ) { return NULL; }
+    static BOOL WINAPI Dummy_ImmGetOpenStatus( HIMC ) { return 0; }
+    static BOOL WINAPI Dummy_ImmSetOpenStatus( HIMC, BOOL ) { return 0; }
+    static BOOL WINAPI Dummy_ImmGetConversionStatus( HIMC, LPDWORD, LPDWORD ) { return 0; }
+    static HWND WINAPI Dummy_ImmGetDefaultIMEWnd( HWND ) { return NULL; }
+    static UINT WINAPI Dummy_ImmGetIMEFileNameA( HKL, LPSTR, UINT ) { return 0; }
+    static UINT WINAPI Dummy_ImmGetVirtualKey( HWND ) { return 0; }
+    static BOOL WINAPI Dummy_ImmNotifyIME( HIMC, DWORD, DWORD, DWORD ) { return FALSE; }
+    static BOOL WINAPI Dummy_ImmSetConversionStatus( HIMC, DWORD, DWORD ) { return FALSE; }
+    static BOOL WINAPI Dummy_ImmSimulateHotKey( HWND, DWORD ) { return FALSE; }
+    static BOOL WINAPI Dummy_ImmIsIME( HKL ) { return FALSE; }
+
+    // Traditional Chinese IME
+    static UINT WINAPI Dummy_GetReadingString( HIMC, UINT, LPWSTR, PINT, BOOL*, PUINT ) { return 0; }
+    static BOOL WINAPI Dummy_ShowReadingWindow( HIMC, BOOL ) { return FALSE; }
+
+    // Verion library imports
+    static BOOL APIENTRY Dummy_VerQueryValueA( const LPVOID, LPSTR, LPVOID *, PUINT ) { return 0; }
+    static BOOL APIENTRY Dummy_GetFileVersionInfoA( LPSTR, DWORD, DWORD, LPVOID ) { return 0; }
+    static DWORD APIENTRY Dummy_GetFileVersionInfoSizeA( LPSTR, LPDWORD ) { return 0; }
+
+    // Function pointers: IMM32
+    static INPUTCONTEXT* (WINAPI * _ImmLockIMC)( HIMC );
+    static BOOL (WINAPI * _ImmUnlockIMC)( HIMC );
+    static LPVOID (WINAPI * _ImmLockIMCC)( HIMCC );
+    static BOOL (WINAPI * _ImmUnlockIMCC)( HIMCC );
+    static BOOL (WINAPI * _ImmDisableTextFrameService)( DWORD );
+    static LONG (WINAPI * _ImmGetCompositionStringW)( HIMC, DWORD, LPVOID, DWORD );
+    static DWORD (WINAPI * _ImmGetCandidateListW)( HIMC, DWORD, LPCANDIDATELIST, DWORD );
+    static HIMC (WINAPI * _ImmGetContext)( HWND );
+    static BOOL (WINAPI * _ImmReleaseContext)( HWND, HIMC );
+    static HIMC (WINAPI * _ImmAssociateContext)( HWND, HIMC );
+    static BOOL (WINAPI * _ImmGetOpenStatus)( HIMC );
+    static BOOL (WINAPI * _ImmSetOpenStatus)( HIMC, BOOL );
+    static BOOL (WINAPI * _ImmGetConversionStatus)( HIMC, LPDWORD, LPDWORD );
+    static HWND (WINAPI * _ImmGetDefaultIMEWnd)( HWND );
+    static UINT (WINAPI * _ImmGetIMEFileNameA)( HKL, LPSTR, UINT );
+    static UINT (WINAPI * _ImmGetVirtualKey)( HWND );
+    static BOOL (WINAPI * _ImmNotifyIME)( HIMC, DWORD, DWORD, DWORD );
+    static BOOL (WINAPI * _ImmSetConversionStatus)( HIMC, DWORD, DWORD );
+    static BOOL (WINAPI * _ImmSimulateHotKey)( HWND, DWORD );
+    static BOOL (WINAPI * _ImmIsIME)( HKL );
+
+    // Function pointers: Traditional Chinese IME
+    static UINT (WINAPI * _GetReadingString)( HIMC, UINT, LPWSTR, PINT, BOOL*, PUINT );
+    static BOOL (WINAPI * _ShowReadingWindow)( HIMC, BOOL );
+
+    // Function pointers: Verion library imports
+    static BOOL (APIENTRY * _VerQueryValueA)( const LPVOID, LPSTR, LPVOID *, PUINT );
+    static BOOL (APIENTRY * _GetFileVersionInfoA)( LPSTR, DWORD, DWORD, LPVOID );
+    static DWORD (APIENTRY * _GetFileVersionInfoSizeA)( LPSTR, LPDWORD );
+
+public:
+    CDXUTIMEEditBox( CDXUTDialog *pDialog = NULL );
+    virtual ~CDXUTIMEEditBox();
+
+    static void Initialize();
+    static void Uninitialize();
+
+    static  HRESULT StaticOnCreateDevice();
+    static  bool StaticMsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+    static  void EnableImeSystem( bool bEnable );
+
+    virtual void Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+    virtual bool MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual bool HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam );
+    virtual void UpdateRects();
+    virtual void OnFocusIn();
+    virtual void OnFocusOut();
+
+    void PumpMessage();
+
+    virtual void RenderCandidateReadingWindow( IDirect3DDevice9* pd3dDevice, float fElapsedTime, bool bReading );
+    virtual void RenderComposition( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+    virtual void RenderIndicator( IDirect3DDevice9* pd3dDevice, float fElapsedTime );
+
+protected:
+    static WORD GetLanguage() { return LOWORD( s_hklCurrent ); }
+    static WORD GetPrimaryLanguage() { return PRIMARYLANGID( LOWORD( s_hklCurrent ) ); }
+    static WORD GetSubLanguage() { return SUBLANGID( LOWORD( s_hklCurrent ) ); }
+    static void SendKey( BYTE nVirtKey );
+    static DWORD GetImeId( UINT uIndex = 0 );
+    static void CheckInputLocale();
+    static void CheckToggleState();
+    static void SetupImeApi();
+    static void ResetCompositionString();
+    void TruncateCompString( bool bUseBackSpace = true, int iNewStrLen = 0 );
+    void FinalizeString( bool bSend );
+    static void GetReadingWindowOrientation( DWORD dwId );
+    static void GetPrivateReadingString();
+
+    void SendCompString();
+
+protected:
+    enum { INDICATOR_NON_IME, INDICATOR_CHS, INDICATOR_CHT, INDICATOR_KOREAN, INDICATOR_JAPANESE };
+    enum IMESTATE { IMEUI_STATE_OFF, IMEUI_STATE_ON, IMEUI_STATE_ENGLISH };
+
+    struct CCandList
+    {
+        WCHAR awszCandidate[MAX_CANDLIST][256];
+        CUniBuffer HoriCand; // Candidate list string (for horizontal candidate window)
+        int   nFirstSelected; // First character position of the selected string in HoriCand
+        int   nHoriSelectedLen; // Length of the selected string in HoriCand
+        DWORD dwCount;       // Number of valid entries in the candidate list
+        DWORD dwSelection;   // Currently selected candidate entry relative to page top
+        DWORD dwPageSize;
+        int   nReadingError; // Index of the error character
+        bool  bShowWindow;   // Whether the candidate list window is visible
+        RECT  rcCandidate;   // Candidate rectangle computed and filled each time before rendered
+    };
+
+    struct CInputLocale
+    {
+        HKL   m_hKL;            // Keyboard layout
+        WCHAR m_wszLangAbb[3];  // Language abbreviation
+        WCHAR m_wszLang[64];    // Localized language name
+    };
+
+    // Application-wide data
+    static HINSTANCE s_hDllImm32;         // IMM32 DLL handle
+    static HINSTANCE s_hDllVer;           // Version DLL handle
+    static HIMC      s_hImcDef;           // Default input context
+
+    static HKL     s_hklCurrent;          // Current keyboard layout of the process
+    static bool    s_bVerticalCand;       // Indicates that the candidates are listed vertically
+    static LPWSTR  s_wszCurrIndicator;    // Points to an indicator string that corresponds to current input locale
+    static WCHAR   s_aszIndicator[5][3];  // String to draw to indicate current input locale
+    static bool    s_bInsertOnType;       // Insert the character as soon as a key is pressed (Korean behavior)
+    static HINSTANCE s_hDllIme;           // Instance handle of the current IME module
+    static IMESTATE  s_ImeState;          // IME global state
+    static bool    s_bEnableImeSystem;    // Whether the IME system is active
+    static POINT   s_ptCompString;        // Composition string position. Updated every frame.
+    static int     s_nCompCaret;          // Caret position of the composition string
+    static int     s_nFirstTargetConv;    // Index of the first target converted char in comp string.  If none, -1.
+    static CUniBuffer s_CompString;       // Buffer to hold the composition string (we fix its length)
+    static BYTE    s_abCompStringAttr[MAX_COMPSTRING_SIZE];
+    static DWORD   s_adwCompStringClause[MAX_COMPSTRING_SIZE];
+    static WCHAR   s_wszReadingString[32];// Used only with horizontal reading window (why?)
+    static CCandList s_CandList;          // Data relevant to the candidate list
+    static bool    s_bShowReadingWindow;  // Indicates whether reading window is visible
+    static bool    s_bHorizontalReading;  // Indicates whether the reading window is vertical or horizontal
+    static bool    s_bChineseIME;
+    static CGrowableArray< CInputLocale > s_Locale; // Array of loaded keyboard layout on system
+
+    // Color of various IME elements
+    D3DCOLOR       m_ReadingColor;        // Reading string color
+    D3DCOLOR       m_ReadingWinColor;     // Reading window color
+    D3DCOLOR       m_ReadingSelColor;     // Selected character in reading string
+    D3DCOLOR       m_ReadingSelBkColor;   // Background color for selected char in reading str
+    D3DCOLOR       m_CandidateColor;      // Candidate string color
+    D3DCOLOR       m_CandidateWinColor;   // Candidate window color
+    D3DCOLOR       m_CandidateSelColor;   // Selected candidate string color
+    D3DCOLOR       m_CandidateSelBkColor; // Selected candidate background color
+    D3DCOLOR       m_CompColor;           // Composition string color
+    D3DCOLOR       m_CompWinColor;        // Composition string window color
+    D3DCOLOR       m_CompCaretColor;      // Composition string caret color
+    D3DCOLOR       m_CompTargetColor;     // Composition string target converted color
+    D3DCOLOR       m_CompTargetBkColor;   // Composition string target converted background
+    D3DCOLOR       m_CompTargetNonColor;  // Composition string target non-converted color
+    D3DCOLOR       m_CompTargetNonBkColor;// Composition string target non-converted background
+    D3DCOLOR       m_IndicatorImeColor;   // Indicator text color for IME
+    D3DCOLOR       m_IndicatorEngColor;   // Indicator text color for English
+    D3DCOLOR       m_IndicatorBkColor;    // Indicator text background color
+
+    // Edit-control-specific data
+    int            m_nIndicatorWidth;     // Width of the indicator symbol
+    RECT           m_rcIndicator;         // Rectangle for drawing the indicator button
+
+#if defined(DEBUG) || defined(_DEBUG)
+    static bool    m_bIMEStaticMsgProcCalled;
+#endif
+};
+
+
+
+#endif // DXUT_GUI_H
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTRes.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTRes.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTRes.cpp	(revision 1481)
@@ -0,0 +1,8299 @@
+//----------------------------------------------------------------------------
+// File: DXUTRes.cpp
+//
+// Copyright (c) Microsoft Corp. All rights reserved.
+//-----------------------------------------------------------------------------
+#include "dxstdafx.h"
+
+static const DWORD g_DXUTGUITextureSrcData[] =
+{
+	0x20534444, 0x0000007c, 0x00001007, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000041, 0x00000000, 0x00000020, 0x000000ff, 
+	0x0000ff00, 0x00ff0000, 0xff000000, 0x00001002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 
+	0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 0x11000400, 
+	0x11000000, 0x00000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 
+	0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 0x22000400, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22000000, 0x33000000, 0x44000000, 
+	0x44000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x66000000, 0x66000000, 
+	0x66000400, 0x66000400, 0x66000400, 0x66000400, 0x66000000, 0x66000000, 0x661e1e1e, 0x771e1e1e, 
+	0x771e1c1e, 0x771e1c1e, 0x771e1c1e, 0x771e1c1e, 0x771e1e1e, 0x771e1e1e, 0x771e1e1e, 0x771e1e1e, 
+	0x771e1c1e, 0x881e1c1e, 0x881e1c1e, 0x881e1c1e, 0x88373937, 0x88373937, 0x881b1c1b, 0x881b1c1b, 
+	0x881e201e, 0x881e201e, 0x881e201e, 0x881e201e, 0x88313631, 0x88313631, 0x88313631, 0x88191b19, 
+	0x881b1f1b, 0x881b1f1b, 0x881b1f1b, 0x881b1f1b, 0x881b1e1b, 0x881b1e1b, 0x881b1e1b, 0x88373737, 
+	0x88313331, 0x88313331, 0x88313331, 0x88313331, 0x881b1f1b, 0x881b1f1b, 0x881b1f1b, 0x881b1f1b, 
+	0x881b1f1b, 0x881b1f1b, 0x881b1f1b, 0x881b1f1b, 0x88191e19, 0x88191e19, 0x88191e19, 0x77191e19, 
+	0x77191a19, 0x77191a19, 0x77191a19, 0x77191a19, 0x77191719, 0x77191719, 0x77191719, 0x66191719, 
+	0x66161616, 0x66161616, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x33000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x22000400, 0x22000400, 0x333c413c, 0x443c3d3f, 0x443c3d3f, 0x443c3d3f, 0x553c3d3f, 
+	0x66454145, 0x77454145, 0x77454145, 0x88817d81, 0x99797779, 0x99797779, 0x99797779, 0x99797779, 
+	0x99797979, 0xaa797979, 0xaa797979, 0xaa797979, 0xbb7e7c7e, 0xcc7e7c7e, 0xbb7e7c7e, 0xbb7e7c7e, 
+	0xbb7e7f7e, 0xbb7e7f7e, 0xcc7e7f7e, 0xcc7e7f7e, 0xcc7e7f7e, 0xcc7e7f7e, 0xcc7e7f7e, 0xcc7e7f7e, 
+	0xbb7e7c7e, 0xcc7c7b7d, 0xcc7a7879, 0xbb707071, 0xbb686869, 0xbb5d6060, 0xbb565858, 0xbb4d4f4c, 
+	0xcc454745, 0xcc3c3b3e, 0x77383838, 0x55393837, 0x55373737, 0x44373737, 0x33373737, 0x33373937, 
+	0x22000400, 0x22000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 
+	0x22000000, 0x33000000, 0x44000000, 0x55000000, 0x55030303, 0x66030303, 0x66050505, 0x66080808, 
+	0x66101010, 0x77212021, 0x77212021, 0x77313131, 0x88373637, 0x88373637, 0x99525152, 0x99525152, 
+	0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 
+	0x995a555a, 0x995a555a, 0x995a555a, 0x995a555a, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 
+	0x995a555a, 0x995a555a, 0x995a555a, 0x995a555a, 0x99525552, 0x99525552, 0x99525552, 0x99525552, 
+	0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 0x994a514a, 0x994a514a, 0x994a514a, 0x994a514a, 
+	0x99525552, 0x99525552, 0x99525552, 0x99525552, 0x99525152, 0x99525152, 0x99525152, 0x99525152, 
+	0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x99525552, 0x99525552, 0x99525552, 0x99525552, 
+	0x99525552, 0x99525552, 0x99525552, 0x99525552, 0x994a514a, 0x994a514a, 0x994a514a, 0x994a514a, 
+	0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x994a454a, 0x994a454a, 0x994a454a, 0x994a454a, 
+	0x99424142, 0x99424142, 0x99424142, 0x99424142, 0x99424142, 0x99424142, 0x99424142, 0x992c2b2c, 
+	0x88293129, 0x881b201b, 0x771b201b, 0x771b201b, 0x66101010, 0x66101010, 0x660b0b0b, 0x66050505, 
+	0x66000400, 0x66000100, 0x55000100, 0x55000000, 0x55000000, 0x44000000, 0x33000000, 0x22000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080708, 0x11100d10, 0x11100d10, 0x22191419, 
+	0x33212324, 0x55424647, 0x66424647, 0x8863696b, 0x99737473, 0xbb737473, 0xccadaead, 0xeeadaead, 
+	0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5b6bd, 0xffb5b6bd, 0xffb5b6bd, 0xffb5b6bd, 
+	0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 
+	0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 
+	0xffbdbabd, 0xffbcbabd, 0xffbcb8bc, 0xffb6b2b6, 0xffb3afb3, 0xffb0aeaf, 0xffadabaa, 0xffaaa9aa, 
+	0xffa9a7a8, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a5, 0xffa6a6a5, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a2a5, 
+	0xffa5a2a5, 0xffa5a2a5, 0xeea5a2a5, 0xdd9c9a9c, 0xcc9c9a9c, 0xaa686768, 0x99686768, 0x885a5d5a, 
+	0x553c3e3c, 0x443c3e3c, 0x331e1f1e, 0x11101010, 0x11101010, 0x110b0b0b, 0x00050505, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000400, 0x33000400, 0x44000400, 0x55000400, 
+	0x66080808, 0x66080808, 0x663a3a3a, 0x773a3a3a, 0x885a5d5a, 0x886b6f6e, 0x996b6f6e, 0x997b8081, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99797879, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x996b716b, 0x99737773, 0x996b716b, 0x996b716b, 
+	0x99737173, 0x99797779, 0x99737173, 0x99737173, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x99636563, 0x99636563, 0x99636563, 0x99636563, 
+	0x99636163, 0x99636163, 0x99636163, 0x99636163, 0x995a5d5a, 0x995a5d5a, 0x995a5d5a, 0x995a5d5a, 
+	0x995a5552, 0x995a5552, 0x995a5552, 0x995a5552, 0x994a4d50, 0x994a4d50, 0x994a4d50, 0x9931353a, 
+	0x88313331, 0x88313331, 0x77101010, 0x66101010, 0x66080408, 0x66080408, 0x66080408, 0x55080408, 
+	0x55000000, 0x44000000, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11191819, 0x22191819, 0x33191819, 0x66656465, 0x887b7d7b, 0xbba2a5a5, 0xddc8ccce, 0xffc8ccce, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd9d8d9, 0xffd6d2d6, 0xffd6d2d6, 0xffd6cece, 0xffcfcccc, 0xffc8c7c8, 0xffc6c2c3, 
+	0xffc4c0c2, 0xffc2c0c2, 0xffc5c2c4, 0xffc4c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffbdbebd, 
+	0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffa5a6a5, 
+	0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 0xee868a86, 0xdd868a86, 0xaa868a86, 0x885a615a, 0x55505250, 
+	0x33101410, 0x11101410, 0x11101410, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x44000000, 0x55000400, 0x66000400, 0x77343634, 0x77686868, 
+	0x886b6c6b, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x998c9294, 0x998c9294, 0x998c9294, 0x998c9294, 
+	0x998c8e8c, 0x99868786, 0x99868786, 0x99868786, 0x99848384, 0x99848384, 0x99848384, 0x99848384, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x997e7f7e, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x997e7c7e, 0x99848284, 
+	0x9984827b, 0x9984827b, 0x9984827b, 0x9984827b, 0x99848284, 0x99848284, 0x99848284, 0x997e7c7e, 
+	0x99848284, 0x997e7c7e, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x997b7c7b, 
+	0x997e7c7e, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x997b7b7b, 0x99848284, 0x99848284, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99767776, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99737373, 0x997b797b, 
+	0x99737473, 0x99737473, 0x99737473, 0x99737473, 0x997b797b, 0x997b797b, 0x997b797b, 0x99707070, 
+	0x9970706e, 0x9970706e, 0x9970706e, 0x9970706e, 0x99636565, 0x99636565, 0x99636565, 0x99636565, 
+	0x99525652, 0x99525652, 0x99525652, 0x99525652, 0x99504d50, 0x882c282c, 0x772c282c, 0x77080408, 
+	0x66000000, 0x66000000, 0x55000000, 0x55000000, 0x44000000, 0x22000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x11000000, 0x33525452, 0x77525452, 
+	0xaab2afb2, 0xddfffbff, 0xfffffbff, 0xfffffbff, 0xffeff3f7, 0xffeff3f7, 0xffeff3f7, 0xffeff3f7, 
+	0xffefefef, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 
+	0xffe1e4e1, 0xffe1e4e1, 0xffe1e4e1, 0xffe1e4e1, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe1e1e1, 
+	0xffe6e1e6, 0xffe6e1e6, 0xffe6e1e6, 0xffe6e1e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 
+	0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe1dde1, 
+	0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 
+	0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3dd, 0xffdee3dd, 0xffdee1de, 0xffdee0db, 
+	0xffdedbd9, 0xffe2dddc, 0xffdbd9db, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd3d4d3, 
+	0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcbc9cb, 
+	0xffcbc9cb, 0xffcbc9cb, 0xffcbc9cb, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xff8f908f, 
+	0xff8f908f, 0xbb8f908f, 0x88505250, 0x663c3d3c, 0x333c3d3c, 0x11000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x44000000, 0x55000000, 0x77343234, 0x77686868, 0x999c9a9c, 0x999c9a9c, 0x999c9a9c, 
+	0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x998c9294, 0x998c9294, 0x998c9294, 0x998c9294, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x997e7f7e, 0x99848684, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 
+	0x9984827b, 0x9984827b, 0x9984827b, 0x9984827b, 0x99848284, 0x99848284, 0x997e7c7e, 0x997e7c7e, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x997b7c7b, 0x997b7c7b, 
+	0x99848284, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x99848284, 0x99848284, 0x997b7b7b, 0x997b7b7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x99737973, 0x99737973, 0x99737973, 0x99737973, 0x99737173, 0x99737173, 0x99504d50, 0x99504d50, 
+	0x88424142, 0x88212021, 0x77212021, 0x66000000, 0x55000000, 0x55000000, 0x44000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x22000400, 0x66525452, 0xaaa5a7a5, 0xeef7fbf7, 0xfff7fbf7, 
+	0xfffffbff, 0xfffffbff, 0xfffffbff, 0xfffffbff, 0xffeff3f7, 0xffeff3f7, 0xffeff3f7, 0xffeff3f7, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe1e4e1, 0xffe1e4e1, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe6e1e6, 0xffe6e1e6, 0xffe6e1e6, 0xffefe7ef, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 
+	0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffe6e3e6, 0xffe6e3e6, 0xffe1dde1, 0xffe6e3e6, 
+	0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffe6e3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 
+	0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdee3de, 
+	0xffe5e2df, 0xffe1e0dd, 0xffdcdbdc, 0xffdddfe0, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffb5b6b5, 0xdd797979, 0xaa797979, 0x663c3d3c, 0x22000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22000000, 
+	0x55000000, 0x77343234, 0x88686468, 0x999c969c, 0x999c9a9c, 0x999c9a9c, 0x999c9a9c, 0x999c9a9c, 
+	0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x998c9294, 0x998c9294, 0x998c9294, 0x998c9294, 
+	0x99868786, 0x99868786, 0x99868786, 0x99868786, 0x99848384, 0x99848384, 0x99848384, 0x99848384, 
+	0x997e807e, 0x997e807e, 0x997e807e, 0x997e807e, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 
+	0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 
+	0x997e7c79, 0x997e7c79, 0x997e7c79, 0x99797776, 0x99797779, 0x99797779, 0x997e7c7e, 0x997e7c7e, 
+	0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997b7c7b, 0x997b7c7b, 0x99737773, 0x997b7c7b, 
+	0x99797779, 0x997e7c7e, 0x99797779, 0x997e7c7e, 0x997b7b7b, 0x997b7b7b, 0x997b7b7b, 0x997b7b7b, 
+	0x99767876, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 
+	0x99767776, 0x997b7d7b, 0x997b7d7b, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x99737973, 0x99737973, 0x99737973, 0x99737973, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99636163, 0x99636163, 0x99424142, 0x88212021, 0x77191419, 0x66000000, 0x55000000, 0x55000000, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x11000400, 0x66797b79, 0xccb5b6b5, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 
+	0xfffffbff, 0xfffffbff, 0xfffffbff, 0xfffffbff, 0xffeff3f7, 0xffeff3f7, 0xffeff3f7, 0xffeff3f7, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 
+	0xffe1e4e1, 0xffe1e4e1, 0xffe1e4e1, 0xffdbdddb, 0xffe1e1e1, 0xffe1e1e1, 0xffdbdcdb, 0xffe1e1e1, 
+	0xffdedcde, 0xffdedcde, 0xffdedcde, 0xffdedcde, 0xffe1dde1, 0xffe1dde1, 0xffe1dde1, 0xffe1dde1, 
+	0xffe1dddb, 0xffe1dddb, 0xffe1dddb, 0xffe1dddb, 0xffe1dde1, 0xffe1dde1, 0xffe1dde1, 0xffe1dde1, 
+	0xffe1dddb, 0xffe1dddb, 0xffe1dddb, 0xffe1dddb, 0xffdbdddb, 0xffdbdddb, 0xffdbdddb, 0xffdbdddb, 
+	0xffdbdddb, 0xffdbdddb, 0xffdbdddb, 0xffdbdddb, 0xffdbdcd9, 0xffdbdcd9, 0xffdcdcda, 0xffdcdbda, 
+	0xffdddadb, 0xffddd9dc, 0xffdad8d9, 0xffd7dadb, 0xffdbdddc, 0xffdddfdd, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xbb737973, 
+	0x664d524d, 0x11000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080808, 0x00080808, 0x33080808, 0x66080808, 
+	0x8852555a, 0x99848686, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 0x999c9e9c, 
+	0x99949294, 0x99949294, 0x99949294, 0x99898889, 0x998c8684, 0x998c8684, 0x998c8684, 0x9984807e, 
+	0x99848284, 0x99848284, 0x99848284, 0x997b7b7e, 0x997b7d7b, 0x997b7d7b, 0x99767876, 0x99767876, 
+	0x997b797b, 0x997b797b, 0x99767576, 0x99767576, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737473, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99767570, 0x99767570, 0x997b7973, 0x99767570, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99767576, 0x99767576, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7973, 0x9973706e, 0x996b6768, 0x99635d63, 0x994a4a4a, 0x77292b29, 0x66080c08, 0x66080c08, 
+	0x66000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x333a393a, 0xbbb2b2b2, 0xeeefefef, 0xffefefef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xfff7f7f7, 0xfff7f7f7, 0xffececec, 0xffececec, 0xffefebe6, 0xffefebe6, 0xffe6e4e1, 0xffe6e4e1, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffdedce1, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd3d7d3, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd3d7d3, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d6d6, 0xffd8d7d6, 
+	0xffd8d6d7, 0xffd8d3d6, 0xffd8d3d7, 0xffd9d4d8, 0xffd9d6d9, 0xffd8d7d7, 0xffd6d7d6, 0xffd3d7d3, 
+	0xffd3d7d3, 0xffd3d7d3, 0xffd6dbd6, 0xffd3d7d3, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbde, 
+	0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffd6dbd6, 0xffd0d1ce, 0xffd0d1ce, 0xffc5bebd, 0xffc5c6c5, 
+	0xee9a9797, 0xaa6e6868, 0x3342393a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080808, 0x33080808, 0x66080808, 0x885a595a, 
+	0x99848686, 0x99848686, 0x999c9e9c, 0x999c9e9c, 0x99919291, 0x99919291, 0x99919291, 0x99919291, 
+	0x99898889, 0x99898889, 0x99898889, 0x997e7f7e, 0x9984807e, 0x997b7b79, 0x997b7b79, 0x997b7b79, 
+	0x997b7b7e, 0x997b7b7e, 0x997b7b7e, 0x99737479, 0x99767876, 0x99767876, 0x99707370, 0x99707370, 
+	0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x99737573, 0x99737573, 0x99737573, 0x99707370, 
+	0x99707370, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 
+	0x996e706e, 0x99707370, 0x99707370, 0x996e706e, 0x99707370, 0x99707370, 0x99707370, 0x996e706e, 
+	0x996e706e, 0x996e706e, 0x996e706e, 0x996e706e, 0x99707370, 0x996e706e, 0x99707370, 0x99707370, 
+	0x99737173, 0x99737473, 0x99737373, 0x99737173, 0x99737370, 0x99737370, 0x99737370, 0x99737370, 
+	0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 
+	0x9970716e, 0x99767570, 0x99767570, 0x99767570, 0x99737573, 0x99737370, 0x99737370, 0x99737370, 
+	0x99737370, 0x99737573, 0x99737370, 0x99737370, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 
+	0x99707373, 0x99707373, 0x99707373, 0x99707373, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 
+	0x99707370, 0x99707370, 0x99707370, 0x99707370, 0x99767576, 0x99767576, 0x99767576, 0x99767576, 
+	0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 
+	0x997b7973, 0x997b7973, 0x997b7973, 0x9973706e, 0x996b696b, 0x994a4a4a, 0x88292b29, 0x77080c08, 
+	0x66000000, 0x66000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x55474847, 
+	0xddb2b2b2, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff4f3f4, 0xfff4f3f4, 0xfff4f3f4, 0xfff4f3f4, 
+	0xffececec, 0xffececec, 0xffe1e1e1, 0xffe1e1e1, 0xffe6e4e1, 0xffdedddb, 0xffdedddb, 0xffdedddb, 
+	0xffdedce1, 0xffdedce1, 0xffdedce1, 0xffd6d5db, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd3d4d3, 
+	0xffd9d7d9, 0xffd9d7d9, 0xffd9d7d9, 0xffd9d7d9, 0xffd3d7d3, 0xffd3d7d3, 0xffd3d7d3, 0xffd3d7d3, 
+	0xffd3d7d3, 0xffd3d7d3, 0xffd3d7d3, 0xffd0d2d0, 0xffd3d7d3, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 
+	0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 
+	0xffd3d4d3, 0xffd0d1d0, 0xffd3d4d3, 0xffd0d1d0, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 
+	0xffd0d4d0, 0xffd3d5d3, 0xffd0d4d0, 0xffd3d5d3, 0xffd6d4d3, 0xffd6d4d3, 0xffd6d4d3, 0xffd7d4d4, 
+	0xffd6d2d3, 0xffd5cfd3, 0xffd5d0d4, 0xffd5d3d4, 0xffd5d5d4, 0xffd2d5d3, 0xffd3d4d3, 0xffd3d7d3, 
+	0xffd3d7d3, 0xffd3d7d3, 0xffd3d7d3, 0xffd0d2d0, 0xffd3d7d3, 0xffd3d7d3, 0xffd0d2d0, 0xffd3d7d9, 
+	0xffd3d7d9, 0xffd3d7d9, 0xffd3d7d9, 0xffd3d4d3, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd0d1ce, 0xffc5c6c5, 
+	0xffc5c6c5, 0xff9a9797, 0xcc9a9797, 0x55313231, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33080808, 0x66080808, 0x995a595a, 0x99848284, 
+	0x99848686, 0x99848686, 0x99848686, 0x99848686, 0x99919291, 0x99868686, 0x99868686, 0x99868686, 
+	0x997e7f7e, 0x997e7f7e, 0x99737573, 0x99737573, 0x997b7b79, 0x997b7b79, 0x99737573, 0x99737573, 
+	0x99737479, 0x99737479, 0x99737479, 0x99737479, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 
+	0x99707170, 0x99707170, 0x99707170, 0x996b6d6b, 0x996e706e, 0x996e706e, 0x996e706e, 0x996b6d6b, 
+	0x996e706e, 0x996e706e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996e706e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996e706e, 0x996e706e, 0x996e706e, 0x996b6d6b, 0x996e706e, 0x996e706e, 0x996e706e, 0x996e706e, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x9973706e, 0x9973706e, 0x9973706e, 0x9973706e, 
+	0x99737073, 0x99737073, 0x99737073, 0x99737373, 0x99737373, 0x99737073, 0x99737073, 0x99737073, 
+	0x9970716e, 0x9970716e, 0x9970716e, 0x9970716e, 0x9973706e, 0x99737370, 0x9973706e, 0x9973706e, 
+	0x9973706e, 0x9973706e, 0x99737370, 0x99737370, 0x99707370, 0x99707370, 0x996e706e, 0x996e706e, 
+	0x996e7073, 0x996e7073, 0x996e7073, 0x996e7073, 0x996e706e, 0x996e706e, 0x996e706e, 0x996e706e, 
+	0x996e706e, 0x996e706e, 0x996e706e, 0x996e706e, 0x99707170, 0x99707170, 0x99707170, 0x99707170, 
+	0x99707170, 0x99707170, 0x99707170, 0x99707170, 0x99707370, 0x99707370, 0x99707370, 0x99707370, 
+	0x997b7973, 0x9973706e, 0x9973706e, 0x9973706e, 0x996b696b, 0x996b696b, 0x994a4a4a, 0x99292b29, 
+	0x66101010, 0x66000000, 0x66000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x66474847, 0xeed6d7d6, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff4f3f4, 0xffe9e7e9, 0xffe9e7e9, 0xffe9e7e9, 
+	0xffe1e1e1, 0xffe1e1e1, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d5db, 0xffd6d5db, 0xffd6d5db, 0xffd6d5db, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 
+	0xffd3d2d3, 0xffd3d2d3, 0xffd3d2d3, 0xffcecece, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffcecece, 
+	0xffd0d2d0, 0xffd0d2d0, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd3d4d3, 0xffd0d1d0, 0xffd0d1d0, 
+	0xffced2ce, 0xffd0d4d0, 0xffd0d4d0, 0xffced2ce, 0xffd6d1d0, 0xffd6d1d0, 0xffd6d4d3, 0xffd6d2d2, 
+	0xffd6d2d3, 0xffd4d0d2, 0xffd4d0d3, 0xffd5d2d5, 0xffd6d3d6, 0xffd5d4d5, 0xffd3d4d3, 0xffd0d2d0, 
+	0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d3, 
+	0xffd0d2d3, 0xffd0d2d3, 0xffd0d2d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 
+	0xffd3d4d3, 0xffd9d9d9, 0xffd9d9d9, 0xffd6dbd6, 0xffd0d1ce, 0xffd0d1ce, 0xffd0d1ce, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xff9a9797, 0xdd949694, 0x44313231, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x66080808, 0x995a595a, 0x99848284, 0x99848284, 
+	0x99848686, 0x99848686, 0x99848686, 0x99848686, 0x99868686, 0x99868686, 0x99868686, 0x997b797b, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x996b6d73, 0x996b6d73, 0x996b6d73, 0x996b6d73, 0x996b6d6b, 0x996b6d6b, 0x99707370, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996e706e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99736d6b, 0x9973706e, 0x9973706e, 0x9973706e, 
+	0x99737073, 0x99736d73, 0x99737073, 0x99737073, 0x99736d73, 0x99736d73, 0x99736d73, 0x99737073, 
+	0x996b6d6b, 0x9970716e, 0x9970716e, 0x996b6d6b, 0x99736d6b, 0x99736d6b, 0x99736d6b, 0x99736d6b, 
+	0x9973706e, 0x9973706e, 0x99736d6b, 0x9973706e, 0x996e706e, 0x99707370, 0x99707370, 0x996b6d6b, 
+	0x996e7073, 0x996b6d73, 0x996b6d73, 0x996e7073, 0x996e706e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x99707170, 0x996b6d6b, 0x99707170, 0x996b6d6b, 0x99707370, 0x99707370, 0x996b6d6b, 0x996b6d6b, 
+	0x9973706e, 0x9973706e, 0x9973706e, 0x9973706e, 0x996b696b, 0x996b696b, 0x996b696b, 0x994a4a4a, 
+	0x88313131, 0x66101010, 0x66000000, 0x55000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x44474847, 0xeed6d7d6, 0xffd6d7d6, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffe9e7e9, 0xffe9e7e9, 0xffe9e7e9, 0xffdedbde, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d5db, 0xffceced6, 0xffceced6, 0xffceced6, 0xffcecece, 0xffcecece, 0xffd3d4d3, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffd6d1d0, 0xffd6d1d0, 0xffd6d1d0, 0xffd7d2d2, 
+	0xffd7d3d5, 0xffd6d1d5, 0xffd6d1d4, 0xffd6d3d5, 0xffd5d4d5, 0xffd1d2d1, 0xffd0d1d0, 0xffd0d2d0, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffd3d4d3, 0xffcecece, 0xffd3d4d3, 0xffcecece, 0xffd3d4d3, 
+	0xffd3d4d3, 0xffcecece, 0xffcecece, 0xffd0d1ce, 0xffd0d1ce, 0xffd0d1ce, 0xffd0d1ce, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xff949694, 0xcc949694, 0x33313231, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x44000000, 0x884a4542, 0x99737173, 0x99737173, 0x99737173, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99737373, 
+	0x99737173, 0x99737173, 0x99706f70, 0x99706f70, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x99706d70, 0x99737173, 0x99706d70, 0x99706d70, 0x996b6b6b, 0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 
+	0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996e6c6e, 0x99706f70, 0x996e6c6e, 0x99706f70, 
+	0x996b6f6b, 0x996b6d6b, 0x996b6f6b, 0x996b6f6b, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 
+	0x996b7070, 0x996b6f6e, 0x996b6f6e, 0x996b6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x99736f6e, 0x99737070, 0x99737070, 0x99737070, 0x996e6f6e, 0x99737173, 0x99707070, 0x996e6f6e, 
+	0x9970706e, 0x9970706e, 0x9970706e, 0x9970706e, 0x996e6f6e, 0x996e6f6e, 0x99707070, 0x996e6f6e, 
+	0x996b6f70, 0x996b6f70, 0x996b6f70, 0x996b6f70, 0x996e6f6e, 0x99707070, 0x99707070, 0x996e6f6e, 
+	0x996e6f6e, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x99707070, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 0x996b6d6b, 0x996b6c6b, 
+	0x996b6f70, 0x996b6f70, 0x996b6c6e, 0x996b6c6e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x99686b6b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x9963656b, 0x9963656b, 0x995d6065, 0x9952555a, 
+	0x994a4d4a, 0x881e1f1e, 0x66080808, 0x66080808, 0x44000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11101010, 0xccc5cac5, 0xffc5cac5, 0xffc5cac5, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedbd6, 0xffdedbd6, 0xffdedbd6, 0xffd6d5d3, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d0d3, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecdce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffcecdce, 0xffcecece, 0xffcecdce, 0xffcecdce, 
+	0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffcecece, 0xffced0d0, 
+	0xffced0ce, 0xffcecece, 0xffced0ce, 0xffced0ce, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 
+	0xffced1d3, 0xffced0d0, 0xffced0d0, 0xffced0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 
+	0xffd6d0d0, 0xffd6d1d3, 0xffd6d1d3, 0xffd6d1d3, 0xffd0d0d0, 0xffd6d2d6, 0xffd3d1d3, 0xffd1d0d1, 
+	0xffd5d2d4, 0xffd7d3d6, 0xffd7d3d6, 0xffd6d3d5, 0xffd1d2d3, 0xffcecfce, 0xffcdcece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcbcccb, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcbcacb, 0xffc5cac5, 
+	0xffc0c4c0, 0xffc0c4c0, 0xffb5b6b5, 0xffa5a6a5, 0xffa5a6a5, 0xaa737473, 0x11101010, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x22000000, 0x661e1e1e, 0x99656263, 0x99737173, 0x99737173, 0x99737173, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99737373, 0x99737373, 0x99737373, 0x996b6c6b, 
+	0x996e6c6e, 0x996e6c6e, 0x99706f70, 0x99706f70, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 
+	0x99706d70, 0x99706d70, 0x99706d70, 0x996e696e, 0x996b6b6b, 0x996b6b6b, 0x996b696b, 0x996b6b6b, 
+	0x996b696b, 0x996b6b6b, 0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6d6b, 
+	0x996b6c6b, 0x996b6b6b, 0x996b6c6b, 0x996b6b6b, 0x996e6c6e, 0x996e6c6e, 0x99706f70, 0x996e6c6e, 
+	0x996b6f6b, 0x996b6f6b, 0x996b6f6b, 0x996b6f6b, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 
+	0x996b6f6e, 0x996b7070, 0x996b7070, 0x996b6f6e, 0x996e6f6e, 0x99707070, 0x99707070, 0x996e6f6e, 
+	0x99737070, 0x99737070, 0x99736f6e, 0x99736f6e, 0x996e6f6e, 0x99707070, 0x99737173, 0x996e6f6e, 
+	0x996e6f68, 0x996e6f68, 0x9970706e, 0x9970706e, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6f70, 0x996b6f70, 0x996b6f70, 0x996b706e, 0x996e6f6e, 0x99707070, 0x996e6f6e, 0x996e6f6e, 
+	0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 
+	0x996b6d6b, 0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 
+	0x996b6f70, 0x996b6c6e, 0x996b6c6e, 0x996b6c6e, 0x99686b6b, 0x99686b6b, 0x9965686b, 0x99686b6b, 
+	0x996b696b, 0x99686768, 0x99686768, 0x99686768, 0x9963656b, 0x995d6065, 0x995d6065, 0x9952555a, 
+	0x994a4d4a, 0x99343634, 0x77080808, 0x66080808, 0x66000000, 0x22000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x664d4e4d, 0xffc5cac5, 0xffc5cac5, 0xffc5cac5, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d5d3, 0xffd6d5d3, 0xffced0d0, 0xffced0d0, 
+	0xffd0cdd0, 0xffd0cdd0, 0xffd3d0d3, 0xffd3d0d3, 0xffcbcdcb, 0xffcbcdcb, 0xffcbcdcb, 0xffcbcdcb, 
+	0xffcecdce, 0xffced0ce, 0xffced0ce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecace, 0xffcecdce, 
+	0xffcecace, 0xffcecdce, 0xffcecace, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffcecece, 
+	0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 
+	0xffced0d0, 0xffced1d3, 0xffced1d3, 0xffced0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 0xffd0d0d0, 
+	0xffd6d1d3, 0xffd6d1d3, 0xffd6d0d0, 0xffd6d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 0xffd0d0d0, 
+	0xffd5d2d3, 0xffd6d3d6, 0xffd7d2d5, 0xffd6d1d5, 0xffd6d1d5, 0xffd4cfd3, 0xffd0ced0, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffced2ce, 0xffcecace, 0xffcecece, 0xffcecece, 0xffcbcccb, 
+	0xffcbcccb, 0xffcbcccb, 0xffcbcccb, 0xffcbcacb, 0xffcbcacb, 0xffcbcacb, 0xffcbcacb, 0xffc5cac5, 
+	0xffc0c4c0, 0xffc0c4c0, 0xffb5b6b5, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 0x66424242, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x44000000, 0x883c3b3c, 0x99656263, 0x99656263, 0x99656263, 0x99737173, 
+	0x99707070, 0x99707070, 0x99707070, 0x99707070, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 
+	0x996b696b, 0x996b696b, 0x996e6c6e, 0x996e6c6e, 0x996b6b6b, 0x996b6b6b, 0x996b686b, 0x996b6b6b, 
+	0x996e696e, 0x996e696e, 0x996e696e, 0x996e696e, 0x996b696b, 0x996b696b, 0x996b6b6b, 0x996b696b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 
+	0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 0x99706f70, 0x99706f70, 0x99706f70, 0x99706f70, 
+	0x996b6d6b, 0x996b6f6b, 0x996b6f6b, 0x996b6f6b, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 
+	0x996b6f6e, 0x996b6f6e, 0x996b7070, 0x996b7070, 0x99707070, 0x99707070, 0x996e6f6e, 0x99707070, 
+	0x99736f6e, 0x99737070, 0x99736f6e, 0x99737070, 0x99707070, 0x996e6f6e, 0x99707070, 0x99707070, 
+	0x9970706e, 0x9970706e, 0x9970706e, 0x9970706e, 0x99707070, 0x996e6f6e, 0x99707070, 0x996e6f6e, 
+	0x996b706e, 0x996b706e, 0x996b6f70, 0x996b6f70, 0x996e6f6e, 0x99737173, 0x99707070, 0x99707070, 
+	0x99707070, 0x996e6f6e, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 
+	0x996b6c6b, 0x996b6b6b, 0x996b6d6b, 0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 
+	0x996b6c6e, 0x996b6c6e, 0x996b6c6e, 0x996b6c6e, 0x9965686b, 0x9965686b, 0x9965686b, 0x9965686b, 
+	0x99686768, 0x99686768, 0x99656465, 0x99656465, 0x9963656b, 0x995d6065, 0x99585a60, 0x9952555a, 
+	0x994a4d4a, 0x994a4d4a, 0x881e1f1e, 0x66080808, 0x66000000, 0x44000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0xddc5cac5, 0xffc5cac5, 0xffc5cac5, 0xffc5cac5, 
+	0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffcecece, 0xffced0d0, 0xffced0d0, 0xffced0d0, 0xffc5cace, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcbcdcb, 0xffcbcdcb, 0xffc8ccc8, 0xffcbcdcb, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecdce, 0xffcecace, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced1d3, 
+	0xffcecece, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 
+	0xffced0d0, 0xffced0d0, 0xffced1d3, 0xffced1d3, 0xffd3d1d3, 0xffd6d2d6, 0xffd0d0d0, 0xffd3d1d3, 
+	0xffd6d0d0, 0xffd6d1d3, 0xffd6d0d0, 0xffd6d1d3, 0xffd3d1d3, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 
+	0xffd4d2d2, 0xffd6d2d6, 0xffd6d1d5, 0xffd5d1d5, 0xffd5d2d4, 0xffd2d1d2, 0xffcfcfcf, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcbcccb, 
+	0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 0xffcbcacb, 0xffc8c6c8, 0xffc8c6c8, 0xffc8c6c8, 0xffc0c4c0, 
+	0xffc0c4c0, 0xffbabdba, 0xffb5b6b5, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 0xbb737473, 0x110e0d0e, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x55000000, 0x995a595a, 0x99656263, 0x99656263, 0x99656263, 0x99656263, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b6c6b, 0x996b6c6b, 0x99636563, 0x99636563, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b686b, 0x996b686b, 0x996b686b, 0x996b686b, 
+	0x996b656b, 0x996e696e, 0x996e696e, 0x996e696e, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 
+	0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 
+	0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x99706f70, 0x99737173, 0x99706f70, 0x99737173, 
+	0x996b6f6b, 0x996b6f6b, 0x996b6f6b, 0x996b706b, 0x99706d70, 0x996e6d6e, 0x996e6d6e, 0x99706d70, 
+	0x996b7070, 0x996b7070, 0x996b6f6e, 0x996b6f6e, 0x99707070, 0x99707070, 0x99737173, 0x99707070, 
+	0x99737070, 0x99737070, 0x99737173, 0x99737173, 0x99707070, 0x99737173, 0x99707070, 0x99707070, 
+	0x9970706e, 0x9970706e, 0x9970706e, 0x9970706e, 0x99707070, 0x99707070, 0x99707070, 0x99707070, 
+	0x996b706e, 0x996b706e, 0x996b706e, 0x996b706e, 0x99707070, 0x99707070, 0x99737173, 0x99737173, 
+	0x99737173, 0x99707070, 0x99707070, 0x996e6f6e, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x996b6d6b, 
+	0x996b6c6b, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 
+	0x996b6c6e, 0x996b696b, 0x996b696b, 0x996b696b, 0x9965686b, 0x9965686b, 0x9963656b, 0x9963656b, 
+	0x99656465, 0x99656465, 0x99656465, 0x99636163, 0x995d6065, 0x995d6065, 0x99585a60, 0x9952555a, 
+	0x994a4d4a, 0x994a4d4a, 0x99343634, 0x66080808, 0x66000000, 0x55000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x44313131, 0xffc5cac5, 0xffc5cac5, 0xffc5cac5, 0xffc5cac5, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffc5cace, 0xffc5cace, 0xffc5cace, 0xffc5cace, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffc5cac5, 0xffc5cac5, 0xffc5cac5, 0xffc5cac5, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 
+	0xffcecace, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced1d3, 0xffced0d0, 0xffced1d3, 
+	0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced2ce, 0xffd3ced3, 0xffd0ced0, 0xffd0ced0, 0xffd3ced3, 
+	0xffced1d3, 0xffced1d3, 0xffced0d0, 0xffced0d0, 0xffd3d1d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 
+	0xffd6d1d3, 0xffd6d1d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 0xffd6d2d6, 0xffd3d1d3, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd7d2d6, 0xffd5d3d5, 0xffd5d1d5, 0xffd3d1d2, 0xffd0d0d0, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecace, 0xffcecace, 0xffcecace, 0xffc8c9c8, 
+	0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 0xffc8c6c8, 0xffc8c6c8, 0xffc8c6c8, 0xffc5c2c5, 0xffc0c4c0, 
+	0xffbabdba, 0xffbabdba, 0xffb5b6b5, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 0xeea5a6a5, 0x44292829, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x22000400, 0x771e201e, 0x995a595a, 0x99525452, 0x995a5a5a, 0x99636163, 0x99636163, 
+	0x996b696b, 0x99656568, 0x99656568, 0x99656568, 0x99636563, 0x99636563, 0x99636563, 0x99636563, 
+	0x99686568, 0x99656565, 0x99656565, 0x99656565, 0x996b6765, 0x996b6765, 0x996b6868, 0x996b6765, 
+	0x996b676b, 0x996b686b, 0x996b676b, 0x996b686b, 0x996b696b, 0x996b696b, 0x996b6b6b, 0x996b696b, 
+	0x996b696b, 0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 
+	0x996e6f6e, 0x996b6d6b, 0x996b6d6b, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x99737173, 0x99737173, 0x99737173, 0x996e746e, 0x99737173, 0x99737373, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99707173, 0x996e7173, 0x99707173, 0x99707173, 
+	0x99707070, 0x99707070, 0x996e6f6e, 0x99707070, 0x99736f6e, 0x99737070, 0x99736f6e, 0x99737070, 
+	0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996b6d6b, 0x996b6d6b, 
+	0x996b6f6e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x99686868, 0x99656765, 0x99656765, 0x99636563, 
+	0x99636463, 0x99636463, 0x99636263, 0x99636163, 0x99636163, 0x995d5c5d, 0x995d5c5d, 0x995a595a, 
+	0x99525552, 0x993f423f, 0x993f423f, 0x77191c19, 0x77000000, 0x66000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x88737173, 0xffbdbabd, 0xffbdbabd, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffc5cac5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c9c5, 0xffc5c8c5, 0xffc5c9c5, 0xffc5c8c5, 0xffc5c9c5, 0xffc5c9c5, 0xffc5cac5, 0xffc5c9c5, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecdce, 0xffcecace, 
+	0xffcecace, 0xffcecace, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffd0d0d0, 0xffcecece, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d5d0, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d3d6, 0xffd7d1d5, 0xffd5d1d4, 0xffd2d0d2, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 
+	0xffd0d0d0, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecdce, 0xffcecace, 0xffcecace, 0xffc5cac5, 
+	0xffc5c8c5, 0xffc5c8c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c2bd, 
+	0xffc0bdbd, 0xffc0bdbd, 0xffbdbabd, 0xffb5b6b5, 0xffadadad, 0xffa5a3a5, 0xff9c9a9c, 0x77585a58, 
+	0x00000400, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x33000400, 0x883c3d3c, 0x995a595a, 0x99525452, 0x99525452, 0x995a5a5a, 0x99636163, 
+	0x99656568, 0x99656568, 0x99656568, 0x99656568, 0x99636563, 0x99636463, 0x99636463, 0x99636463, 
+	0x99656565, 0x99656565, 0x99656565, 0x99656565, 0x996b6765, 0x996b6765, 0x996b6765, 0x996b6765, 
+	0x996b676b, 0x996b686b, 0x996b686b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b6b6b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 0x996b6b6b, 0x996b6d6b, 0x996b6c6b, 
+	0x996e6f6e, 0x996b6d6b, 0x99707070, 0x99737173, 0x996e6f6e, 0x996e6f6e, 0x99707070, 0x99707070, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 0x99737473, 0x99737373, 0x99737373, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737373, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99707173, 0x99737173, 0x99737173, 0x99707173, 
+	0x99707070, 0x99707070, 0x99707070, 0x99707070, 0x99737070, 0x99737070, 0x99737070, 0x99737070, 
+	0x996e6f6e, 0x99707070, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996b6d6b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x99686868, 0x99656765, 0x99656765, 0x99656765, 
+	0x99636263, 0x99636263, 0x99636263, 0x99636163, 0x99605e60, 0x99605e60, 0x995d5c5d, 0x995a595a, 
+	0x99525552, 0x993f423f, 0x993f423f, 0x88191c19, 0x77030303, 0x66000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0xddadaaad, 0xffb5b2b5, 0xffbdbabd, 0xffbdbabd, 0xffc5c2c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c8c5, 0xffc5c8c5, 0xffc5c9c5, 0xffc5c8c5, 0xffc5c9c5, 0xffc5c9c5, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcbccc8, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecdce, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 0xffd0d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d4d6, 
+	0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d2d6, 
+	0xffd6d5d6, 0xffd6d4d6, 0xffd6d1d3, 0xffd1d1d1, 0xffd3d1d3, 0xffd3d1d3, 0xffd0d0d0, 0xffd0d0d0, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecace, 0xffcecace, 0xffcecace, 0xffc5cac5, 
+	0xffc5c8c5, 0xffc5c8c5, 0xffc5c8c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c4c5, 0xffc5c2bd, 
+	0xffc3c0bd, 0xffc0bdbd, 0xffbdbabd, 0xffb5b6b5, 0xffadadad, 0xffa5a3a5, 0xffa5a3a5, 0xaa585a58, 
+	0x11000400, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x44000400, 0x993c3d3c, 0x995a595a, 0x994a4d4a, 0x99525452, 0x995a5a5a, 0x99636163, 
+	0x99606165, 0x99606165, 0x99656568, 0x99656568, 0x99636563, 0x99636263, 0x99636263, 0x99636263, 
+	0x99686568, 0x99656565, 0x99656565, 0x99656565, 0x996b6765, 0x996b6563, 0x996b6765, 0x996b6868, 
+	0x996b686b, 0x996b686b, 0x996b686b, 0x996b696b, 0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996e6f6e, 0x996e6f6e, 0x99707070, 0x99737173, 0x99707070, 0x99707070, 0x99707070, 0x99707070, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737573, 0x99737373, 0x99737573, 
+	0x99737373, 0x99737473, 0x99737373, 0x99737373, 0x99737373, 0x99737473, 0x99737173, 0x99737473, 
+	0x99737173, 0x99737473, 0x99737373, 0x99737373, 0x99737473, 0x99737373, 0x99737173, 0x99737173, 
+	0x99737373, 0x99737373, 0x99737473, 0x99737473, 0x99737173, 0x99737373, 0x99737373, 0x99737373, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99707173, 0x99707173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99707070, 0x99707070, 0x99707070, 0x996e6f6e, 0x99707070, 0x99707070, 0x996e6f6e, 0x996e6f6e, 
+	0x996b7070, 0x996b6f6e, 0x996b6f6e, 0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x99656765, 0x99686868, 0x99656765, 0x99656765, 
+	0x99636463, 0x99636263, 0x99636263, 0x99636163, 0x99605e60, 0x995d5c5d, 0x995d5c5d, 0x995a595a, 
+	0x99525552, 0x99525552, 0x993f423f, 0x882c2f2c, 0x77050505, 0x66000000, 0x33000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0xffadaaad, 0xffb5b2b5, 0xffb5b2b5, 0xffbdbabd, 0xffc5c2c5, 
+	0xffc5c2c5, 0xffc5c2c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 
+	0xffc5c8c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c8c5, 0xffc5c8c5, 0xffc5c6c5, 0xffc5c9c5, 0xffc5cac5, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcbccc8, 0xffcecace, 0xffcecdce, 0xffcecdce, 0xffcecece, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd6d2d6, 0xffd3d1d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 
+	0xffd6d4d3, 0xffd6d2d6, 0xffd6d4d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d7d6, 0xffd6d4d6, 0xffd6d7d6, 
+	0xffd6d4d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d4d6, 0xffd6d7d6, 
+	0xffd6d4d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d4d6, 
+	0xffd6d5d6, 0xffd6d5d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 0xffd3d1d3, 0xffd0d0d0, 0xffd3d1d3, 
+	0xffd3d1d3, 0xffd0d0d0, 0xffd0d0d0, 0xffced1d3, 0xffced0d0, 0xffced0d0, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecace, 0xffcecace, 0xffcecace, 0xffc5c9c5, 
+	0xffc5cac5, 0xffc5c8c5, 0xffc5c8c5, 0xffc5c6c5, 0xffc5c5c5, 0xffc5c4c5, 0xffc5c2c5, 0xffc5c2bd, 
+	0xffc0bdbd, 0xffc0bdbd, 0xffbdbabd, 0xffb5b6b5, 0xffadadad, 0xffa5a3a5, 0xffa5a3a5, 0xcc848684, 
+	0x22000400, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x55000400, 0x993c3d3c, 0x993c3d3c, 0x994a4d4a, 0x99525452, 0x995a5a5a, 0x995a5a5a, 
+	0x995a5d63, 0x99606165, 0x99606165, 0x99606165, 0x99636163, 0x99636263, 0x99636463, 0x99636263, 
+	0x99686568, 0x99656565, 0x99656565, 0x99656565, 0x996b6563, 0x996b6868, 0x996b6765, 0x996b6868, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 
+	0x996b6c6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 0x996b6c6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x996e6f6e, 0x99707070, 0x99737173, 0x99707070, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99707370, 0x99707370, 0x99737173, 0x99707370, 0x99737373, 0x99737473, 0x99737173, 0x99737473, 
+	0x99737573, 0x99737573, 0x99737373, 0x99737373, 0x99737373, 0x99737473, 0x99737373, 0x99737473, 
+	0x99737573, 0x99737473, 0x99737473, 0x99737473, 0x99737473, 0x99737473, 0x99737473, 0x99737373, 
+	0x99737573, 0x99737373, 0x99737473, 0x99737473, 0x99737373, 0x99737573, 0x99737473, 0x99737473, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99707070, 0x99707070, 0x99737173, 0x99737173, 0x99737173, 0x99707070, 
+	0x996b7070, 0x996b6f6e, 0x996b6f6e, 0x996b6f6e, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 
+	0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 0x99656765, 0x99686868, 0x99656765, 
+	0x99636463, 0x99636463, 0x99636263, 0x99636163, 0x99605e60, 0x99605e60, 0x995d5c5d, 0x995d5c5d, 
+	0x99525552, 0x99525552, 0x993f423f, 0x992c2f2c, 0x77080808, 0x77000000, 0x44000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x443a393a, 0xffadaaad, 0xffadaaad, 0xffb5b2b5, 0xffbdbabd, 0xffbdbabd, 
+	0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c6c5, 0xffc5c4c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c8c5, 0xffc5c6c5, 0xffc5cac5, 0xffc5c9c5, 0xffc5cac5, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecdce, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffd0d0d0, 0xffd3d1d3, 0xffd6d2d6, 0xffd3d1d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d4d3, 0xffd6d4d3, 0xffd6d2d6, 0xffd6d4d3, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d4d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d4d5, 
+	0xffd6d7d6, 0xffd6d5d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 0xffced1d3, 0xffced0d0, 0xffced0d0, 0xffced0d0, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffceccce, 0xffc5cac5, 
+	0xffc5c9c5, 0xffc5cac5, 0xffc5c9c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c2bd, 
+	0xffc3c0bd, 0xffc0bdbd, 0xffc0bdbd, 0xffb5b6b5, 0xffadadad, 0xffa5a3a5, 0xffa5a3a5, 0xdd848684, 
+	0x222c2f2c, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x55161716, 0x99424542, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 0x995a595a, 
+	0x995d5e5d, 0x995d5e5d, 0x99606060, 0x99606060, 0x99636263, 0x99636263, 0x99636263, 0x99636463, 
+	0x99636563, 0x99636563, 0x99656765, 0x99636563, 0x996b686b, 0x996b676b, 0x996b686b, 0x996b696b, 
+	0x996b696b, 0x996b6b6b, 0x996b696b, 0x996b696b, 0x996e6c6e, 0x996e6c6e, 0x996e6c6e, 0x99706f70, 
+	0x996b6d6b, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x99707070, 0x996e6f6e, 0x99707070, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 0x99737373, 0x99737173, 
+	0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99767776, 0x99767776, 0x99767776, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737473, 0x99737473, 0x99737473, 0x99737373, 0x99737573, 0x99737473, 0x99737473, 0x99737373, 
+	0x99737373, 0x99737373, 0x99737473, 0x99737373, 0x99737373, 0x99737173, 0x99737173, 0x99737373, 
+	0x99737373, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99707070, 0x996e6f6e, 0x99707070, 0x996e6f6e, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996b6d6b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b696b, 0x996b6868, 0x996b6765, 0x996b6765, 
+	0x99656465, 0x99656465, 0x99656465, 0x99636163, 0x99636163, 0x99605e60, 0x995d5c5d, 0x995a595a, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x770b0b0b, 0x77000000, 0x55000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x44373737, 0xffa5a6a5, 0xffadaaad, 0xffb2b5b8, 0xffb5babd, 0xffb5babd, 
+	0xffbdc0c0, 0xffbdc0c0, 0xffbdc0c0, 0xffbdc2c5, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c8c5, 0xffc5c6c5, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecccb, 
+	0xffcecace, 0xffcecdce, 0xffcecace, 0xffcecace, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd0d0d0, 0xffd3d1d3, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d4d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d9, 0xffd7d7d7, 0xffd8d7d8, 0xffd6d6d6, 0xffd7d6d6, 
+	0xffd5d8d9, 0xffd6d8d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d1d6, 0xffd6d1d6, 0xffd6d1d6, 0xffd6d1d6, 0xffd3d1d3, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffcecece, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffceccce, 0xffcecccb, 
+	0xffcec9c8, 0xffcec9c8, 0xffcec9c8, 0xffcbc8cb, 0xffcbc8cb, 0xffc8c5c8, 0xffc8c5c8, 0xffc5c2c5, 
+	0xffc3c0c3, 0xffc0bdc0, 0xffbdbabd, 0xffb5bab5, 0xffafb2af, 0xffaaaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x44343534, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x55161716, 0x99424542, 0x99424542, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 
+	0x995a5d5a, 0x995d5e5d, 0x99636163, 0x99606060, 0x99636263, 0x99636263, 0x99636263, 0x99636463, 
+	0x99636563, 0x99636563, 0x99636563, 0x99656765, 0x996b676b, 0x996b686b, 0x996b686b, 0x996b696b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996e6c6e, 0x996e6c6e, 0x99706f70, 0x99706f70, 
+	0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x99707070, 0x99707070, 0x99707070, 0x99707070, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 
+	0x99737373, 0x99737373, 0x99737573, 0x99737473, 0x99737473, 0x99737573, 0x99737473, 0x99737473, 
+	0x99737573, 0x99737573, 0x99767776, 0x99737573, 0x99737573, 0x99767776, 0x99767776, 0x99767776, 
+	0x99767776, 0x997b797b, 0x99797879, 0x99767776, 0x99737776, 0x99737776, 0x99737776, 0x99737776, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737473, 0x99737473, 0x99737573, 0x99737573, 0x99737473, 0x99737473, 0x99737473, 
+	0x99737573, 0x99737573, 0x99737473, 0x99737573, 0x99737473, 0x99737473, 0x99737373, 0x99737473, 
+	0x99737373, 0x99737473, 0x99737473, 0x99737173, 0x99737373, 0x99737373, 0x99737173, 0x99737173, 
+	0x99737173, 0x99707070, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996b6d6b, 
+	0x996b6c6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b6765, 
+	0x99686768, 0x99656465, 0x99656465, 0x99656465, 0x99636163, 0x99605e60, 0x995d5c5d, 0x995a595a, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101010, 0x77000000, 0x55000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x55373737, 0xffa5a6a5, 0xffadaaad, 0xffafafb2, 0xffb2b5b8, 0xffb5babd, 
+	0xffbdbebd, 0xffbdc0c0, 0xffbdc2c5, 0xffbdc1c3, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c5c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c9c5, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecccb, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffced0d0, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 0xffd6d2d6, 0xffd3d1d3, 0xffd6d2d6, 
+	0xffd6d4d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d5d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd9d8d9, 0xffd6d7d6, 0xffd6d7d6, 0xffd9d8d6, 0xffdbd9d6, 0xffd9d8d6, 
+	0xffd6d7d6, 0xffd6dbde, 0xffd6d9db, 0xffd7d9dc, 0xffd9d9d9, 0xffdbd8dc, 0xffdcd8dd, 0xffd9d7da, 
+	0xffd5d7da, 0xffd5d7d6, 0xffd5d5d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d4d6, 0xffd6d5d6, 
+	0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d1d6, 0xffd0d0d0, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcecece, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecccb, 
+	0xffcecccb, 0xffcecccb, 0xffcec9c8, 0xffcbc8cb, 0xffc8c5c8, 0xffc8c5c8, 0xffc8c5c8, 0xffc5c2c5, 
+	0xffc3c0c3, 0xffc0bdc0, 0xffbdbabd, 0xffb5bab5, 0xffafb2af, 0xffaaaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x55343534, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x66161716, 0x99424542, 0x99424542, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 
+	0x995a5d5a, 0x995d5e5d, 0x995d5e5d, 0x99636163, 0x99636163, 0x99636263, 0x99636463, 0x99636463, 
+	0x99636563, 0x99656765, 0x99656765, 0x99656765, 0x996b686b, 0x996b676b, 0x996b686b, 0x996b696b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996e6c6e, 0x99706f70, 0x99737173, 0x99706f70, 
+	0x996e6f6e, 0x99707070, 0x99707070, 0x99707070, 0x99707070, 0x99707070, 0x99737173, 0x99737173, 
+	0x99737473, 0x99737573, 0x99737373, 0x99737473, 0x99737373, 0x99737373, 0x99737473, 0x99737573, 
+	0x99737473, 0x99737473, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99767776, 0x997b797b, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x997b797b, 
+	0x99797879, 0x99767776, 0x99767776, 0x99767776, 0x99737776, 0x99737776, 0x99737776, 0x99737776, 
+	0x99737773, 0x99737573, 0x99737773, 0x99737773, 0x99767773, 0x99767773, 0x99767773, 0x99767773, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737373, 0x99737573, 0x99737373, 0x99737573, 0x99737373, 0x99737473, 0x99737373, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99707070, 0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 0x996b6b6b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b6868, 
+	0x99686768, 0x99686768, 0x99656465, 0x99656465, 0x99636163, 0x99605e60, 0x995d5c5d, 0x995d5c5d, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101010, 0x77000000, 0x55000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x66373737, 0xffa5a6a5, 0xffadaaad, 0xffafafb2, 0xffb5babd, 0xffb5babd, 
+	0xffbdbebd, 0xffbdc0c0, 0xffbdc0c0, 0xffbdc2c5, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c8c5, 0xffc5c9c5, 0xffc5c9c5, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecccb, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffced1d3, 0xffced0d0, 
+	0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 0xffd6d2d6, 0xffd3d1d3, 0xffd3d1d3, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d5d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d9d6, 
+	0xffd9d8d9, 0xffdbd9db, 0xffd9d8d9, 0xffdbd9db, 0xffdbd9d6, 0xffdbd9d6, 0xffdbd9d6, 0xffdedbd6, 
+	0xffd6d9db, 0xffd6d8d9, 0xffd6d9db, 0xffd7d8dc, 0xffd9dadb, 0xffdbdadc, 0xffdcd8dc, 0xffdcd8dc, 
+	0xffdcd7dc, 0xffdad7da, 0xffd8d8d7, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d5d6, 
+	0xffd6d5d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd3d1d3, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecdce, 0xffcecccb, 
+	0xffcecccb, 0xffcecccb, 0xffcec9c8, 0xffcecace, 0xffcbc8cb, 0xffcbc8cb, 0xffc8c5c8, 0xffc5c2c5, 
+	0xffc5c2c5, 0xffc0bdc0, 0xffc0bdc0, 0xffb5bab5, 0xffafb2af, 0xffaaaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x55343534, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x66161716, 0x99424542, 0x99424542, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 
+	0x995a5d5a, 0x995d5e5d, 0x995d5e5d, 0x99606060, 0x99636163, 0x99636263, 0x99636263, 0x99636463, 
+	0x99636563, 0x99656765, 0x99686868, 0x99686868, 0x996b686b, 0x996b686b, 0x996b696b, 0x996b696b, 
+	0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x99706f70, 0x99706f70, 0x99706f70, 0x99706f70, 
+	0x99707070, 0x99707070, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737473, 0x99737573, 0x99737473, 0x99737373, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99797879, 0x997b797b, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99797879, 0x99767776, 
+	0x99767776, 0x99767776, 0x99767776, 0x997b797b, 0x99737776, 0x99737879, 0x99737776, 0x99737776, 
+	0x99737973, 0x99737773, 0x99737973, 0x99737973, 0x997b7973, 0x99767773, 0x99767773, 0x997b7973, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737473, 0x99737573, 0x99737473, 0x99737573, 0x99737573, 0x99737373, 0x99737373, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99707070, 0x99707070, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6c6b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 
+	0x99686768, 0x99686768, 0x99656465, 0x99656465, 0x99636163, 0x99636163, 0x995d5c5d, 0x995d5c5d, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101010, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x776e6f6e, 0xffa5a6a5, 0xffadaaad, 0xffafafb2, 0xffb2b5b8, 0xffb5babd, 
+	0xffbdbebd, 0xffbdc0c0, 0xffbdc0c0, 0xffbdc1c3, 0xffc5c4c5, 0xffc5c4c5, 0xffc5c5c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c8c5, 0xffc5cac5, 0xffc5cac5, 0xffcecace, 0xffcecace, 0xffcecccb, 0xffcecccb, 
+	0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffced0d0, 0xffced1d3, 0xffced1d3, 
+	0xffd3d1d3, 0xffd3d1d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d5d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d8d6, 
+	0xffdbd9db, 0xffdedbde, 0xffdbd9db, 0xffdbd9db, 0xffdbd9d6, 0xffdbd9d6, 0xffdedbd6, 0xffdbd9d6, 
+	0xffd6d9db, 0xffd6d9db, 0xffd6dadb, 0xffd7dade, 0xffdadbdb, 0xffdbdadc, 0xffdbd8dc, 0xffdcd8dc, 
+	0xffdcdadc, 0xffd9dad9, 0xffd7d8d7, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d2d6, 
+	0xffd3d1d3, 0xffd3d1d3, 0xffd0d0d0, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecccb, 
+	0xffcecccb, 0xffcecccb, 0xffcecccb, 0xffcecace, 0xffcbc8cb, 0xffcbc8cb, 0xffc8c5c8, 0xffc5c2c5, 
+	0xffc5c2c5, 0xffc0bdc0, 0xffc0bdc0, 0xffb5bab5, 0xffafb2af, 0xffaaaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x66343534, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x66161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x995a595a, 0x995a595a, 
+	0x995d5c5d, 0x99605e60, 0x99605e60, 0x99605e60, 0x99636163, 0x99636263, 0x99636463, 0x99636563, 
+	0x996b656b, 0x996b676b, 0x996b686b, 0x996b686b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b6b6b, 
+	0x996e6c6b, 0x996e6c6b, 0x99706f6b, 0x996e6c6b, 0x996e7070, 0x996e7070, 0x99686f6e, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 0x99737473, 0x99737473, 0x99737473, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 
+	0x997b7979, 0x997b7d7b, 0x997b7576, 0x997b7979, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99767876, 0x99797b79, 0x99767876, 0x99767876, 
+	0x997b787b, 0x997b787b, 0x997b787b, 0x997b787b, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 
+	0x99767876, 0x99767876, 0x99767876, 0x99767876, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x99767776, 0x99767776, 0x99767776, 0x99737573, 0x99737776, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737473, 0x99737373, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x996e6f6e, 0x996e6f6e, 0x996e6f6e, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 0x996b696b, 
+	0x99656865, 0x99656865, 0x99636563, 0x99636563, 0x99606160, 0x99606160, 0x995d5d5d, 0x995d5d5d, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101410, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x77686968, 0xff9c9e9c, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffb5b7b5, 
+	0xffbdbebd, 0xffc0c0c0, 0xffc3c1c3, 0xffc3c1c3, 0xffc5c2c5, 0xffc8c5c5, 0xffc8c5c5, 0xffcbc8c5, 
+	0xffc5c6c5, 0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecdce, 
+	0xffcecece, 0xffcecece, 0xffd0d0d0, 0xffcecece, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd3d4d3, 
+	0xffd6d4d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d8d6, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6dbd6, 0xffd6dbd6, 0xffd9dcd9, 0xffd6dbd6, 
+	0xffdedbde, 0xffdeddde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedcde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedade, 0xffdcdcdd, 0xffdbdbdc, 0xffdbdbdc, 0xffdbdbdc, 0xffdcdadc, 
+	0xffdcdadd, 0xffdcdadc, 0xffd9d9d9, 0xffd8d9db, 0xffd9d8d9, 0xffdbd9db, 0xffd9d8d9, 0xffd6d9d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecdd0, 0xffceccd3, 0xffcbcccb, 0xffc8c9c8, 0xffc8c9c8, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc0bec0, 0xffc0bec0, 0xffbdbab5, 0xffb5b2af, 0xffadaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x66343734, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x66161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x99555255, 0x995a595a, 
+	0x995d5c5d, 0x99605e60, 0x99605e60, 0x99636163, 0x99636263, 0x99636263, 0x99636563, 0x99636563, 
+	0x996b676b, 0x996b686b, 0x996b676b, 0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 0x996b6b6b, 
+	0x99706f6b, 0x996e6c6b, 0x99706f6b, 0x99706f6b, 0x996e7070, 0x996e7070, 0x996e7070, 0x996e7070, 
+	0x99737173, 0x99737373, 0x99737173, 0x99737473, 0x99737373, 0x99737373, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99767876, 0x99767876, 0x99767876, 0x99797b79, 
+	0x997b7979, 0x997b7979, 0x997b7979, 0x997b7979, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b7b7b, 
+	0x997b797b, 0x997b797b, 0x997b7b7b, 0x997b7c7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99797b79, 0x99797b79, 0x99797b79, 0x99797b79, 
+	0x997b787b, 0x997b787b, 0x997b787b, 0x997b787b, 0x99797b79, 0x99767876, 0x99767876, 0x99797b79, 
+	0x99797b79, 0x99767876, 0x99767876, 0x99767876, 0x997b797b, 0x99797879, 0x997b797b, 0x99797879, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99737776, 0x99737776, 0x99737776, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737473, 0x99737373, 0x99737173, 0x99737373, 0x99737173, 0x99737173, 
+	0x99707070, 0x99737173, 0x99707070, 0x996e6f6e, 0x996b6c6b, 0x996b6d6b, 0x996b6c6b, 0x996b6b6b, 
+	0x99686b68, 0x99656865, 0x99656865, 0x99636563, 0x99636563, 0x99606160, 0x99606160, 0x995a595a, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101410, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x88686968, 0xff9c9e9c, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffb5b7b5, 
+	0xffbdbebd, 0xffc0c0c0, 0xffc0c0c0, 0xffc5c2c5, 0xffc8c5c5, 0xffc8c5c5, 0xffcbc8c5, 0xffcbc8c5, 
+	0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 0xffcbcccb, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 
+	0xffd0d0d0, 0xffcecece, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 
+	0xffd6d2d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6dbd6, 0xffd9dcd9, 0xffd9dcd9, 0xffd9dcd9, 
+	0xffdedbde, 0xffdedcde, 0xffdedcde, 0xffdedcde, 0xffdedcde, 0xffdedcde, 0xffdedbde, 0xffdeddde, 
+	0xffdedcde, 0xffdedcde, 0xffdddddd, 0xffdbdddd, 0xffdbdddc, 0xffdbdddc, 0xffdddbdd, 0xffdedbde, 
+	0xffdfdbdf, 0xffe0dbdf, 0xffdcdadc, 0xffd7dadc, 0xffd8d9d9, 0xffdad9da, 0xffdbd9db, 0xffd6d9d6, 
+	0xffd6d9d6, 0xffd6d8d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d4d6, 
+	0xffd6d5d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 0xffd0d0d0, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecdd0, 0xffcbcccb, 0xffcbcccb, 0xffc8c9c8, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc3c2c3, 0xffbdbabd, 0xffbdbab5, 0xffb5b2af, 0xffadaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x66343734, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x77161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x99555255, 0x995a595a, 
+	0x995d5c5d, 0x99605e60, 0x99636163, 0x99636163, 0x99636463, 0x99636563, 0x99636563, 0x99636563, 
+	0x996b676b, 0x996b676b, 0x996b696b, 0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 
+	0x99706f6b, 0x99706f6b, 0x99706f6b, 0x99706f6b, 0x996e7070, 0x996e7070, 0x99737173, 0x99737173, 
+	0x99737373, 0x99737373, 0x99737373, 0x99737373, 0x99737473, 0x99737473, 0x99737573, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737773, 0x99737773, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99767876, 0x99797b79, 0x99797b79, 0x99797b79, 
+	0x997b7979, 0x997b7979, 0x997b7979, 0x997b7979, 0x997b797b, 0x997b7c7b, 0x997b7c7b, 0x997b7b7b, 
+	0x997b7b7b, 0x997b7b7b, 0x997b7b7b, 0x997b7c7b, 0x997b7b7b, 0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 
+	0x997e7c7b, 0x997e7c7b, 0x99817f7b, 0x997e7c7b, 0x99797b79, 0x99797b79, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7b7b, 0x997b7b7b, 0x997b7b7b, 0x997b7b7b, 0x99797b79, 0x99797b79, 0x99797b79, 0x99797b79, 
+	0x99797b79, 0x99767876, 0x99797b79, 0x99797b79, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x99767776, 0x99737776, 0x99737776, 0x99737776, 0x99737776, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737373, 0x99737473, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737173, 0x99707070, 0x99707070, 0x996b6d6b, 0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 
+	0x99686b68, 0x99656865, 0x99656865, 0x99656865, 0x99636563, 0x99606160, 0x995d5d5d, 0x995d5d5d, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101410, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x99686968, 0xff9c9e9c, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffbdbebd, 
+	0xffbdbebd, 0xffc0c0c0, 0xffc5c2c5, 0xffc5c2c5, 0xffc8c5c5, 0xffcbc8c5, 0xffcbc8c5, 0xffcbc8c5, 
+	0xffc8c9c8, 0xffc8c9c8, 0xffcbcccb, 0xffcbcccb, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 
+	0xffd0d0d0, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d1d3, 0xffd0d1d0, 0xffd0d1d0, 0xffd3d4d3, 0xffd3d4d3, 
+	0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 
+	0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 0xffd9dcd9, 0xffd9dcd9, 0xffd9dcd9, 0xffdbdddb, 
+	0xffdedcde, 0xffdeddde, 0xffdedcde, 0xffdedcde, 0xffdedcde, 0xffdedfde, 0xffdedfde, 0xffdeddde, 
+	0xffdeddde, 0xffdeddde, 0xffe1dee1, 0xffdfdedf, 0xffdddfdd, 0xffdddddc, 0xffdddcdd, 0xffdddfe0, 
+	0xffdfdedf, 0xffdfdcdf, 0xffdfdcdf, 0xffdfdbdf, 0xffdfdbde, 0xffdfdbdf, 0xffdcd9dc, 0xffd6d9d6, 
+	0xffd6d9d6, 0xffd6d9d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d5d6, 
+	0xffd6d7d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd3d1d3, 0xffd3d1d3, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecdd0, 0xffcbcccb, 0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc3c2c3, 0xffc0bec0, 0xffbdbab5, 0xffb5b2af, 0xffadaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x66343734, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x77161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x995a595a, 0x995a595a, 
+	0x99605e60, 0x99605e60, 0x99636163, 0x99636163, 0x99636563, 0x99636563, 0x99636563, 0x99636563, 
+	0x996b676b, 0x996b686b, 0x996b696b, 0x996b696b, 0x996b6c6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 
+	0x99706f6b, 0x99706f6b, 0x99706f6b, 0x9973716b, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99737173, 0x99737473, 0x99737473, 0x99737473, 0x99737473, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737773, 0x99737773, 0x99737773, 0x99737973, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99797b79, 0x99797b79, 0x99797b79, 0x997b7d7b, 
+	0x997b7979, 0x997b7d7b, 0x997b7979, 0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 0x997b7c7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997e7c7b, 0x99817f7b, 0x99817f7b, 0x997e7c7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99797b79, 
+	0x997b7d7b, 0x997b7b7b, 0x997b7d7b, 0x997b7b7b, 0x99797b79, 0x99797b79, 0x99797b79, 0x99797b79, 
+	0x997b7d7b, 0x99797b79, 0x997b7d7b, 0x99797b79, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x9973797b, 0x99737776, 0x99737776, 0x99737776, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737473, 0x99737573, 0x99737473, 0x99737373, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99707070, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 
+	0x996b6d6b, 0x99686b68, 0x99656865, 0x99656865, 0x99636563, 0x99606160, 0x99606160, 0x995d5d5d, 
+	0x995a555a, 0x99524e52, 0x994a484a, 0x99424142, 0x77101410, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x88686968, 0xff9c9e9c, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffbdbebd, 
+	0xffc0c0c0, 0xffc0c0c0, 0xffc3c1c3, 0xffc5c2c5, 0xffc8c5c5, 0xffcbc8c5, 0xffcbc8c5, 0xffcbc8c5, 
+	0xffc8c9c8, 0xffc8c9c8, 0xffcbcccb, 0xffcbcccb, 0xffcecece, 0xffcecdce, 0xffcecece, 0xffcecece, 
+	0xffd0d0d0, 0xffd3d1d3, 0xffd0d0d0, 0xffd3d1d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 0xffd3d4d3, 
+	0xffd6d4d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d9d6, 
+	0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 0xffd9dcd9, 0xffd9dcd9, 0xffdbdddb, 0xffdedfde, 
+	0xffdeddde, 0xffdedfde, 0xffdeddde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdfdee0, 0xffe1dfe1, 0xffe2dfe2, 0xffe2dfe2, 0xffe4dfe4, 0xffe2dee1, 0xffdddee2, 
+	0xffdedddf, 0xffdedcdf, 0xffdedcdf, 0xffdfdedf, 0xffdfdede, 0xffdedede, 0xffdedbde, 0xffd5dbd5, 
+	0xffd6d9d6, 0xffd6d9d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d5d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecdd0, 0xffcecece, 0xffcbcccb, 0xffcbcccb, 0xffc8c9c8, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc3c2c3, 0xffc0bec0, 0xffbdbab5, 0xffb5b2af, 0xffadaaaa, 0xffa5a2a5, 0xff9c9e9c, 
+	0x66343734, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x66161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x99555255, 0x995a595a, 
+	0x995a5d5a, 0x995d605d, 0x99606260, 0x99606260, 0x99656465, 0x99686768, 0x99686768, 0x99686768, 
+	0x996b696b, 0x996b6b6b, 0x996b6b6b, 0x996b6c6b, 0x996b6d6b, 0x996e6f6e, 0x996b6d6b, 0x996e6f6e, 
+	0x99737173, 0x996e6f73, 0x99707073, 0x99707073, 0x99737373, 0x99737173, 0x99737473, 0x99737473, 
+	0x99737573, 0x99737573, 0x99737776, 0x99737776, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x997b7876, 0x997b7876, 0x997b7876, 0x997b7876, 0x997b797b, 0x997b797b, 0x997b7b7b, 0x997b797b, 
+	0x997b7d7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 
+	0x997e807e, 0x99818381, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e807e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7c7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99797b79, 0x99767876, 0x99767876, 0x99767876, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99737573, 0x99737573, 0x99737573, 0x99737373, 
+	0x99737373, 0x99737173, 0x99737173, 0x99737173, 0x99707070, 0x99707070, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6c6b, 0x996b6b6b, 0x996b696b, 0x996b696b, 0x99636563, 0x99606160, 0x995d5d5d, 0x995d5d5d, 
+	0x995a5552, 0x99524e4d, 0x99424142, 0x99424142, 0x77101010, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000400, 0x00000400, 0x886e6d6e, 0xffa5a2a5, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffbdbebd, 
+	0xffc0c1c0, 0xffc0c1c0, 0xffc3c4c3, 0xffc3c4c3, 0xffc5c6c5, 0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 
+	0xffcecace, 0xffcecdce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 
+	0xffd0d1d6, 0xffd0d1d6, 0xffd0d1d6, 0xffd0d1d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 
+	0xffdedbd6, 0xffdedbd6, 0xffdedcd9, 0xffdedcd9, 0xffdedcde, 0xffdedbde, 0xffdeddde, 0xffdedcde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffe1e0e1, 0xffe6e3e6, 0xffe1e0e1, 0xffdedfde, 0xffdedfde, 0xffe1e1e1, 0xffe1e1e1, 0xffdddfdd, 
+	0xffe1dfe1, 0xffe3e0e3, 0xffe4e1e4, 0xffe3e0e3, 0xffe4e1e4, 0xffe4dfe4, 0xffe5dfe4, 0xffe5dee5, 
+	0xffe6dfe5, 0xffe6dfe5, 0xffe4dfe3, 0xffe0dee0, 0xffdfdedf, 0xffdfdede, 0xffdededf, 0xffdedcdb, 
+	0xffdedcdb, 0xffdedcdb, 0xffdedbde, 0xffd9d8d9, 0xffdbd9db, 0xffd9d8d9, 0xffd9d8d9, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd0d1d0, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffcecece, 0xffcecdce, 0xffcecace, 0xffcecace, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc0c1c0, 0xffbdbebd, 0xffb5b6b5, 0xffafafaf, 0xffaaa9aa, 0xffa5a2a5, 0xff9c9a9c, 
+	0x55343334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x66161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x99555255, 0x995a595a, 
+	0x995a5d5a, 0x995d605d, 0x99606260, 0x99636563, 0x99656465, 0x99656465, 0x99686768, 0x996b696b, 
+	0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 0x996b6c6b, 0x99737173, 0x99707070, 0x99707070, 0x99737173, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 0x99737373, 0x99737473, 0x99737473, 
+	0x99737573, 0x99737573, 0x99737776, 0x99737879, 0x99797879, 0x99767776, 0x99767776, 0x99767776, 
+	0x997b7b79, 0x997b7876, 0x997b7876, 0x997b7876, 0x997b797b, 0x997b797b, 0x997b7c7b, 0x997b7c7b, 
+	0x997b797b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99817f81, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 
+	0x997e807e, 0x997e807e, 0x997b7d7b, 0x997b7d7b, 0x997e7f7e, 0x997e7f7e, 0x99818081, 0x997e7f7e, 
+	0x99818081, 0x99818081, 0x99848284, 0x99848284, 0x997e807e, 0x997e807e, 0x997e807e, 0x997e807e, 
+	0x99818081, 0x997e7f7e, 0x997e7f7e, 0x99818081, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 
+	0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997e807e, 0x997e807e, 0x997e807e, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7c7b, 0x997b7b7b, 0x997b797b, 0x997b7b7b, 0x99797b79, 0x99797b79, 0x99767876, 0x99767876, 
+	0x99797879, 0x99767776, 0x99767776, 0x99767776, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737473, 0x99737173, 0x99737173, 0x99737173, 0x99707070, 0x99707070, 0x996e6f6e, 0x996e6f6e, 
+	0x996b6c6b, 0x996b6c6b, 0x996b6b6b, 0x996b696b, 0x99636563, 0x99636563, 0x99606160, 0x995d5d5d, 
+	0x995a5552, 0x99524e4d, 0x994a4847, 0x99424142, 0x77101010, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000400, 0x00000400, 0x776e6d6e, 0xffa5a2a5, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffbdbebd, 
+	0xffc0c1c0, 0xffc0c1c0, 0xffc3c4c3, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc8c9c8, 0xffcbcccb, 
+	0xffceccce, 0xffcecdce, 0xffcecece, 0xffcecece, 0xffced1d3, 0xffced1d3, 0xffced1d3, 0xffced2d6, 
+	0xffd3d4d6, 0xffd3d4d6, 0xffd3d4d6, 0xffd3d4d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 0xffd6d5d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6dbd6, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 
+	0xffdedcd9, 0xffdedcd9, 0xffdedcd9, 0xffdedcd9, 0xffdedcde, 0xffdedcde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdee0de, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffe4e1e4, 0xffe4e1e4, 0xffe1e0e1, 0xffe1e0e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe4e4e4, 0xffe0e0e0, 
+	0xffe3e0e3, 0xffe3e0e3, 0xffe4e1e4, 0xffe5e2e5, 0xffe4e1e4, 0xffe4dfe4, 0xffe5e0e5, 0xffe5e2e5, 
+	0xffe6e2e5, 0xffe6e2e5, 0xffe6dfe6, 0xffe0dedf, 0xffdfdedf, 0xffdfdedf, 0xffdfdede, 0xffdfdcdd, 
+	0xffdedcdb, 0xffdedcdb, 0xffdedbde, 0xffdedbde, 0xffdbd9db, 0xffd9d8d9, 0xffd9d8d9, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d2d6, 0xffd0d1d0, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecace, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc0c1c0, 0xffbdbebd, 0xffb5b6b5, 0xffafafaf, 0xffaaa9aa, 0xffa5a2a5, 0xff9c9a9c, 
+	0x55343334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x66161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x995a595a, 0x995a595a, 
+	0x995d605d, 0x99606260, 0x99606260, 0x99606260, 0x99656465, 0x99686768, 0x99686768, 0x996b696b, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 0x996b6c6b, 0x996e6f6e, 0x996e6f6e, 0x99707070, 0x99707070, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737776, 0x99737776, 0x99737776, 0x9973797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b7b79, 0x997b7b79, 0x997b7b79, 0x997b7d7b, 0x997b7b7b, 0x997b7b7b, 0x997b7c7b, 0x997b7c7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99817f81, 0x99817f81, 0x99817f81, 0x99817f81, 
+	0x997b7d7b, 0x997e807e, 0x997e807e, 0x997e807e, 0x99818081, 0x99818081, 0x99818081, 0x997e7f7e, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99818381, 0x997e807e, 0x99818381, 0x997e807e, 
+	0x99848284, 0x99818081, 0x99818081, 0x99818081, 0x99848284, 0x997e7f7e, 0x99818081, 0x99818081, 
+	0x99818081, 0x997e7f7e, 0x99818081, 0x99818081, 0x997e807e, 0x997e807e, 0x997e807e, 0x997e807e, 
+	0x997e807e, 0x997e807e, 0x997e807e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 0x997b7c7b, 0x99797b79, 0x99797b79, 0x99797b79, 0x99797b79, 
+	0x99797879, 0x99767776, 0x99797879, 0x99767776, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737473, 0x99737473, 0x99737373, 0x99737173, 0x99737173, 0x99707070, 0x99707070, 0x996e6f6e, 
+	0x996b6d6b, 0x996b6d6b, 0x996b6b6b, 0x996b696b, 0x99636563, 0x99636563, 0x995d5d5d, 0x995d5d5d, 
+	0x995a5552, 0x99524e4d, 0x99424142, 0x99424142, 0x77101010, 0x77000000, 0x66000000, 0x11000000, 
+	0x00000400, 0x00000400, 0x66373937, 0xffa5a2a5, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffbdbebd, 
+	0xffc0c1c0, 0xffc3c4c3, 0xffc3c4c3, 0xffc5c6c5, 0xffc5c6c5, 0xffc8c9c8, 0xffc8c9c8, 0xffcbcccb, 
+	0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecece, 0xffced0d0, 0xffced0d0, 0xffced1d3, 0xffced1d3, 
+	0xffd3d4d6, 0xffd3d4d6, 0xffd3d4d6, 0xffd3d4d6, 0xffd6d5d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 
+	0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6dbd6, 0xffd9d9d9, 0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 
+	0xffdedcd9, 0xffdedddb, 0xffdedcd9, 0xffdedfde, 0xffdeddde, 0xffdeddde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdee1de, 0xffdee1de, 0xffdee0de, 0xffdee1de, 
+	0xffe1e0e1, 0xffe6e3e6, 0xffe6e3e6, 0xffe4e1e4, 0xffe4e4e4, 0xffe3e3e4, 0xffe3e3e3, 0xffe2e3e2, 
+	0xffe3e3e3, 0xffe4e2e4, 0xffe4e2e4, 0xffe4e2e4, 0xffe5e2e5, 0xffe5e3e5, 0xffe5e2e5, 0xffe5e2e5, 
+	0xffe5e2e5, 0xffe6e2e5, 0xffe6e3e5, 0xffe3e0e3, 0xffe0dfe0, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dede, 
+	0xffdfdddd, 0xffdedcdb, 0xffdedcdb, 0xffdedbde, 0xffdbd9db, 0xffdedbde, 0xffdbd9db, 0xffd6d9d6, 
+	0xffd6d8d6, 0xffd6d8d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd6d4d6, 0xffd3d4d3, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecace, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc0c1c0, 0xffbdbebd, 0xffb5b6b5, 0xffafafaf, 0xffa5a2a5, 0xffa5a2a5, 0xff9c9a9c, 
+	0x55343334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x66161616, 0x99424142, 0x99424142, 0x994a454a, 0x99504c50, 0x99555255, 0x995a595a, 
+	0x995a5d5a, 0x995d605d, 0x99606260, 0x99606260, 0x99686768, 0x99656465, 0x99686768, 0x996b696b, 
+	0x996b6b6b, 0x996b6c6b, 0x996b6c6b, 0x996b6d6b, 0x996e6f6e, 0x99707070, 0x99737173, 0x99707070, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737776, 0x99737776, 0x99737776, 0x99737776, 0x99797879, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b7b79, 0x997b7b79, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b827b, 0x99817f81, 0x99817f81, 0x99817f81, 0x99848284, 
+	0x99818381, 0x99818381, 0x997e807e, 0x99818381, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99818381, 0x99818381, 0x99818381, 0x99818381, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848684, 0x99818381, 0x99848684, 0x99818381, 
+	0x99848684, 0x997e807e, 0x997e807e, 0x997e807e, 0x997b7f7b, 0x997b827b, 0x997b7f7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 0x99797b79, 0x997b7d7b, 0x99797b79, 0x99767876, 
+	0x997b797b, 0x997b797b, 0x99797879, 0x99767776, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x99737473, 0x99737473, 0x99737473, 0x99737373, 0x99737173, 0x99737173, 0x99707070, 0x99707070, 
+	0x996b6d6b, 0x996b6c6b, 0x996b6b6b, 0x996b696b, 0x99636563, 0x99606160, 0x995d5d5d, 0x995a595a, 
+	0x995a5552, 0x99524e4d, 0x99424142, 0x99424142, 0x77101010, 0x77000000, 0x55000000, 0x11000000, 
+	0x00000400, 0x00000400, 0x66373937, 0xffa5a2a5, 0xffa5aaa5, 0xffadb1ad, 0xffb5b7b5, 0xffbdbebd, 
+	0xffc0c1c0, 0xffc0c1c0, 0xffc3c4c3, 0xffc5c6c5, 0xffc8c9c8, 0xffc5c6c5, 0xffc8c9c8, 0xffcbcccb, 
+	0xffcecdce, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced0d0, 0xffced1d3, 0xffced2d6, 0xffced2d6, 
+	0xffd3d4d6, 0xffd3d4d6, 0xffd3d4d6, 0xffd3d4d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 
+	0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 
+	0xffdedddb, 0xffdedddb, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdee0de, 0xffdee1de, 0xffdee0de, 0xffdee3de, 0xffdee1de, 0xffdee1de, 0xffdee1de, 0xffdee3de, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe3e4e3, 0xffe3e4e3, 0xffe2e4e2, 0xffe3e4e3, 
+	0xffe4e4e3, 0xffe4e3e4, 0xffe4e3e4, 0xffe4e4e5, 0xffe5e5e4, 0xffe5e3e5, 0xffe5e3e5, 0xffe5e2e5, 
+	0xffe6e2e5, 0xffe6e3e5, 0xffe6e3e5, 0xffe6e1e5, 0xffe3e0e3, 0xffe2dfe2, 0xffe0dfdf, 0xffe0dedf, 
+	0xffe0dfdc, 0xffdedcdc, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdbd9db, 0xffd6d9d6, 
+	0xffd6d9d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d5d6, 0xffd3d4d3, 
+	0xffd3d4d3, 0xffd0d1d0, 0xffd0d1d0, 0xffcecece, 0xffcecece, 0xffcecdce, 0xffcecace, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc0c1c0, 0xffbdbebd, 0xffb5b6b5, 0xffafafaf, 0xffaaa9aa, 0xffa5a2a5, 0xff9c9a9c, 
+	0x55343334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x66161616, 0x99424142, 0x99424142, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 
+	0x995d5d5d, 0x99606160, 0x99606160, 0x99636563, 0x99656765, 0x99656765, 0x996b696b, 0x996b696b, 
+	0x996b6b6b, 0x996b6b6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d73, 0x996e7073, 0x99707373, 0x996e7073, 
+	0x99737373, 0x99737373, 0x99737473, 0x99737573, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x99767776, 0x99767776, 0x997b797b, 0x99797879, 0x997b797b, 0x997b797b, 0x997b7b7b, 0x997b7b7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997e807e, 0x997b7d7b, 0x997e807e, 
+	0x997e8084, 0x997e8084, 0x997e8084, 0x997e8084, 0x99848284, 0x99848284, 0x99848284, 0x99848384, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848384, 0x99848484, 0x99848484, 
+	0x99898484, 0x99898484, 0x99898484, 0x99898484, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99898789, 0x99868486, 0x99868486, 0x99868486, 0x99868486, 0x99868486, 0x99848284, 0x99868486, 
+	0x99848484, 0x99848384, 0x99848384, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848384, 
+	0x99848384, 0x99848384, 0x99848284, 0x99848284, 0x99818081, 0x997e7f7e, 0x997e7f7e, 0x99818081, 
+	0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 0x997b7b7b, 0x997b7c7b, 
+	0x997b7b7b, 0x997b797b, 0x997b797b, 0x997b797b, 0x99767876, 0x99767876, 0x99767876, 0x99737573, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737373, 0x99737373, 0x99737073, 0x99736d73, 
+	0x99737173, 0x99706d6e, 0x996e6968, 0x996e6968, 0x99636563, 0x99606060, 0x99606060, 0x995d5a5d, 
+	0x99525152, 0x99525152, 0x99454345, 0x99454345, 0x77080c08, 0x77000000, 0x55000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x66373637, 0xffa5a2a5, 0xffadaaad, 0xffadaaad, 0xffb5b2b5, 0xffbdbabd, 
+	0xffc0bec0, 0xffc3c2c3, 0xffc3c2c3, 0xffc5c6c5, 0xffc8c9c8, 0xffc8c9c8, 0xffcbcccb, 0xffcbcccb, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffd0ced0, 0xffd0ced0, 0xffd3d2d3, 0xffd3d2d3, 0xffd3d2d3, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d9d6, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedcde, 0xffdedcde, 0xffdeddde, 0xffdeddde, 
+	0xffdedfde, 0xffdedfde, 0xffdee0e1, 0xffdedfde, 0xffdedfde, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e5e6, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe5e3e5, 0xffe4e5e4, 0xffe3e5e3, 0xffe4e5e3, 
+	0xffe4e6e4, 0xffe5e5e4, 0xffe5e6e5, 0xffe5e7e5, 0xffe5e6e4, 0xffe6e6e5, 0xffe6e6e6, 0xffe6e4e6, 
+	0xffe6e4e6, 0xffe6e4e6, 0xffe6e4e6, 0xffe6e3e5, 0xffe6e3e5, 0xffe6e1e5, 0xffe5e2e4, 0xffdfdfde, 
+	0xffdfe1df, 0xffdfdede, 0xffdedfde, 0xffdeddde, 0xffdedcde, 0xffdedcde, 0xffdedbde, 0xffd9d9d9, 
+	0xffdbdcdb, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d1d6, 0xffd6d1d6, 0xffced2d6, 0xffceced0, 0xffceced0, 0xffcecacb, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc3c2c3, 0xffc0bec0, 0xffb5b2b5, 0xffadabad, 0xffa5a5a5, 0xff9c9e9c, 0xff8c8e8c, 
+	0x442f322f, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x55000000, 0x99424142, 0x99424142, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 
+	0x995d5d5d, 0x995d5d5d, 0x99606160, 0x99636563, 0x99636563, 0x99656765, 0x99686868, 0x996b696b, 
+	0x996b6b6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996e7073, 0x996e7073, 0x996e7073, 0x99707373, 
+	0x99737473, 0x99737473, 0x99737573, 0x99737573, 0x99767776, 0x99767776, 0x99767776, 0x99767776, 
+	0x997b797b, 0x99767776, 0x997b797b, 0x997b797b, 0x997b7b7b, 0x997b7b7b, 0x997b7c7b, 0x997b7c7b, 
+	0x997e7f7e, 0x997b7d7b, 0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997e807e, 0x997e807e, 0x99818381, 
+	0x997e8084, 0x997e8084, 0x99818384, 0x99818384, 0x99848384, 0x99848384, 0x99848384, 0x99848484, 
+	0x99868686, 0x99898a89, 0x99848284, 0x99868686, 0x99848684, 0x99848684, 0x99848684, 0x99848484, 
+	0x99898484, 0x99898484, 0x99898484, 0x99868784, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99898789, 0x99898789, 0x99868486, 0x99898789, 0x99898789, 0x99868486, 0x99868486, 0x99868486, 
+	0x99848684, 0x99848684, 0x99848484, 0x99848484, 0x99848484, 0x99848384, 0x99848484, 0x99848384, 
+	0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 0x99818081, 0x99818081, 0x99818081, 
+	0x99818081, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 
+	0x997b7b7b, 0x997b7b7b, 0x997b7b7b, 0x997b797b, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737373, 0x99737373, 0x99737373, 0x99737073, 
+	0x99706d6e, 0x99706d6e, 0x996e6968, 0x996e6968, 0x99636563, 0x99606060, 0x99606060, 0x995d5a5d, 
+	0x99525152, 0x99525152, 0x99454345, 0x99373637, 0x77050805, 0x77000000, 0x55000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x33373637, 0xffa5a2a5, 0xffa5a2a5, 0xffadaaad, 0xffb5b2b5, 0xffbdbabd, 
+	0xffc0bec0, 0xffc3c2c3, 0xffc3c2c3, 0xffc5c6c5, 0xffc5c6c5, 0xffc8c9c8, 0xffcbcccb, 0xffcbcccb, 
+	0xffcecece, 0xffcecece, 0xffd0ced0, 0xffd3ced3, 0xffd3d2d3, 0xffd3d2d3, 0xffd3d2d3, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedcde, 0xffdeddde, 0xffdeddde, 0xffdedfde, 0xffdedfde, 
+	0xffdee0e1, 0xffdedfde, 0xffdee0e1, 0xffdee0e1, 0xffe1e1e1, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e4e6, 0xffe6e4e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 
+	0xffe6e5e6, 0xffe6e8e6, 0xffe6e5e6, 0xffe6e8e6, 0xffe5e8e5, 0xffe4e7e4, 0xffe3e7e4, 0xffe4e5e4, 
+	0xffe5e6e5, 0xffe5e6e5, 0xffe5e7e5, 0xffe5e8e6, 0xffe6e7e5, 0xffe6e7e6, 0xffe6e6e6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e4e6, 0xffe6e4e6, 0xffe6e3e6, 0xffe6e4e5, 0xffe6e3e5, 0xffe6e1e5, 0xffe4e2e3, 
+	0xffe1e1e1, 0xffdfdfde, 0xffdedfde, 0xffdeddde, 0xffdeddde, 0xffdeddde, 0xffdedbde, 0xffdbdcdb, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d8d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d4d6, 0xffd6d1d6, 0xffceced0, 0xffceced0, 0xffceced0, 0xffcecacb, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc3c2c3, 0xffbdbabd, 0xffb5b2b5, 0xffadabad, 0xffa5a5a5, 0xff9c9e9c, 0xee8c8e8c, 
+	0x332f322f, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x44000000, 0x99424142, 0x99424142, 0x99424542, 0x994a4c4a, 0x99525252, 0x995a595a, 
+	0x995d5d5d, 0x995d5d5d, 0x99606160, 0x99606160, 0x99636563, 0x99656765, 0x99686868, 0x996b696b, 
+	0x996b6b6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996e7073, 0x996e7073, 0x996e7073, 0x99707373, 
+	0x99737473, 0x99737573, 0x99737573, 0x99737573, 0x99767776, 0x99767776, 0x99797879, 0x99797879, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b7c7b, 0x997b7c7b, 0x997b7c7b, 0x997b7d7b, 
+	0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e807e, 0x99818381, 0x99818381, 0x99818381, 
+	0x99818384, 0x99818384, 0x99818384, 0x99818384, 0x99848384, 0x99848684, 0x99848684, 0x99848484, 
+	0x99868686, 0x99868686, 0x99868686, 0x99868686, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99868784, 0x99868784, 0x99868784, 0x99868784, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99898789, 0x99898789, 0x99898789, 0x99898789, 0x998c8a8c, 0x99898789, 0x99898789, 0x99898789, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848484, 0x99848684, 0x99848484, 0x99848484, 0x99848384, 
+	0x99848484, 0x99848384, 0x99848384, 0x99848484, 0x99848284, 0x99848284, 0x99818081, 0x99848284, 
+	0x99818081, 0x99818081, 0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 
+	0x997b7d7b, 0x997b7b7b, 0x997b7b7b, 0x997b797b, 0x99797b79, 0x99797b79, 0x99767876, 0x99767876, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737373, 0x99737373, 0x99737373, 0x99737073, 
+	0x99706d6e, 0x99706d6e, 0x996e6968, 0x996b6563, 0x99636563, 0x99606060, 0x995d5a5d, 0x995a555a, 
+	0x99525152, 0x99454345, 0x99454345, 0x88292829, 0x77030403, 0x77000000, 0x44000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0xffa5a2a5, 0xffa5a2a5, 0xffadaaad, 0xffb5b2b5, 0xffbdbabd, 
+	0xffc0bec0, 0xffc3c2c3, 0xffc3c2c3, 0xffc3c2c3, 0xffc5c6c5, 0xffc8c9c8, 0xffc8c9c8, 0xffcbcccb, 
+	0xffcecece, 0xffcecece, 0xffd0ced0, 0xffd3ced3, 0xffd3d2d3, 0xffd3d2d3, 0xffd3d2d3, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffdedbde, 0xffdedcde, 0xffdeddde, 0xffdeddde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdee0e1, 0xffdee0e1, 0xffdee1e4, 0xffdee1e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 
+	0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e5e6, 
+	0xffe6e5e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe8e9e7, 0xffebeae9, 0xffeeeaed, 
+	0xffe9e7e8, 0xffe9e8ea, 0xffe6e8e8, 0xffe6e8e6, 0xffe6e9e6, 0xffe6e8e6, 0xffe7e9e7, 0xffe7e7e5, 
+	0xffe6e6e5, 0xffe7e7e6, 0xffe6e7e6, 0xffe6e4e6, 0xffe6e6e6, 0xffe6e3e5, 0xffe5e3e5, 0xffe5e1e4, 
+	0xffe1e1e1, 0xffdfe1df, 0xffdee0de, 0xffdedfde, 0xffdeddde, 0xffdeddde, 0xffdedcde, 0xffdbdcdb, 
+	0xffdbdcdb, 0xffdbdcdb, 0xffd9d9d9, 0xffd6d9d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d7d6, 0xffd6d4d6, 
+	0xffd6d4d6, 0xffd6d4d6, 0xffd6d4d6, 0xffceced0, 0xffceced0, 0xffceced0, 0xffcecacb, 0xffc5c6c5, 
+	0xffc3c2c3, 0xffc0bec0, 0xffbdbabd, 0xffb5b2b5, 0xffadabad, 0xffa5a5a5, 0xff9c9e9c, 0xdd8c8e8c, 
+	0x22000400, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x44000000, 0x882c2b2c, 0x99424142, 0x99424542, 0x99424542, 0x994a4c4a, 0x995a595a, 
+	0x995a595a, 0x995d5d5d, 0x995d5d5d, 0x99606160, 0x99636563, 0x99656765, 0x996b696b, 0x996b696b, 
+	0x996b6b6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996e7073, 0x996e7073, 0x99707373, 0x99707373, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99767776, 0x99767776, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997e7f7e, 0x997e7f7e, 0x99818081, 0x99848284, 0x99818381, 0x99818381, 0x99818381, 0x99818381, 
+	0x99818384, 0x99818384, 0x99818384, 0x99818384, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99868686, 0x99868686, 0x99868686, 0x99868686, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99848a84, 0x99868784, 0x99868784, 0x99848a84, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x998c8a8c, 0x99898789, 0x99898789, 0x998c8a8c, 0x998c8a8c, 0x99898789, 0x99898789, 0x99898789, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99848684, 0x99848684, 0x99848484, 0x99848484, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 
+	0x997e7f7e, 0x99818081, 0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7b7b, 0x99797b79, 0x99797b79, 0x99797b79, 0x99767876, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737373, 0x99737373, 0x99737073, 
+	0x99706d6e, 0x996e6968, 0x996e6968, 0x996b6563, 0x99606060, 0x99606060, 0x995d5a5d, 0x995a555a, 
+	0x99525152, 0x99454345, 0x99454345, 0x88292829, 0x77030403, 0x77000000, 0x33000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0xdda5a2a5, 0xffa5a2a5, 0xffadaaad, 0xffb5b2b5, 0xffbdbabd, 
+	0xffbdbabd, 0xffc0bec0, 0xffc3c2c3, 0xffc3c2c3, 0xffc5c6c5, 0xffc8c9c8, 0xffcbcccb, 0xffcbcccb, 
+	0xffcecece, 0xffd0ced0, 0xffd0ced0, 0xffd0ced0, 0xffd3d2d3, 0xffd3d2d3, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffdedcde, 0xffdeddde, 0xffdeddde, 0xffdeddde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdee0e1, 0xffdee1e4, 0xffdee3e6, 0xffdee3e6, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe6e7e6, 
+	0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe7e9e7, 0xffe8e8e8, 
+	0xffeaece9, 0xffe7e9e6, 0xffe6e9e6, 0xffe6ebe6, 0xffe6e9e6, 0xffe7e9e7, 0xffe9e9e9, 0xffe7e7e6, 
+	0xffe6e6e6, 0xffe6e7e7, 0xffe7e4e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e4e5, 0xffe5e3e5, 0xffe4e1e4, 
+	0xffe2e1e2, 0xffdfe0df, 0xffdee0de, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdeddde, 0xffdedfde, 
+	0xffdbdcdb, 0xffdbdcdb, 0xffdbdcdb, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d4d6, 0xffd6d1d6, 0xffceced0, 0xffceced0, 0xffcecacb, 0xffcec6c5, 0xffc3c2c3, 
+	0xffc3c2c3, 0xffc0bec0, 0xffbdbabd, 0xffb5b2b5, 0xffadabad, 0xff9c9e9c, 0xff9c9e9c, 0xbb5d605d, 
+	0x22000400, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x22000000, 0x77262826, 0x993a3d3a, 0x99424142, 0x99424142, 0x994d4c4d, 0x99525152, 
+	0x99525452, 0x995a5a5a, 0x99636163, 0x99636163, 0x99656565, 0x99656565, 0x996b696b, 0x996b696b, 
+	0x996b6c6e, 0x996b6c6e, 0x996b6f70, 0x996b6f70, 0x99737173, 0x99737173, 0x99737173, 0x99737473, 
+	0x99737576, 0x99737576, 0x99737576, 0x99737576, 0x99767876, 0x99797b79, 0x99797b79, 0x99797b79, 
+	0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997e7c7e, 0x997b7d7b, 0x997b7d7b, 0x997e807e, 0x997e807e, 
+	0x99848084, 0x99848084, 0x99848384, 0x99848384, 0x99868486, 0x99868486, 0x99868486, 0x99868486, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99868786, 0x99868786, 0x99868786, 0x99848684, 
+	0x99868886, 0x99868886, 0x99868886, 0x99868886, 0x99868886, 0x99868886, 0x99868886, 0x99868886, 
+	0x998c888c, 0x998c888c, 0x998c888c, 0x998c888c, 0x99898a89, 0x99868686, 0x99898a89, 0x99898a89, 
+	0x998c888c, 0x998c888c, 0x998c888c, 0x998c8b8c, 0x99898b89, 0x99868886, 0x99868886, 0x99868886, 
+	0x99868786, 0x99868786, 0x99868786, 0x99868786, 0x99868786, 0x99848684, 0x99848684, 0x99868786, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848284, 0x99868686, 0x99848284, 0x99848284, 
+	0x99848384, 0x99848384, 0x99848284, 0x99848284, 0x997e807e, 0x997e807e, 0x997e807e, 0x997b7d7b, 
+	0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7b7b, 0x997b7b7b, 0x997b797b, 0x997b797b, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99737573, 0x99707370, 0x99707370, 0x996e706e, 
+	0x996b6d6b, 0x99686968, 0x99656565, 0x99656565, 0x99636163, 0x99636163, 0x995d5c5d, 0x99585658, 
+	0x994a494a, 0x994a494a, 0x994a494a, 0x77191b19, 0x77000000, 0x77000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0xaa736d73, 0xff9fa29f, 0xff9fa29f, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffbdbabd, 0xffbdbabd, 0xffc5c2c5, 0xffc5c2c5, 0xffc8c6c8, 0xffc8c6c8, 0xffcecace, 0xffcecace, 
+	0xffd0cdd0, 0xffd0cdd0, 0xffd3d0d3, 0xffd3d0d3, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d4d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d8d6, 0xffd6d8d6, 0xffd6d9d6, 0xffdedbde, 0xffdedcde, 0xffdedcde, 0xffdedcde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e4e6, 0xffe6e4e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e8e9, 0xffe6e8e9, 0xffe6e7e6, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe6e7e6, 
+	0xffefebe6, 0xffefebe6, 0xffefebe6, 0xffefebe6, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffedeaed, 0xffede9ed, 
+	0xffeae8e9, 0xffe5e7e9, 0xffe8e7e9, 0xffe7e7e6, 0xffe6e6e6, 0xffe6e6e5, 0xffe5e6e5, 0xffe3e4e3, 
+	0xffe3e3e3, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e0e1, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedddb, 
+	0xffdedddb, 0xffdedcd9, 0xffdedcd9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd3d4d3, 0xffd0d1d0, 0xffcecece, 0xffcecece, 0xffc8cacb, 0xffc3c6c8, 0xffc5c2c5, 
+	0xffc5c2c5, 0xffbdbcbd, 0xffb5b5b5, 0xffadaead, 0xffadaead, 0xffadaead, 0xff8f908f, 0x774a4d4a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x66131413, 0x993a3d3a, 0x99424142, 0x99424142, 0x99474647, 0x994d4c4d, 
+	0x99525452, 0x995a5a5a, 0x995a5a5a, 0x99636163, 0x99656565, 0x99656565, 0x99656565, 0x996b696b, 
+	0x996b6c6e, 0x996b6c6e, 0x996b6f70, 0x996b6f70, 0x99737173, 0x99737173, 0x99737173, 0x99737373, 
+	0x99737573, 0x99737576, 0x99737576, 0x99737576, 0x99767876, 0x99767876, 0x99767876, 0x99797b79, 
+	0x997e7c7e, 0x997e7c7e, 0x99817f81, 0x99817f81, 0x997b7d7b, 0x997e807e, 0x997e807e, 0x997e807e, 
+	0x99848384, 0x99848384, 0x99848384, 0x99848384, 0x99868486, 0x99868486, 0x99868486, 0x99868486, 
+	0x99868786, 0x99868786, 0x99868786, 0x99868786, 0x99868786, 0x99898889, 0x99868786, 0x99868786, 
+	0x99868886, 0x99868886, 0x99898b89, 0x99898b89, 0x99868886, 0x99898b89, 0x99898b89, 0x99898b89, 
+	0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x99898a89, 0x99898a89, 0x99898a89, 0x99898a89, 
+	0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x99868886, 0x99898b89, 0x99868886, 0x99868886, 
+	0x99898889, 0x99898889, 0x99898889, 0x99868786, 0x99868786, 0x99868786, 0x99848684, 0x99868786, 
+	0x99848684, 0x99868786, 0x99898889, 0x99848684, 0x99868686, 0x99848284, 0x99868686, 0x99868686, 
+	0x99848384, 0x99848484, 0x99848284, 0x99848384, 0x99818381, 0x997e807e, 0x997e807e, 0x997e807e, 
+	0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7b7b, 0x997b7b7b, 
+	0x997b797b, 0x99797879, 0x99767776, 0x99767776, 0x99737573, 0x99707370, 0x99707370, 0x996b6d6b, 
+	0x99686968, 0x99686968, 0x99656565, 0x99636163, 0x99636163, 0x995d5c5d, 0x99585658, 0x99585658, 
+	0x994a494a, 0x994a494a, 0x99313231, 0x77000400, 0x77000000, 0x66000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x554d494d, 0xff9fa29f, 0xff9fa29f, 0xff9fa29f, 0xffb5b6b5, 
+	0xffb5b2b5, 0xffbdbabd, 0xffbdbabd, 0xffc5c2c5, 0xffc8c6c8, 0xffc8c6c8, 0xffc8c6c8, 0xffcecace, 
+	0xffd0cdd0, 0xffd0cdd0, 0xffd3d0d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d4d6, 0xffd6d5d6, 
+	0xffd6d7d6, 0xffd6d9d6, 0xffd6d9d6, 0xffd6d9d6, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedcde, 
+	0xffdedfde, 0xffdedfde, 0xffdee0de, 0xffdee0de, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 
+	0xffe6e5e6, 0xffe6e4e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe6e9ec, 0xffe6e8e9, 0xffe6e9ec, 0xffe6e9ec, 0xffe9e9e9, 0xffececec, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffefece9, 0xffefebe6, 0xffefece9, 0xffefece9, 0xffefebef, 0xffefecef, 0xffefecef, 0xffefecef, 
+	0xffefecef, 0xffefecef, 0xffefecef, 0xffefecef, 0xffefebef, 0xffeeecef, 0xffeeeced, 0xffede9ed, 
+	0xffede9ed, 0xffede7ec, 0xffece7ec, 0xffeae7ea, 0xffe7e7e7, 0xffe6e6e6, 0xffe5e6e5, 0xffe3e5e3, 
+	0xffe3e4e3, 0xffe4e4e4, 0xffe1e1e1, 0xffe1e0e1, 0xffe1e0e1, 0xffe1e0e1, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedddb, 0xffdedddb, 0xffdbdcdb, 0xffdbdcdb, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d7d6, 
+	0xffd3d4d3, 0xffd3d4d3, 0xffd0d1d0, 0xffcecece, 0xffcecece, 0xffc8cacb, 0xffc3c6c8, 0xffc5c2c5, 
+	0xffbdbcbd, 0xffbdbcbd, 0xffb5b5b5, 0xffadaead, 0xffadaead, 0xffadaead, 0xff8f908f, 0x44313331, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x55000000, 0x993a3d3a, 0x99424142, 0x99424142, 0x99424142, 0x994d4c4d, 
+	0x99525452, 0x995a5a5a, 0x995a5a5a, 0x995a5a5a, 0x99606160, 0x99606160, 0x99656565, 0x996b696b, 
+	0x996b696b, 0x996b6c6e, 0x996b6f70, 0x996b6f70, 0x99737173, 0x99737173, 0x99737373, 0x99737373, 
+	0x99737573, 0x99737576, 0x99737576, 0x99737579, 0x99767876, 0x99767876, 0x99797b79, 0x997b7d7b, 
+	0x99817f81, 0x997e7c7e, 0x997e7c7e, 0x99817f81, 0x997e807e, 0x997e807e, 0x99818381, 0x99818381, 
+	0x99848384, 0x99848384, 0x99848384, 0x99848384, 0x99868486, 0x99898789, 0x99868486, 0x99898789, 
+	0x99868786, 0x99868786, 0x99868786, 0x99868786, 0x99898889, 0x99898889, 0x998c8a8c, 0x99898889, 
+	0x99898b89, 0x99898b89, 0x99898b89, 0x99898b89, 0x99898b89, 0x99898b89, 0x99898b89, 0x99898b89, 
+	0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x998c8e8c, 0x998c8e8c, 0x99898a89, 0x998c8e8c, 0x99898a89, 
+	0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x99898b89, 0x99898b89, 0x99898b89, 0x99868886, 
+	0x998c8a8c, 0x998c8a8c, 0x99898889, 0x99868786, 0x998c8a8c, 0x99898889, 0x99868786, 0x99868786, 
+	0x99868786, 0x99898889, 0x998c8a8c, 0x99868786, 0x99868686, 0x99868686, 0x99868686, 0x99868686, 
+	0x99848484, 0x99848484, 0x99848484, 0x99848384, 0x99818381, 0x997e807e, 0x997e807e, 0x997e807e, 
+	0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7b7b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x99767776, 0x99767776, 0x99737573, 0x99707370, 0x996e706e, 0x996b6d6b, 
+	0x99686968, 0x99686968, 0x99656565, 0x99636163, 0x99636163, 0x995d5c5d, 0x99585658, 0x99525152, 
+	0x994a494a, 0x994a494a, 0x88313231, 0x77000400, 0x77000000, 0x55000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x22262426, 0xee9fa29f, 0xff9fa29f, 0xff9fa29f, 0xff9fa29f, 
+	0xffb5b2b5, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffc3c2c3, 0xffc3c2c3, 0xffc8c6c8, 0xffcecace, 
+	0xffcecace, 0xffd0cdd0, 0xffd3d0d3, 0xffd3d0d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d5d6, 0xffd6d5d6, 
+	0xffd6d8d6, 0xffd6d7d6, 0xffd6d9d6, 0xffd6d9d6, 0xffdedbde, 0xffdedbde, 0xffdedcde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdee0de, 0xffe1e1e1, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 
+	0xffe6e4e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e7e6, 0xffe9e8e9, 0xffe6e7e6, 0xffe9e8e9, 
+	0xffe6e9ec, 0xffe6e9ec, 0xffe6e9ec, 0xffe6e9ec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 
+	0xffefedec, 0xffefece9, 0xffefece9, 0xffefece9, 0xffefecef, 0xffefecef, 0xffefedef, 0xffefecef, 
+	0xffefedef, 0xffefedef, 0xffefedef, 0xffefefef, 0xffefedef, 0xffefedef, 0xffeeecee, 0xffeee9ee, 
+	0xffede9ed, 0xffedeaec, 0xffeceaec, 0xffe9eae9, 0xffe8e7e8, 0xffe7e7e7, 0xffe7e5e7, 0xffe4e4e4, 
+	0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e1e4, 0xffe4e1e4, 0xffe1e0e1, 0xffe1e0e1, 0xffdedfde, 
+	0xffdedfde, 0xffdedddb, 0xffdedcd9, 0xffdbdcdb, 0xffdbdcdb, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d7d6, 
+	0xffd3d4d3, 0xffd0d1d0, 0xffd0d1d0, 0xffcecece, 0xffc8cacb, 0xffc3c6c8, 0xffbdc2c5, 0xffc5c2c5, 
+	0xffbdbcbd, 0xffb5b5b5, 0xffb5b5b5, 0xffadaead, 0xffadaead, 0xff8f908f, 0xbb707370, 0x11191a19, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x33000000, 0x77131413, 0x99424142, 0x99424142, 0x99424142, 0x99424142, 
+	0x994a4d4a, 0x99525452, 0x99525452, 0x995a5a5a, 0x995a5d5a, 0x99606160, 0x99656565, 0x99656565, 
+	0x996b696b, 0x996b6c6e, 0x996b6c6e, 0x996b6f70, 0x99737173, 0x99737173, 0x99737373, 0x99737573, 
+	0x99737576, 0x99737576, 0x99737576, 0x99737579, 0x99767876, 0x99797b79, 0x997b7d7b, 0x997b7d7b, 
+	0x99817f81, 0x997e7c7e, 0x99817f81, 0x99848284, 0x997e807e, 0x99818381, 0x99818381, 0x99818381, 
+	0x99848384, 0x99848684, 0x99848684, 0x99848684, 0x99898789, 0x99898789, 0x99898789, 0x998c8a8c, 
+	0x99898889, 0x99868786, 0x99898889, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x99898b89, 0x99898b89, 0x99898b89, 0x998c8e8c, 0x99898b89, 0x998c8e8c, 0x99898b89, 0x998c8e8c, 
+	0x998c8b8c, 0x998c8e8c, 0x998c8b8c, 0x998c8b8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x998c8b8c, 0x99898b89, 0x998c8e8c, 0x99898b89, 0x99898b89, 
+	0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x99898889, 0x99898889, 
+	0x99898889, 0x99868786, 0x99868786, 0x99868786, 0x99898a89, 0x99868686, 0x99868686, 0x99868686, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99818381, 0x99818381, 0x99818381, 0x997e807e, 
+	0x99848284, 0x997e7f7e, 0x99818081, 0x997e7f7e, 0x997b7d7b, 0x997b7d7b, 0x997b7c7b, 0x997b7c7b, 
+	0x997b797b, 0x99797879, 0x99767776, 0x99767776, 0x99737573, 0x996e706e, 0x996b6d6b, 0x996b6d6b, 
+	0x99686968, 0x99656565, 0x99636163, 0x99636163, 0x995d5c5d, 0x99585658, 0x99585658, 0x99525152, 
+	0x994a494a, 0x994a494a, 0x77191b19, 0x77000400, 0x77000000, 0x33000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x99737973, 0xff9fa29f, 0xff9fa29f, 0xff9fa29f, 
+	0xffadaaad, 0xffb5b2b5, 0xffbdbabd, 0xffbdbabd, 0xffbdbebd, 0xffc3c2c3, 0xffc8c6c8, 0xffc8c6c8, 
+	0xffcecace, 0xffd0cdd0, 0xffd0cdd0, 0xffd3d0d3, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d5d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d8d6, 0xffd6d9d6, 0xffd6d9d6, 0xffdedbde, 0xffdeddde, 0xffdedfde, 0xffdedfde, 
+	0xffdee1de, 0xffdedfde, 0xffdee0de, 0xffdee3de, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe6e7e6, 
+	0xffe6e5e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe9e8e9, 0xffe9e8e9, 0xffe9e8e9, 0xffefebef, 
+	0xffe6ebef, 0xffe6e9ec, 0xffe6ebef, 0xffe6ebef, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 
+	0xffefedec, 0xffefedec, 0xffefefef, 0xffefefef, 0xffefedef, 0xffefefef, 0xffefedef, 0xffefefef, 
+	0xffefedef, 0xffefefef, 0xffefedef, 0xffefedef, 0xffefedef, 0xffefedef, 0xffeeedef, 0xffeeeded, 
+	0xffeeebed, 0xffece9eb, 0xffeaeaea, 0xffe8e9e8, 0xffe8e9e8, 0xffe8e9e8, 0xffe6e7e7, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe4e4e4, 0xffe4e4e4, 0xffe6e3e6, 0xffe4e1e4, 0xffe6e3e6, 0xffe1e0e1, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdbdcdb, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd6d7d6, 
+	0xffd3d4d3, 0xffd0d1d0, 0xffcecece, 0xffc8cacb, 0xffc3c6c8, 0xffc3c6c8, 0xffbdc2c5, 0xffbdbcbd, 
+	0xffbdbcbd, 0xffb5b5b5, 0xffadaead, 0xffadaead, 0xffadaead, 0xff8f908f, 0x66525552, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x55080408, 0x882c2b2c, 0x99424142, 0x99424142, 0x99424142, 
+	0x99424142, 0x994d4e4d, 0x99525552, 0x99525552, 0x995a5a5d, 0x99636163, 0x99636163, 0x99636163, 
+	0x9968686e, 0x9968686e, 0x996b6d73, 0x996b6d73, 0x99736d6b, 0x9973706e, 0x99737370, 0x99737573, 
+	0x99737573, 0x99767776, 0x99767776, 0x997b797b, 0x997b797b, 0x997b797b, 0x997e7c7e, 0x997e7c7e, 
+	0x997b7d7b, 0x997b7d7b, 0x997e807e, 0x99818381, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 
+	0x99848684, 0x99848684, 0x99848684, 0x99868786, 0x998c8886, 0x998c8886, 0x998c8886, 0x998c8b89, 
+	0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998f8c8f, 0x998f8c8f, 0x998c8a8c, 0x998c8a8c, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998f908f, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998f8c8f, 0x998c8a8c, 0x998f8c8f, 0x998c8a8c, 0x998c8e8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x9986888c, 0x9986888c, 0x9986888c, 0x9986888c, 0x998c8886, 0x998c8886, 0x998c8886, 0x998c8886, 
+	0x99868786, 0x99868786, 0x99848684, 0x99848684, 0x99848684, 0x99848484, 0x99848484, 0x99848384, 
+	0x99818381, 0x997e807e, 0x997e807e, 0x997e807e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99797b79, 
+	0x9973797b, 0x9973797b, 0x99737779, 0x99737476, 0x99737173, 0x99737173, 0x996e6d6e, 0x99686968, 
+	0x9963656b, 0x9963656b, 0x99606065, 0x99606065, 0x995a5d5a, 0x995a5d5a, 0x994a4c4a, 0x994a4c4a, 
+	0x994a494a, 0x88343234, 0x77080408, 0x77080408, 0x66000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22000400, 0xdda5a2a5, 0xffa5a2a5, 0xffa5a2a5, 
+	0xffaaa9aa, 0xffafafaf, 0xffb5b6b5, 0xffb5b6b5, 0xffbdbcbd, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffc8cacb, 0xffcbced0, 0xffcbced0, 0xffcbced0, 0xffd6d1d0, 0xffd6d4d3, 0xffd6d4d3, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd9d9d9, 0xffd9d9d9, 0xffdbdcdb, 0xffdeddde, 0xffdeddde, 0xffdeddde, 0xffdeddde, 
+	0xffdedfde, 0xffe1e1e1, 0xffe1e1e1, 0xffe4e4e4, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e5e6, 0xffe6e5e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe9e9e9, 0xffefebe6, 0xffefebe6, 0xffefebe6, 0xffefece9, 
+	0xffefebef, 0xffefebef, 0xffefebef, 0xffefedf1, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xfff1f2f1, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff0efef, 0xfff3f2f2, 0xfff1efef, 
+	0xfff1eeef, 0xffeeebec, 0xffeeebee, 0xffebe9ea, 0xffe9e9e9, 0xffe6e7e7, 0xffe6e7e6, 0xffe6e8e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe4e4e4, 0xffe4e4e4, 0xffe1e1e1, 0xffe1e1e1, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdbdddb, 0xffd6dbde, 0xffd6dbde, 0xffd6d8db, 0xffd6d5d9, 0xffd6d7de, 
+	0xffd0d1d6, 0xffd0d1d6, 0xffcbccce, 0xffc5c6c5, 0xffc5c6c5, 0xffc0c2c0, 0xffc0c2c0, 0xffbdbebd, 
+	0xffb5b5b5, 0xffb5b5b5, 0xffadabad, 0xffa5a6a5, 0xffa5a6a5, 0xcc707170, 0x11080808, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x33000000, 0x66161616, 0x99424142, 0x99424142, 0x99424142, 
+	0x99424142, 0x99474847, 0x994d4e4d, 0x99525552, 0x995a5a5d, 0x995a5a5d, 0x99636163, 0x99636163, 
+	0x9968686e, 0x9968686e, 0x9968686e, 0x996b6d73, 0x99736d6b, 0x99737370, 0x99737573, 0x99737573, 
+	0x99767776, 0x99767776, 0x99767776, 0x997b797b, 0x997e7c7e, 0x99817f81, 0x997e7c7e, 0x99817f81, 
+	0x997e807e, 0x997e807e, 0x997e807e, 0x997e807e, 0x99848284, 0x99848686, 0x99848686, 0x99848686, 
+	0x99848684, 0x99868786, 0x99868786, 0x99868786, 0x998c8886, 0x998c8886, 0x998c8b89, 0x998c8b89, 
+	0x998c8c8f, 0x998c8c8f, 0x998c8a8c, 0x998c8c8f, 0x998f8c8f, 0x99918f91, 0x998f8c8f, 0x99918f91, 
+	0x998f8f8f, 0x998f8f8f, 0x998f8f8f, 0x998f8f8f, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 
+	0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 
+	0x998f908f, 0x998f908f, 0x998c8e8c, 0x998f908f, 0x998c8e8c, 0x998f908f, 0x998f908f, 0x998c8e8c, 
+	0x99918f91, 0x998f8c8f, 0x998f8c8f, 0x998f8c8f, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8a8c, 
+	0x99898b8c, 0x99898b8c, 0x99898b8c, 0x99898b8c, 0x998c8b89, 0x998c8886, 0x998c8b89, 0x998c8886, 
+	0x99898889, 0x99868786, 0x99868786, 0x99868786, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99818381, 0x99818381, 0x99818381, 0x997e807e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99797b79, 
+	0x9973797b, 0x99737779, 0x99737779, 0x99737476, 0x99737173, 0x996e6d6e, 0x99686968, 0x99686968, 
+	0x9963656b, 0x9963656b, 0x99606065, 0x995d5a60, 0x995a5d5a, 0x995a5d5a, 0x994a4c4a, 0x994a4c4a, 
+	0x99343234, 0x771e1b1e, 0x77080408, 0x77080408, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x55373937, 0xeea5a2a5, 0xffa5a2a5, 
+	0xffa5a2a5, 0xffaaa9aa, 0xffafafaf, 0xffb5b6b5, 0xffbdbcbd, 0xffbdbcbd, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffc8cacb, 0xffc8cacb, 0xffc8cacb, 0xffced2d6, 0xffd6d1d0, 0xffd6d4d3, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffdbdcdb, 0xffdeddde, 0xffdee0de, 0xffdeddde, 0xffdee0de, 
+	0xffe1e1e1, 0xffe1e1e1, 0xffe4e4e4, 0xffe4e4e4, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e7e6, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffefebe6, 0xffefebe6, 0xffefece9, 0xffefece9, 
+	0xffefedf1, 0xffefedf1, 0xffefedf1, 0xffefedf1, 0xffefefef, 0xfff1f0f1, 0xffefefef, 0xfff1f0f1, 
+	0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 
+	0xfff4f4f4, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff4f4f4, 0xfff1f2f1, 0xfff2f2f1, 0xfff1f0f0, 
+	0xfff1efef, 0xffefeded, 0xffede9ed, 0xffece9ec, 0xffeae9ea, 0xffe9e9e9, 0xffe9e9e9, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdbdddb, 0xffd6dbde, 0xffd6d8db, 0xffd6d8db, 0xffd6d5d9, 0xffd0d1d6, 
+	0xffd0d1d6, 0xffcbccce, 0xffcbccce, 0xffc5c6c5, 0xffc5c6c5, 0xffc0c2c0, 0xffbabeba, 0xffbdbebd, 
+	0xffb5b5b5, 0xffb5b5b5, 0xffadabad, 0xffa5a6a5, 0xdda5a6a5, 0x443c3d3c, 0x00080808, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x55000000, 0x77161616, 0x99424142, 0x99424142, 
+	0x99424142, 0x99424142, 0x99474847, 0x994d4e4d, 0x99525458, 0x995a5a5d, 0x99636163, 0x99636163, 
+	0x99656268, 0x9968686e, 0x9968686e, 0x996b6d73, 0x9973706e, 0x99737370, 0x99737573, 0x99737573, 
+	0x99767776, 0x99767776, 0x997b797b, 0x997b797b, 0x99817f81, 0x99817f81, 0x99817f81, 0x99817f81, 
+	0x997e807e, 0x997e807e, 0x99818381, 0x99818381, 0x99848686, 0x99848686, 0x99848686, 0x99848686, 
+	0x99868786, 0x99868786, 0x998c8a8c, 0x998c8a8c, 0x998c8b89, 0x998c8b89, 0x998c8b89, 0x998c8b89, 
+	0x998c8c8f, 0x998c8c8f, 0x998c8c8f, 0x998c8f91, 0x99918f91, 0x99918f91, 0x99949294, 0x99949294, 
+	0x99919091, 0x99919091, 0x998f8f8f, 0x99919091, 0x998f908f, 0x99919391, 0x998f908f, 0x99919391, 
+	0x998f908f, 0x998f908f, 0x99919391, 0x998f908f, 0x998f908f, 0x998f908f, 0x99919391, 0x998f908f, 
+	0x998f908f, 0x998f908f, 0x99919391, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 0x998f908f, 
+	0x99918f91, 0x99918f91, 0x99918f91, 0x99918f91, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x99898b8c, 0x99898b8c, 0x99898b8c, 0x99898b8c, 0x998c8b89, 0x998c8b89, 0x998c8b89, 0x998c8886, 
+	0x998c8a8c, 0x99868786, 0x99868786, 0x99868786, 0x99848684, 0x99848684, 0x99848684, 0x99848484, 
+	0x99818381, 0x99818381, 0x99818381, 0x99818381, 0x997b7d7b, 0x997b7d7b, 0x99797b79, 0x99797b79, 
+	0x99737779, 0x99737779, 0x99737476, 0x99737173, 0x99737173, 0x996e6d6e, 0x99686968, 0x99636563, 
+	0x9963656b, 0x99606065, 0x99606065, 0x995d5a60, 0x995a5d5a, 0x994a4c4a, 0x994a4c4a, 0x994a4c4a, 
+	0x771e1b1e, 0x77080408, 0x77080408, 0x55080408, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000400, 0x886e6d6e, 0xffa5a2a5, 
+	0xffa5a2a5, 0xffa5a2a5, 0xffaaa9aa, 0xffafafaf, 0xffb5b5b5, 0xffbdbcbd, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffc5c6c5, 0xffc8cacb, 0xffc8cacb, 0xffcbced0, 0xffd6d1d0, 0xffd6d4d3, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd9d9d9, 0xffd9d9d9, 0xffdbdcdb, 0xffdbdcdb, 0xffdee0de, 0xffdee0de, 0xffdee0de, 0xffdee0de, 
+	0xffe1e1e1, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe6e5e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffececec, 0xffececec, 0xffefedec, 0xffefece9, 0xffefedec, 0xffefedec, 
+	0xffefedf1, 0xffefedf1, 0xffefedf1, 0xffeff0f4, 0xfff1f0f1, 0xfff1f0f1, 0xfff4f2f4, 0xfff4f2f4, 
+	0xfff1f2f1, 0xfff4f4f4, 0xfff1f2f1, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 
+	0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff2f1f1, 
+	0xfff0edee, 0xffeceae9, 0xffeae8e7, 0xffeae7ea, 0xffe8e6e8, 0xffeae9ea, 0xffe9e9e9, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffdedfde, 
+	0xffdedfde, 0xffdbdddb, 0xffdbdddb, 0xffd6d8db, 0xffd6d8db, 0xffd6d5d9, 0xffd6d2d6, 0xffd0d1d6, 
+	0xffcbccce, 0xffcbccce, 0xffc5c6c5, 0xffc5c6c5, 0xffc0c2c0, 0xffbabeba, 0xffbabeba, 0xffb5b5b5, 
+	0xffb5b5b5, 0xffadabad, 0xffadabad, 0xeea5a6a5, 0x773c3d3c, 0x00080808, 0x00080808, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x55000000, 0x77161616, 0x99424142, 
+	0x99424142, 0x99424142, 0x99424142, 0x99474847, 0x994a4d52, 0x99525458, 0x995a5a5d, 0x99636163, 
+	0x99656268, 0x99656268, 0x9968686e, 0x9968686e, 0x99736d6b, 0x9973706e, 0x99737370, 0x99737573, 
+	0x99737573, 0x99767776, 0x99797879, 0x997b797b, 0x997e7c7e, 0x997e7c7e, 0x99817f81, 0x99848284, 
+	0x99818381, 0x99818381, 0x99818381, 0x99848684, 0x99848686, 0x99848686, 0x99848686, 0x99848a89, 
+	0x99898889, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8b89, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998c8f91, 0x998c8f91, 0x998c8f91, 0x998c9294, 0x99949294, 0x99949294, 0x99949294, 0x99949294, 
+	0x99949294, 0x99949294, 0x99949294, 0x99949294, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 
+	0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 
+	0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x99919391, 0x998f908f, 
+	0x99949294, 0x99949294, 0x99949294, 0x99949294, 0x998c928c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8b89, 0x998c8b89, 0x998c8b89, 0x998c8b89, 
+	0x998c8a8c, 0x998c8a8c, 0x99868786, 0x99868786, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99818381, 0x99818381, 0x997e807e, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99797b79, 0x99767876, 
+	0x99737476, 0x99737476, 0x99737173, 0x99737173, 0x996e6d6e, 0x99686968, 0x99686968, 0x99636563, 
+	0x99606065, 0x99606065, 0x995d5a60, 0x995a555a, 0x994a4c4a, 0x994a4c4a, 0x994a4c4a, 0x77292829, 
+	0x77080408, 0x77080408, 0x66080408, 0x11080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000400, 0x00000400, 0x996e6d6e, 
+	0xeea5a2a5, 0xffa5a2a5, 0xffa5a2a5, 0xffaaa9aa, 0xffadaead, 0xffb5b5b5, 0xffbdbcbd, 0xffc5c2c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc8cacb, 0xffcbced0, 0xffd6d1d0, 0xffd6d1d0, 0xffd6d4d3, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd9d9d9, 0xffdbdcdb, 0xffdbdcdb, 0xffdeddde, 0xffdeddde, 0xffdee0de, 0xffdee3de, 
+	0xffe4e4e4, 0xffe6e7e6, 0xffe4e4e4, 0xffe6e7e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6ebe6, 
+	0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffeff0f4, 0xffeff0f4, 0xffeff0f4, 0xffeff3f7, 0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 
+	0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff7f7f7, 0xfff4f4f4, 0xfff4f4f4, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff5f5f4, 
+	0xffefeeeb, 0xffebe8e8, 0xffe8e5e8, 0xffe7e4e8, 0xffe8e5e8, 0xffeae8ea, 0xffe9e9e9, 0xffe6e9e6, 
+	0xffe6e9e6, 0xffe6e7e6, 0xffe6e8e6, 0xffe6e7e6, 0xffe4e4e4, 0xffe4e4e4, 0xffe1e1e1, 0xffdedfde, 
+	0xffdedfde, 0xffdbdddb, 0xffd6dbd6, 0xffd6d8db, 0xffd6d5d9, 0xffd6d2d6, 0xffd6d2d6, 0xffcbccce, 
+	0xffcbccce, 0xffcbccce, 0xffc5c6c5, 0xffc0c2c0, 0xffc0c2c0, 0xffbabeba, 0xffb5bab5, 0xffb5b5b5, 
+	0xffb5b5b5, 0xffadabad, 0xeea5a2a5, 0x773c3d3c, 0x11080808, 0x00080808, 0x00080808, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22000000, 0x55000000, 0x77191419, 
+	0x882f2d2f, 0x99424142, 0x99424142, 0x99424142, 0x993c3b3c, 0x99525152, 0x99525152, 0x99525152, 
+	0x99636163, 0x99636163, 0x99636163, 0x99636163, 0x99636565, 0x996b7173, 0x996b7173, 0x996b7173, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x99868886, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998f8f8f, 0x998f8f8f, 0x998f8f8f, 0x998f8f8f, 
+	0x99949094, 0x99949094, 0x99949094, 0x999c969c, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x998f9091, 
+	0x99949294, 0x99949294, 0x99949294, 0x99949294, 0x998f8c8f, 0x99949294, 0x99949294, 0x99949294, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 
+	0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7973, 0x997b7973, 0x997b7973, 0x997b7973, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x99636563, 0x99636563, 0x99636563, 0x99636563, 
+	0x99525552, 0x99525552, 0x99525552, 0x99525552, 0x99525152, 0x88373637, 0x771b1b1b, 0x77000000, 
+	0x77000305, 0x66000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x77686968, 0xdd9c9e9c, 0xff9c9e9c, 0xff9c9e9c, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 
+	0xffb8b9b8, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd9dbde, 0xffdee3e6, 0xffdee3e6, 0xffdee3e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffe9e9e9, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff1f0ef, 0xfff1f0ef, 0xfff1f0ef, 0xfff1f0ef, 
+	0xfff1f3f1, 0xfff1f3f1, 0xfff1f3f1, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff6f6f6, 
+	0xffefefef, 0xffeaeae9, 0xffe6e7e7, 0xffe5e4e5, 0xffe5e3e6, 0xffece9ed, 0xffefebef, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffc8c9c8, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xff9c9e9c, 
+	0xff9c9e9c, 0xcc9c9e9c, 0x55343534, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22000000, 0x55000000, 
+	0x66080408, 0x771b181b, 0x99424142, 0x99424142, 0x993c3b3c, 0x993c3b3c, 0x99525152, 0x99525152, 
+	0x99555555, 0x99555555, 0x99636163, 0x99636163, 0x99636565, 0x99636565, 0x996b7173, 0x996b7173, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848384, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x998c8e8c, 0x99868886, 0x998c8e8c, 0x998c8e8c, 0x998f8f8f, 0x99949694, 0x998f8f8f, 0x998f8f8f, 
+	0x99949094, 0x99949094, 0x99949094, 0x99949094, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x998f9091, 
+	0x99949294, 0x99949294, 0x99949294, 0x99949294, 0x99949294, 0x99949294, 0x998f8c8f, 0x99949294, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x99868886, 
+	0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x99848384, 0x99848684, 0x99848684, 0x997e7f7e, 0x997e7f7e, 
+	0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x99767576, 0x997b7973, 0x997b7973, 0x9973706e, 0x9973706e, 
+	0x99737173, 0x99737173, 0x99656465, 0x99656465, 0x99636563, 0x99636563, 0x99636563, 0x99505150, 
+	0x99525552, 0x99525552, 0x99525552, 0x993a3b3a, 0x771b1b1b, 0x66000000, 0x77000000, 0x77000000, 
+	0x66000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x33343534, 0x99686968, 0xee9c9e9c, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 
+	0xffb8b9b8, 0xffb8b9b8, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c8c3, 0xffc5c8c3, 0xffced2ce, 0xffced2ce, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd6dbd6, 0xffd6dbd6, 0xffd9dbde, 0xffd9dbde, 0xffdee3e6, 0xffdee3e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e5e6, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff1f0ef, 0xfff7f7f7, 0xfff1f0ef, 0xfff1f0ef, 
+	0xfff1f3f1, 0xfff1f3f1, 0xfff1f3f1, 0xfff1f3f1, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff6f7f6, 
+	0xfff2f1f1, 0xffebeaea, 0xffe4e5e5, 0xffe3e1e4, 0xffe6e4e7, 0xffedeaed, 0xffefebef, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffced0ce, 0xffd6d7d6, 0xffc8c9c8, 0xffc8c9c8, 0xffc8c9c8, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffb8b7b8, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xdd9c9e9c, 
+	0x88686968, 0x33343534, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 
+	0x44080408, 0x66080408, 0x66080408, 0x771b181b, 0x993c3b3c, 0x993c3b3c, 0x993c3b3c, 0x993c3b3c, 
+	0x99474947, 0x99555555, 0x99555555, 0x99555555, 0x995a5958, 0x99636565, 0x99636565, 0x99636565, 
+	0x99686868, 0x996e6f6e, 0x996e6f6e, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x997e7f7e, 0x99848384, 0x99848384, 0x99848384, 0x99848384, 
+	0x99868886, 0x99868886, 0x99868886, 0x99868886, 0x998f8f8f, 0x99898889, 0x998f8f8f, 0x998f8f8f, 
+	0x99949094, 0x998c8b8c, 0x99949094, 0x99949094, 0x998f908f, 0x99949694, 0x998f908f, 0x99949694, 
+	0x998f908f, 0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99919291, 0x99919291, 0x99919291, 
+	0x99949694, 0x99949694, 0x99949694, 0x99949694, 0x99919291, 0x99919291, 0x99919291, 0x99919291, 
+	0x99949694, 0x9991908f, 0x9991908f, 0x9991908f, 0x998f9091, 0x998f9091, 0x998f9091, 0x998f9091, 
+	0x998f8e8f, 0x998f8e8f, 0x998f8e8f, 0x99949294, 0x99949294, 0x998f8c8f, 0x998f8c8f, 0x998f8c8f, 
+	0x998c8e8c, 0x998c8e8c, 0x998c8e8c, 0x99868886, 0x99868886, 0x99868886, 0x99868886, 0x99818381, 
+	0x99848384, 0x99848384, 0x99848384, 0x99848384, 0x997e7f7e, 0x997e7f7e, 0x99797879, 0x99797879, 
+	0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x9973706e, 0x9973706e, 0x996b6768, 0x996b6768, 
+	0x99656465, 0x99656465, 0x99656465, 0x99585658, 0x99505150, 0x99505150, 0x99505150, 0x99505150, 
+	0x993a3b3a, 0x993a3b3a, 0x77212221, 0x66080808, 0x77000000, 0x77000000, 0x77000000, 0x44000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x44343534, 0xaa7b797b, 0xeeadaaad, 0xffadaaad, 0xffadaaad, 
+	0xffaaabaa, 0xffaaabaa, 0xffb8b9b8, 0xffb8b9b8, 0xffbdbdb8, 0xffc5c8c3, 0xffc5c8c3, 0xffc5c8c3, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd3d2d6, 0xffd9dbde, 0xffd9dbde, 0xffd9dbde, 
+	0xffe1e0e1, 0xffe1e0e1, 0xffe1e0e1, 0xffe6e7e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 0xffe6e5e6, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xfff1f0ef, 0xfff1f0ef, 0xfff1f0ef, 0xfff1f0ef, 
+	0xfff1f3f1, 0xffecefec, 0xfff1f3f1, 0xfff1f3f1, 0xfff1f3f1, 0xfff7f7f7, 0xfff1f3f1, 0xfff7f7f7, 
+	0xfff4f3f4, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff4f3f4, 0xfff7f7f7, 0xfff4f3f4, 
+	0xfff5f5f4, 0xffeeedec, 0xffe4e4e5, 0xffe1e1e2, 0xffe3e1e3, 0xffe5e4e6, 0xffe6e4e6, 0xffe1dfde, 
+	0xffe1dfde, 0xffe1dfde, 0xffe1dfde, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffced0ce, 
+	0xffced0ce, 0xffced0ce, 0xffc5c5c5, 0xffc8c9c8, 0xffc8c9c8, 0xffbabcba, 0xffbabcba, 0xffb8b7b8, 
+	0xffb8b7b8, 0xffb8b7b8, 0xffaaa9aa, 0xffb5b2b5, 0xeeb5b2b5, 0xdd7b7b7e, 0x997b7b7e, 0x33343534, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x22080408, 0x55080408, 0x66080408, 0x66101010, 0x77101010, 0x88262626, 0x883c3b3c, 
+	0x993a3d3a, 0x993a3d3a, 0x99474947, 0x99474947, 0x99524d4a, 0x99524d4a, 0x995a5958, 0x995a5958, 
+	0x99636163, 0x99636163, 0x99636163, 0x99686868, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 0x996b6d6b, 
+	0x99737173, 0x99737173, 0x99797879, 0x99797879, 0x99737573, 0x997b7c7b, 0x997b7c7b, 0x997b7c7b, 
+	0x997b7d7b, 0x997b7d7b, 0x99818381, 0x99818381, 0x99848284, 0x99848284, 0x99848284, 0x99848284, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99848684, 
+	0x99898b89, 0x99848684, 0x99898b89, 0x99898b89, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 0x998c8a8c, 
+	0x998c8684, 0x998c8684, 0x998c8684, 0x998c8684, 0x9984868c, 0x9984868c, 0x9984868c, 0x9984868c, 
+	0x99848684, 0x99848684, 0x99848684, 0x99848684, 0x99898789, 0x99848284, 0x99848284, 0x99848284, 
+	0x99818381, 0x997b7d7b, 0x99818381, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 0x997b7d7b, 
+	0x997b7c7b, 0x997b7c7b, 0x99737573, 0x99737573, 0x99737173, 0x99737173, 0x99737173, 0x99737173, 
+	0x99706d70, 0x99706d70, 0x996b656b, 0x996b656b, 0x99635d63, 0x99635d63, 0x99635d63, 0x99635d63, 
+	0x99585658, 0x99585658, 0x994a494a, 0x994a494a, 0x993c3d3c, 0x993c3d3c, 0x993c3d3c, 0x88292829, 
+	0x77080808, 0x66080808, 0x77080808, 0x77080808, 0x77000000, 0x55000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11191819, 0x33191819, 0x664a494a, 0xbb7b797b, 
+	0xdd9c9e9c, 0xee9c9e9c, 0xffaaabaa, 0xffaaabaa, 0xffb5b2ad, 0xffb5b2ad, 0xffb5b2ad, 0xffbdbdb8, 
+	0xffc5bec5, 0xffc5bec5, 0xffcbc8cb, 0xffcbc8cb, 0xffcecace, 0xffcecace, 0xffcecace, 0xffd3d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffdbd9db, 0xffdbd9db, 0xffd6dbd6, 0xffd6dbd6, 0xffdee0de, 0xffdee0de, 
+	0xffdedfde, 0xffdedfde, 0xffe4e4e4, 0xffe4e4e4, 0xffe6e3de, 0xffe6e3de, 0xffece9e6, 0xffece9e6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffefebe6, 0xffeeeae5, 0xffdedfde, 0xffddddde, 0xffdeddde, 0xffd6d7d6, 0xffd6d7d6, 0xffdbd7d6, 
+	0xffdbd7d6, 0xffdbd7d6, 0xffd6cece, 0xffcecece, 0xffcecece, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c5c5, 
+	0xffc5c5c5, 0xffc5c5c5, 0xffbdbabd, 0xffbabcba, 0xffadaead, 0xffadaead, 0xffadaead, 0xffaaa9aa, 
+	0xffaaa9aa, 0xee9c9a9c, 0xdd9c9a9c, 0xaa7b7b7e, 0x55424347, 0x22080c10, 0x11080c10, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x22000000, 0x44000000, 0x55030103, 0x66050305, 0x66080408, 
+	0x66131213, 0x77131213, 0x88262326, 0x883a353a, 0x88313131, 0x99313131, 0x994a494a, 0x994a494a, 
+	0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 
+	0x99636563, 0x99636563, 0x99636563, 0x99636563, 0x996b6d73, 0x996b6d73, 0x996b6d73, 0x996b6d73, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x997b757b, 0x997b757b, 0x997b757b, 0x997b757b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 0x997b797b, 
+	0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 0x99737573, 
+	0x996b716b, 0x996b716b, 0x996b716b, 0x996b716b, 0x996b696b, 0x996b696b, 0x996b696b, 0x996b696b, 
+	0x99636563, 0x99636563, 0x99636563, 0x99636563, 0x995a595a, 0x995a595a, 0x995a595a, 0x995a595a, 
+	0x99525152, 0x99525152, 0x99525152, 0x99525152, 0x994a494a, 0x994a494a, 0x994a494a, 0x994a494a, 
+	0x99313531, 0x99313531, 0x88313531, 0x88212321, 0x77191419, 0x77100d10, 0x66080708, 0x66000000, 
+	0x77000000, 0x77000000, 0x66000000, 0x55000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030403, 0x11080c08, 
+	0x22000400, 0x442f312f, 0x885d5d5d, 0xbb8c8a8c, 0xdd9c9a9c, 0xdd9c9a9c, 0xee9c9a9c, 0xff9c9a9c, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcececd, 0xffcccdce, 0xffcccdcc, 
+	0xffcbc9cc, 0xffc9c8c9, 0xffc7c4c7, 0xffc2c1c3, 0xffbebdbf, 0xffb6babd, 0xffb5babd, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a2a5, 
+	0xffa5a2a5, 0xffa5a2a5, 0xffa5a2a5, 0xee9c9a9c, 0xee9c9a9c, 0xdd9c9a9c, 0xdd9c9a9c, 0xbb7b797b, 
+	0x77525252, 0x44292b29, 0x22000400, 0x11080c08, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x33000000, 0x44000000, 
+	0x55000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66191819, 0x77191819, 0x77191819, 
+	0x88313331, 0x88313331, 0x88313331, 0x88313331, 0x993f3d3f, 0x993f3d3f, 0x993f3d3f, 0x993f3d3f, 
+	0x99424342, 0x99424342, 0x99424342, 0x99424342, 0x99474a4d, 0x99474a4d, 0x99474a4d, 0x99474a4d, 
+	0x99504d50, 0x99504d50, 0x99504d50, 0x99504d50, 0x99555155, 0x99555155, 0x99555155, 0x99555155, 
+	0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 
+	0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 
+	0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 
+	0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 0x99555455, 
+	0x99505150, 0x99505150, 0x99505150, 0x99505150, 0x99505150, 0x99505150, 0x99505150, 0x99505150, 
+	0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x994a4d4a, 0x99474847, 0x99474847, 0x99474847, 0x99474847, 
+	0x99424342, 0x99424342, 0x99424342, 0x99424342, 0x993c3b3c, 0x993c3b3c, 0x993c3b3c, 0x993c3b3c, 
+	0x99373737, 0x99373737, 0x88373737, 0x88373737, 0x88313131, 0x88313131, 0x77191819, 0x77191819, 
+	0x77101210, 0x66000000, 0x66000000, 0x66000000, 0x77000000, 0x77000000, 0x66000000, 0x55000000, 
+	0x44000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x11000400, 0x11000400, 0x22000400, 0x44343634, 0x77686868, 
+	0x99797b79, 0xbb797b79, 0xcc797b79, 0xcc797b79, 0xddadaead, 0xeeadaead, 0xeeadaead, 0xeeadaead, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcccbcb, 0xffc8c8c9, 0xffc6c5c6, 
+	0xffb3b2b4, 0xffadadaf, 0xffb0b0b3, 0xffafb1b4, 0xffb1b5b9, 0xffb4b9bc, 0xffb5babd, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xeeadaead, 0xeea5a6a5, 0xeea5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xcca5a2a5, 
+	0xcca5a2a5, 0xbb6e6d6e, 0x886e6d6e, 0x66343334, 0x55343334, 0x22343334, 0x11000000, 0x11000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x22000000, 0x33000000, 0x44000000, 0x55000000, 0x55000000, 0x55000000, 0x66000000, 
+	0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66080408, 0x66080408, 0x77080408, 0x77242024, 
+	0x77212221, 0x77212221, 0x77212221, 0x88212221, 0x88242726, 0x88242726, 0x88242726, 0x88242726, 
+	0x882c282c, 0x882c282c, 0x882c282c, 0x882c282c, 0x882f2d2f, 0x882f2d2f, 0x882f2d2f, 0x992f2d2f, 
+	0x882f2e2f, 0x882f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 
+	0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 
+	0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 
+	0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 0x992f2e2f, 
+	0x992c2d2c, 0x992c2d2c, 0x992c2d2c, 0x992c2d2c, 0x992c2d2c, 0x882c2d2c, 0x882c2d2c, 0x882c2d2c, 
+	0x88292829, 0x88292829, 0x88292829, 0x88292829, 0x88242624, 0x88242624, 0x88242624, 0x88242624, 
+	0x88212221, 0x88212221, 0x88212221, 0x88212221, 0x771e1e1e, 0x771e1e1e, 0x771e1e1e, 0x771e1e1e, 
+	0x77000400, 0x66000400, 0x66000400, 0x66000400, 0x66000000, 0x66000000, 0x77000000, 0x77000000, 
+	0x77000000, 0x66000000, 0x66000000, 0x55000000, 0x44000000, 0x33000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x22000400, 0x443a3d3a, 0x443a3d3a, 0x663a3d3a, 
+	0x663c3f3c, 0x773c3f3c, 0x88797b79, 0xaa797b79, 0xbb7e7f7e, 0xbb7e7f7e, 0xbb7e7f7e, 0xbb7e7f7e, 
+	0xcc848684, 0xcc848684, 0xcc848684, 0xcc848684, 0xcc898889, 0xdd898889, 0xdd898889, 0xdd898889, 
+	0xdd8c8b8c, 0xdd8c8b8c, 0xdd8c8b8c, 0xdd8c8b8c, 0xdd8c8b8c, 0xdd8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 
+	0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 
+	0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8c8b8c, 0xee8b8b8b, 0xee898989, 
+	0xee878588, 0xee848285, 0xcc7e7d80, 0xbb7b7c7f, 0xbb797c7e, 0xbb797c7e, 0xaa797c7e, 0xaa737473, 
+	0x88737473, 0x77737473, 0x663a3a3a, 0x55373a37, 0x44373a37, 0x33373a37, 0x22000400, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22000000, 
+	0x33000000, 0x44000000, 0x44000000, 0x55000000, 0x55080408, 0x55080408, 0x66080408, 0x66080408, 
+	0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000400, 0x66000400, 0x66000400, 0x66000400, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66000400, 0x66000400, 0x66000400, 0x66000400, 
+	0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 
+	0x66000400, 0x66000400, 0x66000400, 0x55000400, 0x55000000, 0x44000000, 0x44000000, 0x33000000, 
+	0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 
+	0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 
+	0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080408, 0x00080407, 
+	0x00080408, 0x00060308, 0x00000400, 0x00010100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 
+	0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x22000000, 0x22000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030403, 0x00030403, 
+	0x00050505, 0x00050505, 0x00050505, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030403, 0x00030403, 0x00030403, 
+	0x00030303, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x22000000, 0x22000000, 0x22000000, 0x33000000, 0x33000000, 
+	0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 
+	0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x22000000, 0x22000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030403, 0x00050805, 0x11080c08, 
+	0x22101010, 0x22101010, 0x11101010, 0x11050505, 0x00000400, 0x00000100, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00050805, 0x11050805, 0x11080c08, 0x11080c08, 
+	0x11080808, 0x00030303, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x33000000, 0x22000000, 0x22000000, 0x22000000, 0x11000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x55050705, 0xaa101410, 0xcc191819, 0xcc191819, 0xcc191819, 0xcc191819, 
+	0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191c19, 
+	0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191c19, 0xcc191819, 0xcc191819, 0xcc191819, 0xbb191819, 
+	0x66080808, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x44050405, 0x66100c10, 
+	0x99101010, 0xbb191819, 0xcc191819, 0xdd191819, 0xcc191819, 0xbb191819, 0x99101010, 0x77101010, 
+	0x44080408, 0x22030103, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11080808, 0x55080808, 0xbb4a494a, 0xdd8c8a8c, 0xeea5a6a5, 0xeea5a6a5, 0xeea5a6a5, 0xeea5a6a5, 
+	0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 
+	0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeeadaaad, 0xeea5a6a5, 0xeea5a6a5, 0xeea5a6a5, 0xee8c8e8c, 
+	0xbb3c3b3c, 0x77080808, 0x22080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x00080408, 0x00080408, 0x11080408, 0x33080408, 0x88080408, 0xcc4a464a, 0xee4a464a, 
+	0xee8c8a8c, 0xffa7a6a7, 0xffa7a6a7, 0xffa7a6a7, 0xffafb3af, 0xff898c89, 0xee898c89, 0xee636563, 
+	0xcc4a494a, 0x88080408, 0x44080408, 0x22080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x22080808, 0xaa080808, 0xdd8c8a8c, 0xffcecace, 0xffcbcccb, 0xffcbcccb, 0xffcbcccb, 0xffcbcccb, 
+	0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 
+	0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd3d0d3, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffbdbebd, 
+	0xeea5a2a5, 0xbb080808, 0x33080808, 0x00080808, 0x00000000, 0x110e0d0e, 0x110e0d0e, 0x331b1b1b, 
+	0x44212021, 0x55212021, 0x44212021, 0x22101010, 0x11100f10, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x110b0b0b, 0x110e0f0e, 0x330e0f0e, 0x441b1e1b, 0x330e0f0e, 
+	0x220b0b0b, 0x110b0b0b, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x00080408, 0x11080408, 0x55080408, 0xaa4a464a, 0xee8c888c, 0xff8c888c, 0xffcecace, 
+	0xffc3c2c3, 0xffc3c2c3, 0xffc3c2c3, 0xffdedfde, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffafb3af, 
+	0xff8c8e8c, 0xee8c8e8c, 0xbb4a494a, 0x66080408, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x22080808, 0xcc080808, 0xee8c8a8c, 0xffcecace, 0xffcbcccb, 0xffcbcccb, 0xffdedfde, 0xffdedfde, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffa5a2a5, 0xdd080808, 0x44080808, 0x00080808, 0x00000000, 0x110e0d0e, 0x331b1b1b, 0x551b1b1b, 
+	0x77212021, 0x88212021, 0x88212021, 0x55212021, 0x33211e21, 0x11100f10, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x110b0b0b, 0x22161616, 0x441b1e1b, 0x661b1e1b, 0x661b1e1b, 0x551b1e1b, 
+	0x44161616, 0x220b0b0b, 0x000b0b0b, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x11080408, 0x66080408, 0xcc3c3b3c, 0xee8c888c, 0xffcecace, 0xffcecace, 0xffcecace, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffced2ce, 0xffced2ce, 0xee8c8e8c, 0xcc4a494a, 0x771b1a1b, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x22080808, 0xcc080808, 0xee8c8a8c, 0xffcecace, 0xffcbcccb, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffa5a2a5, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x220e0d0e, 0x551b1b1b, 0x77292829, 
+	0x99313131, 0xaa313131, 0xbb313131, 0xaa313131, 0x77312d31, 0x33211e21, 0x11100f10, 0x11000000, 
+	0x00000000, 0x110b0b0b, 0x22161616, 0x44212021, 0x88292d29, 0x99292d29, 0x99292d29, 0x77292d29, 
+	0x66212021, 0x33161616, 0x110b0b0b, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11080408, 0x55080408, 0xcc3c3b3c, 0xffa5aaa5, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xff8c8e8c, 0xcc524d52, 0x771b1a1b, 0x22000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9a9a9a, 0xffdedfde, 0xffd6d7d6, 0xffdedfde, 0xffdedfde, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffecedec, 0xffecedec, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 0xffe4e5e4, 0xffe4e5e4, 0xffdedfde, 0xffdedfde, 
+	0xffb5b2b5, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x220e0d0e, 0x551b1b1b, 0x88292829, 
+	0xaa292d29, 0xbb292d29, 0xcc292d29, 0xcc212321, 0xbb2c2e2c, 0x882c2e2c, 0x442c2e2c, 0x22101010, 
+	0x11191419, 0x22191419, 0x44292629, 0x99292629, 0xbb292729, 0xbb313131, 0xaa313131, 0x99313131, 
+	0x77212421, 0x44161816, 0x110b0c0b, 0x00000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33080808, 0xbb4a4a4a, 0xee8c8c8c, 0xffcecece, 0xffd6d7d6, 0xffd6d7d6, 0xffdeddde, 0xffdeddde, 
+	0xffdee3de, 0xffe6e9e6, 0xffe6e9e6, 0xffe6e9e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffdedbde, 0xffdedbde, 0xffd6ced6, 0xee8c8e8c, 0xbb4a494a, 0x55080408, 0x11080408, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080808, 0x00080808, 0x00080808, 0x00080808, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9a9a9a, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffecedec, 0xffecedec, 0xfff1f4f1, 0xfff1f4f1, 0xfff1f3f1, 0xfff1f3f1, 0xfff1f3f1, 0xfff1f3f1, 
+	0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xffe9ece9, 0xffe9ece9, 0xffe4e5e4, 0xffdedfde, 
+	0xffb5b2b5, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x110e0d0e, 0x441b1b1b, 0x88292829, 
+	0xbb292d29, 0xcc212321, 0xcc212321, 0xdd191a19, 0xdd1e1f1e, 0xcc1e1f1e, 0x992c2e2c, 0x552c2e2c, 
+	0x33292629, 0x553a373a, 0x993a373a, 0xcc292629, 0xcc211e21, 0xcc292729, 0xbb292729, 0xbb292729, 
+	0x88212421, 0x33161816, 0x110b0c0b, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x11000000, 
+	0x88080808, 0xee8c8c8c, 0xffcecece, 0xffcecece, 0xffd6d7d6, 0xffdeddde, 0xffe6e4e6, 0xffe6e4e6, 
+	0xffe6e9e6, 0xffe6e9e6, 0xffeff0ef, 0xffeff0ef, 0xfff1f2f1, 0xffececec, 0xffececec, 0xffececec, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffdedbde, 0xffced2ce, 0xee8c8e8c, 0x99080408, 0x33080408, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x110e0c0e, 0x11131413, 0x22131413, 0x22131413, 0x22131413, 
+	0x110e120e, 0x110e120e, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9a9a9a, 0xffdedfde, 0xffdedfde, 0xffe6e7e6, 0xffe6e7e6, 0xffefefef, 
+	0xfff1f4f1, 0xfff1f4f1, 0xfff1f4f1, 0xfff1f4f1, 0xfff4f7f4, 0xfff4f7f4, 0xfff4f7f4, 0xfff4f7f4, 
+	0xfff4f6f4, 0xfff4f6f4, 0xfff4f6f4, 0xfff4f6f4, 0xffeff3ef, 0xffe9ece9, 0xffe9ece9, 0xffe4e5e4, 
+	0xffb5b2b5, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x000e0d0e, 0x221b1b1b, 0x55292829, 
+	0xaa292d29, 0xcc212321, 0xdd191a19, 0xdd191a19, 0xee101010, 0xdd101010, 0xdd1e1f1e, 0xaa3a3d3a, 
+	0x774a494a, 0x993a373a, 0xcc292629, 0xdd191419, 0xdd211e21, 0xdd211e21, 0xcc292729, 0xaa292729, 
+	0x66212421, 0x33161816, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x44050405, 
+	0xcc4a4a4a, 0xff8c8c8c, 0xffcecece, 0xffcecece, 0xffdeddde, 0xffe6e4e6, 0xffe6e4e6, 0xffefebef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f1, 
+	0xffeff3ef, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffced2ce, 0xff8c8e8c, 0xcc4a494a, 0x55080408, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x110e0c0e, 0x221b181b, 0x441e201e, 0x661e201e, 0x66292d29, 0x66292d29, 
+	0x551b1f1b, 0x331b1f1b, 0x110e120e, 0x11000400, 0x00030303, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9a9a9a, 0xffdedfde, 0xffdedfde, 0xffe6e7e6, 0xffefefef, 0xffefefef, 
+	0xfff1f4f1, 0xfff1f4f1, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 
+	0xfff7fbf7, 0xfff7fbf7, 0xfff4f6f4, 0xfff4f6f4, 0xffeff3ef, 0xffeff3ef, 0xffe9ece9, 0xffe4e5e4, 
+	0xffb5b2b5, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x110e0d0e, 0x221b1b1b, 
+	0x66292d29, 0xbb292d29, 0xdd191a19, 0xee101010, 0xee101010, 0xee101010, 0xee101010, 0xdd1e1f1e, 
+	0xbb292629, 0xdd292629, 0xee191419, 0xee191419, 0xdd191419, 0xdd191419, 0xcc292729, 0x88313131, 
+	0x44212421, 0x330b0c0b, 0x22000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x66100c10, 
+	0xee4a4a4a, 0xffcecece, 0xffcecece, 0xffcecece, 0xffe6e4e6, 0xffe6e4e6, 0xffefebef, 0xffefebef, 
+	0xffeff0ef, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xffeff3ef, 0xffeff3ef, 0xffe6e7e6, 0xffe6e7e6, 0xffced2ce, 0xffced2ce, 0xee4a494a, 0x88080408, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x110e0c0e, 0x331b181b, 0x66292429, 0x88292d29, 0xaa292d29, 0xaa292d29, 0xaa292d29, 
+	0x99292d29, 0x77292d29, 0x551b1f1b, 0x220e120e, 0x11080808, 0x00030303, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffe6e3e6, 0xffece9ec, 0xfff1f0f1, 0xfff1f0f1, 
+	0xfff7f7f7, 0xfffafafa, 0xfffcfcfc, 0xfffcfcfc, 0xfffffcff, 0xfffffcff, 0xfffffcff, 0xfffffcff, 
+	0xfffffcff, 0xfffffcff, 0xfffffbff, 0xfffffbff, 0xfff1f4f1, 0xfff1f4f1, 0xffecedec, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00050405, 0x11100c10, 
+	0x33212321, 0x77313531, 0xbb313531, 0xee101210, 0xee080808, 0xee080808, 0xee080808, 0xee080808, 
+	0xee100c10, 0xee100c10, 0xee100c10, 0xee100c10, 0xee101010, 0xdd212021, 0xaa313131, 0x55313131, 
+	0x33101010, 0x33050505, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x11000000, 0x99101310, 
+	0xee8c8e8c, 0xffc3c4c3, 0xffdedfde, 0xffdedfde, 0xffe6e7e6, 0xffecedec, 0xffecedec, 0xfff1f4f1, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfffafafa, 0xfffafafa, 0xfffafafa, 0xfffafafa, 0xfffafafa, 0xfff7f7f7, 
+	0xfffaf6fa, 0xfff4f0f4, 0xfff4f0f4, 0xffefebef, 0xffe6e7e6, 0xffe6e7e6, 0xeea2a3a2, 0xaa191c19, 
+	0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030303, 
+	0x11080808, 0x221e201e, 0x66292d29, 0xaa292d29, 0xbb292d29, 0xcc262726, 0xcc262726, 0xcc262726, 
+	0xcc262726, 0xbb292d29, 0x88262726, 0x55242224, 0x220b0c0b, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffe6e3e6, 0xffece9ec, 0xfff1f0f1, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfffcfcfc, 0xfffcfcfc, 0xffffffff, 0xfffffeff, 0xfffffeff, 0xfffffeff, 0xfffffeff, 
+	0xfffffeff, 0xfffffeff, 0xfffffeff, 0xfffffbff, 0xfff7fbf7, 0xfff1f4f1, 0xfff1f4f1, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x11050405, 
+	0x11101210, 0x33212321, 0x77313531, 0xcc313531, 0xee080808, 0xee080808, 0xff080808, 0xff080808, 
+	0xff050705, 0xee050705, 0xee0b090b, 0xee100c10, 0xee101010, 0xbb313131, 0x77313131, 0x44212021, 
+	0x33050505, 0x33000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x22000000, 0xbb191c19, 
+	0xffa7a9a7, 0xffc3c4c3, 0xffdedfde, 0xffdedfde, 0xffe6e7e6, 0xffecedec, 0xfff1f4f1, 0xfff1f4f1, 
+	0xfffafafa, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffffbff, 0xfffaf6fa, 0xfff4f0f4, 0xfff4f0f4, 0xffe6e7e6, 0xffe6e7e6, 0xffa2a3a2, 0xcc191c19, 
+	0x44000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00050505, 
+	0x11131413, 0x551e201e, 0x99292d29, 0xbb292d29, 0xcc242224, 0xcc242224, 0xdd242224, 0xdd242224, 
+	0xdd242224, 0xcc262726, 0xbb292d29, 0x88262726, 0x33161816, 0x110b0c0b, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffe6e3e6, 0xffece9ec, 0xfff1f0f1, 0xfff7f7f7, 
+	0xfffafafa, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffeff, 0xfffffcff, 0xfff7fbf7, 0xfff1f4f1, 0xfff1f4f1, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x22101210, 0x44212321, 0x88313531, 0xcc2f332f, 0xee080808, 0xff080808, 0xff080808, 
+	0xff050705, 0xff050705, 0xee0b090b, 0xee100c10, 0xcc212021, 0x99424142, 0x66212021, 0x44101010, 
+	0x33000000, 0x33000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x22000000, 0xcc191c19, 
+	0xffa7a9a7, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffecedec, 0xfff1f4f1, 0xfff1f4f1, 0xfff7fbf7, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffffbff, 0xfffaf6fa, 0xfffaf6fa, 0xfff4f0f4, 0xffe6e7e6, 0xffe6e7e6, 0xffa2a3a2, 0xdd191c19, 
+	0x44000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080808, 
+	0x22131413, 0x66292d29, 0xaa292d29, 0xcc1e201e, 0xdd242224, 0xdd242224, 0xdd242224, 0xdd211c21, 
+	0xdd211c21, 0xcc242224, 0xbb292d29, 0x99292d29, 0x55212421, 0x220b0c0b, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffece9ec, 0xfff1f0f1, 0xfff1f0f1, 0xfff7f7f7, 
+	0xfffafafa, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffeff, 0xfffffcff, 0xfff7fbf7, 0xfff1f4f1, 0xfff1f4f1, 0xffecedec, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x22101210, 0x55313531, 0x99424942, 0xdd1b1e1b, 0xff080808, 0xff080808, 
+	0xff000400, 0xff050705, 0xff050705, 0xee100c10, 0xcc313131, 0x99424142, 0x66212021, 0x44101010, 
+	0x33050505, 0x33000000, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x33000000, 0xdd191c19, 
+	0xffa7a9a7, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffecedec, 0xfff1f4f1, 0xfff1f4f1, 0xfff7fbf7, 
+	0xfffcfcfc, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 
+	0xfffffbff, 0xfffffbff, 0xfffaf6fa, 0xfff4f0f4, 0xffe6e7e6, 0xffe6e7e6, 0xffa2a3a2, 0xdd191c19, 
+	0x55000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080808, 
+	0x33131413, 0x77292d29, 0xbb292d29, 0xcc1e201e, 0xdd211c21, 0xdd242224, 0xdd242224, 0xdd242224, 
+	0xdd211c21, 0xdd242224, 0xcc292d29, 0xaa292d29, 0x66212421, 0x330b0c0b, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xeea5a2a5, 0xffefebef, 0xffe6e7e6, 0xffececec, 0xfff1f2f1, 0xfff7f7f7, 
+	0xfff7fbf7, 0xfffafcfa, 0xfffcfefc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffeff, 0xfffffcff, 0xfff7fbf7, 0xfff4f6f4, 0xfff1f0f1, 0xffefebef, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x11080408, 0x22191619, 0x553a393a, 0xaa424542, 0xee1b1c1b, 0xff080808, 0xff080808, 
+	0xff000400, 0xff000400, 0xff000400, 0xee0e100e, 0xee1e1e1e, 0xbb3a393a, 0x882c2b2c, 0x551e1e1e, 
+	0x440e0d0e, 0x33000000, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x22000000, 0xcc191c19, 
+	0xffb8bab8, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffefefef, 0xfff1f3f1, 0xfff4f7f4, 0xfff7fbf7, 
+	0xfffffcff, 0xfffffeff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xfffcfbfc, 0xfffcfbfc, 0xfffaf7fa, 0xfff7f3f7, 0xffe6e7e6, 0xffe6e7e6, 0xffa2a2a2, 0xdd191819, 
+	0x55000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080808, 
+	0x22131713, 0x77292d29, 0xbb292d29, 0xcc1e221e, 0xdd242224, 0xdd242224, 0xdd211c21, 0xdd211c21, 
+	0xdd191c19, 0xdd1e221e, 0xcc292d29, 0xaa292d29, 0x66292429, 0x330e0c0e, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xeea5a2a5, 0xffefebef, 0xffe6e7e6, 0xffececec, 0xfff1f2f1, 0xfff7f7f7, 
+	0xfff7fbf7, 0xfffafcfa, 0xfffcfefc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffeff, 0xfffffcff, 0xfff7fbf7, 0xfff4f6f4, 0xfff1f0f1, 0xffefebef, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0x11080408, 0x33292729, 0x773a393a, 0xdd1b1c1b, 0xee080808, 0xff080808, 0xff080808, 
+	0xff000400, 0xff000400, 0xff000400, 0xee0e100e, 0xee101010, 0xdd1e1e1e, 0xbb3a393a, 0x772c2b2c, 
+	0x441b1b1b, 0x330e0d0e, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x22000000, 0xbb191c19, 
+	0xff919291, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffefefef, 0xfff1f3f1, 0xfff4f7f4, 0xfff7fbf7, 
+	0xfffffeff, 0xfffffeff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xfffcfbfc, 0xfffcfbfc, 0xfffaf7fa, 0xfff7f3f7, 0xffe6e7e6, 0xffe6e7e6, 0xffa2a2a2, 0xcc191819, 
+	0x44000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00050505, 
+	0x22131713, 0x661e221e, 0xaa292d29, 0xcc292d29, 0xdd242224, 0xdd242224, 0xdd211c21, 0xdd211c21, 
+	0xdd1e221e, 0xdd242724, 0xcc292d29, 0x99242724, 0x551b181b, 0x330e0c0e, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xeea5a2a5, 0xffefebef, 0xffe6e7e6, 0xffececec, 0xfff1f2f1, 0xfff7f7f7, 
+	0xfff7fbf7, 0xfffafcfa, 0xfffcfefc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffeff, 0xfffffcff, 0xfff7fbf7, 0xfff4f6f4, 0xfff1f0f1, 0xffefebef, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00030103, 
+	0x11080408, 0x22191619, 0x663a393a, 0xcc292729, 0xee080808, 0xff080808, 0xff080808, 0xff080808, 
+	0xee0e100e, 0xee0e100e, 0xee0e100e, 0xee0e100e, 0xee101010, 0xee101010, 0xdd1e1e1e, 0xaa2c2b2c, 
+	0x66292829, 0x330e0d0e, 0x220e0d0e, 0x11000000, 0x11000000, 0x00000000, 0x22000000, 0x99101310, 
+	0xee919291, 0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffefefef, 0xfff1f3f1, 0xfff4f7f4, 0xfff7fbf7, 
+	0xfffffcff, 0xfffffeff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xfffcfbfc, 0xfffcfbfc, 0xfffaf7fa, 0xfff7f3f7, 0xffe6e7e6, 0xffe6e7e6, 0xeea2a2a2, 0xaa191819, 
+	0x44000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030303, 
+	0x11080c08, 0x441e221e, 0x88292d29, 0xbb292d29, 0xcc262726, 0xdd242224, 0xdd242224, 0xdd242224, 
+	0xdd1e221e, 0xcc292d29, 0xbb292d29, 0x88242724, 0x441b181b, 0x330e0c0e, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xeea5a2a5, 0xffefebef, 0xffe6e7e6, 0xffececec, 0xfff1f2f1, 0xfff7f7f7, 
+	0xfff7fbf7, 0xfffafcfa, 0xfffcfefc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffeff, 0xfffffcff, 0xfff7fbf7, 0xfff4f6f4, 0xfff1f0f1, 0xffefebef, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00030103, 0x00080408, 
+	0x11191619, 0x44292729, 0xaa3a393a, 0xdd191619, 0xee080808, 0xee080808, 0xee080808, 0xee080808, 
+	0xdd1b1c1b, 0xdd292829, 0xee0e100e, 0xee0e100e, 0xee101010, 0xee1e1e1e, 0xdd1e1e1e, 0xcc2c2b2c, 
+	0x99292829, 0x55292829, 0x220e0d0e, 0x11000000, 0x11080908, 0x11000000, 0x11000000, 0x77080908, 
+	0xee6b696b, 0xffb8bab8, 0xffdee3de, 0xffdee3de, 0xffefefef, 0xfff1f3f1, 0xfff4f7f4, 0xfff7fbf7, 
+	0xfffffcff, 0xfffffeff, 0xfffffeff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xfffcfbfc, 0xfffaf7fa, 0xfffaf7fa, 0xfff7f3f7, 0xffe6e7e6, 0xffe6e7e6, 0xee5d5d5d, 0x88191819, 
+	0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11080c08, 0x22131713, 0x661e221e, 0x99292d29, 0xbb292d29, 0xcc292d29, 0xcc262726, 0xcc292d29, 
+	0xcc292d29, 0xbb292d29, 0x99242724, 0x66191c19, 0x330e0c0e, 0x22000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffe6e9e6, 0xffe6e9e6, 0xffeff0ef, 0xfff7f7f7, 
+	0xfffaf7fa, 0xfffcfbfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfff7fbf7, 0xfff1f4f1, 0xfff1f4f1, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x110b0c0b, 
+	0x33262826, 0x88313531, 0xdd1b1c1b, 0xee101010, 0xee101010, 0xee101010, 0xee101010, 0xdd1e1e1e, 
+	0xaa4a454a, 0x994a454a, 0xcc312f31, 0xdd191a19, 0xee191c19, 0xdd191c19, 0xdd212321, 0xcc292a29, 
+	0xbb262426, 0x88262426, 0x441b181b, 0x22100c10, 0x22080c08, 0x11030403, 0x11000000, 0x44050805, 
+	0xcc504c50, 0xff979397, 0xffdedbde, 0xffdedbde, 0xffececec, 0xffececec, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfffafbfa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 0xffdee3de, 0xff979897, 0xcc504e50, 0x66080408, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x110b0b0b, 0x33161616, 0x66212021, 0x88292d29, 0xaa292d29, 0xbb292d29, 0xbb292d29, 
+	0xaa292829, 0x88292829, 0x661b1b1b, 0x440e0d0e, 0x33080408, 0x22030103, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffdee3de, 0xffe6e9e6, 0xffeff0ef, 0xfff7f7f7, 
+	0xfffaf7fa, 0xfffcfbfc, 0xfffcfbfc, 0xffffffff, 0xfffcfefc, 0xfffcfefc, 0xfffcfefc, 0xfffcfefc, 
+	0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfffcfcfc, 0xfff7fbf7, 0xfff1f4f1, 0xfff1f4f1, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x110b0c0b, 0x22161816, 
+	0x66262826, 0xbb262826, 0xdd1b1c1b, 0xee101010, 0xee101010, 0xee101010, 0xdd1e1e1e, 0xaa3a393a, 
+	0x77312f31, 0x77312f31, 0x88312f31, 0xbb312f31, 0xdd212321, 0xdd212321, 0xdd292a29, 0xcc313131, 
+	0xbb313131, 0x99262426, 0x661b181b, 0x33100c10, 0x33080c08, 0x11030403, 0x00000000, 0x22000000, 
+	0x88080408, 0xee979397, 0xffdedbde, 0xffdedbde, 0xffececec, 0xffececec, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfffafbfa, 0xfffafbfa, 0xfffafbfa, 0xfffafbfa, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 0xffdee3de, 0xee979897, 0x99080408, 0x44080408, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x110b0b0b, 0x33161616, 0x441e1f1e, 0x661e1f1e, 0x77292d29, 0x771e1f1e, 
+	0x661b1b1b, 0x551b1b1b, 0x440e0d0e, 0x33000000, 0x22030103, 0x22000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffdee3de, 0xffe6e9e6, 0xffeff0ef, 0xffeff0ef, 
+	0xfffaf7fa, 0xfffaf7fa, 0xfffcfbfc, 0xfffcfbfc, 0xfffafcfa, 0xfffafcfa, 0xfffafcfa, 0xfffafcfa, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffafafa, 0xfff1f4f1, 0xfff1f4f1, 0xffecedec, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x00000000, 0x110b0c0b, 0x44212421, 
+	0x99262826, 0xcc262826, 0xdd1b1c1b, 0xdd1b1c1b, 0xdd101010, 0xdd1e1e1e, 0xbb3a393a, 0x772c2b2c, 
+	0x66191a19, 0x66191a19, 0x66191a19, 0x88312f31, 0xaa292a29, 0xcc292a29, 0xcc292a29, 0xbb313131, 
+	0xaa313131, 0x99262426, 0x77262426, 0x441b181b, 0x33050805, 0x22030403, 0x00000000, 0x11000000, 
+	0x44080408, 0xbb504c50, 0xee979397, 0xffdedbde, 0xffe1e1e1, 0xffececec, 0xffececec, 0xfff7f7f7, 
+	0xfff4f7f4, 0xfff4f7f4, 0xfffafbfa, 0xfffafbfa, 0xfffafafa, 0xfffafafa, 0xfffafafa, 0xfff7f7f7, 
+	0xfff7f3f7, 0xfff7f3f7, 0xfff7f3f7, 0xffe1dfe1, 0xee979897, 0xcc504e50, 0x66080408, 0x33080408, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x110b0b0b, 0x22131213, 0x33131213, 0x44131213, 0x44131213, 
+	0x440e0d0e, 0x330e0d0e, 0x33000000, 0x22000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33101010, 0xcc101010, 0xee9f9f9f, 0xffe6e7e6, 0xffdee3de, 0xffe6e9e6, 0xffeff0ef, 0xffeff0ef, 
+	0xfff7f3f7, 0xfffaf7fa, 0xfffaf7fa, 0xfffaf7fa, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 
+	0xfffafafa, 0xfffafafa, 0xfff7f7f7, 0xfff7f7f7, 0xfff1f4f1, 0xfff1f4f1, 0xffecedec, 0xffe6e7e6, 
+	0xffbdbabd, 0xdd080808, 0x55080808, 0x00080808, 0x00000000, 0x000b0c0b, 0x22161816, 0x66212421, 
+	0x99262826, 0xbb262826, 0xcc262826, 0xdd1b1c1b, 0xdd1e1e1e, 0xbb2c2b2c, 0x772c2b2c, 0x551e1e1e, 
+	0x55000400, 0x55000400, 0x55000400, 0x55191a19, 0x66212321, 0x99292a29, 0xaa292a29, 0xaa292a29, 
+	0x99313131, 0x88262426, 0x661b181b, 0x441b181b, 0x22050805, 0x22030403, 0x00000000, 0x00000000, 
+	0x22080408, 0x66080408, 0xcc504c50, 0xff979397, 0xffd6d7d6, 0xffe1e1e1, 0xffececec, 0xffececec, 
+	0xffeff3ef, 0xfff4f7f4, 0xfff4f7f4, 0xfff4f7f4, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f3f7, 0xfff7f3f7, 0xffe1dfe1, 0xffb5b6b5, 0xdd504e50, 0x88080408, 0x44080408, 0x22080408, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11080408, 0x22080408, 0x22080408, 0x22080408, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33080808, 0xcc080808, 0xee919491, 0xffd6dbd6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xffa5a6a5, 0xdd080408, 0x55080408, 0x00080408, 0x00000000, 0x110b0b0b, 0x33161616, 0x66212021, 
+	0x88292829, 0xaa292829, 0xbb292829, 0xcc292829, 0xbb292829, 0x77292829, 0x551b1b1b, 0x550e0d0e, 
+	0x44030303, 0x44000000, 0x44030303, 0x44080808, 0x440b0b0b, 0x55212021, 0x77212021, 0x88212021, 
+	0x88212021, 0x77212021, 0x55191819, 0x44101010, 0x22080408, 0x11030103, 0x00000000, 0x00000000, 
+	0x00000000, 0x22000000, 0x771b1b1b, 0xcc525152, 0xee979397, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffdee3de, 0xffdee3de, 0xff979897, 0xdd504e50, 0x88101410, 0x44000000, 0x22000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x22080808, 0xbb080808, 0xee919491, 0xffd6dbd6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xffefebef, 0xffefebef, 0xffefebef, 0xffefebef, 
+	0xeea5a6a5, 0xcc080408, 0x44080408, 0x00080408, 0x00000000, 0x110b0b0b, 0x220b0b0b, 0x44161616, 
+	0x661e1e1e, 0x77292829, 0x88292829, 0x99292829, 0x77292829, 0x551b1b1b, 0x440e0d0e, 0x44000000, 
+	0x44000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x330b0b0b, 0x44161616, 0x66161616, 
+	0x66191819, 0x66191819, 0x55101010, 0x33101010, 0x22030103, 0x11030103, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x22000000, 0x771b1b1b, 0xbb504c50, 0xee979397, 0xff979397, 0xffdedbde, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xff979897, 0xee979897, 0xcc504e50, 0x88080408, 0x44000000, 0x22000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11080808, 0x66080808, 0xbb4d4e4d, 0xee919491, 0xeea5a7a5, 0xffa5a7a5, 0xffa5a7a5, 0xffa5a7a5, 
+	0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 
+	0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffb2b1b2, 0xffaaa7aa, 0xffaaa7aa, 0xeeaaa7aa, 0xeeaaa7aa, 
+	0xcc707070, 0x99080408, 0x33080408, 0x00080408, 0x00000000, 0x00000000, 0x110b0b0b, 0x220b0b0b, 
+	0x33131313, 0x441e1e1e, 0x441e1e1e, 0x441e1e1e, 0x440e0d0e, 0x440e0d0e, 0x44000000, 0x44000000, 
+	0x33000000, 0x33000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x220b0b0b, 0x330b0b0b, 
+	0x44101010, 0x44101010, 0x44080808, 0x33080808, 0x11030103, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x22000000, 0x55080408, 0x99080408, 0xcc504c50, 0xee504c50, 
+	0xeeaaa9aa, 0xffaaa9aa, 0xffaaa9aa, 0xffaaa9aa, 0xffa7a9a7, 0xffa7a9a7, 0xeea7a9a7, 0xee606260, 
+	0xcc504e50, 0x99080408, 0x66080408, 0x44080408, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080808, 0x22080808, 0x77080808, 0xbb080808, 0xdd212021, 0xdd212021, 0xdd212021, 0xdd212021, 
+	0xdd292429, 0xdd292429, 0xdd292429, 0xdd292429, 0xdd292429, 0xdd292429, 0xdd292429, 0xdd292429, 
+	0xdd292429, 0xdd292429, 0xdd292429, 0xdd292429, 0xdd212021, 0xdd212021, 0xdd212021, 0xcc212021, 
+	0x99080408, 0x44080408, 0x22080408, 0x00080408, 0x00000000, 0x00000000, 0x00000000, 0x110b0b0b, 
+	0x11080808, 0x11080808, 0x22080808, 0x22080808, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 
+	0x33000000, 0x22000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x22000000, 
+	0x22080808, 0x33080808, 0x33080808, 0x22080808, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11080408, 0x33080408, 0x55080408, 0x88080408, 
+	0xaa211c21, 0xcc211c21, 0xdd211c21, 0xdd211c21, 0xdd191c19, 0xcc191c19, 0xaa191c19, 0x88191c19, 
+	0x66080408, 0x44080408, 0x33080408, 0x22080408, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x22000000, 0x33000000, 0x44000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x44000000, 
+	0x33000000, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x22000000, 0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x22000000, 0x22000000, 
+	0x33000000, 0x44000000, 0x44000000, 0x55000000, 0x55000000, 0x44000000, 0x44000000, 0x33000000, 
+	0x22000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x33000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 
+	0x22000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x22000000, 0x22000000, 0x33000300, 0x33000300, 0x44000400, 0x44000400, 
+	0x55080808, 0x55101010, 0x66101010, 0x66191819, 0x661b1e1b, 0x661b1e1b, 0x66292d29, 0x66292d29, 
+	0x77313531, 0x77313531, 0x77313531, 0x77313531, 0x773a3d3a, 0x773a3d3a, 0x773a3d3a, 0x773a3d3a, 
+	0x77424142, 0x77424142, 0x77424142, 0x77424142, 0x77424542, 0x77424542, 0x77424542, 0x77424542, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x88424542, 0x88424542, 0x88424542, 0x88424542, 
+	0x88424542, 0x88424542, 0x88424542, 0x88424542, 0x88424542, 0x88424542, 0x88424542, 0x88424542, 
+	0x88424142, 0x88424142, 0x88424142, 0x88424142, 0x88424142, 0x88424142, 0x88424142, 0x88424142, 
+	0x88424142, 0x88424142, 0x88424142, 0x88424142, 0x883a3d3a, 0x883a3d3a, 0x883a3d3a, 0x883a3d3a, 
+	0x883a3d3a, 0x883a3d3a, 0x883a3d3a, 0x883a3d3a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 
+	0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 
+	0x88313531, 0x88313531, 0x88313531, 0x88313531, 0x88313131, 0x88313131, 0x88313131, 0x88313131, 
+	0x88313131, 0x88313131, 0x88313131, 0x88313131, 0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 
+	0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 
+	0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 
+	0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 
+	0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 0x88292d29, 
+	0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 
+	0x88313131, 0x88313131, 0x88313131, 0x88313131, 0x88313131, 0x88313131, 0x88313131, 0x88313131, 
+	0x88313131, 0x88313131, 0x88313131, 0x88313131, 0x88313531, 0x88313531, 0x88313531, 0x88313531, 
+	0x88313531, 0x88313531, 0x88313531, 0x88313531, 0x88313531, 0x88313531, 0x88313531, 0x88313531, 
+	0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 
+	0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 
+	0x883a393a, 0x883a393a, 0x883a393a, 0x883a393a, 0x88313531, 0x88313531, 0x88313531, 0x88313531, 
+	0x88313531, 0x77313531, 0x77313531, 0x88313531, 0x88313131, 0x77313131, 0x77313131, 0x77313131, 
+	0x77292d29, 0x77292d29, 0x77292d29, 0x77292d29, 0x77292829, 0x77292829, 0x77292829, 0x77292829, 
+	0x77212021, 0x77212021, 0x77212021, 0x77212021, 0x77191819, 0x77191819, 0x77191819, 0x66101010, 
+	0x66101010, 0x660b0b0b, 0x660b0b0b, 0x660b0b0b, 0x55080808, 0x55080808, 0x55050505, 0x44050505, 
+	0x33000400, 0x33000400, 0x22000400, 0x22000300, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080408, 0x22080408, 0x44080408, 0x55080408, 
+	0x66191419, 0x66191419, 0x77423f42, 0x77423f42, 0x77424542, 0x77424542, 0x77606260, 0x77606260, 
+	0x77636163, 0x77636163, 0x88636163, 0x88636163, 0x886b696b, 0x886b696b, 0x886b696b, 0x886b696b, 
+	0x99737173, 0x99737173, 0x99737173, 0x99737173, 0x9973797b, 0x9973797b, 0x9973797b, 0x9973797b, 
+	0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 
+	0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 
+	0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 
+	0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b797b, 0xaa7b7573, 0xaa7b7573, 0xaa7b7573, 0xaa7b7573, 
+	0xaa737573, 0xaa737573, 0xaa737573, 0xaa737573, 0xaa737573, 0xaa737573, 0xaa737573, 0xaa737573, 
+	0xaa737573, 0xaa737573, 0xaa737573, 0xaa737573, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 
+	0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0xaa736d73, 0xaa736d73, 0xaa736d73, 0xaa736d73, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737573, 0xaa737573, 0xbb737573, 0xbb737573, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 
+	0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 0xaa6b696b, 0xaa636563, 0xaa636563, 0xaa636563, 0xaa636563, 
+	0x995a5d5a, 0x995a5d5a, 0x995a5d5a, 0x995a5d5a, 0x99525552, 0x99525552, 0x99525552, 0x88525552, 
+	0x88424542, 0x88424542, 0x88424542, 0x88424542, 0x88312d31, 0x88312d31, 0x88312d31, 0x88312d31, 
+	0x88191c19, 0x77191c19, 0x77191c19, 0x77191c19, 0x66080c08, 0x44080c08, 0x33080c08, 0x22080c08, 
+	0x11080408, 0x00080408, 0x00080408, 0x00080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x55080408, 0x77343134, 0x88605d60, 0x88605d60, 
+	0x886b6b6b, 0x886b6b6b, 0x886b6b6b, 0x996b6b6b, 0x997e807e, 0x997e807e, 0xaa7e807e, 0xaa7e807e, 
+	0xaa898a89, 0xaa898a89, 0xaa898a89, 0xaa898a89, 0xbb8c8f8c, 0xbb8c8f8c, 0xbb8c8f8c, 0xbb8c8f8c, 
+	0xbb949494, 0xbb949494, 0xbb949494, 0xcc949494, 0xcc949797, 0xcc949797, 0xcc949797, 0xcc949797, 
+	0xcc979a97, 0xcc979a97, 0xcc979a97, 0xcc979a97, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 
+	0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 
+	0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 
+	0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9b9a, 0xcc9c9b9a, 0xcc9c9b9a, 0xcc9c9b9a, 
+	0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 
+	0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 
+	0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 
+	0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9d9c, 
+	0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9d9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 
+	0xcc9c9b9c, 0xcc9c9b9c, 0xcc9c9b9c, 0xcc9c9b9c, 0xcc9c9b9c, 0xcc9c9b9c, 0xcc9c9b9c, 0xcc9c9b9c, 
+	0xcc9f9b9f, 0xcc9f9b9f, 0xcc9f9b9f, 0xcc9f9b9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 0xcc9f9d9f, 
+	0xcc9a9d9f, 0xcc9a9d9f, 0xcc9a9d9f, 0xcc9a9d9f, 0xcc9a9a9a, 0xcc9a9a9a, 0xcc9a9a9a, 0xcc9a9a9a, 
+	0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9b9a, 0xcc9a9a9a, 0xcc9a9a9a, 0xcc9a9a9a, 0xcc9a9a9a, 
+	0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 
+	0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc9a979a, 0xcc94979a, 0xcc94979a, 0xcc94979a, 0xcc94979a, 
+	0xcc979697, 0xcc979697, 0xcc979697, 0xcc979697, 0xcc919291, 0xcc919291, 0xcc919291, 0xcc919291, 
+	0xcc919291, 0xcc919291, 0xcc919291, 0xcc919291, 0xcc8f908f, 0xcc8f908f, 0xcc8f908f, 0xcc8f908f, 
+	0xcc8c8b8c, 0xcc8c8b8c, 0xcc8c8b8c, 0xcc8c8b8c, 0xbb848884, 0xbb848884, 0xbb848884, 0xbb848884, 
+	0xbb7e7d7e, 0xbb7e7d7e, 0xbb7e7d7e, 0xbb7e7d7e, 0xaa737073, 0xaa737073, 0xaa737073, 0xaa737073, 
+	0xaa6b6b6b, 0x996b6b6b, 0x99424342, 0x99424342, 0x99373937, 0x88373937, 0x77373937, 0x66080c08, 
+	0x66080408, 0x22080408, 0x00080408, 0x00080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x33000000, 0x77262626, 0x88605d60, 0x88605d60, 0x998c8a8c, 0xaa8c8a8c, 
+	0xaa949694, 0xaa949694, 0xbb949694, 0xbb949694, 0xbb9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9ca29c, 0xcc9ca29c, 0xdd9ca29c, 0xdd9ca29c, 
+	0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 
+	0xdda5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xdda5aaad, 0xdda5aaad, 0xdda5aaad, 0xdda5aaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 
+	0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 
+	0xdda5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xdd9ca29c, 0xdd9ca29c, 0xdd9ca29c, 0xdd9ca29c, 
+	0xdd9c9a9c, 0xdd9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc949294, 0xcc949294, 0xcc949294, 0xcc949294, 
+	0xcc949294, 0xcc949294, 0xcc949294, 0xbb6b6b6b, 0xbb656565, 0xbb656565, 0xaa656565, 0xaa656565, 
+	0xbb656265, 0x77373337, 0x44080408, 0x11080408, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x33000000, 0x884d4c4d, 0x99737173, 0xaa8c8a8c, 0xaa8c8a8c, 0xcc8c8a8c, 0xcc8c8a8c, 
+	0xcc949694, 0xcc949694, 0xdd949694, 0xdd949694, 0xdd9c9e9c, 0xdd9c9e9c, 0xdd9c9e9c, 0xdd9c9e9c, 
+	0xdd9c9e9c, 0xdd9c9e9c, 0xdd9c9e9c, 0xdd9c9e9c, 0xdd9ca29c, 0xdd9ca29c, 0xdd9ca29c, 0xdd9ca29c, 
+	0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 
+	0xdda5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xdda5aaad, 0xdda5aaad, 0xdda5aaad, 0xdda5aaad, 
+	0xddadaaad, 0xddadaaad, 0xddadaaad, 0xddadaaad, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 
+	0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 
+	0xdda5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xdd9ca29c, 0xdd9ca29c, 0xdd9ca29c, 0xdd9ca29c, 
+	0xdd9c9a9c, 0xdd9c9a9c, 0xdd9c9a9c, 0xdd9c9a9c, 0xdd949294, 0xdd949294, 0xdd949294, 0xdd949294, 
+	0xdd949294, 0xdd949294, 0xdd949294, 0xdd949294, 0xdd949294, 0xcc949294, 0xcc949294, 0xcc949294, 
+	0xee949294, 0xbb656265, 0x99373337, 0x55080408, 0x11080808, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11100c10, 0x773c393a, 0x9994928c, 0xbb94928c, 0xcc8f908f, 0xcc8f908f, 0xdd9ca29c, 0xdd9ca29c, 
+	0xdda5a1a2, 0xdda5a1a2, 0xdda5a1a2, 0xdda5a1a2, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a6a7, 0xddb5b2b5, 0xddb5b2b5, 0xdda7a6a7, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddb5aead, 0xddb5aead, 0xddb5aead, 0xddb5aead, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb2b3b2, 0xddb2b3b2, 0xddb2b3b2, 0xddb2b3b2, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xdda7a6a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 
+	0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a9a9a, 
+	0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a979a, 0xdd9a979a, 0xdd9a979a, 0xdd9a979a, 
+	0xeea5a2a5, 0xdd8c8b8c, 0xbb8c8b8c, 0xaa5a5d5a, 0x662c2d2c, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x44100c10, 0x99686563, 0xbb94928c, 0xcc94928c, 0xdd9ca29c, 0xcc8f908f, 0xdd9ca29c, 0xdd9ca29c, 
+	0xdda5a1a2, 0xdda5a1a2, 0xdda5a1a2, 0xdda5a1a2, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 
+	0xddb5b2b5, 0xddb5b2b5, 0xdda7a6a7, 0xdda7a6a7, 0xddb5b2b5, 0xdda7a6a7, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 
+	0xddb5aead, 0xddb5aead, 0xddb5aead, 0xddb5aead, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb2b3b2, 0xddb2b3b2, 0xddb2b3b2, 0xddb2b3b2, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xdda7a6a7, 0xddb5b2b5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 
+	0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a9a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 
+	0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdda7a6a7, 0xdd9a9a9a, 
+	0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a9a9a, 0xdd9a979a, 0xdd9a979a, 0xdd9a979a, 0xdd9a979a, 
+	0xeea5a2a5, 0xeea5a2a5, 0xdd8c8b8c, 0xcc8c8b8c, 0xbb585958, 0x332c2d2c, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00050405, 
+	0x773c393a, 0xbb94928c, 0xcc94928c, 0xdd94928c, 0xdd9ca29c, 0xdd817f81, 0xff736d73, 0xff817f81, 
+	0xff847d7b, 0xff948f8f, 0xff948f8f, 0xff948f8f, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c928c, 0xff8c928c, 0xff8c928c, 0xff8c928c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c928c, 0xff8c928c, 0xff8c928c, 0xff8c928c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8a8c, 0xff8c8a8c, 0xff8c8a8c, 0xff8c8a8c, 
+	0xffa5a2a5, 0xeea5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xdd848684, 0x77585958, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11100c10, 
+	0x88686563, 0xcc94928c, 0xdd94928c, 0xdd94928c, 0xdd9ca29c, 0xdd817f81, 0xff817f81, 0xff8f908f, 
+	0xffa5a1a2, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffb5aead, 0xffb5aead, 0xffb5aead, 0xffb5aead, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 
+	0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 
+	0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffbdbabd, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 
+	0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb5bab5, 0xffb2b3b2, 0xffb2b3b2, 0xffb2b3b2, 0xffb2b3b2, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffb5b2b5, 0xffa7a5a7, 
+	0xffa5a2a5, 0xeea5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xdd848684, 0xaa585958, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22191419, 
+	0x99636163, 0xcc898a89, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda7a6a7, 0xdd949294, 0xff949294, 0xffa7a6a7, 
+	0xffbdbebd, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffd0d2d0, 0xffd0d2d0, 0xffd0d2d0, 0xffbdbebd, 
+	0xffb2b2b2, 0xee9c9a9c, 0xdd9c9a9c, 0xdd9c9a9c, 0xdd9c9e9c, 0xbb686968, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33191419, 
+	0xaa636163, 0xdd898a89, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda7a6a7, 0xdd949294, 0xffa7a6a7, 0xffbababa, 
+	0xffd0d2d0, 0xffe4e7e4, 0xffe4e7e4, 0xffe4e7e4, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 
+	0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffeff0ef, 0xffe4e7e4, 0xffe4e7e4, 0xffe4e7e4, 0xffd0d2d0, 
+	0xffb2b2b2, 0xeea7a6a7, 0xdd9c9a9c, 0xdd9c9a9c, 0xdd9c9e9c, 0xcc686968, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33100d10, 
+	0xaa636163, 0xdd898a89, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda7a6a7, 0xdd949294, 0xffa7a6a7, 0xffcecece, 
+	0xffe4e7e4, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xffe4e7e4, 
+	0xffbdbebd, 0xeea7a6a7, 0xdd9c9a9c, 0xdd9c9a9c, 0xdd9c9e9c, 0xcc686968, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33100d10, 
+	0xaa636163, 0xdd898a89, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda7a6a7, 0xdd949294, 0xffbababa, 0xffcecece, 
+	0xffe4e7e4, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7fbf7, 0xfff7fbf7, 0xfff7fbf7, 0xffe4e7e4, 
+	0xffbdbebd, 0xeea7a6a7, 0xdd9c9a9c, 0xdd9c9a9c, 0xdd9c9e9c, 0xcc9c9e9c, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33101010, 
+	0xaa4a5152, 0xdd868a89, 0xdda5a6a5, 0xdda5a6a5, 0xddadadad, 0xdd9c9a9c, 0xffadadad, 0xffced2ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffbdbebd, 0xeea7a9a7, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xcc6e736e, 0x00000400, 0x00000300, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22191819, 
+	0x994a5152, 0xdd868a89, 0xdda5a6a5, 0xdda5a6a5, 0xddadadad, 0xdd9c9a9c, 0xffadadad, 0xffced2ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffbdbebd, 0xeea7a9a7, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xbb6e736e, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101010, 
+	0x994a5152, 0xcc868a89, 0xdda5a6a5, 0xdda5a6a5, 0xddadadad, 0xdd9c9a9c, 0xffadadad, 0xffced2ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffbdbebd, 0xeea7a9a7, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xbb6e736e, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101010, 
+	0x994a5152, 0xcc868a89, 0xdda5a6a5, 0xdda5a6a5, 0xddadadad, 0xdd9c9a9c, 0xffadadad, 0xffced2ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffbdbebd, 0xeea7a9a7, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xbb6e736e, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101010, 
+	0x884a494a, 0xcc868486, 0xdda5a2a5, 0xdda5a2a5, 0xddadaead, 0xdd9c9a9c, 0xffadaead, 0xffced7ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeaaaaaa, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xaa6e716e, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11101010, 
+	0x884a494a, 0xcc868486, 0xdda5a2a5, 0xdda5a2a5, 0xddadaead, 0xdd9c9a9c, 0xffadaead, 0xffced7ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeaaaaaa, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xaa6e716e, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101010, 
+	0x884a494a, 0xcca5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xddadaead, 0xdd9c9a9c, 0xffadaead, 0xffced7ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeaaaaaa, 0xdd9c9e9c, 0xdd9c9e9c, 0xdda5aaa5, 0xaa6e716e, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101010, 
+	0x994a494a, 0xcca5a2a5, 0xdda5a2a5, 0xdda5a2a5, 0xddadaead, 0xdd9c9a9c, 0xffadaead, 0xffced7ce, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeaaaaaa, 0xdd9c9e9c, 0xddaaaaaa, 0xdda5aaa5, 0xaa6e716e, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101310, 
+	0x995a595a, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xddafaeaf, 0xdd9c9a9c, 0xffafaeaf, 0xffd6d7d6, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeafadaf, 0xdda5a2a5, 0xdda5a2a5, 0xddb5b6b5, 0xbb797b79, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101310, 
+	0x995a595a, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xddafaeaf, 0xdd9c9a9c, 0xffafaeaf, 0xffd6d7d6, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeafadaf, 0xdda5a2a5, 0xdda5a2a5, 0xddb5b6b5, 0xbb797b79, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101310, 
+	0xaa5a595a, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xddafaeaf, 0xdd9c9a9c, 0xffafaeaf, 0xffd6d7d6, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeafadaf, 0xdda5a2a5, 0xddafadaf, 0xddb5b6b5, 0xcc797b79, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33101310, 
+	0xaa737373, 0xdda5a6a5, 0xdda5a6a5, 0xdda5a6a5, 0xddafaeaf, 0xdd9c9a9c, 0xffafaeaf, 0xffd6d7d6, 
+	0xffe6ebe6, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffc5c2c5, 0xeeafadaf, 0xdda5a2a5, 0xddafadaf, 0xddb5b6b5, 0xcc797b79, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33101010, 
+	0xaa606060, 0xddada6ad, 0xddada6ad, 0xddada6ad, 0xddbab7ba, 0xdd949294, 0xffbab7ba, 0xffcecace, 
+	0xffeff0ef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeff0ef, 
+	0xffc5c2c5, 0xeea5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xddadaeb5, 0xcc737479, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33080808, 
+	0xaa606060, 0xddada6ad, 0xddada6ad, 0xddada6ad, 0xddbab7ba, 0xdd949294, 0xffbab7ba, 0xffcecace, 
+	0xffeff0ef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeff0ef, 
+	0xffc5c2c5, 0xeea5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xddadaeb5, 0xbb737479, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33191819, 
+	0x99606060, 0xccada6ad, 0xddada6ad, 0xddada6ad, 0xddbab7ba, 0xdd949294, 0xffa7a5a7, 0xffcecace, 
+	0xffdee1de, 0xffeff0ef, 0xffffffff, 0xffffffff, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xfff7f8f7, 0xffffffff, 0xffffffff, 0xffeff0ef, 0xffdee1de, 
+	0xffc5c2c5, 0xeea5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xddadaeb5, 0xbb737479, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22101010, 
+	0x883a3d3a, 0xbb868386, 0xddada6ad, 0xddada6ad, 0xddbab7ba, 0xdd949294, 0xffa7a5a7, 0xffbab7ba, 
+	0xffced2ce, 0xffdee1de, 0xffeff0ef, 0xffeff0ef, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffeff0ef, 0xffeff0ef, 0xffdee1de, 0xffced2ce, 
+	0xffbababa, 0xeea5aaa5, 0xdda5aaa5, 0xdda5aaa5, 0xddadaeb5, 0x99737479, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11080808, 
+	0x773a3a3a, 0xaa6b6c6b, 0xcc9c9e9c, 0xdd9c9e9c, 0xddadaaad, 0xdd949294, 0xff949294, 0xffadaaad, 
+	0xffbdbebd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 
+	0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced1d3, 0xffced1d3, 0xffced1d3, 0xffced1d3, 
+	0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 0xffd0d1d0, 
+	0xffced1ce, 0xffced1ce, 0xffced1ce, 0xffced1ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 
+	0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced0ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 
+	0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffced2ce, 0xffb8bcb8, 
+	0xffadaead, 0xeeadaead, 0xddadaead, 0xddadaead, 0xcc848a84, 0x772c2e2c, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x66080808, 0x883a3a3a, 0xaa6b6c6b, 0xcc9c9e9c, 0xddadaaad, 0xccadaaad, 0xddadaaad, 0xddadaaad, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddb2b2b2, 0xddb2b2b2, 0xddb2b2b2, 0xddb2b2b2, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddc3c2c3, 0xddc3c2c3, 0xddc3c2c3, 0xddc3c2c3, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 
+	0xddc5c2c5, 0xddc5c2c5, 0xddc8c8c8, 0xddc8c8c8, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 
+	0xddc5c6c5, 0xddc5c6c5, 0xddc8cac8, 0xddc8cac8, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 
+	0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 
+	0xddd0d1d0, 0xddd3d0d3, 0xddd0d1d0, 0xddd0d1d0, 0xddd6d2d6, 0xddd6d2d6, 0xddd6d2d6, 0xddd6d2d6, 
+	0xddd0d4d0, 0xddd0d4d0, 0xddd0d4d0, 0xddd0d4d0, 0xddd0d4d0, 0xddd0d4d0, 0xddd6d7d6, 0xddd6d7d6, 
+	0xddd3d8d3, 0xddd3d8d3, 0xddd3d8d3, 0xddd3d8d3, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 
+	0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd3d7d3, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 
+	0xddd9d8d9, 0xdddedbde, 0xddd9d8d9, 0xddd9d8d9, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 
+	0xdddedbde, 0xdddedbde, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 
+	0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd3d8d3, 0xddd3d8d3, 0xddd3d8d3, 0xddd3d8d3, 
+	0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd3d5d3, 0xddd3d5d3, 0xddd0d4d0, 0xddd0d4d0, 0xddd0d4d0, 
+	0xddd3d5d3, 0xddd3d5d3, 0xddced2ce, 0xddced2ce, 0xddd0d1d0, 0xddd0d1d0, 0xddd0d1d0, 0xddd0d1d0, 
+	0xddcecece, 0xddced0ce, 0xddcecece, 0xddcecece, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 
+	0xddcecdce, 0xddcecdce, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 
+	0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 
+	0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 
+	0xddadadad, 0xddadadad, 0xddadadad, 0xddadadad, 0xdda2a5a2, 0xdda2a5a2, 0xdda2a5a2, 0xdda2a5a2, 
+	0xeeadaead, 0xeeadaead, 0xcc818381, 0xbb818381, 0xaa585c58, 0x442c2e2c, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33080808, 0x883a3a3a, 0x883a3a3a, 0xaa6b6c6b, 0xcc949294, 0xbb949294, 0xccadaaad, 0xddadaaad, 
+	0xddadaead, 0xddadaead, 0xddadaead, 0xddadaead, 0xddb2b2b2, 0xddb2b2b2, 0xddb2b2b2, 0xddb2b2b2, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddc3c2c3, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddc3c2c3, 0xddc3c2c3, 0xddc3c2c3, 0xddc3c2c3, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc8c8c8, 
+	0xddc8c8c8, 0xddc8c8c8, 0xddc8c8c8, 0xddc8c8c8, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc8cac8, 
+	0xddc8cac8, 0xddc8cac8, 0xddc8cac8, 0xddcbcecb, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 
+	0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddced0d0, 0xddced0d0, 0xddced0d0, 0xddced2d6, 
+	0xddced2ce, 0xddd0d1d0, 0xddd0d1d0, 0xddd0d1d0, 0xddd6d2d6, 0xddd6d2d6, 0xddd6d2d6, 0xddd3d4d3, 
+	0xddd3d5d3, 0xddd3d5d3, 0xddd3d5d3, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 
+	0xddd3d8d3, 0xddd3d8d3, 0xddd3d8d3, 0xddd6dbd6, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 
+	0xddd9d8d9, 0xddd9d8d9, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9d8d9, 0xddd9d8d9, 
+	0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd9d8d9, 0xddd3d8d3, 0xddd6dbd6, 0xddd3d8d3, 0xddd6dbd6, 
+	0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd3d5d3, 0xddd3d5d3, 0xddd3d5d3, 
+	0xddd3d5d3, 0xddd6d7d6, 0xddd3d5d3, 0xddd0d4d0, 0xddd0d1d0, 0xddd0d1d0, 0xddd0d1d0, 0xddd0d1d0, 
+	0xddced0ce, 0xddced0ce, 0xddced0ce, 0xddced0ce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 
+	0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcec6ce, 
+	0xddc8cac8, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 
+	0xddc8c8c8, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 
+	0xddc3c5c3, 0xddbfc0bf, 0xddc2c4c2, 0xddbebfbe, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 
+	0xddadadad, 0xddadadad, 0xddadadad, 0xddadadad, 0xdda2a5a2, 0xdda2a5a2, 0xdda2a5a2, 0xdda2a5a2, 
+	0xeeadaead, 0xdd818381, 0xbb818381, 0x99555855, 0x772c2e2c, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11080808, 0x66080808, 0x773a3a3a, 0x773a3a3a, 0x99636163, 0x997b797b, 0xbb949294, 0xbb949294, 
+	0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcc9c9e9c, 0xcca5a2a5, 0xddb2b2b2, 0xddb2b2b2, 0xddb2b2b2, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddc3c2c3, 0xddc3c2c3, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddc3c5c3, 0xddc3c5c3, 
+	0xddc3c2c3, 0xddc3c2c3, 0xddc3c2c3, 0xddc3c2c3, 0xddc5c2c5, 0xddc8c8c8, 0xddc5c2c5, 0xddc8c8c8, 
+	0xddc8c8c8, 0xddc8c8c8, 0xddc8c8c8, 0xddc8c8c8, 0xddc8cac8, 0xddc5c6c5, 0xddc8cac8, 0xddcbcecb, 
+	0xddcbcecb, 0xddc8cac8, 0xddc8cac8, 0xddcbcecb, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 
+	0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddced0d0, 0xddced1d3, 0xddced1d3, 0xddced2d6, 
+	0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddd3d4d3, 0xddd3d4d3, 0xddd3d4d3, 0xddd0d5d0, 
+	0xddd6d7d6, 0xddd3d5d3, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 
+	0xddd6dbd6, 0xddd3d8d3, 0xddd6dbd6, 0xddd6dbd6, 0xddd9d8d9, 0xdddedbde, 0xdddedbde, 0xdddedbde, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xdddedfde, 0xdddedfde, 0xddd9dbd9, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xddd9dbd9, 0xdddedfde, 0xdddedfde, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd9dbd9, 0xddd9dbd9, 0xddd9dbd9, 0xdddedfde, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 
+	0xdddedbde, 0xdddedbde, 0xdddedbde, 0xdddedbde, 0xddd6dbd6, 0xddd6dbd6, 0xddd3d8d3, 0xddd6dbd6, 
+	0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd6d7d6, 0xddd3d5d3, 0xddd6d7d6, 
+	0xddd3d5d3, 0xddd6d7d6, 0xddd3d5d3, 0xddd0d4d0, 0xddd6d2d6, 0xddd6d2d6, 0xddd0d1d0, 0xddd0d1d0, 
+	0xddced2ce, 0xddced1ce, 0xddced0ce, 0xddced0ce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 
+	0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecdce, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 
+	0xddc8cac8, 0xddc5c6c5, 0xddc8cac8, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 
+	0xddc8c8c8, 0xddc8c8c8, 0xddc8c8c8, 0xddc5c3c6, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 
+	0xddc4c4c3, 0xddc4c4c3, 0xddc4c4c2, 0xddc1c0c1, 0xddbfc1bf, 0xddbdbebe, 0xddbdbebe, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 0xddb5bab5, 
+	0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddb5b2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 0xddadb2b5, 
+	0xddadadad, 0xddadadad, 0xdd9c9a9c, 0xcc9c9a9c, 0xcca2a5a2, 0xcc8c8e8c, 0xcc8c8e8c, 0xcc8c8e8c, 
+	0xdd818381, 0xaa555855, 0x77292d29, 0x55292d29, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x22000000, 0x77101010, 0x77313131, 0x773f3f3f, 0x773f3f3f, 0x885a5d5a, 0x995a5d5a, 
+	0x99737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa8c8a8c, 0xbb8c8a8c, 0xbb8c8a8c, 0xbb8c8a8c, 
+	0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcc9c9a9c, 0xcca5a6a5, 0xcca5a6a5, 0xcca5a6a5, 0xcca5a6a5, 
+	0xccadaead, 0xccadaead, 0xccadaead, 0xccadaead, 0xccb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 
+	0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 0xddb5b6b5, 
+	0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbabd, 0xddbdbebd, 0xddbdbebd, 0xddbec0bf, 0xddc0c2c1, 
+	0xddc7cacc, 0xddc8cccd, 0xddc0c3c5, 0xddc2c6c9, 0xddc3c5c7, 0xddc3c3c4, 0xddc0c3c2, 0xddbfc2c0, 
+	0xddc3c2c3, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 
+	0xddc5cac5, 0xddc5cac5, 0xddc5cac5, 0xddc5cac5, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 
+	0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 
+	0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 
+	0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 0xddcecece, 
+	0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddced2ce, 0xddced2ce, 
+	0xddcecfce, 0xddcfd0cf, 0xddd2d0d0, 0xddd1d3d2, 0xddd7d9d7, 0xddd9dad8, 0xdddbdddb, 0xdddde0de, 
+	0xdde0e3e2, 0xdde2e2e3, 0xdde2e3e1, 0xdde3e3e4, 0xdde5e3e5, 0xdde4e3e4, 0xdde3e0e2, 0xdddfdcdf, 
+	0xddd3d1d0, 0xddcecece, 0xddcfd0cf, 0xddd1d0d0, 0xddd5d6d4, 0xddd5d4d5, 0xddd5d4d4, 0xddd2d1d2, 
+	0xddd0cdd0, 0xddcfccd0, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 0xddcecace, 
+	0xddc5cace, 0xddc5cace, 0xddc5cace, 0xddc5cace, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 
+	0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 
+	0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddc5c2c5, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 0xddbdbebd, 
+	0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc5c6c5, 0xddc8c8c9, 0xddc9c8ca, 0xddc9cbcb, 0xddcacdcc, 
+	0xddc9c7c8, 0xddc8c8c9, 0xddcac8ca, 0xddc8c7c9, 0xddc6c7c6, 0xddc2c6c3, 0xddc2c3c1, 0xddc4c7c3, 
+	0xddb9bab9, 0xddb8b6b8, 0xddb7b7b7, 0xddbababa, 0xddbcbfbc, 0xddbcc0bc, 0xddbdc2bd, 0xddbdc2bd, 
+	0xddb5b6b5, 0xddb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 0xccadb2ad, 0xccadb2ad, 0xccadb2ad, 0xccadb2ad, 
+	0xcca5a6a5, 0xcca5a6a5, 0xcca5a6a5, 0xcca5a6a5, 0xcc9c9a94, 0xcc9c9a94, 0xcc9c9a94, 0xcc9c9a94, 
+	0xbb84827b, 0xbb84827b, 0xbb84827b, 0xaa84827b, 0xaa6b6d6b, 0xaa6b6d6b, 0x996b6d6b, 0x99474947, 
+	0xbb524d52, 0x661b1a1b, 0x44000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x22000000, 0x66101010, 0x77242224, 0x663f3f3f, 0x663f3f3f, 0x663f3f3f, 
+	0x77504e50, 0x77504e50, 0x77504e50, 0x77504e50, 0x88656565, 0x88656565, 0x88656565, 0x99656565, 
+	0x99767476, 0x99767476, 0x99767476, 0xaa767476, 0xaa7e7f7e, 0xaa7e7f7e, 0xaa7e7f7e, 0xaa7e7f7e, 
+	0xaa868786, 0xaa868786, 0xbb868786, 0xbb868786, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 
+	0xbb949494, 0xbb949494, 0xbb949494, 0xbb949494, 0xcc9c989c, 0xcc9c989c, 0xcc9c989c, 0xcc9c989c, 
+	0xccb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 0xccb5b6b5, 
+	0xccbdbabd, 0xccbdbabd, 0xccbdbabd, 0xccbdbabd, 0xccbdbebd, 0xccbdbebd, 0xccbcbdbc, 0xccb9baba, 
+	0xccb1b3b4, 0xccb2b4b4, 0xccb2b5b5, 0xccb3b5b6, 0xccb1b4b6, 0xccb3b5b6, 0xccb4b8b8, 0xccb7b9b9, 
+	0xccc0c0c2, 0xccc5c2c5, 0xccc5c2c5, 0xccc5c2c5, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 
+	0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccc5c6c5, 0xccc5c6c5, 0xccc5c6c5, 0xccc5c6c5, 
+	0xccc5cac5, 0xccc5cac5, 0xccc5cac5, 0xccc5cac5, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 
+	0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 
+	0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 
+	0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 0xcccecece, 
+	0xccced2ce, 0xccced2ce, 0xccced2ce, 0xccced2ce, 0xccced2ce, 0xccced2ce, 0xccced2ce, 0xccced2ce, 
+	0xcccecfce, 0xcccdcecd, 0xcccdcdcd, 0xcccbcbca, 0xccc7c8c7, 0xccc3c5c5, 0xccc3c4c4, 0xccc2c3c2, 
+	0xccbec1bf, 0xccbbbdbc, 0xccb7b8b6, 0xccb0b2b0, 0xccaeb1af, 0xccb0b1b0, 0xccb5b4b4, 0xccbcbabb, 
+	0xcca3a6a3, 0xccb8bab7, 0xccc9c9c7, 0xccc9c7c8, 0xccacacac, 0xccb5b3b7, 0xccb8b5b7, 0xccb7b5b5, 
+	0xccb0aeb1, 0xccb7b6b5, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 0xcccecace, 
+	0xccc5cace, 0xccc5cace, 0xccc5cace, 0xccc5cace, 0xccc5c6c5, 0xccc5c6c5, 0xccc5c6c5, 0xccc5c6c5, 
+	0xccc5c6c5, 0xccc5c6c5, 0xccc5c6c5, 0xccc5c6c5, 0xccc5c2c5, 0xccc5c2c5, 0xccc5c2c5, 0xccc5c2c5, 
+	0xccc5c2c5, 0xccc5c2c5, 0xccc5c2c5, 0xccc5c2c5, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 
+	0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 0xccbdbebd, 
+	0xccc5c6c5, 0xccc5c6c5, 0xccabaeac, 0xcca5a6a5, 0xcca8a9a8, 0xccaeadac, 0xccaeacab, 0xccb5b5b4, 
+	0xccbcbdbd, 0xccb0b1b2, 0xcca9a9a9, 0xcca5a4a6, 0xcc9f9fa1, 0xcc9da09f, 0xcc9ca09e, 0xccafb3b1, 
+	0xccacadab, 0xcca8a9a7, 0xcca0a09f, 0xcc999a99, 0xbb939492, 0xbb8d918e, 0xbb8c908c, 0xbb8c908c, 
+	0xbb868686, 0xbb868686, 0xbb868686, 0xbb868686, 0xbb7b7f7b, 0xbb7b7f7b, 0xaa7b7f7b, 0xaa7b7f7b, 
+	0xaa737370, 0xaa737370, 0xaa737370, 0xaa737370, 0x99686763, 0x99686763, 0x99686763, 0x99686763, 
+	0x995a5955, 0x885a5955, 0x885a5955, 0x8831312f, 0x77242424, 0x77242424, 0x77242424, 0x66242424, 
+	0x661b1a1b, 0x33000000, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x44080408, 0x66080408, 0x66242224, 0x66242224, 
+	0x662c2b2c, 0x662c2b2c, 0x662c2b2c, 0x662c2b2c, 0x663f413f, 0x663f413f, 0x663f413f, 0x663f413f, 
+	0x77504e50, 0x77504e50, 0x77504e50, 0x77504e50, 0x77585858, 0x77585858, 0x77585858, 0x77585858, 
+	0x88606060, 0x88606060, 0x88606060, 0x88606060, 0x88636563, 0x88636563, 0x88636563, 0x88636563, 
+	0x886b6b6b, 0x886b6b6b, 0x996b6b6b, 0x996b6b6b, 0x99736f73, 0x99736f73, 0x99736f73, 0x99736f73, 
+	0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 0x996e6d6e, 0x996e706e, 0x996e706e, 0x996e706e, 0x996e706e, 
+	0x99707170, 0x99707170, 0x99707170, 0x99707170, 0xaa767576, 0x99767576, 0xaa767576, 0xaa767576, 
+	0xaa7b7c7e, 0xaa7b7c7e, 0xaa7b7c7f, 0xaa7d7e80, 0xaa7a7a7c, 0xaa7b7a7c, 0xaa787979, 0xaa777677, 
+	0xaa797979, 0xaa797979, 0xaa797979, 0xaa797979, 0xaa979694, 0xaa979694, 0xaa979694, 0xaa979694, 
+	0xaa949694, 0xaa949694, 0xaa949694, 0xaa949694, 0xaa797b79, 0xaa797b79, 0xaa797b79, 0xaa797b79, 
+	0xaa797979, 0xaa797979, 0xaa797979, 0xaa797979, 0xaa7b7976, 0xaa7b7976, 0xaa7b7976, 0xaa7b7976, 
+	0xaa767776, 0xaa767776, 0xaa767776, 0xaa767776, 0xaa767776, 0xaa767776, 0xaa767776, 0xaa767776, 
+	0xaa767576, 0x99767576, 0x99767576, 0x99767576, 0x99767876, 0x99767876, 0x99767876, 0x99767876, 
+	0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x99767576, 0x99767576, 
+	0x99767776, 0x99767776, 0x99767776, 0x99767776, 0x99707770, 0x99707770, 0x99707770, 0x99707770, 
+	0x99707370, 0x99707370, 0x99707370, 0x99717571, 0x99787c79, 0x99787d79, 0x99787d79, 0x99797d79, 
+	0x99787d79, 0x99797d79, 0x99797d78, 0x99797d79, 0x99797c79, 0x99797c79, 0x99797c79, 0x99797c78, 
+	0x99747672, 0x99727672, 0x99727371, 0x99707371, 0x99797879, 0x99797878, 0x99797879, 0x99787879, 
+	0x99777577, 0xaa777676, 0xaa767476, 0xaa767476, 0xaa767476, 0xaa767476, 0xaa767476, 0xaa767476, 
+	0xaa6e7170, 0xaa6e7170, 0xaa6e7170, 0xaa6e7170, 0xaa737373, 0xaa737373, 0xaa737373, 0xaa737373, 
+	0xaa737373, 0xaa737373, 0xaa737373, 0xaa737373, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 
+	0xaa737173, 0xaa737173, 0xaa737173, 0xaa737173, 0xaa707070, 0xaa707070, 0xaa707070, 0xaa707070, 
+	0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 0xaa6b6d6b, 
+	0x996e706e, 0xaa6f716f, 0x99747673, 0x99757774, 0x99767676, 0x99777876, 0x99737373, 0x99737272, 
+	0x99757577, 0x996e6e72, 0x996b6c70, 0x996b6c70, 0x99686c68, 0x99686c68, 0x99686c68, 0x996b6f6b, 
+	0x99636563, 0x995d5e5d, 0x995d5e5d, 0x995d5e5d, 0x995a5e5a, 0x885a5e5a, 0x885a5e5a, 0x885a5e5a, 
+	0x88585558, 0x88585558, 0x88585558, 0x88585558, 0x884a4c4a, 0x884a4c4a, 0x884a4c4a, 0x884a4c4a, 
+	0x77423f3c, 0x77423f3c, 0x77423f3c, 0x77423f3c, 0x77343331, 0x77343331, 0x77343331, 0x77343331, 
+	0x6631312f, 0x66080808, 0x66080808, 0x66080808, 0x66000000, 0x66000000, 0x55000000, 0x33000000, 
+	0x44000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080408, 0x11080408, 0x22080408, 0x33080408, 
+	0x44080808, 0x55080808, 0x55080808, 0x66080808, 0x66191c19, 0x66191c19, 0x66191c19, 0x66191c19, 
+	0x66292829, 0x66292829, 0x66292829, 0x66292829, 0x66313131, 0x66313131, 0x66313131, 0x66313131, 
+	0x663a393a, 0x663a393a, 0x663a393a, 0x663a393a, 0x663a3d3a, 0x663a3d3a, 0x663a3d3a, 0x663a3d3a, 
+	0x66424142, 0x66424142, 0x66424142, 0x66424142, 0x664a454a, 0x664a454a, 0x664a454a, 0x664a454a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 
+	0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x77525152, 0x77525152, 0x77525152, 0x77525152, 
+	0x77525152, 0x77525152, 0x77525152, 0x77525152, 0x77525152, 0x77525152, 0x77525152, 0x77525152, 
+	0x77525552, 0x77525552, 0x77525552, 0x77525552, 0x774a4542, 0x774a4542, 0x774a4542, 0x774a4542, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77525552, 0x77525552, 0x77525552, 0x77525552, 
+	0x77525152, 0x77525152, 0x77525152, 0x77525152, 0x7752514a, 0x7752514a, 0x7752514a, 0x7752514a, 
+	0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 0x774a4d4a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x77424942, 0x77424942, 0x77424942, 0x77424942, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77424942, 0x77424942, 0x77424942, 0x77424942, 
+	0x77424942, 0x77424942, 0x77424942, 0x77424942, 0x77424942, 0x77424942, 0x77424942, 0x77424942, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 
+	0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 0x774a494a, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77424542, 
+	0x77424542, 0x77424542, 0x77424542, 0x77424542, 0x77424142, 0x77424142, 0x77424142, 0x77424142, 
+	0x773a3d42, 0x773a3d42, 0x773a3d42, 0x773a3d42, 0x773a3d3a, 0x773a3d3a, 0x773a3d3a, 0x773a3d3a, 
+	0x66313531, 0x66313531, 0x66313531, 0x66313531, 0x66292d29, 0x66292d29, 0x66292d29, 0x66292d29, 
+	0x66292429, 0x66292429, 0x66292429, 0x66292429, 0x66191819, 0x66191819, 0x66191819, 0x66191819, 
+	0x66100c08, 0x66100c08, 0x66100c08, 0x66100c08, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 
+	0x66080808, 0x66080808, 0x66080808, 0x55080808, 0x44000000, 0x22000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22000000, 0x22000000, 0x33000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x55000000, 0x55000000, 0x55000400, 0x55000400, 0x55000400, 0x55000400, 
+	0x55080808, 0x66080808, 0x66080808, 0x66080808, 0x662f2f2f, 0x662f2f2f, 0x662f2f2f, 0x662f2f2f, 
+	0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 
+	0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 
+	0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 
+	0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 
+	0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 
+	0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 0x66312f31, 
+	0x662f2f2f, 0x662f2f2f, 0x662f2f2f, 0x662f2f2f, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 0x66080808, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080408, 
+	0x66080408, 0x66080408, 0x66080408, 0x66080408, 0x66080400, 0x66080400, 0x66080400, 0x66080400, 
+	0x66000400, 0x66000400, 0x66000400, 0x66000400, 0x66000400, 0x66000400, 0x66000400, 0x66000400, 
+	0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x66000000, 
+	0x66000000, 0x66000000, 0x66000000, 0x66000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x44000000, 0x44000000, 0x33000000, 0x33000000, 
+	0x22000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000400, 0x11000400, 0x11000400, 0x22000400, 
+	0x22080808, 0x22080808, 0x22080808, 0x22080808, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 
+	0x33000000, 0x33000000, 0x33000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x55000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55000000, 
+	0x55000000, 0x55000000, 0x55000000, 0x55000000, 0x55080808, 0x44080808, 0x44080808, 0x44080808, 
+	0x55080808, 0x44080808, 0x44080808, 0x55080808, 0x55080808, 0x44080808, 0x44080808, 0x44080808, 
+	0x44080808, 0x44080808, 0x44080808, 0x44080808, 0x44080808, 0x44080808, 0x44080808, 0x44080808, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 
+	0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 
+	0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x55080408, 
+	0x55080408, 0x55080408, 0x55080408, 0x55080408, 0x44080408, 0x44080408, 0x44080408, 0x44080408, 
+	0x44080408, 0x44080408, 0x44080408, 0x44080408, 0x44080400, 0x44080400, 0x44080400, 0x44080400, 
+	0x44000400, 0x44000400, 0x44000400, 0x44000400, 0x44000400, 0x44000400, 0x44000400, 0x44000400, 
+	0x44000000, 0x44000000, 0x44000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 
+	0x33000000, 0x33000000, 0x22000000, 0x22000000, 0x22000000, 0x22000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00080808, 0x00080808, 0x00080808, 0x00080808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 
+	0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 
+	0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 0x11080808, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080408, 
+	0x11080408, 0x11080408, 0x11080408, 0x11080408, 0x11080400, 0x11080400, 0x11080400, 0x11080400, 
+	0x11000400, 0x11000400, 0x11000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xbb4d4e4d, 0xbb737573, 0xbb737573, 
+	0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 
+	0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 
+	0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 
+	0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 
+	0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 
+	0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 
+	0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 0xbb948e94, 
+	0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 
+	0xbb949294, 0xbb949294, 0xbb949294, 0xbb949294, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 0xbb8c8e8c, 
+	0xbb737573, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xcc737573, 0xcc737573, 0xcc737573, 
+	0xcca5a6a5, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 
+	0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xccffffff, 0xcca5a6a5, 0xcca5a6a5, 
+	0xcc737173, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xdd737573, 0xdd737573, 0xddadaead, 
+	0xdda5a6a5, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 
+	0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddffffff, 0xddbabcba, 0xdda5a6a5, 
+	0xddadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xee737573, 0xeeadaead, 0xeeadaead, 
+	0xeebabcba, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeeffffff, 0xeed0d1d0, 0xeebabcba, 
+	0xeeadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xee737573, 0xeeadaead, 0xeeadaead, 
+	0xeed0d1d0, 0xeefffffe, 0xeeffffff, 0xeeffffff, 0xeefefffe, 0xfffefeff, 0xeefffeff, 0xeefefeff, 
+	0xeefeffff, 0xeefeffff, 0xeeffffff, 0xeefeffff, 0xeeffffff, 0xeefffefe, 0xeefffefe, 0xeefeffff, 
+	0xfffefefe, 0xeefefffe, 0xeefffffe, 0xeeffffff, 0xfffefffe, 0xeefffefe, 0xeeffffff, 0xeefffffe, 
+	0xfffefffe, 0xeefffeff, 0xeefeffff, 0xeefffeff, 0xffffffff, 0xeefffffe, 0xfffffefe, 0xfffffeff, 
+	0xeefeffff, 0xffffffff, 0xfffffffe, 0xeefffeff, 0xeefefffe, 0xffffffff, 0xeefffeff, 0xeefefffe, 
+	0xeefffffe, 0xeefffeff, 0xeefeffff, 0xeefeffff, 0xeefffffe, 0xeeffffff, 0xeeffffff, 0xeeffffff, 
+	0xeeffffff, 0xeefffeff, 0xfffeffff, 0xeefffffe, 0xeefffeff, 0xfffefffe, 0xeefffffe, 0xeeffffff, 
+	0xeefffefe, 0xffffffff, 0xeeffffff, 0xeefefefe, 0xeefefefe, 0xeeffffff, 0xeefffefe, 0xeefeffff, 
+	0xfffffffe, 0xeefffffe, 0xeefffefe, 0xeeffffff, 0xeefefeff, 0xeefefeff, 0xfffffeff, 0xfffffeff, 
+	0xffffffff, 0xeefeffff, 0xeefefeff, 0xeefffeff, 0xfffeffff, 0xeefffefe, 0xffffffff, 0xeefffffe, 
+	0xeeffffff, 0xfffffeff, 0xeefffffe, 0xeeffffff, 0xeefeffff, 0xfffefefe, 0xeefffeff, 0xeefffffe, 
+	0xeefffefe, 0xeefffeff, 0xfffefefe, 0xfffffffe, 0xeefffeff, 0xeefefeff, 0xeefffefe, 0xeeffffff, 
+	0xeefffeff, 0xeefefeff, 0xfffefeff, 0xeefefefe, 0xfffffffe, 0xfffefeff, 0xeefefeff, 0xeeffffff, 
+	0xeefefefe, 0xeefffffe, 0xeefefefe, 0xeefffeff, 0xfffefffe, 0xfffefefe, 0xeefefffe, 0xeefefffe, 
+	0xfffffffe, 0xffffffff, 0xeefeffff, 0xfffffefe, 0xeefefefe, 0xeefffefe, 0xfffefefe, 0xeefefeff, 
+	0xfffeffff, 0xeeffffff, 0xfffefefe, 0xfffefefe, 0xeefeffff, 0xeefeffff, 0xfffffefe, 0xeeffffff, 
+	0xeefffefe, 0xeefefffe, 0xeefefffe, 0xeefffeff, 0xfffffefe, 0xeeffffff, 0xfffefeff, 0xfffffefe, 
+	0xeefeffff, 0xeefefeff, 0xeefefeff, 0xeefffffe, 0xfffffefe, 0xeefffeff, 0xeefefffe, 0xeefefefe, 
+	0xeefeffff, 0xeefefefe, 0xeefeffff, 0xeefffeff, 0xeefeffff, 0xeeffffff, 0xfffffeff, 0xeeffffff, 
+	0xeefefffe, 0xfffefffe, 0xfffefffe, 0xeefffeff, 0xfffffeff, 0xeefefefe, 0xeefefffe, 0xeefefffe, 
+	0xeefefffe, 0xeefffeff, 0xeefffeff, 0xfffeffff, 0xeefffffe, 0xeeffffff, 0xeefffefe, 0xeefefefe, 
+	0xeefefeff, 0xeefefefe, 0xeefefeff, 0xeeffffff, 0xeeffffff, 0xfffefffe, 0xfffeffff, 0xeefffefe, 
+	0xeefffffe, 0xeefefefe, 0xeefffefe, 0xeefeffff, 0xeefffffe, 0xeefefefe, 0xeefefffe, 0xeefeffff, 
+	0xeefffeff, 0xfffffffe, 0xeefeffff, 0xeefeffff, 0xeefffffe, 0xeefffffe, 0xeefefffe, 0xeefffeff, 
+	0xeefefeff, 0xfffffffe, 0xeefefeff, 0xeefefffe, 0xeeffffff, 0xeefffefe, 0xeefefeff, 0xeefffffe, 
+	0xeefefffe, 0xeefffeff, 0xeefefeff, 0xfffeffff, 0xeefefeff, 0xeefffeff, 0xeefffffe, 0xeefffeff, 
+	0xeefffefe, 0xeefefeff, 0xeefefffe, 0xeefefeff, 0xeefffeff, 0xeefffffe, 0xeefffffe, 0xeefefeff, 
+	0xeefefefe, 0xfffffeff, 0xeefffefe, 0xeefefeff, 0xeefefefe, 0xfffeffff, 0xeee6e7e6, 0xeed0d1d0, 
+	0xeeadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848384, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffdedfde, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefeff, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefffe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefeff, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefffe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 
+	0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xfffefefe, 0xffe9e9e9, 0xffdedfde, 
+	0xffdedfde, 0x00060306, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848384, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffdedfde, 0xfffefdfd, 0xfffdfdfd, 0xfffdfefd, 0xfffdfdfd, 0xfffdfdfe, 0xfffdfdfd, 0xfffefefd, 
+	0xfffdfefe, 0xfffdfefd, 0xfffefefd, 0xfffefefd, 0xfffefefd, 0xfffdfefd, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffefefe, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfe, 0xfffefdfd, 0xfffefefd, 0xfffdfefd, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffdfefe, 0xfffdfdfd, 0xfffdfefd, 0xfffdfefe, 0xfffefdfd, 0xfffefdfd, 0xfffdfdfe, 
+	0xfffdfdfd, 0xfffdfefd, 0xfffdfdfe, 0xfffdfdfd, 0xfffdfdfe, 0xfffdfefd, 0xfffefdfe, 0xfffefdfd, 
+	0xfffdfefd, 0xfffefdfe, 0xfffefdfd, 0xfffefefd, 0xfffefefe, 0xfffefdfe, 0xfffefefe, 0xfffdfdfd, 
+	0xfffdfefd, 0xfffdfefd, 0xfffdfdfd, 0xfffdfdfd, 0xfffefdfe, 0xfffdfefe, 0xfffefdfd, 0xfffdfefd, 
+	0xfffdfdfd, 0xfffdfefe, 0xfffdfefd, 0xfffefdfd, 0xfffdfefe, 0xfffdfdfe, 0xfffdfefd, 0xfffefdfe, 
+	0xfffdfefd, 0xfffefefd, 0xfffdfefd, 0xfffdfefd, 0xfffdfefd, 0xfffdfefe, 0xfffefdfe, 0xfffdfefd, 
+	0xfffefefe, 0xfffdfdfe, 0xfffefefd, 0xfffdfdfd, 0xfffefefd, 0xfffefdfe, 0xfffefdfd, 0xfffefefd, 
+	0xfffdfefd, 0xfffdfefd, 0xfffdfdfe, 0xfffdfdfd, 0xfffefdfe, 0xfffdfefe, 0xfffdfdfd, 0xfffdfefd, 
+	0xfffdfdfe, 0xfffefdfe, 0xfffdfdfe, 0xfffdfefe, 0xfffefefe, 0xfffefefd, 0xfffefdfe, 0xfffdfdfe, 
+	0xfffdfdfd, 0xfffdfefd, 0xfffefdfd, 0xfffdfdfd, 0xfffdfdfe, 0xfffdfdfd, 0xfffefefe, 0xfffefdfd, 
+	0xfffefdfd, 0xfffdfefe, 0xfffdfdfe, 0xfffefdfd, 0xfffefdfd, 0xfffefdfe, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffefefe, 0xfffdfefe, 0xfffefdfd, 0xfffefefe, 0xfffdfdfd, 0xfffefdfd, 0xfffdfdfd, 0xfffefdfd, 
+	0xfffefdfe, 0xfffdfefd, 0xfffdfdfd, 0xfffdfefe, 0xfffdfdfd, 0xfffdfefe, 0xfffdfdfe, 0xfffdfdfd, 
+	0xfffefefe, 0xfffdfefd, 0xfffdfefe, 0xfffdfdfe, 0xfffdfdfe, 0xfffefefd, 0xfffefdfe, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffefefe, 0xfffdfdfe, 0xfffefdfe, 0xfffdfdfd, 0xfffdfefd, 0xfffefefe, 0xfffefdfd, 
+	0xfffdfefe, 0xfffdfefe, 0xfffefefe, 0xfffdfdfe, 0xfffdfdfd, 0xfffefdfd, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffdfefd, 0xfffdfdfd, 0xfffefdfd, 0xfffefefe, 0xfffdfefd, 0xfffefdfd, 0xfffdfefe, 
+	0xfffefdfd, 0xfffefdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffefdfe, 0xfffefdfd, 0xfffefdfd, 0xfffdfefe, 
+	0xfffdfefd, 0xfffdfefd, 0xfffdfdfd, 0xfffefefe, 0xfffdfefd, 0xfffefdfd, 0xfffdfdfd, 0xfffefefd, 
+	0xfffefefd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfefd, 0xfffdfdfe, 0xfffefdfe, 0xfffefdfd, 
+	0xfffdfdfd, 0xfffefefd, 0xfffefefd, 0xfffdfefd, 0xfffefefd, 0xfffefdfd, 0xfffdfefe, 0xfffdfefd, 
+	0xfffdfdfd, 0xfffdfdfe, 0xfffdfdfe, 0xfffdfdfd, 0xfffdfdfe, 0xfffefdfe, 0xfffefdfd, 0xfffdfefe, 
+	0xfffdfdfd, 0xfffefefd, 0xfffdfdfd, 0xfffefdfe, 0xfffdfefe, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfe, 
+	0xfffefdfe, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffefdfe, 0xfffefdfe, 0xfffdfdfd, 0xfffdfdfe, 
+	0xfffefefd, 0xfffdfdfd, 0xfffefefe, 0xfffdfefd, 0xfffdfdfe, 0xfffdfdfe, 0xfff4f4f4, 0xffdedfde, 
+	0xffdedfde, 0x00060306, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848384, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffe9e9e9, 0xfffdfcfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfc, 0xfffcfcfd, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffcfdfd, 0xfffdfdfc, 0xfffcfdfd, 0xfffcfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfcfd, 0xfffdfdfc, 
+	0xfffdfcfd, 0xfffdfcfd, 0xfffdfcfc, 0xfffcfcfc, 0xfffdfcfd, 0xfffdfdfd, 0xfffdfcfd, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffdfcfc, 0xfffdfcfd, 0xfffcfcfd, 0xfffdfdfc, 0xfffdfcfd, 0xfffdfdfc, 0xfffdfdfd, 
+	0xfffdfdfc, 0xfffcfdfd, 0xfffdfdfc, 0xfffdfcfd, 0xfffcfcfd, 0xfffdfdfd, 0xfffdfdfc, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffdfdfd, 0xfffcfcfc, 0xfffdfdfd, 0xfffcfdfd, 0xfffdfdfc, 0xfffdfdfc, 0xfffdfcfd, 
+	0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfdfd, 
+	0xfffdfcfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfdfd, 0xfffcfcfc, 0xfffcfdfd, 0xfffdfdfc, 0xfffdfcfd, 
+	0xfffdfcfd, 0xfffdfcfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfdfd, 0xfffdfcfd, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffdfdfc, 0xfffdfdfd, 0xfffdfcfd, 0xfffcfdfd, 0xfffdfcfc, 0xfffdfcfd, 0xfffdfdfd, 
+	0xfffcfdfc, 0xfffdfdfd, 0xfffdfcfc, 0xfffdfcfc, 0xfffcfdfc, 0xfffcfdfd, 0xfffdfdfd, 0xfffcfcfd, 
+	0xfffdfcfd, 0xfffcfcfc, 0xfffdfdfc, 0xfffcfcfd, 0xfffcfdfd, 0xfffdfdfd, 0xfffcfcfd, 0xfffdfdfd, 
+	0xfffdfcfd, 0xfffcfdfd, 0xfffdfdfd, 0xfffdfdfc, 0xfffcfcfc, 0xfffdfcfd, 0xfffcfdfd, 0xfffdfcfc, 
+	0xfffcfdfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfcfd, 0xfffdfdfd, 
+	0xfffdfdfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfc, 0xfffdfcfd, 
+	0xfffdfdfd, 0xfffcfcfc, 0xfffdfcfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffdfcfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfcfd, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffcfdfd, 0xfffdfcfc, 0xfffcfdfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffdfcfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfdfd, 0xfffdfcfd, 0xfffdfdfd, 
+	0xfffdfdfc, 0xfffdfdfc, 0xfffcfdfd, 0xfffcfdfd, 0xfffdfdfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffdfcfd, 0xfffdfdfd, 0xfffdfdfc, 0xfffdfdfc, 0xfffdfdfc, 0xfffdfdfd, 0xfffcfdfc, 0xfffdfdfd, 
+	0xfffdfdfd, 0xfffcfcfd, 0xfffdfcfd, 0xfffcfdfc, 0xfffdfcfd, 0xfffcfdfc, 0xfffdfdfd, 0xfffdfdfd, 
+	0xfffdfcfc, 0xfffdfdfd, 0xfffcfcfd, 0xfffdfdfc, 0xfffdfdfc, 0xfffdfdfc, 0xfffdfcfd, 0xfffdfdfd, 
+	0xfffcfdfd, 0xfffdfcfd, 0xfffdfcfd, 0xfffdfdfc, 0xfffdfdfd, 0xfffcfdfd, 0xfffdfdfd, 0xfffcfdfd, 
+	0xfffdfcfd, 0xfffcfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfcfd, 0xfffdfdfd, 0xfffcfdfd, 0xfffdfcfc, 
+	0xfffcfcfd, 0xfffdfcfd, 0xfffdfdfc, 0xfffcfdfd, 0xfffdfdfd, 0xfffdfdfd, 0xfffdfcfd, 0xfffdfdfc, 
+	0xfffdfdfd, 0xfffdfdfd, 0xfffdfcfc, 0xfffdfdfd, 0xfffdfcfd, 0xfffcfdfd, 0xfffcfdfc, 0xfffdfdfd, 
+	0xfffdfdfc, 0xfffdfdfd, 0xfffdfdfd, 0xfffcfdfd, 0xfffcfdfd, 0xfffdfcfd, 0xfff4f4f4, 0xffe9e9e9, 
+	0xffdedfde, 0x00060306, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848384, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffe9e9e9, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfbfc, 
+	0xfffbfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffbfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfbfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfbfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfb, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfb, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfb, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfb, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 
+	0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfffcfcfc, 0xfff4f4f4, 0xffe9e9e9, 
+	0xffdedfde, 0x00060306, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848684, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffe6ebe6, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 
+	0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffcfbfb, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfbfb, 
+	0xfffbfcfc, 0xfffcfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfbfc, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfcfc, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfcfb, 0xfffbfbfb, 
+	0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 
+	0xfffcfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffcfbfb, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfc, 0xfffbfcfb, 0xfffbfcfb, 
+	0xfffbfcfc, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfcfb, 0xfffbfbfc, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 
+	0xfffcfbfb, 0xfffcfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfc, 0xfffbfbfb, 0xfffbfbfb, 
+	0xfffbfbfc, 0xfffbfbfb, 0xfffbfcfc, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfb, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 
+	0xfffbfcfb, 0xfffbfcfb, 0xfffcfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffcfbfb, 0xfffbfbfc, 
+	0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfc, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 
+	0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfc, 0xfffcfbfb, 
+	0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfbfb, 
+	0xfffbfbfc, 0xfffbfbfc, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfc, 0xfffcfbfb, 0xfffbfcfb, 
+	0xfffbfbfb, 0xfffcfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 
+	0xfffbfbfc, 0xfffbfcfc, 0xfffcfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfc, 0xfffbfbfb, 
+	0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 
+	0xfffbfcfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfc, 0xfffbfcfc, 0xfffbfbfc, 0xfffbfbfb, 0xfffbfcfc, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfc, 
+	0xfffbfcfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffcfbfb, 0xfffbfbfc, 0xfffbfcfc, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfc, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfc, 0xfffbfcfb, 0xfffbfbfb, 
+	0xfffbfbfb, 0xfffbfcfb, 0xfffcfbfb, 0xfffbfbfc, 0xfffbfbfb, 0xfffcfbfb, 0xfffcfbfb, 0xfffbfbfb, 
+	0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfcfb, 0xfffbfbfb, 
+	0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffcfbfb, 
+	0xfffbfbfc, 0xfffbfcfb, 0xfffbfcfb, 0xfffbfbfb, 0xfffbfbfb, 0xfffbfbfc, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffdedfde, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848684, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffe6ebe6, 0xfffafafb, 0xfffafafb, 0xfffafafa, 0xfffafbfa, 0xfffbfafb, 0xfffafafa, 0xfffafafa, 
+	0xfffafbfa, 0xfffbfafa, 0xfffbfafa, 0xfffafbfa, 0xfffbfafa, 0xfffbfafb, 0xfffafafa, 0xfffbfafa, 
+	0xfffafafa, 0xfffafafb, 0xfffbfafb, 0xfffafafa, 0xfffbfbfa, 0xfffafafa, 0xfffafbfb, 0xfffafbfb, 
+	0xfffafbfa, 0xfffafafb, 0xfffafbfa, 0xfffbfafa, 0xfffbfbfa, 0xfffafbfa, 0xfffbfafa, 0xfffafbfa, 
+	0xfffafafa, 0xfffbfafa, 0xfffafbfa, 0xfffbfafb, 0xfffafafb, 0xfffafafa, 0xfffafbfa, 0xfffbfbfb, 
+	0xfffafbfa, 0xfffbfafb, 0xfffafafa, 0xfffafbfb, 0xfffafbfa, 0xfffafafa, 0xfffafafb, 0xfffafbfb, 
+	0xfffbfafa, 0xfffafbfa, 0xfffafafb, 0xfffafafb, 0xfffafafb, 0xfffafafb, 0xfffbfbfb, 0xfffafafa, 
+	0xfffafafa, 0xfffafafb, 0xfffbfafa, 0xfffafbfa, 0xfffafbfa, 0xfffafbfa, 0xfffafafa, 0xfffbfbfa, 
+	0xfffafafa, 0xfffbfbfa, 0xfffbfafa, 0xfffbfafb, 0xfffafafa, 0xfffafbfa, 0xfffafafa, 0xfffafbfa, 
+	0xfffafafa, 0xfffafafa, 0xfffbfafb, 0xfffafafa, 0xfffafbfa, 0xfffafafa, 0xfffafafa, 0xfffafafa, 
+	0xfffbfbfa, 0xfffafafa, 0xfffbfafa, 0xfffafafb, 0xfffbfbfa, 0xfffafbfa, 0xfffafbfa, 0xfffafafa, 
+	0xfffafbfb, 0xfffbfbfa, 0xfffafafa, 0xfffafafa, 0xfffbfafb, 0xfffafafb, 0xfffafbfa, 0xfffafbfa, 
+	0xfffbfbfa, 0xfffbfbfb, 0xfffafbfa, 0xfffafafa, 0xfffbfbfa, 0xfffbfafa, 0xfffafbfa, 0xfffafafa, 
+	0xfffbfafb, 0xfffafafa, 0xfffbfafb, 0xfffbfbfb, 0xfffbfafb, 0xfffafafa, 0xfffafafa, 0xfffafbfa, 
+	0xfffafafa, 0xfffafafb, 0xfffafafb, 0xfffafafb, 0xfffbfafb, 0xfffbfafb, 0xfffafbfa, 0xfffbfafa, 
+	0xfffafafa, 0xfffafbfb, 0xfffbfafa, 0xfffafafb, 0xfffafbfb, 0xfffafbfa, 0xfffafafa, 0xfffbfbfa, 
+	0xfffafbfa, 0xfffafafa, 0xfffafafb, 0xfffbfafa, 0xfffafafa, 0xfffbfafa, 0xfffbfafb, 0xfffbfafb, 
+	0xfffafafa, 0xfffafbfa, 0xfffbfbfa, 0xfffafbfa, 0xfffbfbfa, 0xfffafbfa, 0xfffafbfb, 0xfffafbfa, 
+	0xfffbfbfb, 0xfffafbfb, 0xfffbfafb, 0xfffafafa, 0xfffafafa, 0xfffbfafa, 0xfffbfafa, 0xfffbfafb, 
+	0xfffbfbfa, 0xfffafbfa, 0xfffafafa, 0xfffafbfa, 0xfffbfafa, 0xfffafafb, 0xfffafbfa, 0xfffafafb, 
+	0xfffbfbfa, 0xfffbfafa, 0xfffbfbfa, 0xfffbfafb, 0xfffbfafa, 0xfffafafa, 0xfffafafa, 0xfffbfafb, 
+	0xfffafafa, 0xfffbfbfb, 0xfffbfafb, 0xfffafafb, 0xfffafafa, 0xfffbfafa, 0xfffbfafb, 0xfffbfafb, 
+	0xfffbfafa, 0xfffafafb, 0xfffbfafa, 0xfffafafb, 0xfffafafa, 0xfffafbfb, 0xfffbfbfa, 0xfffbfafa, 
+	0xfffafbfa, 0xfffafafa, 0xfffafbfa, 0xfffbfbfa, 0xfffafbfb, 0xfffafbfb, 0xfffbfafb, 0xfffafafa, 
+	0xfffafbfb, 0xfffafafb, 0xfffbfbfa, 0xfffafafa, 0xfffafafb, 0xfffafafa, 0xfffafafb, 0xfffafbfa, 
+	0xfffbfafa, 0xfffbfbfb, 0xfffafafb, 0xfffafbfb, 0xfffafbfb, 0xfffbfafa, 0xfffafbfb, 0xfffafafa, 
+	0xfffafafa, 0xfffafbfa, 0xfffbfafa, 0xfffafbfa, 0xfffbfafa, 0xfffbfafa, 0xfffafbfa, 0xfffbfafb, 
+	0xfffafbfa, 0xfffafafb, 0xfffbfafa, 0xfffbfafb, 0xfffafbfb, 0xfffbfbfa, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffdedfde, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848684, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffe6ebe6, 0xfffafafa, 0xfff9f9fa, 0xfffaf9fa, 0xfff9faf9, 0xfff9faf9, 0xfffafafa, 0xfff9f9f9, 
+	0xfffaf9f9, 0xfff9f9f9, 0xfff9f9f9, 0xfffaf9f9, 0xfff9fafa, 0xfff9fafa, 0xfff9f9fa, 0xfffafaf9, 
+	0xfff9faf9, 0xfffafafa, 0xfff9f9fa, 0xfff9f9f9, 0xfff9f9f9, 0xfffaf9fa, 0xfffaf9fa, 0xfff9f9f9, 
+	0xfffafaf9, 0xfff9f9f9, 0xfff9faf9, 0xfffaf9f9, 0xfffafaf9, 0xfffaf9f9, 0xfff9f9fa, 0xfff9f9f9, 
+	0xfffafafa, 0xfff9faf9, 0xfff9f9f9, 0xfff9fafa, 0xfffafaf9, 0xfff9f9fa, 0xfffaf9f9, 0xfff9f9fa, 
+	0xfff9faf9, 0xfffafafa, 0xfffafafa, 0xfffafaf9, 0xfff9faf9, 0xfff9f9f9, 0xfff9fafa, 0xfffafaf9, 
+	0xfffafaf9, 0xfffafafa, 0xfff9f9fa, 0xfffaf9fa, 0xfffafaf9, 0xfff9f9f9, 0xfffaf9f9, 0xfff9fafa, 
+	0xfff9fafa, 0xfff9faf9, 0xfffaf9f9, 0xfffaf9fa, 0xfffaf9f9, 0xfff9f9fa, 0xfffaf9f9, 0xfff9f9f9, 
+	0xfff9faf9, 0xfffaf9fa, 0xfffaf9f9, 0xfffaf9f9, 0xfff9faf9, 0xfffafafa, 0xfff9f9f9, 0xfff9f9fa, 
+	0xfffafafa, 0xfff9f9f9, 0xfffafaf9, 0xfffaf9f9, 0xfff9faf9, 0xfff9f9f9, 0xfffafaf9, 0xfff9f9fa, 
+	0xfff9faf9, 0xfff9fafa, 0xfffaf9fa, 0xfffafaf9, 0xfffafaf9, 0xfffaf9fa, 0xfff9f9fa, 0xfffaf9f9, 
+	0xfffaf9fa, 0xfff9fafa, 0xfffaf9f9, 0xfff9f9f9, 0xfffaf9f9, 0xfff9f9fa, 0xfffafafa, 0xfff9fafa, 
+	0xfff9f9fa, 0xfffaf9f9, 0xfffafaf9, 0xfffafaf9, 0xfff9faf9, 0xfff9f9fa, 0xfff9fafa, 0xfffaf9fa, 
+	0xfff9f9fa, 0xfffaf9f9, 0xfffafafa, 0xfff9faf9, 0xfffafaf9, 0xfffaf9f9, 0xfff9faf9, 0xfffaf9fa, 
+	0xfffafafa, 0xfffafaf9, 0xfff9faf9, 0xfffafaf9, 0xfffafafa, 0xfffafafa, 0xfff9f9f9, 0xfff9f9fa, 
+	0xfffaf9fa, 0xfff9f9f9, 0xfffafaf9, 0xfffafaf9, 0xfffafaf9, 0xfffaf9f9, 0xfffafafa, 0xfff9f9fa, 
+	0xfff9fafa, 0xfff9faf9, 0xfffaf9f9, 0xfffaf9fa, 0xfff9f9f9, 0xfff9fafa, 0xfff9f9fa, 0xfff9f9fa, 
+	0xfff9f9f9, 0xfffafaf9, 0xfff9f9f9, 0xfff9faf9, 0xfff9f9fa, 0xfffaf9fa, 0xfff9faf9, 0xfffafafa, 
+	0xfff9f9fa, 0xfffaf9fa, 0xfffafaf9, 0xfffaf9f9, 0xfffafafa, 0xfff9f9fa, 0xfffafaf9, 0xfffaf9f9, 
+	0xfff9faf9, 0xfffafaf9, 0xfff9faf9, 0xfff9f9f9, 0xfff9f9f9, 0xfff9f9f9, 0xfffafaf9, 0xfffaf9fa, 
+	0xfff9faf9, 0xfffaf9f9, 0xfffafaf9, 0xfffafaf9, 0xfff9fafa, 0xfffafafa, 0xfffaf9f9, 0xfff9fafa, 
+	0xfff9f9f9, 0xfffafaf9, 0xfffaf9fa, 0xfff9f9f9, 0xfff9faf9, 0xfffafaf9, 0xfff9f9fa, 0xfff9f9fa, 
+	0xfffafaf9, 0xfffaf9fa, 0xfff9fafa, 0xfff9f9f9, 0xfff9faf9, 0xfff9f9f9, 0xfff9f9fa, 0xfff9fafa, 
+	0xfff9f9fa, 0xfffafafa, 0xfff9f9fa, 0xfffaf9fa, 0xfff9f9fa, 0xfffafaf9, 0xfff9fafa, 0xfff9f9fa, 
+	0xfff9faf9, 0xfff9f9fa, 0xfff9fafa, 0xfffaf9f9, 0xfff9f9f9, 0xfffafafa, 0xfff9f9f9, 0xfff9faf9, 
+	0xfffafaf9, 0xfff9faf9, 0xfff9f9fa, 0xfffaf9f9, 0xfffaf9fa, 0xfff9f9fa, 0xfff9f9f9, 0xfff9fafa, 
+	0xfffafafa, 0xfffafafa, 0xfff9f9f9, 0xfffafafa, 0xfff9f9f9, 0xfffaf9fa, 0xfff9f9f9, 0xfff9fafa, 
+	0xfff9f9f9, 0xfff9f9f9, 0xfffaf9fa, 0xfffaf9f9, 0xfffaf9f9, 0xfffaf9f9, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffdedfde, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff848684, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffe6ebe6, 0xfff8f9f9, 0xfff9f8f8, 0xfff8f9f9, 0xfff9f8f9, 0xfff8f9f9, 0xfff9f8f9, 0xfff9f8f8, 
+	0xfff8f8f9, 0xfff9f9f9, 0xfff8f9f9, 0xfff8f8f9, 0xfff8f8f8, 0xfff9f8f8, 0xfff9f9f9, 0xfff9f9f8, 
+	0xfff9f9f9, 0xfff9f8f9, 0xfff8f9f9, 0xfff8f9f9, 0xfff9f9f8, 0xfff9f8f8, 0xfff8f9f8, 0xfff8f8f9, 
+	0xfff9f8f9, 0xfff8f9f8, 0xfff9f8f8, 0xfff9f9f8, 0xfff9f8f8, 0xfff9f8f8, 0xfff8f9f9, 0xfff9f9f9, 
+	0xfff9f8f8, 0xfff8f9f9, 0xfff8f8f9, 0xfff9f8f9, 0xfff9f9f8, 0xfff9f8f8, 0xfff8f9f8, 0xfff8f8f9, 
+	0xfff9f9f9, 0xfff9f9f9, 0xfff8f9f9, 0xfff8f9f8, 0xfff9f8f9, 0xfff9f9f9, 0xfff8f9f9, 0xfff8f9f8, 
+	0xfff9f8f9, 0xfff8f8f8, 0xfff8f9f9, 0xfff9f9f9, 0xfff8f8f8, 0xfff9f8f9, 0xfff8f8f8, 0xfff9f9f9, 
+	0xfff8f9f9, 0xfff8f9f9, 0xfff8f9f9, 0xfff8f9f9, 0xfff8f8f9, 0xfff8f8f9, 0xfff8f9f8, 0xfff8f8f8, 
+	0xfff9f8f8, 0xfff8f9f9, 0xfff8f9f9, 0xfff8f9f9, 0xfff8f9f9, 0xfff9f9f9, 0xfff9f9f8, 0xfff8f8f8, 
+	0xfff8f8f8, 0xfff9f9f9, 0xfff9f8f8, 0xfff9f8f8, 0xfff8f8f9, 0xfff9f8f9, 0xfff9f9f9, 0xfff9f9f8, 
+	0xfff9f8f8, 0xfff8f8f8, 0xfff8f9f9, 0xfff9f9f9, 0xfff8f9f8, 0xfff9f9f8, 0xfff8f9f9, 0xfff8f9f9, 
+	0xfff9f8f8, 0xfff9f9f9, 0xfff8f8f8, 0xfff8f8f8, 0xfff9f9f8, 0xfff9f9f8, 0xfff9f9f9, 0xfff9f9f8, 
+	0xfff8f9f9, 0xfff9f8f8, 0xfff8f8f8, 0xfff9f9f8, 0xfff8f8f8, 0xfff8f8f9, 0xfff8f8f9, 0xfff8f9f9, 
+	0xfff9f9f9, 0xfff9f9f9, 0xfff8f8f9, 0xfff9f8f9, 0xfff8f8f9, 0xfff8f8f9, 0xfff9f8f8, 0xfff9f9f9, 
+	0xfff9f9f9, 0xfff8f9f9, 0xfff9f9f8, 0xfff9f9f9, 0xfff9f8f8, 0xfff8f8f8, 0xfff9f8f9, 0xfff8f8f8, 
+	0xfff9f8f9, 0xfff9f8f9, 0xfff9f9f8, 0xfff8f8f8, 0xfff8f8f9, 0xfff9f8f9, 0xfff9f8f9, 0xfff8f8f8, 
+	0xfff8f8f9, 0xfff9f9f9, 0xfff8f8f8, 0xfff8f9f8, 0xfff9f9f8, 0xfff9f8f8, 0xfff9f8f9, 0xfff9f9f9, 
+	0xfff9f9f9, 0xfff9f9f8, 0xfff9f8f8, 0xfff9f9f9, 0xfff9f9f9, 0xfff9f8f8, 0xfff8f8f9, 0xfff8f9f8, 
+	0xfff8f9f8, 0xfff9f8f9, 0xfff9f9f8, 0xfff9f9f8, 0xfff9f8f8, 0xfff8f9f9, 0xfff8f8f9, 0xfff8f8f9, 
+	0xfff9f8f8, 0xfff9f8f9, 0xfff8f8f9, 0xfff9f9f9, 0xfff9f8f9, 0xfff8f8f8, 0xfff8f9f8, 0xfff9f8f9, 
+	0xfff9f8f8, 0xfff9f9f9, 0xfff8f8f8, 0xfff9f8f8, 0xfff9f9f9, 0xfff8f9f9, 0xfff8f9f9, 0xfff9f8f8, 
+	0xfff8f9f9, 0xfff8f9f8, 0xfff8f8f9, 0xfff9f8f8, 0xfff8f8f8, 0xfff9f9f9, 0xfff8f9f8, 0xfff8f9f8, 
+	0xfff9f8f8, 0xfff8f9f9, 0xfff8f8f8, 0xfff9f9f8, 0xfff9f9f8, 0xfff8f9f8, 0xfff9f8f8, 0xfff8f8f8, 
+	0xfff9f8f8, 0xfff9f9f9, 0xfff9f9f9, 0xfff9f8f8, 0xfff9f8f8, 0xfff9f9f8, 0xfff8f9f9, 0xfff9f8f9, 
+	0xfff8f8f9, 0xfff9f9f9, 0xfff9f9f8, 0xfff8f9f9, 0xfff8f9f9, 0xfff9f9f8, 0xfff9f8f9, 0xfff9f9f8, 
+	0xfff9f9f9, 0xfff9f8f9, 0xfff9f9f9, 0xfff8f8f9, 0xfff9f9f8, 0xfff8f9f9, 0xfff9f8f9, 0xfff9f9f9, 
+	0xfff9f9f8, 0xfff9f8f9, 0xfff8f8f8, 0xfff9f8f8, 0xfff8f8f9, 0xfff8f9f8, 0xfff8f8f8, 0xfff8f8f9, 
+	0xfff8f9f9, 0xfff9f9f9, 0xfff9f9f9, 0xfff8f9f8, 0xfff9f9f9, 0xfff9f8f8, 0xfff7f8f7, 0xffe6ebe6, 
+	0xffdedfde, 0x00000300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797d79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff7f8f7, 0xfff7f7f8, 0xfff8f8f8, 0xfff7f7f7, 0xfff8f7f8, 0xfff7f7f8, 0xfff8f8f8, 
+	0xfff8f8f8, 0xfff7f8f8, 0xfff7f7f8, 0xfff8f7f8, 0xfff7f8f8, 0xfff8f8f8, 0xfff8f7f7, 0xfff8f8f7, 
+	0xfff7f8f8, 0xfff7f7f7, 0xfff7f7f8, 0xfff8f7f8, 0xfff8f8f7, 0xfff8f7f7, 0xfff7f8f7, 0xfff8f8f8, 
+	0xfff8f7f7, 0xfff8f7f8, 0xfff8f7f8, 0xfff8f8f7, 0xfff8f7f7, 0xfff8f8f8, 0xfff7f8f7, 0xfff8f8f7, 
+	0xfff8f8f7, 0xfff7f8f8, 0xfff7f7f7, 0xfff8f7f8, 0xfff8f7f7, 0xfff7f8f8, 0xfff8f8f8, 0xfff7f7f7, 
+	0xfff7f8f8, 0xfff7f7f8, 0xfff7f8f8, 0xfff7f8f8, 0xfff7f8f8, 0xfff7f7f8, 0xfff8f8f8, 0xfff7f8f8, 
+	0xfff7f8f8, 0xfff8f8f8, 0xfff7f8f7, 0xfff8f8f7, 0xfff7f7f7, 0xfff8f8f8, 0xfff7f7f8, 0xfff8f7f7, 
+	0xfff7f8f7, 0xfff8f8f7, 0xfff7f8f7, 0xfff8f8f8, 0xfff7f7f7, 0xfff8f7f7, 0xfff8f8f7, 0xfff7f8f8, 
+	0xfff7f8f7, 0xfff8f7f8, 0xfff7f8f8, 0xfff8f8f7, 0xfff7f8f7, 0xfff8f8f7, 0xfff7f7f8, 0xfff8f7f8, 
+	0xfff8f8f8, 0xfff8f7f8, 0xfff7f8f8, 0xfff7f7f7, 0xfff7f8f7, 0xfff8f8f8, 0xfff7f7f8, 0xfff8f7f8, 
+	0xfff7f8f8, 0xfff8f8f7, 0xfff8f7f8, 0xfff8f8f8, 0xfff7f8f7, 0xfff8f7f8, 0xfff8f8f7, 0xfff7f8f8, 
+	0xfff7f7f8, 0xfff8f8f7, 0xfff8f8f7, 0xfff8f7f7, 0xfff7f7f7, 0xfff7f7f8, 0xfff7f8f8, 0xfff8f8f7, 
+	0xfff7f8f8, 0xfff8f7f8, 0xfff7f8f8, 0xfff8f8f8, 0xfff7f7f7, 0xfff7f8f7, 0xfff8f7f7, 0xfff8f7f8, 
+	0xfff8f8f7, 0xfff8f7f8, 0xfff8f7f7, 0xfff7f8f8, 0xfff7f7f8, 0xfff7f7f8, 0xfff8f7f8, 0xfff8f7f7, 
+	0xfff7f7f8, 0xfff8f8f8, 0xfff7f7f8, 0xfff7f7f7, 0xfff8f8f7, 0xfff7f8f8, 0xfff8f7f8, 0xfff7f8f8, 
+	0xfff8f7f7, 0xfff8f7f8, 0xfff8f8f7, 0xfff7f8f8, 0xfff8f8f7, 0xfff8f8f7, 0xfff7f8f8, 0xfff8f8f7, 
+	0xfff8f8f8, 0xfff7f7f8, 0xfff7f7f8, 0xfff8f8f8, 0xfff7f7f7, 0xfff8f8f7, 0xfff7f7f8, 0xfff7f8f8, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff7f8f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff8f8f8, 0xfff7f7f8, 0xfff8f8f8, 
+	0xfff7f8f8, 0xfff8f8f8, 0xfff7f8f8, 0xfff7f8f7, 0xfff8f7f8, 0xfff7f8f8, 0xfff8f7f8, 0xfff7f8f7, 
+	0xfff7f8f7, 0xfff8f8f7, 0xfff8f7f7, 0xfff8f7f8, 0xfff8f7f8, 0xfff7f8f8, 0xfff8f7f7, 0xfff8f8f8, 
+	0xfff8f7f8, 0xfff8f8f7, 0xfff8f7f8, 0xfff8f7f7, 0xfff7f8f8, 0xfff8f8f7, 0xfff8f7f7, 0xfff8f8f7, 
+	0xfff7f8f7, 0xfff7f8f8, 0xfff7f8f8, 0xfff8f8f8, 0xfff8f8f7, 0xfff7f8f8, 0xfff7f8f8, 0xfff7f8f7, 
+	0xfff8f8f8, 0xfff8f8f7, 0xfff8f8f8, 0xfff7f7f7, 0xfff7f7f8, 0xfff8f7f8, 0xfff8f8f8, 0xfff8f7f8, 
+	0xfff8f8f8, 0xfff7f8f7, 0xfff7f8f7, 0xfff8f7f7, 0xfff8f7f7, 0xfff8f8f8, 0xfff7f7f8, 0xfff8f7f7, 
+	0xfff8f8f8, 0xfff8f8f7, 0xfff8f7f7, 0xfff7f7f8, 0xfff7f8f8, 0xfff8f7f7, 0xfff8f7f7, 0xfff8f8f7, 
+	0xfff8f7f7, 0xfff8f8f8, 0xfff8f8f8, 0xfff8f7f7, 0xfff8f8f8, 0xfff7f8f8, 0xfff7f8f8, 0xfff7f7f8, 
+	0xfff7f8f7, 0xfff7f8f7, 0xfff8f8f7, 0xfff8f8f8, 0xfff8f8f8, 0xfff7f7f8, 0xfff7f8f8, 0xfff8f7f7, 
+	0xfff7f7f8, 0xfff8f7f7, 0xfff8f8f8, 0xfff7f8f7, 0xfff7f8f7, 0xfff8f8f8, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797d79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff6f7f7, 0xfff7f6f7, 0xfff7f6f7, 0xfff6f7f6, 0xfff7f6f7, 0xfff6f6f7, 0xfff6f7f7, 
+	0xfff6f6f7, 0xfff7f6f7, 0xfff7f7f7, 0xfff6f7f6, 0xfff7f7f7, 0xfff6f7f7, 0xfff7f6f6, 0xfff7f7f6, 
+	0xfff6f6f6, 0xfff7f7f7, 0xfff6f6f6, 0xfff6f7f6, 0xfff7f7f6, 0xfff7f7f7, 0xfff6f6f7, 0xfff7f7f6, 
+	0xfff7f7f7, 0xfff7f7f6, 0xfff6f6f6, 0xfff6f7f6, 0xfff7f7f6, 0xfff7f7f6, 0xfff7f6f7, 0xfff7f6f7, 
+	0xfff6f7f6, 0xfff6f6f7, 0xfff7f7f7, 0xfff6f6f6, 0xfff6f7f7, 0xfff6f6f6, 0xfff6f7f6, 0xfff6f7f7, 
+	0xfff7f6f7, 0xfff6f6f6, 0xfff7f7f6, 0xfff6f7f6, 0xfff6f7f7, 0xfff7f7f7, 0xfff7f7f6, 0xfff7f7f7, 
+	0xfff6f6f6, 0xfff6f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f6f7, 0xfff7f6f7, 0xfff7f7f7, 0xfff6f7f7, 
+	0xfff6f7f6, 0xfff6f6f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f6f6, 0xfff7f7f6, 0xfff7f7f7, 
+	0xfff7f7f6, 0xfff6f6f7, 0xfff6f6f7, 0xfff7f7f6, 0xfff7f6f7, 0xfff7f6f6, 0xfff7f7f6, 0xfff6f7f7, 
+	0xfff7f6f7, 0xfff7f6f7, 0xfff7f6f7, 0xfff6f6f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f6, 0xfff6f6f6, 
+	0xfff6f7f6, 0xfff6f6f7, 0xfff7f6f7, 0xfff7f7f6, 0xfff6f6f7, 0xfff7f7f7, 0xfff7f6f6, 0xfff7f6f7, 
+	0xfff6f6f6, 0xfff6f7f7, 0xfff7f6f7, 0xfff7f7f6, 0xfff7f6f7, 0xfff7f6f6, 0xfff7f6f7, 0xfff7f7f6, 
+	0xfff6f7f7, 0xfff7f6f6, 0xfff7f6f6, 0xfff7f6f6, 0xfff7f6f6, 0xfff6f7f7, 0xfff6f6f7, 0xfff7f6f7, 
+	0xfff6f7f7, 0xfff6f7f7, 0xfff6f7f6, 0xfff7f6f7, 0xfff7f7f6, 0xfff7f7f6, 0xfff6f7f7, 0xfff7f6f7, 
+	0xfff7f7f7, 0xfff7f7f6, 0xfff6f6f6, 0xfff7f7f7, 0xfff6f6f7, 0xfff7f7f7, 0xfff6f6f7, 0xfff6f6f6, 
+	0xfff6f6f7, 0xfff6f6f7, 0xfff7f6f7, 0xfff7f6f6, 0xfff7f6f6, 0xfff7f6f7, 0xfff7f7f6, 0xfff6f6f7, 
+	0xfff7f7f7, 0xfff6f7f6, 0xfff6f7f6, 0xfff7f7f7, 0xfff7f6f7, 0xfff6f6f6, 0xfff7f7f7, 0xfff7f6f7, 
+	0xfff7f7f6, 0xfff6f6f7, 0xfff7f6f7, 0xfff6f6f7, 0xfff6f7f6, 0xfff6f7f6, 0xfff6f6f7, 0xfff7f6f7, 
+	0xfff7f6f6, 0xfff7f6f6, 0xfff6f7f6, 0xfff7f7f7, 0xfff6f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f6f6, 
+	0xfff6f7f6, 0xfff7f6f6, 0xfff6f7f7, 0xfff6f6f6, 0xfff7f6f7, 0xfff6f7f7, 0xfff7f6f7, 0xfff7f7f7, 
+	0xfff6f6f6, 0xfff6f6f6, 0xfff6f7f6, 0xfff7f7f6, 0xfff7f6f7, 0xfff6f7f7, 0xfff6f6f6, 0xfff6f6f7, 
+	0xfff6f6f7, 0xfff6f7f7, 0xfff6f7f7, 0xfff6f7f7, 0xfff6f6f6, 0xfff6f7f7, 0xfff7f6f7, 0xfff7f7f7, 
+	0xfff6f7f7, 0xfff7f6f7, 0xfff6f6f6, 0xfff7f6f7, 0xfff6f7f6, 0xfff7f6f6, 0xfff6f7f7, 0xfff6f7f7, 
+	0xfff6f7f7, 0xfff6f7f6, 0xfff6f7f7, 0xfff6f7f7, 0xfff7f7f7, 0xfff7f6f6, 0xfff7f6f6, 0xfff7f6f7, 
+	0xfff7f7f6, 0xfff7f7f6, 0xfff7f6f7, 0xfff6f6f7, 0xfff7f6f7, 0xfff7f6f6, 0xfff7f7f7, 0xfff7f6f7, 
+	0xfff6f6f7, 0xfff7f7f6, 0xfff6f7f6, 0xfff6f7f6, 0xfff7f7f7, 0xfff7f6f7, 0xfff6f7f6, 0xfff7f6f6, 
+	0xfff6f6f7, 0xfff6f7f7, 0xfff7f6f7, 0xfff7f6f6, 0xfff6f6f7, 0xfff7f7f6, 0xfff6f6f7, 0xfff7f6f6, 
+	0xfff6f6f7, 0xfff6f6f7, 0xfff7f7f6, 0xfff6f7f7, 0xfff7f6f6, 0xfff7f7f7, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797d79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff6f6f6, 0xfff6f6f5, 0xfff6f5f6, 0xfff5f5f6, 0xfff6f5f6, 0xfff6f6f6, 0xfff5f6f5, 
+	0xfff6f6f5, 0xfff5f6f6, 0xfff6f6f5, 0xfff6f5f6, 0xfff6f5f5, 0xfff6f5f6, 0xfff5f6f6, 0xfff6f5f6, 
+	0xfff6f5f6, 0xfff5f5f6, 0xfff6f6f6, 0xfff6f5f6, 0xfff5f6f6, 0xfff6f5f5, 0xfff6f6f6, 0xfff6f5f6, 
+	0xfff6f5f6, 0xfff5f5f6, 0xfff6f6f5, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f5f6, 0xfff6f6f6, 0xfff6f6f5, 
+	0xfff6f5f5, 0xfff5f5f6, 0xfff5f6f5, 0xfff5f6f5, 0xfff6f6f5, 0xfff5f5f6, 0xfff6f5f6, 0xfff6f6f6, 
+	0xfff5f6f6, 0xfff6f5f6, 0xfff5f5f6, 0xfff5f6f6, 0xfff5f6f5, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f6f6, 
+	0xfff5f5f5, 0xfff5f6f6, 0xfff6f6f5, 0xfff5f5f6, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f6f6, 0xfff5f6f6, 
+	0xfff5f5f6, 0xfff5f6f6, 0xfff5f5f6, 0xfff5f5f5, 0xfff6f5f5, 0xfff6f6f6, 0xfff5f5f5, 0xfff5f6f6, 
+	0xfff6f5f6, 0xfff6f6f5, 0xfff5f6f5, 0xfff5f6f5, 0xfff6f6f6, 0xfff5f6f6, 0xfff6f5f6, 0xfff5f5f5, 
+	0xfff6f5f6, 0xfff6f6f6, 0xfff6f6f6, 0xfff5f5f6, 0xfff6f5f6, 0xfff5f6f5, 0xfff6f5f6, 0xfff6f6f5, 
+	0xfff6f6f6, 0xfff6f5f6, 0xfff6f6f5, 0xfff5f6f6, 0xfff5f6f6, 0xfff5f6f5, 0xfff5f5f5, 0xfff6f6f5, 
+	0xfff6f6f6, 0xfff6f6f6, 0xfff5f6f5, 0xfff5f6f5, 0xfff5f5f6, 0xfff6f6f5, 0xfff6f5f5, 0xfff6f6f6, 
+	0xfff5f5f6, 0xfff6f5f6, 0xfff6f5f6, 0xfff6f5f6, 0xfff5f5f6, 0xfff6f6f5, 0xfff6f5f5, 0xfff6f6f5, 
+	0xfff6f6f6, 0xfff6f5f6, 0xfff5f6f6, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f6f6, 0xfff6f5f6, 0xfff5f5f5, 
+	0xfff5f6f5, 0xfff5f5f6, 0xfff5f6f5, 0xfff6f6f6, 0xfff5f6f5, 0xfff6f5f5, 0xfff6f6f5, 0xfff6f6f5, 
+	0xfff5f6f6, 0xfff6f5f5, 0xfff6f6f6, 0xfff6f5f5, 0xfff5f5f6, 0xfff6f6f5, 0xfff5f6f6, 0xfff6f6f6, 
+	0xfff5f6f5, 0xfff5f5f5, 0xfff5f6f6, 0xfff6f6f6, 0xfff5f6f6, 0xfff6f6f5, 0xfff5f6f6, 0xfff5f6f5, 
+	0xfff6f5f6, 0xfff6f5f5, 0xfff5f6f6, 0xfff6f6f5, 0xfff5f6f5, 0xfff6f5f5, 0xfff5f5f5, 0xfff6f6f6, 
+	0xfff5f6f6, 0xfff5f6f5, 0xfff6f6f6, 0xfff5f6f6, 0xfff5f6f6, 0xfff6f5f6, 0xfff5f6f6, 0xfff6f6f6, 
+	0xfff6f5f5, 0xfff6f6f6, 0xfff6f6f6, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f5f5, 0xfff6f6f5, 0xfff6f5f6, 
+	0xfff6f6f5, 0xfff5f6f5, 0xfff6f5f6, 0xfff5f6f5, 0xfff6f5f6, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f6f5, 
+	0xfff6f5f6, 0xfff6f6f6, 0xfff5f6f6, 0xfff5f6f6, 0xfff6f6f5, 0xfff5f5f6, 0xfff5f6f5, 0xfff6f6f6, 
+	0xfff6f6f6, 0xfff6f6f5, 0xfff6f6f6, 0xfff6f5f6, 0xfff5f6f6, 0xfff5f5f6, 0xfff6f5f5, 0xfff5f6f6, 
+	0xfff5f6f6, 0xfff6f5f6, 0xfff5f5f5, 0xfff5f5f6, 0xfff5f6f6, 0xfff6f6f5, 0xfff6f6f6, 0xfff5f6f5, 
+	0xfff5f6f5, 0xfff6f5f6, 0xfff6f5f6, 0xfff6f6f6, 0xfff6f5f6, 0xfff6f6f5, 0xfff6f6f6, 0xfff6f5f6, 
+	0xfff6f6f5, 0xfff5f5f5, 0xfff5f6f5, 0xfff6f6f6, 0xfff6f5f6, 0xfff6f5f6, 0xfff6f6f5, 0xfff6f6f5, 
+	0xfff6f6f6, 0xfff5f6f5, 0xfff6f6f5, 0xfff6f6f5, 0xfff6f5f6, 0xfff6f6f6, 0xfff6f6f5, 0xfff5f6f6, 
+	0xfff6f6f6, 0xfff6f6f5, 0xfff6f5f5, 0xfff6f5f5, 0xfff6f6f6, 0xfff6f6f6, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797d79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff4f4f4, 0xfff5f5f5, 0xfff5f5f4, 0xfff5f4f5, 0xfff5f4f4, 0xfff5f4f4, 0xfff5f4f5, 
+	0xfff4f5f4, 0xfff4f4f5, 0xfff5f4f4, 0xfff5f4f4, 0xfff4f5f5, 0xfff5f5f4, 0xfff4f5f4, 0xfff4f4f5, 
+	0xfff5f4f5, 0xfff4f5f5, 0xfff5f4f4, 0xfff5f5f5, 0xfff4f5f5, 0xfff4f5f5, 0xfff4f4f5, 0xfff4f5f4, 
+	0xfff4f5f4, 0xfff5f5f4, 0xfff5f5f4, 0xfff4f5f4, 0xfff5f4f5, 0xfff5f5f5, 0xfff4f5f5, 0xfff4f5f5, 
+	0xfff5f5f4, 0xfff4f4f4, 0xfff4f5f4, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff4f5f4, 0xfff5f5f5, 
+	0xfff4f4f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff4f4f5, 0xfff4f5f4, 0xfff5f5f4, 0xfff5f5f5, 0xfff5f4f4, 
+	0xfff5f4f5, 0xfff5f4f5, 0xfff4f5f4, 0xfff5f4f5, 0xfff5f5f4, 0xfff5f5f5, 0xfff4f4f5, 0xfff4f5f4, 
+	0xfff4f4f4, 0xfff4f5f4, 0xfff5f5f4, 0xfff5f5f4, 0xfff4f4f5, 0xfff4f5f5, 0xfff4f5f5, 0xfff4f5f4, 
+	0xfff5f5f5, 0xfff4f5f5, 0xfff4f5f5, 0xfff5f4f5, 0xfff4f4f5, 0xfff5f4f5, 0xfff4f5f5, 0xfff4f5f4, 
+	0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff4f5f5, 0xfff4f4f5, 0xfff4f4f4, 0xfff5f5f5, 0xfff5f5f5, 
+	0xfff4f5f5, 0xfff5f4f5, 0xfff4f5f5, 0xfff4f5f5, 0xfff5f4f5, 0xfff5f5f5, 0xfff5f4f5, 0xfff4f5f5, 
+	0xfff5f5f4, 0xfff4f4f4, 0xfff4f5f5, 0xfff4f4f4, 0xfff4f5f5, 0xfff5f5f4, 0xfff5f5f4, 0xfff4f5f5, 
+	0xfff4f4f4, 0xfff4f5f4, 0xfff4f5f5, 0xfff5f5f4, 0xfff4f5f5, 0xfff4f4f5, 0xfff5f5f4, 0xfff4f4f5, 
+	0xfff5f5f4, 0xfff4f4f5, 0xfff4f5f5, 0xfff4f5f4, 0xfff5f4f5, 0xfff5f5f5, 0xfff4f4f5, 0xfff5f4f5, 
+	0xfff5f5f5, 0xfff4f5f4, 0xfff5f5f5, 0xfff5f5f5, 0xfff4f5f5, 0xfff4f5f4, 0xfff4f4f5, 0xfff4f4f5, 
+	0xfff4f4f5, 0xfff5f4f5, 0xfff4f4f4, 0xfff5f5f5, 0xfff4f4f5, 0xfff5f5f5, 0xfff4f4f5, 0xfff5f4f4, 
+	0xfff4f4f4, 0xfff5f4f4, 0xfff5f5f5, 0xfff5f5f4, 0xfff5f5f5, 0xfff4f5f4, 0xfff5f5f5, 0xfff4f5f5, 
+	0xfff4f5f4, 0xfff5f4f4, 0xfff4f4f4, 0xfff5f5f4, 0xfff4f4f5, 0xfff5f4f5, 0xfff5f4f5, 0xfff5f4f5, 
+	0xfff5f5f5, 0xfff5f4f4, 0xfff4f5f4, 0xfff4f4f5, 0xfff5f5f5, 0xfff5f4f4, 0xfff5f5f5, 0xfff5f4f5, 
+	0xfff4f5f5, 0xfff4f5f5, 0xfff5f4f4, 0xfff5f5f5, 0xfff5f5f4, 0xfff5f4f4, 0xfff4f5f4, 0xfff5f4f4, 
+	0xfff5f5f4, 0xfff4f4f5, 0xfff5f4f4, 0xfff5f4f5, 0xfff4f5f5, 0xfff4f5f5, 0xfff5f5f5, 0xfff4f5f5, 
+	0xfff4f5f4, 0xfff4f5f5, 0xfff5f5f5, 0xfff4f4f5, 0xfff4f5f5, 0xfff4f5f5, 0xfff4f4f5, 0xfff4f5f5, 
+	0xfff5f4f4, 0xfff5f5f5, 0xfff4f5f4, 0xfff5f5f4, 0xfff5f4f4, 0xfff4f5f5, 0xfff4f5f5, 0xfff5f5f5, 
+	0xfff4f4f4, 0xfff5f5f5, 0xfff5f5f5, 0xfff4f5f5, 0xfff5f5f5, 0xfff4f4f5, 0xfff5f5f5, 0xfff4f5f5, 
+	0xfff4f5f4, 0xfff5f5f4, 0xfff5f5f5, 0xfff5f4f5, 0xfff5f4f4, 0xfff4f4f4, 0xfff5f5f4, 0xfff5f5f4, 
+	0xfff5f4f5, 0xfff5f5f4, 0xfff4f5f4, 0xfff4f5f4, 0xfff5f5f5, 0xfff4f4f5, 0xfff5f4f5, 0xfff4f5f5, 
+	0xfff5f5f4, 0xfff5f4f5, 0xfff5f5f5, 0xfff4f5f5, 0xfff4f4f5, 0xfff5f4f5, 0xfff4f4f5, 0xfff5f5f4, 
+	0xfff5f5f5, 0xfff4f5f5, 0xfff4f4f5, 0xfff5f5f5, 0xfff4f5f4, 0xfff4f5f5, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff797c79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff3f4f4, 0xfff4f3f3, 0xfff3f4f4, 0xfff4f4f4, 0xfff3f4f4, 0xfff3f3f4, 0xfff4f3f3, 
+	0xfff3f3f4, 0xfff3f3f3, 0xfff4f4f4, 0xfff4f4f3, 0xfff3f4f4, 0xfff4f3f4, 0xfff3f4f4, 0xfff3f3f4, 
+	0xfff3f3f3, 0xfff3f4f3, 0xfff4f4f3, 0xfff4f4f3, 0xfff4f4f4, 0xfff4f4f3, 0xfff4f4f4, 0xfff3f3f4, 
+	0xfff4f4f4, 0xfff3f3f3, 0xfff3f4f3, 0xfff3f4f3, 0xfff4f4f3, 0xfff3f4f4, 0xfff4f4f4, 0xfff4f4f3, 
+	0xfff4f4f3, 0xfff3f3f3, 0xfff3f3f4, 0xfff4f3f3, 0xfff4f4f4, 0xfff4f3f4, 0xfff3f3f3, 0xfff4f4f3, 
+	0xfff4f3f4, 0xfff3f4f3, 0xfff3f4f3, 0xfff4f3f4, 0xfff3f4f3, 0xfff4f4f4, 0xfff4f4f4, 0xfff4f3f4, 
+	0xfff4f4f4, 0xfff4f4f3, 0xfff4f3f3, 0xfff3f4f3, 0xfff3f4f3, 0xfff4f3f4, 0xfff3f4f4, 0xfff3f4f3, 
+	0xfff4f3f3, 0xfff4f3f4, 0xfff3f3f4, 0xfff4f4f4, 0xfff3f3f3, 0xfff4f3f3, 0xfff3f3f4, 0xfff3f3f3, 
+	0xfff4f3f3, 0xfff3f3f4, 0xfff4f3f3, 0xfff3f3f4, 0xfff3f4f4, 0xfff4f3f3, 0xfff3f3f3, 0xfff4f3f4, 
+	0xfff4f4f4, 0xfff3f4f4, 0xfff4f3f3, 0xfff3f3f4, 0xfff3f3f3, 0xfff4f4f3, 0xfff4f4f4, 0xfff4f3f3, 
+	0xfff3f4f4, 0xfff3f3f4, 0xfff3f3f4, 0xfff3f4f3, 0xfff3f4f3, 0xfff3f4f4, 0xfff4f3f4, 0xfff4f3f3, 
+	0xfff4f4f4, 0xfff4f4f4, 0xfff4f4f4, 0xfff3f4f4, 0xfff4f4f4, 0xfff3f4f3, 0xfff4f4f4, 0xfff4f3f4, 
+	0xfff3f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff3f3f3, 0xfff3f4f3, 0xfff4f4f3, 0xfff3f3f3, 0xfff3f3f3, 
+	0xfff4f4f3, 0xfff3f3f3, 0xfff4f3f3, 0xfff4f4f4, 0xfff4f4f4, 0xfff3f3f4, 0xfff3f4f3, 0xfff4f3f4, 
+	0xfff4f3f4, 0xfff4f4f4, 0xfff3f3f3, 0xfff4f4f3, 0xfff4f3f3, 0xfff3f3f3, 0xfff4f4f4, 0xfff3f4f4, 
+	0xfff3f3f4, 0xfff3f3f4, 0xfff4f4f4, 0xfff3f4f4, 0xfff3f3f3, 0xfff4f3f4, 0xfff3f4f4, 0xfff4f4f4, 
+	0xfff4f4f4, 0xfff3f4f3, 0xfff3f4f4, 0xfff3f4f4, 0xfff3f4f3, 0xfff4f4f4, 0xfff4f4f3, 0xfff3f3f4, 
+	0xfff4f3f4, 0xfff3f3f3, 0xfff3f3f4, 0xfff4f4f4, 0xfff4f3f4, 0xfff3f3f3, 0xfff3f4f4, 0xfff3f3f3, 
+	0xfff4f3f4, 0xfff3f4f4, 0xfff4f3f4, 0xfff4f3f4, 0xfff4f4f4, 0xfff3f3f4, 0xfff4f3f3, 0xfff4f4f4, 
+	0xfff4f3f3, 0xfff3f4f4, 0xfff4f4f4, 0xfff3f4f3, 0xfff4f3f4, 0xfff4f4f4, 0xfff4f3f3, 0xfff3f3f4, 
+	0xfff4f3f3, 0xfff4f4f3, 0xfff3f4f3, 0xfff3f4f3, 0xfff4f4f3, 0xfff3f4f3, 0xfff4f4f4, 0xfff4f4f3, 
+	0xfff4f4f4, 0xfff4f4f3, 0xfff4f3f3, 0xfff4f3f4, 0xfff3f3f4, 0xfff3f4f3, 0xfff3f3f3, 0xfff4f4f4, 
+	0xfff3f3f4, 0xfff4f4f4, 0xfff4f3f3, 0xfff4f4f4, 0xfff4f4f3, 0xfff3f3f3, 0xfff4f4f4, 0xfff3f3f4, 
+	0xfff4f3f3, 0xfff4f3f3, 0xfff3f4f4, 0xfff3f4f3, 0xfff3f4f3, 0xfff4f4f4, 0xfff3f3f4, 0xfff4f4f3, 
+	0xfff3f3f4, 0xfff4f3f4, 0xfff3f4f4, 0xfff3f3f3, 0xfff3f3f4, 0xfff3f3f3, 0xfff4f4f4, 0xfff4f4f4, 
+	0xfff3f3f4, 0xfff3f4f3, 0xfff4f4f3, 0xfff3f4f3, 0xfff3f3f4, 0xfff4f4f4, 0xfff4f4f3, 0xfff3f4f4, 
+	0xfff3f3f3, 0xfff4f3f4, 0xfff4f3f3, 0xfff3f3f4, 0xfff4f4f3, 0xfff3f4f3, 0xfff3f3f4, 0xfff3f4f3, 
+	0xfff4f3f4, 0xfff4f3f4, 0xfff4f4f3, 0xfff4f3f3, 0xfff3f4f4, 0xfff3f4f3, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff797c79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff3f3f3, 0xfff2f3f2, 0xfff3f2f3, 0xfff2f3f2, 0xfff2f3f3, 0xfff3f2f2, 0xfff2f3f2, 
+	0xfff2f3f3, 0xfff3f3f2, 0xfff3f3f2, 0xfff3f2f3, 0xfff2f3f3, 0xfff3f2f3, 0xfff2f2f2, 0xfff2f3f3, 
+	0xfff2f3f3, 0xfff2f2f2, 0xfff2f3f2, 0xfff2f3f2, 0xfff2f2f3, 0xfff2f3f3, 0xfff2f3f2, 0xfff2f2f3, 
+	0xfff3f2f3, 0xfff3f2f3, 0xfff3f3f3, 0xfff2f2f2, 0xfff3f3f2, 0xfff3f2f3, 0xfff3f2f3, 0xfff2f2f3, 
+	0xfff2f3f3, 0xfff3f3f3, 0xfff3f2f3, 0xfff3f3f3, 0xfff2f3f2, 0xfff3f3f3, 0xfff3f2f3, 0xfff3f2f2, 
+	0xfff2f3f3, 0xfff2f2f3, 0xfff3f3f3, 0xfff2f2f3, 0xfff2f3f2, 0xfff2f2f3, 0xfff2f2f2, 0xfff3f2f3, 
+	0xfff2f2f3, 0xfff3f2f2, 0xfff2f3f2, 0xfff2f2f2, 0xfff2f3f3, 0xfff2f3f2, 0xfff2f2f3, 0xfff3f2f3, 
+	0xfff3f2f3, 0xfff2f3f2, 0xfff3f2f2, 0xfff3f2f3, 0xfff2f2f2, 0xfff3f2f2, 0xfff3f3f3, 0xfff3f3f2, 
+	0xfff2f3f3, 0xfff2f3f2, 0xfff3f3f2, 0xfff3f3f2, 0xfff2f2f2, 0xfff2f3f2, 0xfff2f3f3, 0xfff2f3f3, 
+	0xfff3f2f2, 0xfff3f2f2, 0xfff3f2f3, 0xfff3f3f3, 0xfff3f2f3, 0xfff2f3f2, 0xfff2f2f3, 0xfff2f2f2, 
+	0xfff3f3f2, 0xfff2f3f3, 0xfff2f3f3, 0xfff2f3f3, 0xfff3f2f3, 0xfff2f2f3, 0xfff2f2f3, 0xfff2f3f2, 
+	0xfff2f3f3, 0xfff2f3f2, 0xfff2f3f3, 0xfff3f2f2, 0xfff3f3f3, 0xfff2f2f2, 0xfff2f2f3, 0xfff2f2f3, 
+	0xfff3f2f2, 0xfff3f3f2, 0xfff3f3f3, 0xfff3f3f3, 0xfff3f3f2, 0xfff2f2f2, 0xfff3f3f3, 0xfff3f2f2, 
+	0xfff3f2f2, 0xfff2f3f3, 0xfff3f2f3, 0xfff2f3f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff3f3f3, 0xfff3f2f3, 
+	0xfff3f2f3, 0xfff2f2f3, 0xfff3f2f2, 0xfff3f3f3, 0xfff2f3f3, 0xfff3f2f2, 0xfff3f2f3, 0xfff3f3f3, 
+	0xfff2f3f3, 0xfff2f2f3, 0xfff2f2f3, 0xfff2f2f2, 0xfff3f3f2, 0xfff3f2f2, 0xfff3f2f2, 0xfff2f2f3, 
+	0xfff2f3f2, 0xfff2f3f2, 0xfff3f2f3, 0xfff2f2f2, 0xfff3f2f3, 0xfff2f2f3, 0xfff2f3f2, 0xfff3f3f2, 
+	0xfff2f3f3, 0xfff3f2f3, 0xfff2f2f3, 0xfff3f3f3, 0xfff3f2f2, 0xfff2f2f3, 0xfff3f3f2, 0xfff3f2f2, 
+	0xfff3f2f3, 0xfff2f2f3, 0xfff3f3f2, 0xfff3f3f2, 0xfff3f2f3, 0xfff2f3f2, 0xfff2f2f2, 0xfff3f2f2, 
+	0xfff2f3f3, 0xfff3f2f2, 0xfff2f2f3, 0xfff3f3f2, 0xfff3f2f2, 0xfff3f2f2, 0xfff3f3f3, 0xfff2f3f2, 
+	0xfff2f3f3, 0xfff2f3f3, 0xfff2f3f2, 0xfff3f2f3, 0xfff2f2f2, 0xfff2f3f2, 0xfff2f2f3, 0xfff3f3f3, 
+	0xfff3f2f3, 0xfff2f3f2, 0xfff3f2f2, 0xfff3f2f2, 0xfff3f2f2, 0xfff3f3f3, 0xfff3f3f3, 0xfff3f3f2, 
+	0xfff3f3f3, 0xfff3f2f2, 0xfff2f3f2, 0xfff3f2f3, 0xfff3f2f2, 0xfff2f2f3, 0xfff3f2f2, 0xfff3f2f3, 
+	0xfff2f2f3, 0xfff2f3f3, 0xfff2f2f2, 0xfff2f3f3, 0xfff2f2f3, 0xfff3f3f3, 0xfff2f3f2, 0xfff3f2f2, 
+	0xfff2f2f2, 0xfff3f2f3, 0xfff3f2f2, 0xfff2f2f3, 0xfff2f2f3, 0xfff3f2f3, 0xfff2f2f3, 0xfff2f3f2, 
+	0xfff3f3f3, 0xfff3f3f3, 0xfff3f2f2, 0xfff2f2f2, 0xfff2f3f3, 0xfff3f2f3, 0xfff2f3f2, 0xfff3f3f2, 
+	0xfff2f2f2, 0xfff3f3f2, 0xfff2f2f2, 0xfff2f3f3, 0xfff2f2f3, 0xfff3f2f3, 0xfff3f2f3, 0xfff3f2f3, 
+	0xfff3f3f2, 0xfff3f3f2, 0xfff3f3f2, 0xfff3f2f3, 0xfff3f2f3, 0xfff2f3f3, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff797c79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff2f1f2, 0xfff1f1f1, 0xfff2f2f1, 0xfff1f2f2, 0xfff2f2f2, 0xfff1f2f1, 0xfff1f1f2, 
+	0xfff2f2f2, 0xfff1f2f1, 0xfff1f2f2, 0xfff1f2f2, 0xfff1f2f2, 0xfff2f1f1, 0xfff2f1f2, 0xfff1f2f1, 
+	0xfff2f2f1, 0xfff1f1f1, 0xfff2f2f1, 0xfff1f1f1, 0xfff2f1f1, 0xfff2f1f1, 0xfff1f1f1, 0xfff2f1f2, 
+	0xfff1f2f2, 0xfff2f1f1, 0xfff1f2f2, 0xfff1f1f2, 0xfff1f1f1, 0xfff1f1f2, 0xfff1f2f1, 0xfff2f1f1, 
+	0xfff2f2f1, 0xfff1f1f1, 0xfff1f2f2, 0xfff1f2f2, 0xfff1f1f2, 0xfff1f2f2, 0xfff1f2f1, 0xfff1f1f1, 
+	0xfff1f2f2, 0xfff2f1f1, 0xfff2f2f2, 0xfff1f2f2, 0xfff2f2f1, 0xfff2f1f2, 0xfff2f1f2, 0xfff1f2f1, 
+	0xfff1f2f2, 0xfff1f1f2, 0xfff2f2f2, 0xfff1f1f2, 0xfff2f2f1, 0xfff1f2f1, 0xfff2f2f1, 0xfff1f2f2, 
+	0xfff1f2f1, 0xfff2f2f2, 0xfff1f1f1, 0xfff1f1f2, 0xfff1f1f2, 0xfff2f1f2, 0xfff1f1f2, 0xfff2f1f1, 
+	0xfff1f2f1, 0xfff2f1f1, 0xfff1f2f1, 0xfff1f2f2, 0xfff2f1f2, 0xfff1f1f1, 0xfff2f1f1, 0xfff2f1f2, 
+	0xfff1f2f1, 0xfff2f2f1, 0xfff2f1f1, 0xfff1f2f2, 0xfff1f1f1, 0xfff1f1f1, 0xfff2f1f2, 0xfff2f1f2, 
+	0xfff1f2f2, 0xfff1f1f2, 0xfff2f2f2, 0xfff2f1f1, 0xfff2f2f1, 0xfff2f2f1, 0xfff2f1f1, 0xfff1f2f1, 
+	0xfff2f1f1, 0xfff1f2f1, 0xfff2f1f1, 0xfff2f2f1, 0xfff1f1f2, 0xfff2f1f1, 0xfff2f1f2, 0xfff1f1f1, 
+	0xfff1f2f1, 0xfff2f1f1, 0xfff1f2f2, 0xfff2f2f2, 0xfff1f1f1, 0xfff1f1f1, 0xfff1f2f1, 0xfff1f1f1, 
+	0xfff1f1f2, 0xfff1f2f2, 0xfff1f2f1, 0xfff2f1f1, 0xfff1f1f1, 0xfff1f2f1, 0xfff1f1f2, 0xfff1f1f2, 
+	0xfff2f1f1, 0xfff1f1f1, 0xfff1f2f2, 0xfff1f1f2, 0xfff2f1f1, 0xfff2f2f1, 0xfff2f2f2, 0xfff2f1f1, 
+	0xfff1f1f1, 0xfff1f1f2, 0xfff1f1f1, 0xfff2f1f2, 0xfff1f1f1, 0xfff1f1f2, 0xfff1f2f1, 0xfff2f1f1, 
+	0xfff1f2f2, 0xfff1f1f2, 0xfff2f1f2, 0xfff1f1f2, 0xfff2f1f1, 0xfff2f1f1, 0xfff2f2f1, 0xfff1f1f1, 
+	0xfff2f2f1, 0xfff1f1f1, 0xfff1f2f2, 0xfff2f1f2, 0xfff2f1f1, 0xfff1f1f1, 0xfff1f2f1, 0xfff1f2f1, 
+	0xfff2f2f1, 0xfff1f1f1, 0xfff2f1f1, 0xfff1f2f2, 0xfff1f1f1, 0xfff1f2f2, 0xfff2f2f2, 0xfff2f1f2, 
+	0xfff2f1f1, 0xfff2f2f1, 0xfff1f1f2, 0xfff1f2f2, 0xfff2f2f1, 0xfff2f1f2, 0xfff2f1f1, 0xfff1f2f1, 
+	0xfff1f2f2, 0xfff2f2f1, 0xfff2f2f1, 0xfff2f1f2, 0xfff1f1f2, 0xfff2f2f2, 0xfff1f2f2, 0xfff2f1f2, 
+	0xfff1f2f1, 0xfff1f2f2, 0xfff1f2f2, 0xfff1f2f1, 0xfff1f2f1, 0xfff1f2f2, 0xfff1f1f1, 0xfff2f2f2, 
+	0xfff1f1f2, 0xfff2f1f2, 0xfff1f1f1, 0xfff1f2f1, 0xfff1f1f1, 0xfff1f2f1, 0xfff1f2f2, 0xfff2f1f1, 
+	0xfff2f1f1, 0xfff1f2f2, 0xfff1f2f2, 0xfff2f1f1, 0xfff2f1f2, 0xfff1f2f2, 0xfff2f1f1, 0xfff1f1f1, 
+	0xfff2f1f1, 0xfff2f1f2, 0xfff2f1f1, 0xfff1f1f2, 0xfff2f2f1, 0xfff1f1f1, 0xfff1f1f2, 0xfff2f1f1, 
+	0xfff2f1f2, 0xfff2f2f2, 0xfff1f2f2, 0xfff2f2f2, 0xfff1f2f1, 0xfff1f1f2, 0xfff2f2f2, 0xfff1f1f1, 
+	0xfff1f2f2, 0xfff2f1f1, 0xfff2f1f1, 0xfff2f1f2, 0xfff1f1f2, 0xfff2f1f2, 0xfff1f1f2, 0xfff1f1f1, 
+	0xfff2f1f2, 0xfff1f2f2, 0xfff1f1f2, 0xfff2f1f1, 0xfff2f1f1, 0xfff2f1f2, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff797c79, 0xffb5bab5, 0xffb5bab5, 
+	0xffdedbde, 0xfff1f0f0, 0xfff1f1f1, 0xfff1f0f0, 0xfff0f1f0, 0xfff0f0f1, 0xfff1f0f1, 0xfff0f0f1, 
+	0xfff0f1f1, 0xfff0f1f0, 0xfff1f1f1, 0xfff0f1f1, 0xfff1f1f1, 0xfff1f0f0, 0xfff1f0f0, 0xfff0f1f1, 
+	0xfff0f0f0, 0xfff0f1f0, 0xfff0f1f0, 0xfff1f1f0, 0xfff0f0f0, 0xfff1f0f0, 0xfff0f1f1, 0xfff1f1f0, 
+	0xfff0f1f0, 0xfff1f0f1, 0xfff0f1f1, 0xfff1f0f0, 0xfff1f1f1, 0xfff1f0f0, 0xfff1f0f0, 0xfff1f0f1, 
+	0xfff0f1f1, 0xfff1f1f1, 0xfff1f1f0, 0xfff1f0f1, 0xfff0f0f0, 0xfff1f1f1, 0xfff0f0f1, 0xfff0f1f0, 
+	0xfff1f1f0, 0xfff0f0f0, 0xfff0f1f1, 0xfff0f1f1, 0xfff1f1f0, 0xfff0f1f1, 0xfff1f1f1, 0xfff1f0f0, 
+	0xfff1f0f1, 0xfff1f0f1, 0xfff0f0f1, 0xfff1f1f0, 0xfff0f0f0, 0xfff0f1f0, 0xfff1f1f0, 0xfff0f0f1, 
+	0xfff1f0f0, 0xfff1f1f1, 0xfff1f1f1, 0xfff0f0f0, 0xfff0f0f0, 0xfff1f1f1, 0xfff1f0f0, 0xfff0f1f1, 
+	0xfff1f1f0, 0xfff1f0f0, 0xfff1f0f0, 0xfff1f0f1, 0xfff0f0f1, 0xfff0f0f1, 0xfff1f0f1, 0xfff1f0f1, 
+	0xfff1f1f1, 0xfff0f1f1, 0xfff0f0f1, 0xfff1f0f1, 0xfff0f1f1, 0xfff0f0f0, 0xfff1f1f1, 0xfff1f1f0, 
+	0xfff1f1f1, 0xfff1f0f0, 0xfff0f0f0, 0xfff1f0f1, 0xfff0f0f1, 0xfff0f0f0, 0xfff1f0f1, 0xfff1f1f0, 
+	0xfff1f0f0, 0xfff1f0f0, 0xfff0f0f0, 0xfff1f1f0, 0xfff0f0f1, 0xfff0f0f1, 0xfff1f0f0, 0xfff1f1f1, 
+	0xfff1f0f1, 0xfff0f0f1, 0xfff0f0f1, 0xfff0f0f0, 0xfff1f0f0, 0xfff0f0f0, 0xfff0f0f1, 0xfff1f1f1, 
+	0xfff0f0f0, 0xfff0f1f0, 0xfff0f0f0, 0xfff1f0f1, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f1f0, 0xfff0f1f0, 
+	0xfff1f1f0, 0xfff1f1f1, 0xfff0f1f1, 0xfff1f0f0, 0xfff0f0f0, 0xfff1f0f0, 0xfff0f0f0, 0xfff0f0f1, 
+	0xfff0f0f1, 0xfff1f1f1, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f1f0, 0xfff0f1f1, 0xfff1f0f0, 0xfff1f1f1, 
+	0xfff0f0f0, 0xfff0f1f0, 0xfff0f1f0, 0xfff1f0f0, 0xfff1f0f0, 0xfff0f1f1, 0xfff0f0f1, 0xfff1f0f0, 
+	0xfff0f0f1, 0xfff0f0f1, 0xfff0f0f1, 0xfff1f1f0, 0xfff1f0f0, 0xfff1f0f0, 0xfff0f1f0, 0xfff0f0f0, 
+	0xfff0f1f1, 0xfff0f0f0, 0xfff0f1f1, 0xfff0f0f1, 0xfff0f1f1, 0xfff1f1f0, 0xfff1f0f0, 0xfff1f1f0, 
+	0xfff0f0f0, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f0f1, 0xfff1f0f0, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f1f0, 
+	0xfff0f1f0, 0xfff0f0f1, 0xfff1f0f1, 0xfff0f1f1, 0xfff1f1f0, 0xfff1f1f1, 0xfff1f0f0, 0xfff0f0f0, 
+	0xfff0f0f1, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f1f0, 0xfff1f0f1, 0xfff0f1f0, 0xfff0f1f1, 0xfff0f0f0, 
+	0xfff0f0f0, 0xfff0f0f0, 0xfff1f0f0, 0xfff0f1f1, 0xfff1f1f0, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f0f1, 
+	0xfff0f0f1, 0xfff1f0f0, 0xfff0f1f1, 0xfff0f1f1, 0xfff1f1f0, 0xfff1f1f0, 0xfff0f1f0, 0xfff1f0f1, 
+	0xfff0f0f1, 0xfff1f1f0, 0xfff0f0f1, 0xfff0f1f0, 0xfff0f1f1, 0xfff1f0f0, 0xfff0f0f1, 0xfff1f1f0, 
+	0xfff0f1f0, 0xfff0f0f0, 0xfff0f0f1, 0xfff0f1f1, 0xfff0f0f1, 0xfff1f0f1, 0xfff1f1f0, 0xfff1f0f1, 
+	0xfff1f0f0, 0xfff0f0f1, 0xfff0f1f0, 0xfff0f0f1, 0xfff1f0f1, 0xfff1f0f0, 0xfff1f0f0, 0xfff0f0f1, 
+	0xfff0f0f0, 0xfff0f0f1, 0xfff1f0f0, 0xfff0f0f0, 0xfff0f0f0, 0xfff0f1f1, 0xffe9e8e9, 0xffdedbde, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xfff0eff0, 0xffefeff0, 0xfff0f0ef, 0xfff0eff0, 0xfff0eff0, 0xffefefef, 0xffeff0f0, 
+	0xfff0efef, 0xffefefef, 0xffefefef, 0xfff0efef, 0xffefeff0, 0xfff0efef, 0xffeff0f0, 0xfff0efef, 
+	0xffefefef, 0xffefefef, 0xffeff0f0, 0xfff0efef, 0xffefefef, 0xffeff0f0, 0xffefeff0, 0xffefefef, 
+	0xfff0f0f0, 0xfff0eff0, 0xfff0efef, 0xfff0eff0, 0xfff0efef, 0xfff0f0ef, 0xfff0eff0, 0xfff0efef, 
+	0xffeff0f0, 0xffefeff0, 0xfff0efef, 0xfff0f0ef, 0xffefeff0, 0xffeff0f0, 0xfff0f0f0, 0xfff0efef, 
+	0xfff0f0ef, 0xffefefef, 0xffeff0f0, 0xfff0f0ef, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff0eff0, 
+	0xffefefef, 0xffefefef, 0xfff0eff0, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xfff0efef, 
+	0xfff0efef, 0xfff0f0f0, 0xffeff0ef, 0xffeff0f0, 0xfff0f0f0, 0xffefefef, 0xffefefef, 0xfff0f0f0, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xfff0efef, 0xfff0f0f0, 0xfff0f0f0, 0xfff0efef, 0xffeff0f0, 
+	0xfff0efef, 0xffefeff0, 0xfff0eff0, 0xffeff0ef, 0xfff0eff0, 0xfff0eff0, 0xfff0eff0, 0xffeff0f0, 
+	0xffeff0ef, 0xfff0eff0, 0xffeff0f0, 0xfff0eff0, 0xffefefef, 0xfff0efef, 0xfff0f0ef, 0xffefefef, 
+	0xffeff0f0, 0xffeff0ef, 0xffefeff0, 0xffeff0ef, 0xffeff0ef, 0xffefeff0, 0xfff0f0f0, 0xffefefef, 
+	0xffefeff0, 0xfff0f0ef, 0xfff0efef, 0xfff0efef, 0xffefeff0, 0xfff0f0ef, 0xffeff0ef, 0xffefefef, 
+	0xfff0efef, 0xffefefef, 0xffefefef, 0xfff0f0f0, 0xfff0f0ef, 0xfff0f0ef, 0xffeff0f0, 0xfff0f0ef, 
+	0xffefefef, 0xfff0eff0, 0xfff0efef, 0xfff0efef, 0xffefeff0, 0xfff0efef, 0xffeff0f0, 0xfff0f0ef, 
+	0xffeff0f0, 0xffefefef, 0xffefeff0, 0xfff0eff0, 0xfff0efef, 0xfff0f0f0, 0xfff0efef, 0xfff0f0ef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffeff0f0, 0xfff0eff0, 0xffefeff0, 0xffeff0ef, 0xffefefef, 
+	0xffeff0f0, 0xffefeff0, 0xffefeff0, 0xffefeff0, 0xffeff0ef, 0xffefeff0, 0xffeff0ef, 0xfff0eff0, 
+	0xffeff0ef, 0xfff0eff0, 0xfff0efef, 0xfff0f0ef, 0xffeff0f0, 0xfff0efef, 0xffeff0f0, 0xfff0f0ef, 
+	0xfff0efef, 0xfff0efef, 0xffefefef, 0xffefeff0, 0xffefefef, 0xfff0efef, 0xffefefef, 0xfff0efef, 
+	0xfff0f0f0, 0xfff0f0ef, 0xfff0efef, 0xfff0eff0, 0xffefeff0, 0xffefefef, 0xffeff0ef, 0xffeff0ef, 
+	0xffefeff0, 0xffeff0ef, 0xfff0f0ef, 0xfff0efef, 0xffeff0ef, 0xfff0f0f0, 0xfff0f0ef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffeff0ef, 0xfff0f0ef, 0xffefeff0, 0xffefeff0, 0xffefefef, 0xffefefef, 
+	0xffefeff0, 0xfff0eff0, 0xffeff0f0, 0xffeff0ef, 0xffefefef, 0xffeff0ef, 0xffeff0ef, 0xfff0f0f0, 
+	0xfff0f0f0, 0xfff0eff0, 0xfff0efef, 0xffefefef, 0xfff0eff0, 0xffeff0f0, 0xffefeff0, 0xffefeff0, 
+	0xfff0f0ef, 0xfff0f0ef, 0xffefefef, 0xffefeff0, 0xfff0efef, 0xfff0f0f0, 0xfff0efef, 0xffefefef, 
+	0xfff0eff0, 0xffefefef, 0xffefeff0, 0xffeff0ef, 0xfff0efef, 0xffefefef, 0xffefeff0, 0xffeff0f0, 
+	0xffeff0ef, 0xfff0f0ef, 0xffeff0ef, 0xffefefef, 0xffefeff0, 0xffefefef, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffefeeee, 0xffeeeeee, 0xffeeefee, 0xffeeeeee, 0xffeeeeef, 0xffeeeeee, 0xffefefee, 
+	0xffeeefef, 0xffeeefee, 0xffefefee, 0xffefefee, 0xffefefee, 0xffeeefee, 0xffeeeeee, 0xffeeeeee, 
+	0xffefefef, 0xffeeeeee, 0xffeeeeee, 0xffeeeeef, 0xffefeeee, 0xffefefee, 0xffeeefee, 0xffeeeeee, 
+	0xffeeeeee, 0xffeeefef, 0xffeeeeee, 0xffeeefee, 0xffeeefef, 0xffefeeee, 0xffefeeee, 0xffeeeeef, 
+	0xffeeeeee, 0xffeeefee, 0xffeeeeef, 0xffeeeeee, 0xffeeeeef, 0xffeeefee, 0xffefeeef, 0xffefeeee, 
+	0xffeeefee, 0xffefeeef, 0xffefeeee, 0xffefefee, 0xffefefef, 0xffefeeef, 0xffefefef, 0xffeeeeee, 
+	0xffeeefee, 0xffeeefee, 0xffeeeeee, 0xffeeeeee, 0xffefeeef, 0xffeeefef, 0xffefeeee, 0xffeeefee, 
+	0xffeeeeee, 0xffeeefef, 0xffeeefee, 0xffefeeee, 0xffeeefef, 0xffeeeeef, 0xffeeefee, 0xffefeeef, 
+	0xffeeefee, 0xffefefee, 0xffeeefee, 0xffeeefee, 0xffeeefee, 0xffeeefef, 0xffefeeef, 0xffeeefee, 
+	0xffefefef, 0xffeeeeef, 0xffefefee, 0xffeeeeee, 0xffefefee, 0xffefeeef, 0xffefeeee, 0xffefefee, 
+	0xffeeefee, 0xffeeefee, 0xffeeeeef, 0xffeeeeee, 0xffefeeef, 0xffeeeeef, 0xffeeeeee, 0xffeeefee, 
+	0xffeeeeef, 0xffefeeef, 0xffeeeeef, 0xffeeefef, 0xffefefef, 0xffefefee, 0xffefeeef, 0xffeeeeef, 
+	0xffeeeeee, 0xffeeefee, 0xffefeeee, 0xffeeeeee, 0xffeeeeef, 0xffeeeeee, 0xffefefef, 0xffefeeee, 
+	0xffefeeee, 0xffeeefef, 0xffeeeeef, 0xffefeeee, 0xffefeeee, 0xffefeeef, 0xffeeeeee, 0xffeeeeee, 
+	0xffefefef, 0xffeeefef, 0xffefeeee, 0xffefefef, 0xffeeeeee, 0xffefeeee, 0xffeeeeee, 0xffeeeeee, 
+	0xffefeeef, 0xffeeefee, 0xffeeeeee, 0xffeeefef, 0xffeeeeee, 0xffeeefef, 0xffeeeeef, 0xffeeeeee, 
+	0xffefefef, 0xffeeefee, 0xffeeefef, 0xffeeeeef, 0xffeeeeef, 0xffefefee, 0xffefeeef, 0xffeeeeee, 
+	0xffeeeeee, 0xffefefef, 0xffeeeeef, 0xffefeeef, 0xffeeeeee, 0xffeeefee, 0xffefefef, 0xffefeeee, 
+	0xffeeefef, 0xffeeefef, 0xffefefef, 0xffeeeeef, 0xffeeeeee, 0xffefeeee, 0xffeeeeee, 0xffeeeeee, 
+	0xffeeeeee, 0xffeeefee, 0xffeeeeee, 0xffefeeee, 0xffefefef, 0xffeeefee, 0xffefeeee, 0xffeeefef, 
+	0xffefeeee, 0xffefeeee, 0xffeeeeee, 0xffeeeeee, 0xffefeeef, 0xffefeeee, 0xffefeeee, 0xffeeefef, 
+	0xffeeefee, 0xffeeefee, 0xffeeeeee, 0xffefefef, 0xffeeefee, 0xffefeeee, 0xffeeeeee, 0xffefefee, 
+	0xffefefee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeefee, 0xffeeeeef, 0xffefeeef, 0xffefeeee, 
+	0xffeeeeee, 0xffefefee, 0xffefefee, 0xffeeefee, 0xffefefee, 0xffefeeee, 0xffeeefef, 0xffeeefee, 
+	0xffeeeeee, 0xffeeeeef, 0xffeeeeef, 0xffeeeeee, 0xffeeeeef, 0xffefeeef, 0xffefeeee, 0xffeeefef, 
+	0xffeeeeee, 0xffefefee, 0xffeeeeee, 0xffefeeef, 0xffeeefef, 0xffeeeeee, 0xffeeeeee, 0xffeeeeef, 
+	0xffefeeef, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffefeeef, 0xffefeeef, 0xffeeeeee, 0xffeeeeef, 
+	0xffefefee, 0xffeeeeee, 0xffefefef, 0xffeeefee, 0xffeeeeef, 0xffeeeeef, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffeeeded, 0xffeeedee, 0xffeeeded, 0xffeeeded, 0xffededed, 0xffedeeed, 0xffedeeed, 
+	0xffedeeee, 0xffeeeded, 0xffedeeee, 0xffedeeed, 0xffeeedee, 0xffeeeeed, 0xffededed, 0xffeeeded, 
+	0xffeeeded, 0xffededee, 0xffeeeded, 0xffededed, 0xffededed, 0xffedeeed, 0xffeeedee, 0xffeeeded, 
+	0xffededee, 0xffeeeded, 0xffededed, 0xffededee, 0xffeeeeed, 0xffededed, 0xffededed, 0xffeeedee, 
+	0xffeeeded, 0xffedeeed, 0xffedeeed, 0xffededed, 0xffededed, 0xffeeeded, 0xffededed, 0xffededed, 
+	0xffeeeeed, 0xffedeeed, 0xffededed, 0xffedeeed, 0xffededed, 0xffeeeeed, 0xffeeeded, 0xffeeeded, 
+	0xffeeeeed, 0xffeeedee, 0xffeeeded, 0xffeeeeee, 0xffedeeed, 0xffeeeded, 0xffedeeee, 0xffededee, 
+	0xffeeeded, 0xffeeedee, 0xffedeeee, 0xffededee, 0xffededed, 0xffedeeee, 0xffeeeded, 0xffeeedee, 
+	0xffededed, 0xffeeedee, 0xffedeeee, 0xffeeedee, 0xffeeeeee, 0xffededee, 0xffededee, 0xffeeedee, 
+	0xffedeeed, 0xffededed, 0xffeeeded, 0xffeeedee, 0xffededee, 0xffeeeded, 0xffededee, 0xffededed, 
+	0xffedeeed, 0xffedeeed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffedeeee, 0xffededee, 
+	0xffeeeded, 0xffededed, 0xffeeeded, 0xffededed, 0xffedeeed, 0xffeeedee, 0xffededed, 0xffedeeed, 
+	0xffeeedee, 0xffededed, 0xffeeedee, 0xffededed, 0xffededed, 0xffeeedee, 0xffedeeed, 0xffeeeded, 
+	0xffedeeed, 0xffededee, 0xffeeedee, 0xffeeeeed, 0xffedeeed, 0xffeeeeed, 0xffededee, 0xffededee, 
+	0xffedeeed, 0xffeeeded, 0xffededed, 0xffedeeed, 0xffeeeeee, 0xffeeeded, 0xffeeeeed, 0xffeeeded, 
+	0xffeeedee, 0xffededed, 0xffeeeded, 0xffeeeeed, 0xffededee, 0xffeeeeee, 0xffededed, 0xffeeeeed, 
+	0xffeeeded, 0xffeeedee, 0xffededed, 0xffeeedee, 0xffeeeeed, 0xffedeeee, 0xffeeedee, 0xffededed, 
+	0xffeeeeed, 0xffededed, 0xffeeeded, 0xffededed, 0xffededee, 0xffedeeed, 0xffeeeeed, 0xffeeeeee, 
+	0xffedeeee, 0xffededed, 0xffeeeded, 0xffeeeeee, 0xffeeedee, 0xffededed, 0xffeeedee, 0xffedeeed, 
+	0xffeeeeed, 0xffededed, 0xffededed, 0xffedeeee, 0xffedeeed, 0xffedeeed, 0xffededee, 0xffeeeeee, 
+	0xffededed, 0xffeeeeee, 0xffedeeed, 0xffeeeded, 0xffeeeeed, 0xffeeeeee, 0xffedeeed, 0xffeeedee, 
+	0xffedeeee, 0xffededee, 0xffeeeded, 0xffedeeed, 0xffeeeded, 0xffedeeed, 0xffededee, 0xffededee, 
+	0xffeeeded, 0xffededee, 0xffededed, 0xffeeeded, 0xffedeeed, 0xffeeeeed, 0xffededee, 0xffeeedee, 
+	0xffededed, 0xffeeedee, 0xffeeedee, 0xffededed, 0xffedeeed, 0xffedeeee, 0xffeeeeee, 0xffededee, 
+	0xffededee, 0xffedeeed, 0xffeeeeed, 0xffedeeee, 0xffededed, 0xffeeeeed, 0xffedeeed, 0xffededed, 
+	0xffededee, 0xffeeedee, 0xffeeeeed, 0xffedeeee, 0xffeeedee, 0xffedeeee, 0xffededed, 0xffedeeed, 
+	0xffedeeed, 0xffededed, 0xffeeeded, 0xffedeeed, 0xffeeeded, 0xffedeeed, 0xffededed, 0xffeeeeed, 
+	0xffedeeed, 0xffeeeeee, 0xffedeeee, 0xffedeeed, 0xffedeeed, 0xffeeeded, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffecedec, 0xffedeced, 0xffededec, 0xffececec, 0xffedeced, 0xffeceded, 0xffedeced, 
+	0xffeceded, 0xffededed, 0xffedecec, 0xffecedec, 0xffececec, 0xffeceded, 0xffececec, 0xffededed, 
+	0xffeceded, 0xffeceded, 0xffededec, 0xffedeced, 0xffedeced, 0xffededec, 0xffedeced, 0xffedeced, 
+	0xffecedec, 0xffecedec, 0xffececec, 0xffecedec, 0xffededec, 0xffecedec, 0xffececec, 0xffecedec, 
+	0xffececed, 0xffececec, 0xffededec, 0xffececed, 0xffecedec, 0xffededec, 0xffececed, 0xffedecec, 
+	0xffececec, 0xffecedec, 0xffededec, 0xffecedec, 0xffeceded, 0xffedecec, 0xffedeced, 0xffececed, 
+	0xffecedec, 0xffedecec, 0xffeceded, 0xffececec, 0xffededed, 0xffececed, 0xffedecec, 0xffededec, 
+	0xffeceded, 0xffededed, 0xffededec, 0xffedecec, 0xffececec, 0xffececed, 0xffececed, 0xffeceded, 
+	0xffededec, 0xffececed, 0xffececec, 0xffecedec, 0xffededec, 0xffecedec, 0xffececed, 0xffededed, 
+	0xffececec, 0xffececed, 0xffedeced, 0xffececed, 0xffecedec, 0xffedeced, 0xffececed, 0xffecedec, 
+	0xffececec, 0xffececec, 0xffedecec, 0xffededed, 0xffededec, 0xffececed, 0xffececec, 0xffececed, 
+	0xffececec, 0xffedeced, 0xffececed, 0xffececed, 0xffececec, 0xffededed, 0xffededed, 0xffedecec, 
+	0xffedeced, 0xffedecec, 0xffececec, 0xffedecec, 0xffeceded, 0xffedecec, 0xffececed, 0xffeceded, 
+	0xffececec, 0xffececed, 0xffededec, 0xffeceded, 0xffececed, 0xffececed, 0xffeceded, 0xffededec, 
+	0xffececed, 0xffeceded, 0xffedecec, 0xffececed, 0xffededec, 0xffecedec, 0xffececec, 0xffedecec, 
+	0xffedeced, 0xffececec, 0xffedecec, 0xffececed, 0xffededec, 0xffeceded, 0xffededec, 0xffececec, 
+	0xffedecec, 0xffededec, 0xffededec, 0xffececec, 0xffececed, 0xffecedec, 0xffececec, 0xffecedec, 
+	0xffececec, 0xffededec, 0xffedeced, 0xffedecec, 0xffececec, 0xffededed, 0xffecedec, 0xffededec, 
+	0xffedeced, 0xffedeced, 0xffecedec, 0xffecedec, 0xffececec, 0xffececed, 0xffedecec, 0xffececec, 
+	0xffececec, 0xffedeced, 0xffeceded, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 
+	0xffedeced, 0xffececed, 0xffededed, 0xffedeced, 0xffededed, 0xffedecec, 0xffececed, 0xffededed, 
+	0xffedeced, 0xffececed, 0xffedecec, 0xffececed, 0xffededec, 0xffededed, 0xffededec, 0xffecedec, 
+	0xffececec, 0xffececed, 0xffececec, 0xffedeced, 0xffededec, 0xffedeced, 0xffedecec, 0xffedeced, 
+	0xffececed, 0xffededed, 0xffececec, 0xffedeced, 0xffececed, 0xffedeced, 0xffececec, 0xffececed, 
+	0xffececed, 0xffececec, 0xffededed, 0xffedecec, 0xffecedec, 0xffecedec, 0xffededec, 0xffededed, 
+	0xffececec, 0xffececec, 0xffedeced, 0xffededec, 0xffececed, 0xffeceded, 0xffeceded, 0xffecedec, 
+	0xffeceded, 0xffececec, 0xffececec, 0xffedecec, 0xffecedec, 0xffeceded, 0xffececec, 0xffedeced, 
+	0xffedeced, 0xffecedec, 0xffededed, 0xffededec, 0xffededed, 0xffededed, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffebebeb, 0xffebebec, 0xffecebeb, 0xffebecec, 0xffebecec, 0xffececeb, 0xffebebec, 
+	0xffebecec, 0xffebebeb, 0xffebecec, 0xffecebec, 0xffecebeb, 0xffebebeb, 0xffecebec, 0xffecebeb, 
+	0xffebeceb, 0xffebebec, 0xffecebeb, 0xffececeb, 0xffecebeb, 0xffebeceb, 0xffebebec, 0xffebecec, 
+	0xffebecec, 0xffecebec, 0xffecebec, 0xffecebec, 0xffecebec, 0xffecebeb, 0xffecebec, 0xffecebec, 
+	0xffecebeb, 0xffebebeb, 0xffebeceb, 0xffececec, 0xffecebeb, 0xffecebec, 0xffebecec, 0xffebeceb, 
+	0xffebebec, 0xffececec, 0xffecebeb, 0xffecebec, 0xffececeb, 0xffececeb, 0xffebeceb, 0xffebebec, 
+	0xffececeb, 0xffebebec, 0xffecebec, 0xffececec, 0xffececeb, 0xffebeceb, 0xffebecec, 0xffecebeb, 
+	0xffebecec, 0xffebecec, 0xffececec, 0xffecebeb, 0xffecebec, 0xffececec, 0xffebecec, 0xffebecec, 
+	0xffececec, 0xffebebeb, 0xffececeb, 0xffececeb, 0xffecebec, 0xffecebeb, 0xffececeb, 0xffebebec, 
+	0xffecebec, 0xffececeb, 0xffececec, 0xffebebec, 0xffebebeb, 0xffececec, 0xffebecec, 0xffebebec, 
+	0xffececec, 0xffebebec, 0xffebecec, 0xffecebec, 0xffebebeb, 0xffecebec, 0xffebebec, 0xffececeb, 
+	0xffecebeb, 0xffececec, 0xffececeb, 0xffebebeb, 0xffecebeb, 0xffebebec, 0xffebebec, 0xffececeb, 
+	0xffececeb, 0xffebeceb, 0xffececeb, 0xffececeb, 0xffebebeb, 0xffebebec, 0xffececeb, 0xffebebec, 
+	0xffececeb, 0xffecebeb, 0xffebebec, 0xffecebec, 0xffecebec, 0xffececec, 0xffebeceb, 0xffececec, 
+	0xffebebec, 0xffebecec, 0xffebebeb, 0xffecebeb, 0xffebebeb, 0xffececec, 0xffebecec, 0xffececeb, 
+	0xffececeb, 0xffebecec, 0xffecebec, 0xffececeb, 0xffebeceb, 0xffececeb, 0xffebecec, 0xffecebec, 
+	0xffebebec, 0xffebecec, 0xffebeceb, 0xffebebeb, 0xffebecec, 0xffecebec, 0xffecebeb, 0xffebeceb, 
+	0xffebeceb, 0xffecebec, 0xffececec, 0xffecebeb, 0xffececeb, 0xffececeb, 0xffecebec, 0xffecebec, 
+	0xffebebec, 0xffebecec, 0xffececec, 0xffebebeb, 0xffecebeb, 0xffececeb, 0xffebebec, 0xffebebec, 
+	0xffecebeb, 0xffebebec, 0xffebebeb, 0xffebebeb, 0xffebecec, 0xffebecec, 0xffebeceb, 0xffececec, 
+	0xffebeceb, 0xffecebeb, 0xffecebeb, 0xffececec, 0xffebecec, 0xffebecec, 0xffebeceb, 0xffebecec, 
+	0xffebecec, 0xffebecec, 0xffebebec, 0xffebeceb, 0xffebebeb, 0xffecebeb, 0xffebebec, 0xffebecec, 
+	0xffececeb, 0xffebebec, 0xffecebec, 0xffebebeb, 0xffececec, 0xffecebeb, 0xffebebec, 0xffebecec, 
+	0xffebebec, 0xffebebeb, 0xffecebec, 0xffecebeb, 0xffebebeb, 0xffecebec, 0xffebecec, 0xffebebeb, 
+	0xffebeceb, 0xffececec, 0xffececec, 0xffecebec, 0xffebebec, 0xffececec, 0xffecebeb, 0xffebeceb, 
+	0xffebebec, 0xffececeb, 0xffebebec, 0xffebecec, 0xffecebec, 0xffebeceb, 0xffebecec, 0xffecebeb, 
+	0xffecebec, 0xffebeceb, 0xffecebec, 0xffebecec, 0xffebeceb, 0xffebeceb, 0xffecebeb, 0xffececeb, 
+	0xffebebec, 0xffececec, 0xffececeb, 0xffecebec, 0xffebebeb, 0xffebebec, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffebebeb, 0xffeaebeb, 0xffeaeaea, 0xffebebeb, 0xffebeaeb, 0xffeaeaea, 0xffebeaeb, 
+	0xffeaebea, 0xffebebea, 0xffebeaea, 0xffeaebea, 0xffebebea, 0xffebeaeb, 0xffeaebea, 0xffebeaea, 
+	0xffeaebea, 0xffeaeaeb, 0xffebeaeb, 0xffeaeaea, 0xffebebea, 0xffeaebeb, 0xffebebeb, 0xffeaebeb, 
+	0xffebebeb, 0xffebebeb, 0xffeaebeb, 0xffebeaea, 0xffebebeb, 0xffebebeb, 0xffebebeb, 0xffeaebea, 
+	0xffeaeaeb, 0xffebebeb, 0xffebebea, 0xffebebeb, 0xffebeaeb, 0xffebebeb, 0xffebebea, 0xffebebeb, 
+	0xffebebeb, 0xffebebeb, 0xffebeaea, 0xffeaebeb, 0xffeaebea, 0xffeaeaeb, 0xffeaeaeb, 0xffebebeb, 
+	0xffebeaeb, 0xffebebea, 0xffeaeaeb, 0xffebebeb, 0xffebeaeb, 0xffeaebeb, 0xffebebeb, 0xffebebea, 
+	0xffeaeaea, 0xffeaeaeb, 0xffebeaeb, 0xffebebeb, 0xffebebea, 0xffebebea, 0xffebeaea, 0xffebebeb, 
+	0xffeaebeb, 0xffebebea, 0xffebebea, 0xffebeaeb, 0xffeaebea, 0xffebebea, 0xffeaeaea, 0xffeaebea, 
+	0xffeaebea, 0xffebebea, 0xffebeaeb, 0xffebebeb, 0xffeaebea, 0xffebebea, 0xffeaeaeb, 0xffeaebeb, 
+	0xffebebeb, 0xffebeaeb, 0xffebeaeb, 0xffeaebeb, 0xffebebea, 0xffeaebea, 0xffebebea, 0xffeaeaeb, 
+	0xffebebeb, 0xffebebeb, 0xffeaeaea, 0xffeaebeb, 0xffebeaeb, 0xffeaebeb, 0xffeaebeb, 0xffebebeb, 
+	0xffebebea, 0xffebebeb, 0xffeaebeb, 0xffeaebea, 0xffebebea, 0xffebebeb, 0xffebebeb, 0xffeaebeb, 
+	0xffebebeb, 0xffebeaeb, 0xffebeaeb, 0xffebebeb, 0xffebeaeb, 0xffeaebea, 0xffeaeaea, 0xffebebea, 
+	0xffeaeaea, 0xffebebeb, 0xffeaeaeb, 0xffebeaeb, 0xffebeaeb, 0xffebeaeb, 0xffeaebea, 0xffebeaea, 
+	0xffeaeaea, 0xffebebeb, 0xffebeaea, 0xffeaeaeb, 0xffeaebeb, 0xffeaebea, 0xffeaeaea, 0xffebebea, 
+	0xffeaebea, 0xffeaebea, 0xffebebeb, 0xffebeaeb, 0xffeaebeb, 0xffebebeb, 0xffebeaeb, 0xffebeaeb, 
+	0xffeaebeb, 0xffebebea, 0xffebebea, 0xffebebea, 0xffebebea, 0xffebebeb, 0xffeaebeb, 0xffeaebea, 
+	0xffebebeb, 0xffebebeb, 0xffebeaeb, 0xffeaebea, 0xffebeaeb, 0xffebebea, 0xffebebea, 0xffebebeb, 
+	0xffebebea, 0xffeaebeb, 0xffebeaeb, 0xffeaebeb, 0xffebeaea, 0xffeaebeb, 0xffeaebea, 0xffeaeaeb, 
+	0xffebebeb, 0xffebeaea, 0xffebebea, 0xffebeaeb, 0xffebebeb, 0xffebeaea, 0xffeaeaeb, 0xffebeaeb, 
+	0xffebebea, 0xffebebeb, 0xffebeaeb, 0xffebeaeb, 0xffebeaea, 0xffebeaea, 0xffebeaeb, 0xffebeaeb, 
+	0xffebeaeb, 0xffeaeaeb, 0xffebeaea, 0xffebeaeb, 0xffeaebeb, 0xffeaebeb, 0xffebebeb, 0xffebebea, 
+	0xffeaebea, 0xffebeaea, 0xffeaebea, 0xffebebeb, 0xffebebeb, 0xffeaebeb, 0xffebebeb, 0xffeaeaeb, 
+	0xffeaebeb, 0xffebebeb, 0xffebebeb, 0xffeaebea, 0xffeaebeb, 0xffeaebeb, 0xffebebeb, 0xffeaebeb, 
+	0xffebebea, 0xffebebeb, 0xffeaeaeb, 0xffebebeb, 0xffebebeb, 0xffebebea, 0xffeaebeb, 0xffeaebea, 
+	0xffeaeaeb, 0xffebebea, 0xffebeaea, 0xffebebea, 0xffebeaea, 0xffebebea, 0xffebebea, 0xffebebeb, 
+	0xffebebea, 0xffebebeb, 0xffebebea, 0xffebebeb, 0xffeaebeb, 0xffebebeb, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffe9eae9, 0xffeaeaea, 0xffe9eaea, 
+	0xffeae9ea, 0xffeaeae9, 0xffeaeae9, 0xffeae9e9, 0xffeaeaea, 0xffeaeaea, 0xffeae9ea, 0xffeaeaea, 
+	0xffe9eae9, 0xffeaeaea, 0xffe9e9ea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 
+	0xffeaeae9, 0xffe9e9e9, 0xffe9eaea, 0xffeae9ea, 0xffeaeaea, 0xffeae9e9, 0xffeae9ea, 0xffe9e9e9, 
+	0xffeaeaea, 0xffeaeaea, 0xffe9e9ea, 0xffe9eaea, 0xffeaeae9, 0xffeaeaea, 0xffeae9ea, 0xffe9eaea, 
+	0xffe9eaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffe9eae9, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeae9ea, 0xffeaeaea, 0xffeae9ea, 0xffeae9ea, 0xffe9eaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeae9e9, 0xffeaeaea, 0xffeaeaea, 0xffeae9ea, 0xffeae9e9, 0xffe9eaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 0xffeae9e9, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffe9e9ea, 
+	0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 0xffeae9ea, 0xffe9eaea, 0xffeaeae9, 0xffeaeae9, 0xffeaeaea, 
+	0xffeaeaea, 0xffe9eaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 0xffe9eaea, 0xffeae9ea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 0xffe9eae9, 0xffeaeaea, 0xffe9eaea, 0xffeaeaea, 0xffeaeaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 0xffeaeae9, 0xffe9eaea, 0xffe9eaea, 0xffeaeaea, 
+	0xffeaeaea, 0xffeae9e9, 0xffeaeaea, 0xffeaeae9, 0xffeaeae9, 0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 
+	0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 0xffeaeaea, 0xffe9eaea, 
+	0xffeaeaea, 0xffe9eae9, 0xffeaeae9, 0xffeae9ea, 0xffeaeaea, 0xffe9eaea, 0xffe9eaea, 0xffeae9ea, 
+	0xffeaeae9, 0xffeaeaea, 0xffeae9e9, 0xffeaeaea, 0xffe9eaea, 0xffeae9ea, 0xffeaeaea, 0xffeaeaea, 
+	0xffe9eaea, 0xffeae9ea, 0xffeaeae9, 0xffeae9e9, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 
+	0xffeaeaea, 0xffeaeaea, 0xffe9eaea, 0xffe9e9ea, 0xffe9eae9, 0xffeaeaea, 0xffeaeae9, 0xffeaeaea, 
+	0xffeaeae9, 0xffeae9ea, 0xffeaeae9, 0xffeaeae9, 0xffe9eaea, 0xffeaeaea, 0xffeaeae9, 0xffe9eaea, 
+	0xffeaeaea, 0xffeaeae9, 0xffeae9ea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffe9eaea, 0xffeae9ea, 
+	0xffeaeae9, 0xffeae9ea, 0xffe9eaea, 0xffeaeae9, 0xffeaeae9, 0xffeae9ea, 0xffeaeaea, 0xffe9eaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeae9ea, 0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 0xffe9eaea, 0xffe9e9ea, 
+	0xffeaeaea, 0xffe9e9ea, 0xffe9eaea, 0xffeae9ea, 0xffe9e9e9, 0xffeaeaea, 0xffeaeaea, 0xffeaeae9, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeae9ea, 0xffeaeaea, 0xffeaeaea, 0xffe9e9ea, 0xffeaeaea, 
+	0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffeaeaea, 0xffe9eaea, 
+	0xffeaeaea, 0xffe9eae9, 0xffeaeaea, 0xffeae9ea, 0xffeaeae9, 0xffeaeaea, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffeae9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 
+	0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe9e9e9, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffe8e8e8, 0xffe8e8e9, 0xffe9e9e9, 0xffe8e8e8, 0xffe9e8e9, 0xffe8e8e9, 0xffe8e8e9, 
+	0xffe8e8e9, 0xffe8e8e8, 0xffe8e8e9, 0xffe8e8e9, 0xffe8e9e9, 0xffe9e8e8, 0xffe9e8e8, 0xffe8e9e8, 
+	0xffe8e9e9, 0xffe8e8e8, 0xffe8e8e9, 0xffe9e8e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e9e9, 
+	0xffe9e8e8, 0xffe8e8e9, 0xffe9e8e9, 0xffe9e9e8, 0xffe9e8e8, 0xffe8e9e8, 0xffe8e9e8, 0xffe8e8e8, 
+	0xffe8e9e8, 0xffe8e8e9, 0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e8e9, 0xffe8e9e8, 0xffe8e8e8, 
+	0xffe8e9e8, 0xffe8e8e8, 0xffe8e9e8, 0xffe8e9e8, 0xffe8e9e9, 0xffe8e8e8, 0xffe9e8e9, 0xffe8e8e8, 
+	0xffe8e9e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe9e9e8, 0xffe8e8e8, 0xffe8e9e9, 0xffe8e8e9, 0xffe8e8e8, 
+	0xffe8e9e8, 0xffe9e9e8, 0xffe8e8e8, 0xffe9e9e9, 0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e8e9, 
+	0xffe8e9e8, 0xffe8e8e9, 0xffe8e9e9, 0xffe9e8e8, 0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe9e8e9, 
+	0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e9e8, 0xffe9e8e9, 0xffe8e8e8, 0xffe8e8e9, 
+	0xffe8e8e8, 0xffe9e9e8, 0xffe9e8e9, 0xffe8e8e9, 0xffe8e9e8, 0xffe9e8e9, 0xffe8e9e8, 0xffe8e9e9, 
+	0xffe8e8e8, 0xffe9e9e8, 0xffe8e9e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e8e9, 0xffe8e9e9, 0xffe8e8e8, 
+	0xffe8e8e8, 0xffe8e8e9, 0xffe8e9e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e9, 
+	0xffe8e9e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 
+	0xffe8e8e9, 0xffe8e8e9, 0xffe8e8e8, 0xffe8e8e8, 0xffe9e9e8, 0xffe8e9e9, 0xffe8e8e8, 0xffe8e8e8, 
+	0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe9e9e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e9e8, 
+	0xffe8e8e9, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e9e9, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e9e8, 
+	0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e9, 0xffe9e9e8, 
+	0xffe8e8e8, 0xffe9e9e8, 0xffe8e9e9, 0xffe8e9e8, 0xffe9e8e9, 0xffe8e9e8, 0xffe8e8e8, 0xffe8e8e8, 
+	0xffe8e8e8, 0xffe9e8e8, 0xffe9e8e8, 0xffe9e8e9, 0xffe8e8e9, 0xffe8e9e8, 0xffe9e8e8, 0xffe8e9e9, 
+	0xffe9e8e9, 0xffe9e8e8, 0xffe8e8e9, 0xffe9e8e8, 0xffe8e9e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe9e9e8, 
+	0xffe8e8e8, 0xffe8e8e9, 0xffe8e9e9, 0xffe8e9e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 
+	0xffe8e8e8, 0xffe8e9e8, 0xffe8e9e9, 0xffe8e8e8, 0xffe8e8e9, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e9, 
+	0xffe8e9e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe8e8e8, 
+	0xffe9e8e9, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e9e9, 0xffe9e8e8, 0xffe8e8e8, 0xffe9e8e8, 
+	0xffe9e8e8, 0xffe8e9e8, 0xffe9e8e8, 0xffe8e8e8, 0xffe8e9e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe8e8e8, 
+	0xffe8e8e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe9e8e9, 0xffe9e9e9, 0xffe8e8e8, 0xffe8e9e9, 0xffe9e8e8, 
+	0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e9e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffe7e8e8, 0xffe8e7e8, 0xffe8e7e8, 0xffe7e8e7, 0xffe8e7e8, 0xffe7e7e8, 0xffe7e8e8, 
+	0xffe7e7e8, 0xffe8e7e8, 0xffe8e8e8, 0xffe7e8e7, 0xffe8e8e8, 0xffe7e8e8, 0xffe8e7e7, 0xffe8e8e7, 
+	0xffe7e7e7, 0xffe8e8e8, 0xffe7e7e7, 0xffe7e8e7, 0xffe8e8e7, 0xffe8e8e8, 0xffe7e7e8, 0xffe8e8e7, 
+	0xffe8e8e8, 0xffe8e8e7, 0xffe7e7e7, 0xffe7e8e7, 0xffe8e8e7, 0xffe8e8e7, 0xffe8e7e8, 0xffe8e7e8, 
+	0xffe7e8e7, 0xffe7e7e8, 0xffe8e8e8, 0xffe7e7e7, 0xffe7e8e8, 0xffe7e7e7, 0xffe7e8e7, 0xffe7e8e8, 
+	0xffe8e7e8, 0xffe7e7e7, 0xffe8e8e7, 0xffe7e8e7, 0xffe7e8e8, 0xffe8e8e8, 0xffe8e8e7, 0xffe8e8e8, 
+	0xffe7e7e7, 0xffe7e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e7e8, 0xffe8e7e8, 0xffe8e8e8, 0xffe7e8e8, 
+	0xffe7e8e7, 0xffe7e7e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e7e7, 0xffe8e8e7, 0xffe8e8e8, 
+	0xffe8e8e7, 0xffe7e7e8, 0xffe7e7e8, 0xffe8e8e7, 0xffe8e7e8, 0xffe8e7e7, 0xffe8e8e7, 0xffe7e8e8, 
+	0xffe8e7e8, 0xffe8e7e8, 0xffe8e7e8, 0xffe7e7e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e8e7, 0xffe7e7e7, 
+	0xffe7e8e7, 0xffe7e7e8, 0xffe8e7e8, 0xffe8e8e7, 0xffe7e7e8, 0xffe8e8e8, 0xffe8e7e7, 0xffe8e7e8, 
+	0xffe7e7e7, 0xffe7e8e8, 0xffe8e7e8, 0xffe8e8e7, 0xffe8e7e8, 0xffe8e7e7, 0xffe8e7e8, 0xffe8e8e7, 
+	0xffe7e8e8, 0xffe8e7e7, 0xffe8e7e7, 0xffe8e7e7, 0xffe8e7e7, 0xffe7e8e8, 0xffe7e7e8, 0xffe8e7e8, 
+	0xffe7e8e8, 0xffe7e8e8, 0xffe7e8e7, 0xffe8e7e8, 0xffe8e8e7, 0xffe8e8e7, 0xffe7e8e8, 0xffe8e7e8, 
+	0xffe8e8e8, 0xffe8e8e7, 0xffe7e7e7, 0xffe8e8e8, 0xffe7e7e8, 0xffe8e8e8, 0xffe7e7e8, 0xffe7e7e7, 
+	0xffe7e7e8, 0xffe7e7e8, 0xffe8e7e8, 0xffe8e7e7, 0xffe8e7e7, 0xffe8e7e8, 0xffe8e8e7, 0xffe7e7e8, 
+	0xffe8e8e8, 0xffe7e8e7, 0xffe7e8e7, 0xffe8e8e8, 0xffe8e7e8, 0xffe7e7e7, 0xffe8e8e8, 0xffe8e7e8, 
+	0xffe8e8e7, 0xffe7e7e8, 0xffe8e7e8, 0xffe7e7e8, 0xffe7e8e7, 0xffe7e8e7, 0xffe7e7e8, 0xffe8e7e7, 
+	0xffe8e7e7, 0xffe8e7e7, 0xffe7e8e7, 0xffe8e8e8, 0xffe7e8e8, 0xffe8e8e8, 0xffe8e8e8, 0xffe8e7e7, 
+	0xffe7e8e7, 0xffe8e7e7, 0xffe7e8e8, 0xffe7e7e7, 0xffe8e7e8, 0xffe7e8e8, 0xffe8e7e8, 0xffe8e8e8, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e8e7, 0xffe8e8e7, 0xffe8e7e8, 0xffe7e8e8, 0xffe7e7e7, 0xffe7e7e8, 
+	0xffe7e7e8, 0xffe7e8e8, 0xffe7e8e8, 0xffe7e8e8, 0xffe7e7e7, 0xffe7e8e8, 0xffe8e7e8, 0xffe8e8e8, 
+	0xffe7e8e8, 0xffe8e7e8, 0xffe7e7e7, 0xffe8e7e8, 0xffe7e8e7, 0xffe8e7e7, 0xffe7e8e8, 0xffe7e8e8, 
+	0xffe7e8e8, 0xffe7e8e7, 0xffe7e8e8, 0xffe7e8e8, 0xffe8e8e8, 0xffe8e7e7, 0xffe8e7e7, 0xffe8e7e8, 
+	0xffe8e8e7, 0xffe8e8e7, 0xffe8e7e8, 0xffe7e7e8, 0xffe8e7e8, 0xffe8e7e7, 0xffe8e8e8, 0xffe8e7e8, 
+	0xffe7e7e8, 0xffe8e8e7, 0xffe7e8e7, 0xffe7e8e7, 0xffe8e8e8, 0xffe8e7e8, 0xffe7e8e7, 0xffe8e7e7, 
+	0xffe7e7e8, 0xffe7e8e8, 0xffe8e7e8, 0xffe8e7e7, 0xffe7e7e8, 0xffe8e8e7, 0xffe7e7e8, 0xffe8e7e7, 
+	0xffe7e7e8, 0xffe7e7e8, 0xffe8e8e7, 0xffe7e8e8, 0xffe8e7e7, 0xffe8e8e8, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e6, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e6e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e6e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e6e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e6, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e6, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e6, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe6e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797b79, 0xffb5b6b5, 0xffb5b6b5, 
+	0xffd6dbd6, 0xffe6e6e6, 0xffe6e7e7, 0xffe6e7e6, 0xffe7e6e7, 0xffe7e6e6, 0xffe7e6e6, 0xffe6e6e7, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe7e6e6, 0xffe7e6e6, 0xffe6e7e7, 0xffe7e6e6, 0xffe6e7e6, 0xffe6e6e7, 
+	0xffe7e6e6, 0xffe6e7e7, 0xffe7e6e6, 0xffe7e7e7, 0xffe6e7e7, 0xffe6e7e7, 0xffe6e6e7, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe7e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e6e6, 0xffe6e7e7, 0xffe6e7e7, 0xffe6e7e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe7e7e7, 0xffe7e7e7, 0xffe6e7e6, 0xffe6e6e6, 0xffe7e7e7, 
+	0xffe6e6e7, 0xffe7e7e7, 0xffe7e6e7, 0xffe6e6e7, 0xffe6e7e6, 0xffe6e6e6, 0xffe7e7e7, 0xffe7e6e6, 
+	0xffe7e6e7, 0xffe7e6e7, 0xffe6e7e6, 0xffe6e6e7, 0xffe7e7e6, 0xffe7e7e6, 0xffe6e6e7, 0xffe6e7e6, 
+	0xffe6e6e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe7e6e6, 0xffe6e6e7, 0xffe6e7e7, 0xffe6e7e7, 0xffe6e7e6, 
+	0xffe6e6e7, 0xffe6e6e7, 0xffe6e6e7, 0xffe6e6e7, 0xffe6e6e7, 0xffe7e6e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe7e7e7, 0xffe7e7e7, 0xffe7e7e7, 0xffe6e7e7, 0xffe6e6e7, 0xffe6e6e6, 0xffe6e7e7, 0xffe7e7e7, 
+	0xffe6e7e7, 0xffe7e6e6, 0xffe6e6e7, 0xffe6e7e7, 0xffe7e6e7, 0xffe7e7e7, 0xffe6e6e7, 0xffe6e6e6, 
+	0xffe7e7e6, 0xffe6e6e6, 0xffe6e7e7, 0xffe6e6e6, 0xffe6e7e6, 0xffe7e7e6, 0xffe7e7e6, 0xffe6e7e7, 
+	0xffe6e6e6, 0xffe6e7e6, 0xffe6e7e7, 0xffe7e7e6, 0xffe6e7e6, 0xffe6e6e7, 0xffe7e7e6, 0xffe6e6e6, 
+	0xffe7e7e6, 0xffe6e6e7, 0xffe6e7e7, 0xffe6e7e6, 0xffe7e6e7, 0xffe6e7e7, 0xffe6e6e7, 0xffe7e6e7, 
+	0xffe6e7e7, 0xffe6e7e6, 0xffe7e7e7, 0xffe7e7e7, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e6e7, 0xffe6e6e7, 
+	0xffe6e6e6, 0xffe7e6e7, 0xffe6e6e6, 0xffe7e6e7, 0xffe6e6e7, 0xffe7e7e7, 0xffe6e6e7, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe7e6e6, 0xffe7e7e6, 0xffe7e7e7, 0xffe6e6e6, 0xffe7e7e7, 0xffe6e7e7, 
+	0xffe6e7e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe7e7e6, 0xffe6e6e7, 0xffe7e6e6, 0xffe7e6e7, 0xffe6e6e7, 
+	0xffe6e7e7, 0xffe7e6e6, 0xffe6e7e6, 0xffe6e6e7, 0xffe7e7e7, 0xffe7e6e6, 0xffe6e7e6, 0xffe7e6e6, 
+	0xffe6e7e7, 0xffe6e7e7, 0xffe6e6e6, 0xffe7e7e6, 0xffe7e6e6, 0xffe7e6e6, 0xffe6e7e6, 0xffe7e6e6, 
+	0xffe7e7e6, 0xffe6e6e7, 0xffe6e6e6, 0xffe6e6e7, 0xffe6e7e7, 0xffe6e7e7, 0xffe6e6e7, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e7, 0xffe7e7e7, 0xffe6e6e7, 0xffe6e7e7, 0xffe6e6e7, 0xffe6e6e7, 0xffe6e7e7, 
+	0xffe7e6e6, 0xffe7e6e7, 0xffe6e6e6, 0xffe7e7e6, 0xffe7e6e6, 0xffe6e7e7, 0xffe6e7e7, 0xffe7e7e7, 
+	0xffe6e6e6, 0xffe7e7e7, 0xffe7e7e7, 0xffe6e7e6, 0xffe7e7e7, 0xffe6e6e7, 0xffe7e7e7, 0xffe6e6e7, 
+	0xffe6e7e6, 0xffe7e7e6, 0xffe7e6e7, 0xffe7e6e7, 0xffe7e6e6, 0xffe6e6e6, 0xffe7e7e6, 0xffe6e7e6, 
+	0xffe7e6e6, 0xffe7e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e6e7, 0xffe7e6e7, 0xffe6e7e7, 
+	0xffe7e7e6, 0xffe7e6e7, 0xffe7e7e7, 0xffe6e6e6, 0xffe6e6e7, 0xffe7e6e6, 0xffe6e6e7, 0xffe7e7e6, 
+	0xffe7e7e7, 0xffe6e7e6, 0xffe6e6e7, 0xffe7e6e6, 0xffe6e7e6, 0xffe6e7e7, 0xffe6e8e6, 0xffd6dbd6, 
+	0xffc5c2c5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797879, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffd9dbd9, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 
+	0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6e6e6, 0xffe6ebe6, 0xffd9dbd9, 
+	0xffbdbebd, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797879, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffd9dbd9, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 
+	0xffefefef, 0xffefefef, 0xffefefef, 0xffefefef, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffd9dbd9, 
+	0xffbdbebd, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff797879, 0xffb5b2b5, 0xffb5b2b5, 
+	0xffcbcacb, 0xffd9dbd9, 0xffe6ebe6, 0xffe6ebe6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 
+	0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6e8e6, 0xffe6ebe6, 0xffe6ebe6, 0xffd9dbd9, 0xffcbcacb, 
+	0xffbdbebd, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 0x00000400, 0xff797879, 0xffb5b2b5, 
+	0xffbdbabd, 0xffcbcacb, 0xffd9dbd9, 0xffd9dbd9, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 
+	0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd9dbd9, 0xffd9dbd9, 0xffcbcacb, 0xffbdbabd, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff848284, 
+	0xff9c9f9c, 0xff9c9f9c, 0xff9c9f9c, 0xff9c9f9c, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 
+	0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xffa2a5a2, 0xff9c9e9c, 0xff9c9e9c, 0xff9c9e9c, 0x00080408, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff848284, 0xffc5c2c5, 0xffc5c2c5, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffbdbebd, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff848284, 0xff848284, 0xffc5c2c5, 0xffe6ebe6, 
+	0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 
+	0xffeff3ef, 0xffeff3ef, 0xffeff3ef, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffe6ebe6, 0xffbdbebd, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffc5716b, 
+	0xffd07770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796b, 
+	0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 
+	0xffd6756b, 0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd6736b, 0xffd6736b, 0xffd6736b, 0xffce7163, 
+	0xffce7163, 0xffce7063, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6c63, 0xffce6b63, 0xffce6963, 0xffce695a, 0xffce685a, 0xffce675a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5645a, 0xffc5645d, 0xffc56258, 0xffc56258, 0xffc56258, 0xffc56052, 
+	0xffc56052, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd5142, 0xffbd5142, 0xffba5042, 0xffba5042, 0xffba4d42, 
+	0xffb84d42, 0xffb84d42, 0xffb84d42, 0xffb54c3f, 0xffb54a3c, 0xffb54a3c, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5463a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5433a, 0xffb54237, 
+	0xffb54237, 0xffb54131, 0xffb54131, 0xffad4131, 0xffad4131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 
+	0xffad3e31, 0xffad3e31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b2f, 
+	0xffad3b2f, 0xffad3b2f, 0xffad3a2c, 0xffad392f, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392f, 
+	0xffad392c, 0xffad392f, 0xffad392f, 0xffad3a2c, 0xffad3a2c, 0xffad3b2f, 0xffad3b2f, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 0xffad3e31, 0xffad3f31, 0xffad3f31, 
+	0xffad3f31, 0xffad3f31, 0xffad4131, 0xffb54237, 0xffb54237, 0xffb54237, 0xffb54237, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54a3c, 
+	0xffb54a3c, 0xffb54c3f, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb84e42, 0xffba5042, 0xffbd5045, 
+	0xffbd5142, 0xffbd5142, 0xffbd5142, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc35950, 0xffc35950, 0xffc35950, 0xffc55a52, 
+	0xffc55d52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc56052, 0xffc56052, 0xffc56152, 0xffc56258, 
+	0xffc56258, 0xffc56455, 0xffc56455, 0xffcb655a, 0xffcb655a, 0xffcb655a, 0xffcb655a, 0xffce675d, 
+	0xffce6860, 0xffce6860, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 0xffce6d63, 
+	0xffce6f63, 0xffce6f63, 0xffce7063, 0xffd07165, 0xffd07165, 0xffd37168, 0xffd37168, 0xffd6736b, 
+	0xffd6736b, 0xffd6746b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6776b, 
+	0xffd6786b, 0xffd6796b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd67973, 
+	0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd07770, 0xffc5716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffc5716b, 
+	0xffd07770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796b, 
+	0xffd6796b, 0xffd6796b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6746b, 0xffd6746b, 0xffd6746b, 0xffd6736b, 0xffd6716b, 0xffd6716b, 0xffd6716b, 0xffce7063, 
+	0xffce7063, 0xffce7063, 0xffce7063, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6c63, 0xffce6b63, 0xffce6b63, 0xffce695a, 0xffce685a, 0xffce685a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5645a, 0xffc56258, 0xffc56258, 0xffc56152, 0xffc56152, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55d52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd594a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffba5042, 0xffb54d42, 0xffb84d42, 
+	0xffb84d42, 0xffb84d42, 0xffb84d42, 0xffb54c3f, 0xffb54a3c, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5423a, 0xffb54237, 
+	0xffb54237, 0xffb54131, 0xffb54131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3a2c, 
+	0xffad3b2f, 0xffad3a2c, 0xffad3929, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffad3929, 0xffad3a2c, 0xffad3a2c, 0xffad3b2f, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 0xffad3f31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffb5413a, 0xffb5413a, 0xffb54237, 0xffb54237, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 
+	0xffb54a3c, 0xffb54c3f, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb84e42, 0xffbd4e47, 
+	0xffbd5045, 0xffbd5045, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55a52, 
+	0xffc55d52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56455, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffcb655a, 0xffce675d, 
+	0xffce6860, 0xffce6860, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6c63, 0xffce6d63, 
+	0xffce6f63, 0xffce6f63, 0xffce6f63, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd37168, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6736b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6776b, 
+	0xffd6776b, 0xffd6786b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67973, 
+	0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd07770, 0xffc5716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffc5716b, 
+	0xffd07770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796b, 
+	0xffd6796b, 0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd6736b, 0xffd6716b, 0xffd6716b, 0xffd6716b, 0xffce7063, 
+	0xffce7063, 0xffce7063, 0xffce7063, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce695a, 0xffce685a, 0xffce685a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5645a, 0xffc56258, 0xffc56258, 0xffc56258, 0xffc56152, 0xffc55e52, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55d52, 0xffc55c52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd594a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd514a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffba5042, 0xffb84e42, 0xffb84d42, 
+	0xffb84d42, 0xffb84d42, 0xffb84d42, 0xffb54a3c, 0xffb54a3c, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5433a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb54237, 
+	0xffb54237, 0xffb54131, 0xffb54131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3a2c, 
+	0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffb54237, 0xffb54237, 0xffb54237, 0xffb54237, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 0xffb54a3c, 
+	0xffb54a3c, 0xffb54c3f, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffbd4e47, 
+	0xffbd5045, 0xffbd5045, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55c52, 
+	0xffc55c52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56052, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56258, 0xffc8655a, 0xffcb655a, 0xffc8655a, 0xffcb655a, 0xffce675d, 
+	0xffce6860, 0xffce6963, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 0xffce6d63, 
+	0xffce6f63, 0xffce6f63, 0xffce7063, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd67973, 
+	0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd07770, 0xffc5716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffc5716b, 
+	0xffd07770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796e, 0xffd6796b, 
+	0xffd6796b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6736b, 0xffd6716b, 0xffd6736b, 0xffd6716b, 0xffd6716b, 0xffce7063, 
+	0xffce7063, 0xffce7063, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce695a, 0xffce695a, 0xffce675a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5625a, 0xffc56258, 0xffc56258, 0xffc56152, 0xffc56152, 0xffc55e52, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55d52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffba5042, 0xffb54d42, 0xffb84d42, 
+	0xffb84d42, 0xffb84d42, 0xffb84d42, 0xffb54c3f, 0xffb5493a, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5463a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5433a, 0xffb54237, 
+	0xffb54237, 0xffb54131, 0xffb54131, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3a2c, 
+	0xffad3a2c, 0xffad3a2c, 0xffad3929, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffad3929, 0xffad3a2c, 0xffad3a2c, 0xffad3b2f, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffb54237, 0xffb54237, 0xffb54237, 0xffb54237, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 
+	0xffb54a3c, 0xffb54c3f, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb84e42, 0xffbd4e47, 
+	0xffbd5045, 0xffbd5045, 0xffbd5142, 0xffbd514a, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc55c52, 
+	0xffc55d52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56152, 0xffc5615a, 
+	0xffc5615a, 0xffc56258, 0xffc56258, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffcb655a, 0xffce675d, 
+	0xffce6860, 0xffce6860, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 0xffce6f63, 
+	0xffce6f63, 0xffce6f63, 0xffce7063, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd37168, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6736b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67973, 
+	0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd67973, 0xffd07770, 0xffc5716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffce716b, 
+	0xffd37770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd67168, 0xffd67168, 0xffd67168, 0xffd67168, 0xffce7063, 
+	0xffce7063, 0xffce7063, 0xffce7063, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce695a, 0xffce685a, 0xffce675a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5645a, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56155, 0xffc55e52, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584a, 0xffbd584a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd514a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffb84e42, 0xffb84e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5423a, 0xffb24137, 
+	0xffaf4134, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3a2c, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 
+	0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffb54131, 0xffb54131, 0xffb54234, 0xffb54337, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 
+	0xffb54a3c, 0xffb54c3f, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffbd4e47, 
+	0xffbd5045, 0xffbd5045, 0xffbd5142, 0xffbd524a, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55c52, 
+	0xffc55d52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56152, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56258, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffcb655a, 0xffce685d, 
+	0xffce685d, 0xffce695a, 0xffce695a, 0xffce6b63, 0xffce6c63, 0xffce6c63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6736b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd6796e, 0xffd67970, 
+	0xffd67970, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd37770, 0xffce716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffce716b, 
+	0xffd37770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796b, 
+	0xffd6796b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd67168, 0xffd67168, 0xffd67168, 0xffd67165, 0xffce7063, 
+	0xffce7063, 0xffce7063, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6c63, 0xffce6b63, 0xffce6963, 0xffce695a, 0xffce695a, 0xffce675a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5625a, 0xffc56158, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc55e52, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd544a, 0xffbd524a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffb84e42, 0xffb54d42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb5493a, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5463a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5433a, 0xffb24137, 
+	0xffb24137, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3a2c, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3a2c, 0xffad3a2c, 0xffad3b2f, 
+	0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3e31, 0xffad3f31, 0xffad3f31, 0xffb54131, 0xffb54234, 0xffb54234, 0xffb54337, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 
+	0xffb54a3c, 0xffb54c3f, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffbd4e47, 
+	0xffbd5045, 0xffbd5045, 0xffbd5045, 0xffbd514a, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd554a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55c52, 
+	0xffc55c52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc5615a, 
+	0xffc5615a, 0xffc56258, 0xffc56258, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffcb655a, 0xffce685d, 
+	0xffce685d, 0xffce695a, 0xffce685d, 0xffce6b63, 0xffce6c63, 0xffce6c63, 0xffce6d63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd37168, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6786b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd6796e, 
+	0xffd67970, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd37770, 0xffce716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffce716b, 
+	0xffd37770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796b, 
+	0xffd6796b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6756b, 0xffd6746b, 0xffd67168, 0xffd67168, 0xffd67168, 0xffd67168, 0xffce7163, 
+	0xffce7063, 0xffce7063, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce695a, 0xffce695a, 0xffce675a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5645a, 0xffc56158, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc55e52, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffba5042, 0xffb84e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5433a, 0xffb24137, 
+	0xffaf4134, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3a2c, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3a2c, 0xffad3a2c, 0xffad3b2f, 
+	0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffb54131, 0xffb54234, 0xffb54234, 0xffb54337, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 
+	0xffb54a3c, 0xffb54a3c, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffbd5045, 
+	0xffbd5045, 0xffbd5045, 0xffbd5142, 0xffbd514a, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55a52, 
+	0xffc55d52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56152, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56455, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffcb655a, 0xffce685d, 
+	0xffce685d, 0xffce695a, 0xffce695a, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd37168, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6736b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6776b, 
+	0xffd6756b, 0xffd6786b, 0xffd6786b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd6796e, 
+	0xffd67970, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd37770, 0xffce716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e3c, 0xffa55d5a, 0xffa55d5a, 0xffce716b, 
+	0xffd37770, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd67970, 0xffd6796b, 
+	0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6786b, 0xffd6756b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 
+	0xffd6746b, 0xffd6746b, 0xffd6736b, 0xffd67168, 0xffd67168, 0xffd67168, 0xffd67168, 0xffce7063, 
+	0xffce7063, 0xffce7063, 0xffce7063, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 
+	0xffce6b63, 0xffce6b63, 0xffce6963, 0xffce695a, 0xffce685a, 0xffce675a, 0xffce675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5645a, 0xffc56158, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584a, 0xffbd584a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd514a, 0xffba5042, 0xffba5042, 0xffba5042, 0xffb54d42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5463a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5433a, 0xffb5433a, 0xffb5423a, 0xffb24137, 
+	0xffaf4134, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b2f, 0xffad3b2f, 0xffad3a2c, 0xffad3a2c, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad3929, 0xffad3929, 0xffad3a2c, 0xffad3a2c, 0xffad3b2f, 0xffad3b2f, 
+	0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffb54131, 0xffb54131, 0xffb54234, 0xffb54234, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5493a, 
+	0xffb54a3c, 0xffb54a3c, 0xffb54c3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffbd4e47, 
+	0xffbd5045, 0xffbd5045, 0xffbd5142, 0xffbd524a, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc55a52, 
+	0xffc55c52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56152, 0xffc56258, 
+	0xffc56258, 0xffc56258, 0xffc56455, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffcb655a, 0xffce685d, 
+	0xffce685d, 0xffce695a, 0xffce695a, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd07165, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6786b, 0xffd6776b, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd67970, 
+	0xffd67970, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd37770, 0xffce716b, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6786b, 
+	0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd37168, 0xffd37168, 0xffd37168, 0xffd07165, 0xffce7063, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 0xffce6960, 
+	0xffce6960, 0xffce6960, 0xffce695d, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5625a, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffc55952, 0xffbd594a, 
+	0xffbd584a, 0xffbd584a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd514a, 0xffbd514a, 0xffb55042, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54d42, 
+	0xffb54c42, 0xffb54c42, 0xffb54a42, 0xffb5493f, 0xffb5493c, 0xffb5493c, 0xffb5493c, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24137, 
+	0xffaf4134, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3a31, 0xffad3a31, 0xffad3931, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffaa3929, 0xffaa3929, 0xffa73929, 0xffaa3929, 0xffa73929, 
+	0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad3a31, 
+	0xffad3a31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad4131, 0xffaf4234, 0xffaf4234, 0xffb24337, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54a3c, 0xffb54a3c, 0xffb54a3c, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffba5045, 
+	0xffba5045, 0xffba5045, 0xffbd5142, 0xffbd514a, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd554a, 0xffbd564a, 0xffbd584a, 0xffbd594d, 0xffbd594d, 0xffbd594d, 0xffbd5950, 0xffc55a52, 
+	0xffc55a52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56052, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56258, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffcb685a, 
+	0xffcb685a, 0xffcb685a, 0xffce695a, 0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6f65, 0xffce6f65, 0xffce7068, 0xffce7068, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6786b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6786b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6736b, 0xffd37168, 0xffd37168, 0xffd37168, 0xffd37168, 0xffce7063, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 0xffce6b63, 0xffce6960, 
+	0xffce6960, 0xffce6960, 0xffce695d, 0xffcb685a, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5645a, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55a52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd584a, 0xffbd584a, 0xffbd584a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd514a, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54d42, 0xffb54d42, 
+	0xffb54c42, 0xffb54c42, 0xffb54c42, 0xffb5493f, 0xffb5493c, 0xffb5493c, 0xffb5493c, 0xffb5483a, 
+	0xffb5463a, 0xffb5463a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24137, 
+	0xffb24137, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3e31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3a31, 0xffad3a31, 0xffad3931, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffa73929, 
+	0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffad392c, 0xffad392c, 0xffad392f, 0xffad392c, 0xffad3a31, 
+	0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffaf4234, 0xffaf4234, 0xffaf4234, 0xffb24337, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54a3c, 0xffb54a3c, 0xffb54a3c, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb84e47, 
+	0xffba5045, 0xffba5045, 0xffbd5142, 0xffbd514a, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffbd594d, 0xffbd594d, 0xffbd594d, 0xffbd5950, 0xffc55a52, 
+	0xffc55a52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56152, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56455, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffcb685a, 
+	0xffcb685a, 0xffcb685a, 0xffce695a, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6f65, 0xffce6f65, 0xffce7068, 0xffce7068, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6736b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6776b, 
+	0xffd6776b, 0xffd6786b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd6796e, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6786b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd37168, 0xffd37168, 0xffd37168, 0xffd37168, 0xffce7063, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 0xffce6c63, 0xffce6960, 
+	0xffce6960, 0xffce6960, 0xffce695d, 0xffcb685a, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5645a, 0xffc5625a, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd584a, 0xffbd584a, 0xffbd564a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd544a, 0xffbd524a, 0xffbd514a, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54c42, 0xffb54a42, 0xffb5493f, 0xffb5493c, 0xffb5493c, 0xffb5493c, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24137, 
+	0xffaf4134, 0xffaf4134, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3b31, 0xffad3a31, 0xffad3a31, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffaa3929, 
+	0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffad392c, 0xffad392c, 0xffad392f, 0xffad392c, 0xffad3a31, 
+	0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3f31, 
+	0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad4131, 0xffaf4234, 0xffaf4234, 0xffb24337, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54942, 0xffb54a3c, 0xffb54a3c, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb84e47, 
+	0xffba5045, 0xffba5045, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffbd594d, 0xffbd594d, 0xffbd594d, 0xffbd5950, 0xffc55a52, 
+	0xffc55c52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56052, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56455, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc8675a, 
+	0xffcb685a, 0xffcb685a, 0xffce695a, 0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6f65, 0xffce7068, 0xffce7068, 0xffce7068, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6776b, 
+	0xffd6756b, 0xffd6786b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd67970, 0xffd6796e, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6786b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd37168, 0xffd37168, 0xffd37168, 0xffd37168, 0xffce7063, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6c63, 0xffce6c63, 0xffce6960, 
+	0xffce6960, 0xffce6960, 0xffce695d, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5645a, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55a52, 0xffc55a52, 0xffc55952, 0xffbd594a, 
+	0xffbd584a, 0xffbd584a, 0xffbd584a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd514a, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54e42, 0xffb54d42, 
+	0xffb54c42, 0xffb54c42, 0xffb54c42, 0xffb5493f, 0xffb5493f, 0xffb5493c, 0xffb5493c, 0xffb5483a, 
+	0xffb5483a, 0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24137, 
+	0xffb24137, 0xffb24137, 0xffaf4134, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3b31, 0xffad3a31, 0xffad3a31, 0xffad392f, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffaa3929, 
+	0xffaa3929, 0xffaa3929, 0xffaa3929, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392f, 0xffad3a31, 
+	0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 
+	0xffad3f31, 0xffad3f31, 0xffad4131, 0xffaf4234, 0xffaf4234, 0xffaf4234, 0xffaf4234, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54942, 0xffb54a3c, 0xffb54a3c, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffba5045, 
+	0xffba5045, 0xffba5045, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffbd594d, 0xffbd594d, 0xffbd594d, 0xffbd5950, 0xffc55a52, 
+	0xffc55c52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56152, 0xffc5615a, 
+	0xffc56258, 0xffc56258, 0xffc56258, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffcb685a, 
+	0xffcb685a, 0xffcb685a, 0xffce695a, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6f65, 0xffce7068, 0xffce7068, 0xffce7068, 0xffd6716b, 
+	0xffd6716b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6776b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd6796e, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6786b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6736b, 0xffd6736b, 0xffd6736b, 0xffd6716b, 0xffd6716b, 0xffce7063, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c5d, 
+	0xffce6b60, 0xffce6963, 0xffce6963, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc56158, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55d52, 0xffc55a52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584d, 0xffbd584d, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd544a, 0xffbd524a, 0xffbd514a, 0xffb55042, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffaf4234, 
+	0xffaf4234, 0xffaf4234, 0xffad4131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3a31, 0xffad3a2c, 
+	0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffad3931, 0xffad3931, 0xffad3a31, 0xffad3b31, 0xffad3a31, 
+	0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 0xffad3e37, 
+	0xffad3f34, 0xffad3f34, 0xffad3f34, 0xffad413a, 0xffad413a, 0xffaf423a, 0xffb2433a, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54a3f, 
+	0xffb54942, 0xffb54a3f, 0xffb54a3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffba5047, 
+	0xffba5047, 0xffbd5142, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd564a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55a52, 
+	0xffc55c52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc5615a, 
+	0xffc5625a, 0xffc5625a, 0xffc5625a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffce685d, 
+	0xffce685d, 0xffce685d, 0xffce685d, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce7068, 0xffce7068, 0xffce7068, 0xffce7163, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6736b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd67970, 0xffd6796e, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd6736b, 0xffd6716b, 0xffd6716b, 0xffd6716b, 0xffce7163, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6b60, 
+	0xffce6b60, 0xffce6b60, 0xffce6963, 0xffcb685a, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55c52, 0xffc55a52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd584d, 0xffbd584d, 0xffbd584d, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd544a, 0xffbd524a, 0xffbd514a, 0xffb55042, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5463a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24337, 
+	0xffaf4234, 0xffaf4234, 0xffad4131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3e31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3a2c, 
+	0xffad3a2c, 0xffad3a2c, 0xffad3a2c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 0xffad392c, 
+	0xffad392c, 0xffad392c, 0xffad392c, 0xffad3a31, 0xffad3a31, 0xffad3a31, 0xffad3b31, 0xffad3b31, 
+	0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3e31, 0xffad3e31, 0xffad3e31, 0xffad3f34, 
+	0xffad3f34, 0xffad3f34, 0xffad4131, 0xffaf423a, 0xffaf423a, 0xffaf423a, 0xffb2433a, 0xffb5453a, 
+	0xffb5453a, 0xffb5453a, 0xffb5463a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54a3f, 0xffb54a3f, 0xffb54a3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffba5047, 
+	0xffba5047, 0xffba5047, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55a52, 
+	0xffc55c52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc5615a, 
+	0xffc5625a, 0xffc5625a, 0xffc5645a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffce685d, 
+	0xffce685d, 0xffce685d, 0xffce695a, 0xffce6963, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce7068, 0xffce7068, 0xffce7068, 0xffce7163, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd6796e, 0xffd67970, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796e, 0xffd6786b, 
+	0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6786b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6736b, 0xffd6746b, 0xffd6716b, 0xffd6716b, 0xffd6716b, 0xffce7163, 
+	0xffce7063, 0xffce6f63, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6b60, 
+	0xffce6b60, 0xffce6b60, 0xffce6963, 0xffce695a, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc56158, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55d52, 0xffc55d52, 0xffc55c52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd584d, 0xffbd584d, 0xffbd584d, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd524a, 0xffbd524a, 0xffbd524a, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24337, 
+	0xffaf4234, 0xffaf4234, 0xffad4131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3b2f, 
+	0xffad3b2f, 0xffad3a2c, 0xffad3a2c, 0xffad392c, 0xffad392f, 0xffad392c, 0xffad392c, 0xffad392f, 
+	0xffad392c, 0xffad392f, 0xffad392f, 0xffad3a31, 0xffad3a31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 
+	0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3d31, 0xffad3e31, 0xffad3e31, 0xffad3e31, 0xffad3f34, 
+	0xffad3f34, 0xffad3f34, 0xffad4131, 0xffad413a, 0xffaf423a, 0xffaf423a, 0xffb2433a, 0xffb5453a, 
+	0xffb5453a, 0xffb5463a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54942, 0xffb54c3c, 0xffb54a3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffba5047, 
+	0xffba5047, 0xffba5047, 0xffba5047, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd544a, 0xffbd564a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffc0594d, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc55a52, 
+	0xffc55a52, 0xffc55d52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56152, 0xffc5625a, 
+	0xffc5625a, 0xffc5645a, 0xffc5645a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffcb655a, 0xffce685d, 
+	0xffce685d, 0xffce695a, 0xffce695a, 0xffce6b63, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce7068, 0xffce7068, 0xffce7068, 0xffce7068, 0xffd6716b, 
+	0xffd6736b, 0xffd6736b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd6796e, 0xffd6796e, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff6e3e37, 0xffa55d52, 0xffa55d52, 0xffc57163, 
+	0xffd0776e, 0xffd67973, 0xffd67973, 0xffd67970, 0xffd67970, 0xffd6796e, 0xffd6796e, 0xffd6796b, 
+	0xffd6786b, 0xffd6786b, 0xffd6786b, 0xffd6776b, 0xffd6776b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 
+	0xffd6756b, 0xffd6746b, 0xffd6746b, 0xffd6736b, 0xffd6736b, 0xffd6716b, 0xffd6716b, 0xffce7163, 
+	0xffce7063, 0xffce7063, 0xffce6f63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce6c5d, 
+	0xffce6b60, 0xffce6b60, 0xffce6963, 0xffcb685a, 0xffcb685a, 0xffcb685a, 0xffc8675a, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc56158, 0xffc56158, 0xffc56158, 0xffc56155, 0xffc56052, 
+	0xffc55e52, 0xffc55e52, 0xffc55e52, 0xffc55c52, 0xffc55c52, 0xffc55a52, 0xffc55a52, 0xffbd594a, 
+	0xffbd594a, 0xffbd584d, 0xffbd584d, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd554a, 0xffbd544a, 
+	0xffbd544a, 0xffbd524a, 0xffbd514a, 0xffb55142, 0xffb55042, 0xffb55042, 0xffb54e42, 0xffb54d42, 
+	0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54a3f, 0xffb54a3f, 0xffb54a3f, 0xffb5493a, 0xffb5483a, 
+	0xffb5483a, 0xffb5483a, 0xffb5463a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb5453a, 0xffb24337, 
+	0xffaf4234, 0xffaf4234, 0xffaf4234, 0xffad4131, 0xffad3f31, 0xffad3f31, 0xffad3f31, 0xffad3d31, 
+	0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 0xffad3a2c, 
+	0xffad3b2f, 0xffad3b2f, 0xffad3b2f, 0xffad392f, 0xffad392f, 0xffad392f, 0xffad392f, 0xffad392f, 
+	0xffad392f, 0xffad392f, 0xffad392f, 0xffad3a31, 0xffad3a31, 0xffad3b31, 0xffad3b31, 0xffad3b31, 
+	0xffad3b31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3d31, 0xffad3e31, 0xffad3f31, 0xffad3f34, 
+	0xffad3f34, 0xffad3f34, 0xffad4131, 0xffaf423a, 0xffb2433a, 0xffb2433a, 0xffb2433a, 0xffb5453a, 
+	0xffb5453a, 0xffb5463a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb5483a, 0xffb54942, 
+	0xffb54942, 0xffb54a3f, 0xffb54a3f, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffb54d42, 0xffba5047, 
+	0xffba5047, 0xffbd5142, 0xffbd5142, 0xffbd524a, 0xffbd544a, 0xffbd544a, 0xffbd554a, 0xffbd564a, 
+	0xffbd564a, 0xffbd564a, 0xffbd584a, 0xffc0594d, 0xffc0594d, 0xffc35950, 0xffc35950, 0xffc55a52, 
+	0xffc55c52, 0xffc55c52, 0xffc55d52, 0xffc55e52, 0xffc55e52, 0xffc56052, 0xffc56152, 0xffc5625a, 
+	0xffc5625a, 0xffc5625a, 0xffc5645a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffc8655a, 0xffce685d, 
+	0xffce685d, 0xffce685d, 0xffce695a, 0xffce6b63, 0xffce6b63, 0xffce6c63, 0xffce6c63, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffce7068, 0xffce7068, 0xffce7068, 0xffce7068, 0xffd6716b, 
+	0xffd6716b, 0xffd6746b, 0xffd6746b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6756b, 0xffd6776b, 
+	0xffd6776b, 0xffd6776b, 0xffd6786b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796b, 0xffd6796e, 
+	0xffd67970, 0xffd6796e, 0xffd67970, 0xffd67973, 0xffd67973, 0xffd0776e, 0xffc57163, 0xffb5655a, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00100400, 0xff473531, 0xff7e6563, 0xff7e6563, 0xffad655a, 
+	0xffad7b73, 0xffad7b73, 0xffad7b73, 0xffb57573, 0xffb57573, 0xffb57573, 0xffb57573, 0xffb5756b, 
+	0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5716b, 
+	0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffad716b, 
+	0xffad716b, 0xffad716b, 0xffad716b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 
+	0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffb5655a, 0xffb5655a, 0xffb5655a, 0xffb5655a, 0xffb5615a, 
+	0xffb5615a, 0xffb5615a, 0xffb5615a, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d52, 
+	0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffad5952, 0xffad5952, 0xffad5952, 0xffad5952, 0xffad594a, 
+	0xffad594a, 0xffad594a, 0xffad594a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad514a, 
+	0xffad514a, 0xffad514a, 0xffad514a, 0xffa55142, 0xffa55142, 0xffa55142, 0xffa55142, 0xffa54d42, 
+	0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54942, 
+	0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xff9c453a, 
+	0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c413a, 
+	0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 
+	0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c3d3a, 
+	0xff9c3d3a, 0xff9c3d3a, 0xff9c3d3a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 
+	0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c453a, 
+	0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xffa54942, 
+	0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54d42, 
+	0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffad514a, 
+	0xffad514a, 0xffad514a, 0xffad514a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad554a, 
+	0xffad554a, 0xffad554a, 0xffad554a, 0xffad5952, 0xffad5952, 0xffad5952, 0xffad5952, 0xffb55952, 
+	0xffb55952, 0xffb55952, 0xffb55952, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d5a, 
+	0xffb55d5a, 0xffb55d5a, 0xffb55d5a, 0xffb5615a, 0xffb5615a, 0xffb5615a, 0xffb5615a, 0xffbd655a, 
+	0xffbd655a, 0xffbd655a, 0xffbd655a, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 
+	0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad716b, 0xffad716b, 0xffad716b, 0xffad716b, 0xffb5716b, 
+	0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5756b, 
+	0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb57573, 
+	0xffb57573, 0xffb57573, 0xffb57573, 0xffad7b73, 0xffad7b73, 0xffad7b73, 0xffad655a, 0xff7e6463, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00100400, 0xff473531, 0xff7e6563, 0xff7e6563, 0xffad655a, 
+	0xffad7b73, 0xffad7b73, 0xffad7b73, 0xffb57573, 0xffb57573, 0xffb57573, 0xffb57573, 0xffb5756b, 
+	0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5716b, 
+	0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffad716b, 
+	0xffad716b, 0xffad716b, 0xffad716b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 
+	0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffb5655a, 0xffb5655a, 0xffb5655a, 0xffb5655a, 0xffb5615a, 
+	0xffb5615a, 0xffb5615a, 0xffb5615a, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d52, 
+	0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffad5952, 0xffad5952, 0xffad5952, 0xffad5952, 0xffad594a, 
+	0xffad594a, 0xffad594a, 0xffad594a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad514a, 
+	0xffad514a, 0xffad514a, 0xffad514a, 0xffa55142, 0xffa55142, 0xffa55142, 0xffa55142, 0xffa54d42, 
+	0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54942, 
+	0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xff9c453a, 
+	0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c413a, 
+	0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 
+	0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c3d3a, 
+	0xff9c3d3a, 0xff9c3d3a, 0xff9c3d3a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 
+	0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c413a, 0xff9c453a, 
+	0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xff9c453a, 0xffa54942, 
+	0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54942, 0xffa54d42, 
+	0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffa54d42, 0xffad514a, 
+	0xffad514a, 0xffad514a, 0xffad514a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad554a, 0xffad554a, 
+	0xffad554a, 0xffad554a, 0xffad554a, 0xffad5952, 0xffad5952, 0xffad5952, 0xffad5952, 0xffb55952, 
+	0xffb55952, 0xffb55952, 0xffb55952, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d52, 0xffb55d5a, 
+	0xffb55d5a, 0xffb55d5a, 0xffb55d5a, 0xffb5615a, 0xffb5615a, 0xffb5615a, 0xffb5615a, 0xffbd655a, 
+	0xffbd655a, 0xffbd655a, 0xffbd655a, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 
+	0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad716b, 0xffad716b, 0xffad716b, 0xffad716b, 0xffb5716b, 
+	0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5756b, 
+	0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb57573, 
+	0xffb57573, 0xffb57573, 0xffb57573, 0xffad7b73, 0xffad7b73, 0xffad7b73, 0xffad655a, 0xff7e6463, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00100400, 0xff7e6563, 0xff7e6563, 0xff7e6563, 0xffad655a, 
+	0xffad655a, 0xffad7b73, 0xffad7b73, 0xffb57573, 0xffb57573, 0xffb57573, 0xffb57573, 0xffb5756b, 
+	0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5716b, 
+	0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffad716b, 
+	0xffad716b, 0xffad716b, 0xffad716b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 
+	0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad7c76, 0xffad7c76, 0xffad7c76, 0xffad7c76, 0xffad7976, 
+	0xffad7976, 0xffad7976, 0xffad7976, 0xffad7770, 0xffad7770, 0xffad7770, 0xffad7770, 0xffad7870, 
+	0xffad7870, 0xffad7870, 0xffad7870, 0xffa77570, 0xffa77570, 0xffa77570, 0xffa77570, 0xffa7756b, 
+	0xffa7756b, 0xffa7756b, 0xffa7756b, 0xffa7736b, 0xffa7736b, 0xffa7736b, 0xffa7736b, 0xffa7706b, 
+	0xffa7706b, 0xffa7706b, 0xffa7706b, 0xffa27065, 0xffa27065, 0xffa27065, 0xffa27065, 0xffa26d65, 
+	0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26b68, 
+	0xffa26b68, 0xffa26b68, 0xffa26b68, 0xffa26c68, 0xffa26c68, 0xffa26c68, 0xffa26c68, 0xff9c6963, 
+	0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6763, 
+	0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 
+	0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6463, 
+	0xff9c6463, 0xff9c6463, 0xff9c6463, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 
+	0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6763, 0xff9c6963, 
+	0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xffa26c68, 
+	0xffa26c68, 0xffa26c68, 0xffa26c68, 0xffa26b68, 0xffa26b68, 0xffa26b68, 0xffa26b68, 0xffa26d65, 
+	0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa26d65, 0xffa7706b, 
+	0xffa7706b, 0xffa7706b, 0xffa7706b, 0xffa7736b, 0xffa7736b, 0xffa7736b, 0xffa7736b, 0xffa7736b, 
+	0xffa7736b, 0xffa7736b, 0xffa7736b, 0xffa77570, 0xffa77570, 0xffa77570, 0xffa77570, 0xffad7570, 
+	0xffad7570, 0xffad7570, 0xffad7570, 0xffad7870, 0xffad7870, 0xffad7870, 0xffad7870, 0xffad7776, 
+	0xffad7776, 0xffad7776, 0xffad7776, 0xffad7976, 0xffad7976, 0xffad7976, 0xffad7976, 0xffaf7c76, 
+	0xffaf7c76, 0xffaf7c76, 0xffaf7c76, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 
+	0xffad6d6b, 0xffad6d6b, 0xffad6d6b, 0xffad716b, 0xffad716b, 0xffad716b, 0xffad716b, 0xffb5716b, 
+	0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5716b, 0xffb5756b, 
+	0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb5756b, 0xffb57573, 
+	0xffb57573, 0xffb57573, 0xffb57573, 0xffad7b73, 0xffad7b73, 0xffad655a, 0xffad655a, 0xff7e6463, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00100400, 0xff7e6563, 0xffb59694, 0xffb59694, 0xffada6a5, 
+	0xffada6a5, 0xffada6a5, 0xffada6a5, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 
+	0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caeb5, 
+	0xff9caeb5, 0xff9caeb5, 0xff9caeb5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 
+	0xff9cb2b5, 0xff9cb2b5, 0xff9cb2b5, 0xff9caeb5, 0xff9caeb5, 0xff9caeb5, 0xff9caeb5, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 
+	0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caaad, 
+	0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff9caaad, 0xff94aaad, 
+	0xff94aaad, 0xff94aaad, 0xff94aaad, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 0xffadaead, 
+	0xffadaead, 0xffadaead, 0xffadaead, 0xffada6a5, 0xffada6a5, 0xffada6a5, 0xffada6a5, 0xffbd9694, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff737473, 0xffadaead, 0xffadaead, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffb5b6b5, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 
+	0x11000000, 0x22000000, 0x22000000, 0x33000000, 0x44000000, 0x55000000, 0x44000000, 0x33000000, 
+	0x33000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x22000000, 0x55000000, 0x88000000, 0xbb000000, 
+	0xdd0e0403, 0xdd0e0403, 0xee100503, 0xee100503, 0xff100503, 0xff100503, 0xff100503, 0xee100503, 
+	0xee100503, 0xee100503, 0xdd0e0403, 0xaa000000, 0x77000000, 0x44000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff737573, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 
+	0xffa5a6a5, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 
+	0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffadaaad, 0xffa5a6a5, 0xffa5a6a5, 0xffa5a6a5, 
+	0xffa5a6a5, 0xff737173, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x33000000, 0x880e0403, 0xcc0e0403, 0xee0e0403, 0xff1b0805, 0xff1b0805, 0xff1b0805, 
+	0xff1b0805, 0xff1b0805, 0xff210b05, 0xff210b05, 0xff210b05, 0xff210b05, 0xff210b05, 0xff210b05, 
+	0xff210b05, 0xff210b05, 0xff1b0805, 0xff1b0805, 0xff1b0805, 0xee1b0805, 0xdd0b0403, 0x880b0403, 
+	0x44000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffadaaad, 0xffdbbeb8, 0xffe9dfdb, 0xffe9dfdb, 
+	0xffe9dfdb, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 
+	0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6dbd6, 0xffe6dbd6, 0xffe6dbd6, 
+	0xffe6dbd6, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x11080000, 
+	0x11080000, 0x22210400, 0x22210400, 0x33210400, 0x33210400, 0x33210400, 0x33210400, 0x33210400, 
+	0x22210400, 0x11100400, 0x11100400, 0x00100400, 0x00100400, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22000000, 0x66080303, 
+	0xaa100505, 0xee190808, 0xff1b0805, 0xff1b0805, 0xff290c08, 0xff290c08, 0xff290c08, 0xff290c08, 
+	0xff290c08, 0xff290c08, 0xff311008, 0xff311008, 0xff311008, 0xff311008, 0xff311008, 0xff311008, 
+	0xff210b05, 0xff311008, 0xff290c08, 0xff290c08, 0xff290c08, 0xff290c08, 0xff210c08, 0xff210c08, 
+	0xee160805, 0xaa0b0403, 0x55000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11030303, 0x22030303, 0x22080808, 0x330b0b0b, 0x44101010, 0x33101010, 0x330b0b0b, 0x33080808, 
+	0x22050505, 0x11030303, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffadaaad, 0xffe9dfdb, 0xfff7ffff, 0xffce9e94, 
+	0xffce9e94, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffce9e94, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffce968c, 0xffce968c, 0xffce968c, 0xffce968c, 0xffc59284, 0xffc59284, 0xfff7ffff, 
+	0xffe6dbd6, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x11080000, 0x22080000, 
+	0x33080000, 0x66210400, 0x99210400, 0xaa210400, 0xbb210400, 0xbb210400, 0xbb210400, 0xaa210400, 
+	0x66210400, 0x33100400, 0x22100400, 0x11100400, 0x00100400, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x66190705, 0xcc210808, 0xff340f0e, 
+	0xff340f0e, 0xff340f0e, 0xff3a1010, 0xff3a1010, 0xff3a1010, 0xff3a1010, 0xff3a1010, 0xff4a1613, 
+	0xff4a1613, 0xff3a1010, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff3a1010, 0xff471613, 
+	0xff3a1010, 0xff3a1010, 0xff311010, 0xff311010, 0xff311010, 0xff311010, 0xff37100b, 0xff37100b, 
+	0xff290c08, 0xff290c08, 0xee160705, 0xaa160705, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00080808, 0x00080808, 0x11080808, 0x55503a37, 0x886b494a, 
+	0xbb8c6160, 0xddad7976, 0xeead7976, 0xffa57479, 0xffa57479, 0xeea57479, 0xdd9c6163, 0xcc794542, 
+	0x99794542, 0x663c2421, 0x22000400, 0x11080400, 0x11080400, 0x00080400, 0x00080400, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffadaaad, 0xffe9dfdb, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffce9e94, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffce968c, 0xffce968c, 0xffce968c, 0xffce968c, 0xffc59284, 0xffc59284, 0xffc59284, 
+	0xffe6dbd6, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x11080000, 0x22080000, 0x44080000, 
+	0xaa080000, 0xdd55241b, 0xee894537, 0xee894537, 0xee894537, 0xee9f584d, 0xee9f584d, 0xee9f584d, 
+	0xdd9f584d, 0xbb100400, 0x55100400, 0x22100400, 0x11100400, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x22000000, 0x99190705, 0xee310d0b, 0xff340f0e, 0xff340f0e, 
+	0xff340f0e, 0xff471613, 0xff471613, 0xff471613, 0xff471613, 0xff471613, 0xff4a1613, 0xff5a1b16, 
+	0xff4a1613, 0xff5a1b16, 0xff501813, 0xff501813, 0xff501813, 0xff501813, 0xff551b16, 0xff471613, 
+	0xff471613, 0xff471613, 0xff421613, 0xff421613, 0xff421613, 0xff421613, 0xff37100b, 0xff37100b, 
+	0xff37100b, 0xff37100b, 0xff2c0d0b, 0xff2c0d0b, 0xcc160705, 0x44000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x33080808, 0x88503a37, 0xcc976c65, 0xffde9e94, 0xffce928c, 
+	0xffce928c, 0xffce928c, 0xffad7976, 0xffad878f, 0xffad878f, 0xffad878f, 0xffa57479, 0xffb56563, 
+	0xffb56563, 0xffb56563, 0xdd794542, 0x994a2019, 0x44080400, 0x11080400, 0x11080400, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffadaaad, 0xffe9dfdb, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffce9e94, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffce968c, 0xffce968c, 0xffce968c, 0xffce968c, 0xffc59284, 0xffc59284, 0xffc59284, 
+	0xffe6dbd6, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x11080000, 0x33080000, 0xaa080000, 
+	0xee9c3d31, 0xee894537, 0xeebd6552, 0xeebd6552, 0xeebd6552, 0xee9f584d, 0xee9f584d, 0xee9f584d, 
+	0xeede8273, 0xeed6c2bd, 0xbb100400, 0x33100400, 0x11100400, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x66190705, 0xdd310d0b, 0xff4a1410, 0xff4a1410, 0xff471613, 0xff471613, 
+	0xff471613, 0xff471613, 0xff551b16, 0xff551b16, 0xff551b16, 0xff551b16, 0xff5a1b16, 0xff5a1b16, 
+	0xff6b2019, 0xff5a1b16, 0xff5d1c16, 0xff5d1c16, 0xff5d1c16, 0xff5d1c16, 0xff551b16, 0xff551b16, 
+	0xff551b16, 0xff551b16, 0xff521b16, 0xff421613, 0xff421613, 0xff421613, 0xff45140e, 0xff45140e, 
+	0xff45140e, 0xff45140e, 0xff421410, 0xff421410, 0xff2c0d0b, 0xdd160705, 0x77000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x22000000, 0x884d3634, 0xdd976c65, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffce928c, 
+	0xffce928c, 0xffad7976, 0xffad7976, 0xffad878f, 0xffb59aa5, 0xffad878f, 0xffad878f, 0xffb56563, 
+	0xffb56563, 0xffb56563, 0xffb56563, 0xffce594a, 0xdd8c3d31, 0x994a2019, 0x44080400, 0x11000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00080408, 0xff979697, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9e94, 0xffce9e94, 0xffce9a8f, 0xffce9a8f, 0xffce9a94, 0xffce9a94, 0xffce9a94, 
+	0xffce9a94, 0xffce968c, 0xffc88f84, 0xffc88f84, 0xffc88f84, 0xffbd8273, 0xffbd8273, 0xffbd8273, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x11000000, 0x22210400, 0x66210400, 0xdd210400, 
+	0xee945a52, 0xeea5615a, 0xeeaa6d68, 0xeeaa6d68, 0xeeaa6d68, 0xeead6563, 0xeead6563, 0xeeaf6c68, 
+	0xeeb57973, 0xeea7938f, 0xeeefdbd6, 0x77190400, 0x22190400, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x77190808, 0xee4a1410, 0xff4a1410, 0xff4a1410, 0xff4a1410, 0xff5a1c19, 0xff5a1c19, 
+	0xff5a1c19, 0xff5a1c19, 0xff632019, 0xff632019, 0xff632019, 0xff632019, 0xff6b2019, 0xff6b2019, 
+	0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff632019, 0xff632019, 
+	0xff632019, 0xff632019, 0xff632019, 0xff521b16, 0xff521b16, 0xff521b16, 0xff521810, 0xff521810, 
+	0xff521810, 0xff45140e, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xee290c08, 0x66000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x554d3634, 0xbb9a6c68, 0xffe6a29c, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffce928c, 
+	0xffce928c, 0xffad7976, 0xffad7976, 0xffad878f, 0xffb59aa5, 0xffb59aa5, 0xffad878f, 0xffb56563, 
+	0xffb56563, 0xffb56563, 0xffb56563, 0xffce594a, 0xffce594a, 0xffce594a, 0xcc8c3d31, 0x77311010, 
+	0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00080408, 0xff979697, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9a8f, 0xffce9a8f, 0xffce9a8f, 0xffce9689, 0xffce9a94, 0xffdebab8, 0xffdebab8, 
+	0xffce9a94, 0xffc88f84, 0xffc88f84, 0xffc88f84, 0xffc3887b, 0xffbd8273, 0xffbd8273, 0xffbd8273, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x11000000, 0x33210400, 0x99210400, 0xee945a52, 
+	0xee945a52, 0xeeaa6d68, 0xeeaf7976, 0xeeaf7976, 0xeeaf7976, 0xeeaf6c68, 0xeeaf6c68, 0xeeaf6c68, 
+	0xeeb2736e, 0xeea7938f, 0xeeefdbd6, 0xaa190400, 0x33190400, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00080000, 
+	0x662c0c08, 0xee501810, 0xff521819, 0xff521819, 0xff521819, 0xff631e1b, 0xff631c19, 0xff631c19, 
+	0xff6e221b, 0xff6e221b, 0xff6b2019, 0xff76241b, 0xff76241b, 0xff76241b, 0xff732421, 0xff732421, 
+	0xff732421, 0xff732421, 0xff732421, 0xff732421, 0xff732421, 0xff732421, 0xff76241b, 0xff6b2019, 
+	0xff6b2019, 0xff6b2019, 0xff65201b, 0xff65201b, 0xff65201b, 0xff5a1c19, 0xff581c16, 0xff581c16, 
+	0xff581c16, 0xff4a1810, 0xff4d1813, 0xff4d1813, 0xff4d1813, 0xff421410, 0xff34120b, 0xdd1e0b05, 
+	0x55080400, 0x11080400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x775a413a, 
+	0xddb27f76, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffdb9a91, 0xffd68e8c, 
+	0xffc07f7e, 0xffaa7070, 0xffaa7070, 0xffaa8e97, 0xffb8a2aa, 0xffb8a2aa, 0xffaa8e97, 0xff94696b, 
+	0xff9c5e5d, 0xff9c5e5d, 0xffa55450, 0xffbd5142, 0xffbd5142, 0xffbd493c, 0xffbd493c, 0xeeb53929, 
+	0x9942160e, 0x33080400, 0x11080400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00080408, 0xff979697, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9689, 0xffce9689, 0xffce9689, 0xffce9284, 0xffce9a94, 0xfffffbff, 0xfffffbff, 
+	0xffce9a94, 0xffc88f84, 0xffc3887b, 0xffc3887b, 0xffc3887b, 0xffbd8273, 0xffbd8273, 0xffbd8273, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x11000000, 0x44210400, 0xbb210400, 0xee945a52, 
+	0xeece867b, 0xeeaf7976, 0xeeaf7976, 0xeeaf7976, 0xeeaf7976, 0xeeb2736e, 0xeeb2736e, 0xeeaf6c68, 
+	0xeeb2736e, 0xeea7938f, 0xeeefdbd6, 0xcc604c47, 0x44190400, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x55080000, 
+	0xee501810, 0xff501810, 0xff631e1b, 0xff631e1b, 0xff631e1b, 0xff73231e, 0xff6e221b, 0xff6e221b, 
+	0xff79271e, 0xff6e221b, 0xff76241b, 0xff76241b, 0xff76241b, 0xff81281e, 0xff792721, 0xff792721, 
+	0xff792721, 0xff792721, 0xff7b2721, 0xff7b2721, 0xff7b2721, 0xff7b2721, 0xff76241b, 0xff76241b, 
+	0xff76241b, 0xff76241b, 0xff70241e, 0xff70241e, 0xff70241e, 0xff65201b, 0xff65201b, 0xff65201b, 
+	0xff581c16, 0xff581c16, 0xff4d1813, 0xff4d1813, 0xff4d1813, 0xff4d1813, 0xff4a1810, 0xff34120b, 
+	0xcc1e0b05, 0x44080400, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7745312f, 0xeede9e94, 
+	0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffdb9a91, 0xffd9968f, 0xffd68e8c, 
+	0xffc07f7e, 0xffaa7070, 0xffaa7070, 0xffaa8e97, 0xffb8a2aa, 0xffb8a2aa, 0xffaa8e97, 0xff9c5e5d, 
+	0xffa55450, 0xffa55450, 0xffa55450, 0xffbd5142, 0xffbd493c, 0xffbd493c, 0xffbd4137, 0xffb53929, 
+	0xeeb53929, 0x9942160e, 0x33080400, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00080408, 0xff979697, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9689, 0xffce9284, 0xffce9284, 0xffce9284, 0xffdebab8, 0xfffffbff, 0xfffffbff, 
+	0xffefdbdb, 0xffc3887b, 0xffc3887b, 0xffc3887b, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffbd8273, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x55210400, 0xcc210400, 0xeece867b, 
+	0xeece867b, 0xeeb58684, 0xeeb58684, 0xeeb58684, 0xeeaf7976, 0xeeb57973, 0xeeb57973, 0xeeb2736e, 
+	0xeeb57973, 0xeea7938f, 0xeea7938f, 0xdda7938f, 0x66190400, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33080000, 0xdd501810, 
+	0xff732419, 0xff732419, 0xff73231e, 0xff73231e, 0xff73231e, 0xff73231e, 0xff79271e, 0xff79271e, 
+	0xff79271e, 0xff79271e, 0xff81281e, 0xff81281e, 0xff81281e, 0xff81281e, 0xff7e2a21, 0xff7e2a21, 
+	0xff7e2a21, 0xff7e2a21, 0xff842a21, 0xff842a21, 0xff842a21, 0xff842a21, 0xff8c2d21, 0xff81281e, 
+	0xff81281e, 0xff81281e, 0xff7b2821, 0xff70241e, 0xff70241e, 0xff70241e, 0xff732421, 0xff65201b, 
+	0xff65201b, 0xff581c16, 0xff581c16, 0xff581c16, 0xff4d1813, 0xff4d1813, 0xff4a1810, 0xff4a1810, 
+	0xff34120b, 0x99080400, 0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7745312f, 0xeece928c, 0xffde9e94, 
+	0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffdb9a91, 0xffdb9a91, 0xffd9968f, 0xffd68e8c, 
+	0xffc07f7e, 0xffaa7070, 0xff946163, 0xff9c7984, 0xffc5b6bd, 0xffc5b6bd, 0xff9c7984, 0xffa55450, 
+	0xffa55450, 0xffa55450, 0xffad4942, 0xffbd493c, 0xffbd493c, 0xffbd4137, 0xffbd3931, 0xffb53929, 
+	0xffb53929, 0xeeb53929, 0x9942160e, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffce9684, 0xffce9684, 
+	0xffce9684, 0xffce9284, 0xffce9284, 0xffce9284, 0xffce9284, 0xfffffbf7, 0xffffffff, 0xffffffff, 
+	0xfffffbf7, 0xffd3aaa2, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffad796b, 0xffad796b, 0xffad796b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x66190000, 0xdd523331, 0xeec59a94, 
+	0xeec59a94, 0xeeb88e84, 0xeeb88e84, 0xeeb5867b, 0xeeb5867b, 0xeeaf7c73, 0xeead756b, 0xeead756b, 
+	0xeead756b, 0xee947168, 0xeecea69c, 0xeecea69c, 0x77210800, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0xaa2c0c08, 0xff732419, 
+	0xff732419, 0xff732419, 0xff73231e, 0xff73231e, 0xff842821, 0xff842821, 0xff79271e, 0xff842d21, 
+	0xff842d21, 0xff842d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff842d21, 0xff842d21, 
+	0xff842d21, 0xff842d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 
+	0xff8c2d21, 0xff81281e, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff732421, 0xff732421, 
+	0xff732421, 0xff65201b, 0xff632019, 0xff581c16, 0xff581c16, 0xff581c16, 0xff4a1810, 0xff4a1810, 
+	0xff34120b, 0xee1e0b05, 0x66000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5545312f, 0xddce928c, 0xffce928c, 0xffde9e94, 
+	0xffde9e94, 0xffde9e94, 0xffde9e94, 0xffdb9a91, 0xffdb9a91, 0xffd9968f, 0xffd6928c, 0xffd68e8c, 
+	0xffc07f7e, 0xffaa7070, 0xff946163, 0xff9c7984, 0xffc5b6bd, 0xffc5b6bd, 0xff9c7984, 0xffa55450, 
+	0xffad4942, 0xffad4942, 0xffad4942, 0xffbd493c, 0xffbd4137, 0xffbd3931, 0xffbd3931, 0xffb53929, 
+	0xffb53929, 0xffb53929, 0xee7b271b, 0x88290c08, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffce9684, 0xffce9684, 
+	0xffce9684, 0xffce9284, 0xffce9284, 0xffce9284, 0xffefdbd6, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffe9d2d0, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffad796b, 0xffad796b, 0xffad796b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x77190000, 0xdd523331, 0xeec59a94, 
+	0xeec59a94, 0xeeba968c, 0xeeb88e84, 0xeeb88e84, 0xeeb5867b, 0xeeb2837b, 0xeeaf7c73, 0xeead756b, 
+	0xeead756b, 0xee947168, 0xeecea69c, 0xeecea69c, 0x77210800, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x44000000, 0xee6b2021, 0xff762421, 
+	0xff762421, 0xff762421, 0xff7b2421, 0xff862824, 0xff862824, 0xff912d26, 0xff943121, 0xff943121, 
+	0xff943121, 0xff943121, 0xff8c3129, 0xff8c3129, 0xff8c3129, 0xff8c3129, 0xff8c3529, 0xff8c3529, 
+	0xff8c3529, 0xff8c3529, 0xff8c3529, 0xff8c3529, 0xff8c3529, 0xff8c3529, 0xff8c3129, 0xff8c3129, 
+	0xff8c3129, 0xff8c3129, 0xff7b2d21, 0xff7b2d21, 0xff7b2d21, 0xff7b2d21, 0xff7b2d29, 0xff7b2d29, 
+	0xff7b2d29, 0xff7b2d29, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff581c16, 0xff4d1813, 
+	0xff4d1813, 0xff421410, 0xaa000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x22191419, 0xbb976865, 0xffd6928c, 0xffd6928c, 0xffde9694, 
+	0xffde9694, 0xffde9694, 0xffde9694, 0xffde9694, 0xffde9694, 0xffdb908c, 0xffdb908c, 0xffd68a7b, 
+	0xffbd776b, 0xffa5645a, 0xff8c514a, 0xff9a7484, 0xffd6cad6, 0xffd6cad6, 0xff9a7484, 0xffad4942, 
+	0xffa2423a, 0xffad4942, 0xffad4942, 0xffc54131, 0xffbd3d2f, 0xffb5392c, 0xffb5392c, 0xffaa352c, 
+	0xffaa352c, 0xffaa352c, 0xff9f3126, 0xdd652216, 0x55080400, 0x22080400, 0x11080400, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffce9684, 0xffce9684, 
+	0xffce9684, 0xffce9284, 0xffce9284, 0xffdeb6ad, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xfffffbff, 0xffd3aaa2, 0xffbd8273, 0xffbd8273, 0xffad796b, 0xffad796b, 0xffad796b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x77190000, 0xee8c6763, 0xeec59a94, 
+	0xeec59a94, 0xeebd9e94, 0xeeba968c, 0xeeb88e84, 0xeeb88e84, 0xeeb2837b, 0xeeb2837b, 0xeeaf7c73, 
+	0xeead756b, 0xee947168, 0xeecea69c, 0xeecea69c, 0x88210800, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0xaa31100e, 0xff812821, 0xff812821, 
+	0xff762421, 0xff812821, 0xff862824, 0xff862824, 0xff912d26, 0xff912d26, 0xff943121, 0xff9a746e, 
+	0xff9c9694, 0xff9c9694, 0xff978481, 0xff978481, 0xff978481, 0xff978481, 0xffa29391, 0xffa29391, 
+	0xffa29391, 0xffa29391, 0xffa29391, 0xffa29391, 0xffa29391, 0xffa29391, 0xffa29291, 0xffa29291, 
+	0xffa29291, 0xffa29291, 0xffb2aeaa, 0xffb2aeaa, 0xffb2aeaa, 0xffb2aeaa, 0xffceb6b2, 0xfff7fbf7, 
+	0xfff7fbf7, 0xfff7fbf7, 0xffbd9694, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff581c16, 0xff581c16, 
+	0xff4d1813, 0xff4d1813, 0xee2c0d0b, 0x66000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x88583e3f, 0xffd6928c, 0xffd6928c, 0xffd6928c, 0xffdb928f, 
+	0xffdb928f, 0xffdb928f, 0xffdb928f, 0xffdb908c, 0xffdb908c, 0xffdb908c, 0xffdb908c, 0xffd68a7b, 
+	0xffbd776b, 0xffa5645a, 0xff8c514a, 0xff9a7484, 0xffd6cad6, 0xffd6cad6, 0xff9a7484, 0xff973b31, 
+	0xffa2423a, 0xffa2423a, 0xffa2423a, 0xffbd3d2f, 0xffb5392c, 0xffb5392c, 0xffad3529, 0xffaa352c, 
+	0xffaa352c, 0xff9f3126, 0xff9f3126, 0xff943121, 0xaa37130b, 0x44080400, 0x11080400, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffce9684, 0xffce9684, 
+	0xffce9684, 0xffce9284, 0xffce9284, 0xffefdbd6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xfffffbff, 0xfffffbff, 0xffbd8273, 0xffbd8273, 0xffad796b, 0xffad796b, 0xffad796b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x88190000, 0xee8c6763, 0xeec59a94, 
+	0xeec59a94, 0xeebd9e94, 0xeeba968c, 0xeeba968c, 0xeeb88e84, 0xeeb58a84, 0xeeb2837b, 0xeeaf7c73, 
+	0xeead756b, 0xee947168, 0xeecea69c, 0xeecea69c, 0x99210800, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x33000000, 0xee63201b, 0xff812821, 0xff812821, 
+	0xff812821, 0xff8c2d21, 0xff912d26, 0xff912d26, 0xff912d26, 0xff912d26, 0xff943121, 0xff943121, 
+	0xff9c9694, 0xff9c9694, 0xff978481, 0xff978481, 0xff978481, 0xff9caead, 0xffa29391, 0xffa29391, 
+	0xffa29391, 0xffa29391, 0xffa29391, 0xffa29391, 0xffa29391, 0xffa29391, 0xffa29291, 0xffa29291, 
+	0xffa29291, 0xffa29291, 0xffb2aeaa, 0xffb2aeaa, 0xffb2aeaa, 0xffb2aeaa, 0xfff7fbf7, 0xfff7fbf7, 
+	0xfff7fbf7, 0xfff7fbf7, 0xff864842, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff581c16, 0xff581c16, 
+	0xff581c16, 0xff4d1813, 0xff421410, 0x99000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x33211413, 0xdd976865, 0xffd6928c, 0xffd6928c, 0xffd6928c, 0xffd98e89, 
+	0xffd98e89, 0xffd98e89, 0xffd98e89, 0xffdb908c, 0xffdb908c, 0xffd98b84, 0xffd98b84, 0xffd68a7b, 
+	0xffbd776b, 0xffa5645a, 0xff8c514a, 0xff7b495a, 0xffd6cad6, 0xffd6cad6, 0xff7b495a, 0xff8c3529, 
+	0xff973b31, 0xff973b31, 0xff973b31, 0xffb5392c, 0xffb5392c, 0xffad3529, 0xffad3529, 0xffaa352c, 
+	0xff9f3126, 0xff9f3126, 0xff9f3126, 0xff943121, 0xee652216, 0x77080400, 0x33080400, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffc58a7b, 0xffc58a7b, 
+	0xffc58a7b, 0xffbd8273, 0xffe9d0cb, 0xfffff7f7, 0xfffff7f7, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xfff7f3f7, 0xfff7f3f7, 0xffdec9c8, 0xffad756b, 0xffa57163, 0xffa57163, 0xffa57163, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x88190000, 0xee977779, 0xeed6b2b5, 
+	0xeed6b2b5, 0xeec3a39f, 0xeec09d9a, 0xeebd9694, 0xeebd9694, 0xeeb58b84, 0xeeb5847b, 0xeeb57d73, 
+	0xeeb57d73, 0xee9a6f68, 0xeecea29c, 0xeecea29c, 0x99310800, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0xff4a464a, 0xff8c888c, 0xff8c888c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff949294, 0xff949294, 0xff9c9a9c, 0xff9c9a9c, 
+	0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 
+	0xff9c9a9c, 0xff9c9a9c, 0xff9c9a9c, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 
+	0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 
+	0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949694, 0xff949294, 
+	0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 
+	0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff949294, 0xff948e94, 
+	0xff948e94, 0xff948e94, 0xff948e94, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 
+	0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff8c8e8c, 0xff949694, 
+	0xff949694, 0xff949694, 0xff737573, 0xff5d5c5d, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7731100e, 0xff943129, 0xff8c2d21, 0xff8c2d21, 
+	0xff8c2d21, 0xff8c2d21, 0xff912d26, 0xff9c3129, 0xff9c3129, 0xff9c3129, 0xff943121, 0xff943121, 
+	0xff9a746e, 0xff9c9694, 0xff9caead, 0xff9caead, 0xff9caead, 0xff9caead, 0xffadc2c5, 0xffadc2c5, 
+	0xffadc2c5, 0xffadc2c5, 0xffadc2c5, 0xffadc2c5, 0xffadc2c5, 0xffadc2c5, 0xffadc2c5, 0xffadc2c5, 
+	0xffadc2c5, 0xffadc2c5, 0xffb2aeaa, 0xffb2aeaa, 0xffceefef, 0xffceefef, 0xfff7fbf7, 0xfff7fbf7, 
+	0xfff7fbf7, 0xffa5716e, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff632019, 0xff581c16, 
+	0xff581c16, 0xff4d1813, 0xff421410, 0xcc160705, 0x44000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x88633d3a, 0xffd6928c, 0xffd6928c, 0xffd6928c, 0xffd6928c, 0xffd98e89, 
+	0xffd98e89, 0xffd98e89, 0xffd68a84, 0xffd98b84, 0xffd98b84, 0xffd6867b, 0xffd6867b, 0xffbd776b, 
+	0xffbd776b, 0xffa5645a, 0xff8c514a, 0xff7b495a, 0xffd6cad6, 0xffd6cad6, 0xff7b495a, 0xff8c3529, 
+	0xff8c3529, 0xff8c3529, 0xff973b31, 0xffb5392c, 0xffad3529, 0xffad3529, 0xffad3529, 0xff9f3126, 
+	0xff9f3126, 0xff942d21, 0xff942d21, 0xff943121, 0xff943121, 0xbb37130b, 0x44080400, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffc58a7b, 0xffc58a7b, 
+	0xffc58a7b, 0xffbd8273, 0xffe9d0cb, 0xfffff7f7, 0xfffff7f7, 0xffe6d2ce, 0xffe6d2ce, 0xffe6d2ce, 
+	0xffe6d2ce, 0xfff7f3f7, 0xfff7f3f7, 0xffdec9c8, 0xffad756b, 0xffa57163, 0xffa57163, 0xffa57163, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x88190000, 0xee977779, 0xeed6b2b5, 
+	0xeed6b2b5, 0xeec5aaa5, 0xeec3a39f, 0xeebd9694, 0xeebd9694, 0xeeb58b84, 0xeeb5847b, 0xeeb5847b, 
+	0xeeb57d73, 0xee9a6f68, 0xeecea29c, 0xeecea29c, 0x99310800, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0xff8c888c, 0xff8c888c, 0xffcecace, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 
+	0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 
+	0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffc0c0c0, 0xffc0c0c0, 0xffced0ce, 0xffcecdce, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcecdce, 
+	0xffcecdce, 0xffcecdce, 0xffcecdce, 0xffcbc9cb, 0xffcbc9cb, 0xffcbc9cb, 0xffcbc9cb, 0xffc5c9c5, 
+	0xffc5c9c5, 0xffc5c9c5, 0xffc5c9c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c5c5, 
+	0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 
+	0xffc5c2c5, 0xffc5c2c5, 0xffc5c2c5, 0xffc0c2c0, 0xffc0c2c0, 0xffc0c2c0, 0xffc0c2c0, 0xffc0bec0, 
+	0xffc0bec0, 0xffc0bec0, 0xffc0bec0, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 
+	0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xffb5b6b5, 
+	0xffb5b6b5, 0xffb5b6b5, 0xffb5b6b5, 0xff8c8a8c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x11000000, 0xaa31100e, 0xff943129, 0xff8c2d21, 0xff8c2d21, 
+	0xff912f24, 0xff912f24, 0xff9c3129, 0xff9c3129, 0xffa23329, 0xffa23329, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffb59a9c, 0xffc8b5b5, 0xffc8b5b5, 0xffc8b5b5, 0xffc8b5b5, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffdee3de, 0xffe9ece9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffdbb9b5, 0xff942d21, 0xff812821, 0xff812821, 0xff762421, 0xff6b2021, 0xff682019, 0xff682019, 
+	0xff5d1c19, 0xff521819, 0xff4a1810, 0xdd190805, 0x66000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0xcc8f514d, 0xffd6867b, 0xffd6867b, 0xffd6867b, 0xffd6867b, 0xffd6827b, 
+	0xffd6827b, 0xffd6827b, 0xffd6827b, 0xffd6867b, 0xffd6867b, 0xffd6867b, 0xffd07970, 0xffce7573, 
+	0xffce7573, 0xffb25e5a, 0xff974842, 0xff632d3a, 0xffefefef, 0xffefefef, 0xff632d3a, 0xff862b1e, 
+	0xff9a3224, 0xff9a3224, 0xffad3929, 0xffad3529, 0xffad3529, 0xff9c3126, 0xff9c3126, 0xff943121, 
+	0xff892d21, 0xff892d21, 0xff892d21, 0xff7b2821, 0xff7b2821, 0xdd551b16, 0x66080000, 0x22000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffc58a7b, 0xffc58a7b, 
+	0xffc58a7b, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffb5796b, 0xffb5796b, 0xffb5796b, 
+	0xffb5796b, 0xffad756b, 0xffad756b, 0xffad756b, 0xffad756b, 0xffa57163, 0xffa57163, 0xffa57163, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee977779, 0xeed6b2b5, 
+	0xeed6b2b5, 0xeec5aaa5, 0xeec3a39f, 0xeec09d9a, 0xeebd9694, 0xeeb58b84, 0xeeb58b84, 0xeeb5847b, 
+	0xeeb57d73, 0xee9a6f68, 0xeecea29c, 0xeecea29c, 0xaa310800, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0xff8c888c, 0xffcecace, 0xffcecace, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffe6ebe6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffdee3de, 
+	0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffb5b6b5, 0xff8c8a8c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x22000000, 0xdd63201b, 0xff943129, 0xff912f24, 0xff912f24, 
+	0xff912f24, 0xff912f24, 0xffa23329, 0xffa23329, 0xffa23329, 0xffa73629, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffaf5950, 0xffc8b5b5, 0xffc8b5b5, 0xffd6dbde, 0xffd6dbde, 0xffe1dfe1, 0xffe1dfe1, 
+	0xffecebec, 0xffecebec, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 
+	0xfff1f0f1, 0xfff1f0f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffb8736b, 0xff942d21, 0xff8c2d21, 0xff812821, 0xff762421, 0xff762421, 0xff682019, 0xff682019, 
+	0xff5d1c19, 0xff521819, 0xff4a1810, 0xee31100b, 0x88000000, 0x22000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x55472826, 0xffd67973, 0xffd37f76, 0xffd37f76, 0xffd37f76, 0xffd37f76, 0xffd6827b, 
+	0xffd6827b, 0xffd6827b, 0xffd6827b, 0xffd07970, 0xffd07970, 0xffd07970, 0xffd07970, 0xffce7573, 
+	0xffb25e5a, 0xff974842, 0xff974842, 0xff632d3a, 0xffefefef, 0xffefefef, 0xff632d3a, 0xff732419, 
+	0xff862b1e, 0xff9a3224, 0xff9a3224, 0xff9c3126, 0xff9c3126, 0xff9c3126, 0xff8c2d24, 0xff892d21, 
+	0xff892d21, 0xff7e2821, 0xff7e2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0x992f0d0b, 0x33000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffc58a7b, 0xffc58a7b, 
+	0xffc58a7b, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffbd8273, 0xffb5796b, 0xffb5796b, 0xffb5796b, 
+	0xffb5796b, 0xffad756b, 0xffad756b, 0xffad756b, 0xffad756b, 0xffa57163, 0xffa57163, 0xffa57163, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee977779, 0xeed6b2b5, 
+	0xeed6b2b5, 0xeec5aaa5, 0xeec5aaa5, 0xeec09d9a, 0xeebd9694, 0xeeb5928c, 0xeeb58b84, 0xeeb5847b, 
+	0xeeb5847b, 0xee9a6f68, 0xeecea29c, 0xeecea29c, 0xaa310800, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00080408, 0xff8c888c, 0xffcecace, 0xffcecace, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffe6ebe6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 
+	0xffe6e7e6, 0xffe6e7e6, 0xffe6e7e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffe6e3e6, 0xffdee3de, 
+	0xffdee3de, 0xffdee3de, 0xffdee3de, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedfde, 
+	0xffdedfde, 0xffdedfde, 0xffdedfde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffdedbde, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6dbd6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffb5b6b5, 0xff8c8a8c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x5531100e, 0xff943129, 0xff943129, 0xff912f24, 0xff912f24, 
+	0xff973226, 0xff973226, 0xffa23329, 0xffa23329, 0xffa73629, 0xffa73629, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffba8f8c, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffecebec, 0xffecebec, 
+	0xfff7f7f7, 0xfff7f7f7, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xfff1f0f1, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdbb9b5, 
+	0xff942d21, 0xff942d21, 0xff8c2d21, 0xff812821, 0xff812821, 0xff762421, 0xff682019, 0xff682019, 
+	0xff682019, 0xff5d1c19, 0xff4a1810, 0xff4a1810, 0xaa000000, 0x33000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x88472826, 0xffd67973, 0xffd07870, 0xffd07870, 0xffd07870, 0xffd07870, 0xffd37b73, 
+	0xffd37b73, 0xffd37b73, 0xffd0746b, 0xffd07970, 0xffcb6d65, 0xffcb6d65, 0xffcb6d65, 0xffb25e5a, 
+	0xffb25e5a, 0xff974842, 0xff7b3129, 0xff632d3a, 0xffefefef, 0xffefefef, 0xff632d3a, 0xff732419, 
+	0xff862b1e, 0xff9a3224, 0xff9a3224, 0xff9c3126, 0xff8c2d24, 0xff8c2d24, 0xff8c2d24, 0xff7e2821, 
+	0xff7e2821, 0xff7e2821, 0xff732421, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xbb2f0d0b, 0x44000000, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9d5d0, 0xffbd8273, 0xffbd8273, 
+	0xffbd8273, 0xffad756b, 0xffad756b, 0xffad756b, 0xffad756b, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 
+	0xff9c6d63, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 
+	0xffdececb, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee97827e, 0xeed6c2bd, 
+	0xeed6c2bd, 0xeec5b2b5, 0xeec3aaaa, 0xeec0a29f, 0xeebd9a94, 0xeeba8f86, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee976c6b, 0xeec59e9c, 0xeec59e9c, 0xaa3a0808, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0xff7e807e, 0xffbdbebd, 0xffbdbebd, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffd6d7d6, 0xffd6d7d6, 
+	0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d7d6, 0xffd6d2d6, 
+	0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffd6d2d6, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 
+	0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecace, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 0xffcecace, 
+	0xffcecace, 0xffcecace, 0xffcecace, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 
+	0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffc5c6c5, 0xffbdbebd, 
+	0xffbdbebd, 0xffbdbebd, 0xffbdbebd, 0xff848284, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x7731100e, 0xff943129, 0xff943129, 0xff973226, 0xff973226, 
+	0xff973226, 0xff973226, 0xffa23329, 0xffa73629, 0xffa73629, 0xffa73629, 0xffad3929, 0xffad3929, 
+	0xffad3929, 0xffad3929, 0xffad6963, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffecebec, 0xfff7f7f7, 
+	0xfff7f7f7, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff942d21, 
+	0xff942d21, 0xff942d21, 0xff8c2d21, 0xff8c2d21, 0xff812821, 0xff812821, 0xff732419, 0xff682019, 
+	0xff682019, 0xff5d1c19, 0xff4a1810, 0xff4a1810, 0xbb190805, 0x44000000, 0x11000000, 0x00000000, 
+	0x11000000, 0xaa8f514d, 0xffd67973, 0xffce716b, 0xffce716b, 0xffce716b, 0xffce716b, 0xffce6d63, 
+	0xffce6d63, 0xffce6d63, 0xffce6d63, 0xffcb6d65, 0xffcb6d65, 0xffc5615a, 0xffc5615a, 0xffb25e5a, 
+	0xff974842, 0xff974842, 0xff7b3129, 0xff632d3a, 0xffefefef, 0xffefefef, 0xff632d3a, 0xff732419, 
+	0xff732419, 0xff862b1e, 0xff862b1e, 0xff8c2d24, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff732421, 
+	0xff732421, 0xff732421, 0xff732421, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xdd551b16, 0x55000000, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9d5d0, 0xffbd8273, 0xffbd8273, 
+	0xffbd8273, 0xffad756b, 0xffad756b, 0xffad756b, 0xffad756b, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 
+	0xff9c6d63, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 
+	0xffdececb, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee97827e, 0xeed6c2bd, 
+	0xeed6c2bd, 0xeec5b2b5, 0xeec3aaaa, 0xeec0a29f, 0xeebd9a94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee976c6b, 0xeec59e9c, 0xeec59e9c, 0xaa3a0808, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0xff3f423f, 0xff7e807e, 0xff7e807e, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 
+	0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 
+	0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff8f8f8f, 0xff8f8f8f, 
+	0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8e8f, 
+	0xff8f8e8f, 0xff8f8e8f, 0xff8f8e8f, 0xff8f8c8f, 0xff8f8c8f, 0xff8f8c8f, 0xff8f8c8f, 0xff898a89, 
+	0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 
+	0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898a89, 0xff898789, 
+	0xff898789, 0xff898789, 0xff898789, 0xff898789, 0xff898789, 0xff898789, 0xff898789, 0xff898789, 
+	0xff898789, 0xff898789, 0xff898789, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 
+	0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 
+	0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff848484, 0xff7e7f7e, 
+	0xff7e7f7e, 0xff7e7f7e, 0xff7e7f7e, 0xff585658, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x8834120e, 0xff9c3529, 0xff9c3529, 0xff9f3229, 0xff9f3229, 
+	0xff9f3229, 0xffa53529, 0xffaa362f, 0xffaf372c, 0xffaf372c, 0xffaf372c, 0xffb53931, 0xffb53931, 
+	0xffb83a2f, 0xffb53931, 0xffb53d31, 0xffcba39f, 0xffd6d7d6, 0xffd6d7d6, 0xffe6e3e6, 0xffefefef, 
+	0xfff7fbf7, 0xfff7fbf7, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd69e9c, 0xff9c3529, 
+	0xff9c3529, 0xff9c3529, 0xff942e21, 0xff8c2b21, 0xff8c2b21, 0xff842821, 0xff7b2421, 0xff651f1b, 
+	0xff651f1b, 0xff5a1c19, 0xff521810, 0xff521810, 0xcc1b0805, 0x55000000, 0x11000000, 0x00000000, 
+	0x11000000, 0xcc8f4c42, 0xffd67163, 0xffce6963, 0xffce6963, 0xffce6963, 0xffce6963, 0xffc5655a, 
+	0xffc5655a, 0xffc5655a, 0xffc5655a, 0xffc55952, 0xffc55952, 0xffc55952, 0xffc55952, 0xffbd493a, 
+	0xffbd493a, 0xff7e3126, 0xff7e3126, 0xff190808, 0xffffffff, 0xffffffff, 0xff190808, 0xff581b16, 
+	0xff842821, 0xff842821, 0xff842821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff6b2019, 
+	0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xff6b2019, 0xee471610, 0x55000000, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9d5d0, 0xffffffff, 0xffbd8273, 
+	0xffbd8273, 0xffad756b, 0xffad756b, 0xffad756b, 0xffad756b, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 
+	0xff9c6d63, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6963, 0xff9c6d63, 0xff9c6d63, 0xffffffff, 
+	0xffdececb, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee97827e, 0xeed6c2bd, 
+	0xeed6c2bd, 0xeec5b2b5, 0xeec3aaaa, 0xeec0a29f, 0xeebd9a94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee976c6b, 0xeec59e9c, 0xeec59e9c, 0xaa3a0808, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x9934120e, 0xff9c3529, 0xff9c3529, 0xff9f3229, 0xff9c3129, 
+	0xffa23329, 0xffa53529, 0xffaf372c, 0xffaf372c, 0xffb53929, 0xffb53929, 0xffb53931, 0xffb83a2f, 
+	0xffb53931, 0xffb83a2f, 0xffb53d31, 0xffb53d31, 0xffd6d7d6, 0xffd6d7d6, 0xffe6e3e6, 0xffefefef, 
+	0xffefefef, 0xfff7fbf7, 0xfffcfcfc, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9c3529, 0xff9c3529, 
+	0xff9c3529, 0xff9c3529, 0xff942e21, 0xff942e21, 0xff8c2b21, 0xff842821, 0xff7b2421, 0xff70221e, 
+	0xff651f1b, 0xff5a1c19, 0xff521810, 0xff521810, 0xcc1b0805, 0x55000000, 0x11000000, 0x00000000, 
+	0x11000000, 0x22000000, 0x44000000, 0x66000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 
+	0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 
+	0x88000000, 0x99000000, 0xaa000000, 0xcc190808, 0xffffffff, 0xffffffff, 0xbb190808, 0xaa000000, 
+	0x99000000, 0x88000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 
+	0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x77000000, 0x66000000, 0x44000000, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9d5d0, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffdececb, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee97827e, 0xeed6c2bd, 
+	0xeed6c2bd, 0xeec5b2b5, 0xeec3aaaa, 0xeec0a29f, 0xeebd9a94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee976c6b, 0xeec59e9c, 0xeec59e9c, 0xaa3a0808, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 
+	0x00000400, 0x00000400, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0xaa34120e, 0xff9c3529, 0xff9c3529, 0xff9f3229, 0xff9f3229, 
+	0xffa53529, 0xffa53529, 0xffaf372c, 0xffb53929, 0xffb53929, 0xffb53929, 0xffb83a2f, 0xffb83a2f, 
+	0xffb83a2f, 0xffb83a2f, 0xffb53d31, 0xffb53d31, 0xffc07068, 0xffd6d7d6, 0xffded7de, 0xffe6e3e6, 
+	0xffefefef, 0xffefefef, 0xfffafafa, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc87d76, 0xff9c3529, 0xff9c3529, 
+	0xff9c3529, 0xff9c3529, 0xff942e21, 0xff942e21, 0xff8c2b21, 0xff842821, 0xff7b2421, 0xff70221e, 
+	0xff651f1b, 0xff651f1b, 0xff521810, 0xff521810, 0xdd1b0805, 0x66000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x22000000, 0x33000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x55000000, 0x66000000, 0x88000000, 0xaa190808, 0xffffffff, 0xffffffff, 0xaa190808, 0x88000000, 
+	0x66000000, 0x55000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 
+	0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x44000000, 0x33000000, 0x22000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee9c827e, 0xeedec2bd, 
+	0xeedec2bd, 0xeec5b6b5, 0xeec3aead, 0xeec0a6a5, 0xeebd9e9c, 0xeebd9694, 0xeeba8f8c, 0xeeb88884, 
+	0xeeb5827b, 0xee9c6d6b, 0xeece9e9c, 0xeece9e9c, 0xaa3a0c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0xbb68231b, 0xff9c3529, 0xff9c3529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffa53529, 0xffb53929, 0xffb53929, 0xffb53929, 0xffb53929, 0xffb83a2f, 0xffb83a2f, 
+	0xffba3b2c, 0xffb83a2f, 0xffb53d31, 0xffb53d31, 0xffb53d31, 0xffcba39f, 0xffded7de, 0xffe6e3e6, 
+	0xffe6e3e6, 0xffefefef, 0xfff7f7f7, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4beba, 0xffad3d31, 0xff9c3529, 0xff9c3529, 
+	0xff9c3529, 0xff9c3529, 0xff9c3121, 0xff942e21, 0xff8c2b21, 0xff842821, 0xff7b2421, 0xff70221e, 
+	0xff651f1b, 0xff651f1b, 0xff521810, 0xff521810, 0xdd1b0805, 0x66000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x22000000, 0x44000000, 0x66000000, 0x99190808, 0xffffffff, 0xffffffff, 0x88190808, 0x66000000, 
+	0x44000000, 0x22000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee9c827e, 0xeedec2bd, 
+	0xeedec2bd, 0xeec5b6b5, 0xeec3aead, 0xeec0a6a5, 0xeebd9e9c, 0xeebd9694, 0xeeba8f8c, 0xeeb88884, 
+	0xeeb5827b, 0xee9c6d6b, 0xeece9e9c, 0xeece9e9c, 0xaa3a0c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x9937120e, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffaa3729, 0xffb53929, 0xffb53a2c, 0xffb53b2f, 0xffb53b2f, 0xffbd3b31, 0xffbd3b31, 
+	0xffbd3b31, 0xffbd3b31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffbd6152, 0xffdedbde, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xfff7f7f7, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffbff, 0xfffffbff, 0xffc87970, 0xffad3929, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xff9c3129, 0xff943129, 0xff8f2e26, 0xff892b24, 0xff842821, 0xff732421, 0xff6b221e, 
+	0xff631f1b, 0xff631f1b, 0xff521c10, 0xff37130b, 0xdd1b0905, 0x66000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x33000000, 0x55000000, 0x88190808, 0xfffffbff, 0xfffffbff, 0x88190808, 0x55000000, 
+	0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee9c827e, 0xeedec2bd, 
+	0xeedec2bd, 0xeec5b6b5, 0xeec3aead, 0xeec0a6a5, 0xeebd9e9c, 0xeebd9694, 0xeeba8f8c, 0xeeb88884, 
+	0xeeb5827b, 0xee9c6d6b, 0xeece9e9c, 0xeece9e9c, 0xaa3a0c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x8837120e, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 
+	0xffa73629, 0xffad3929, 0xffb53a2c, 0xffb53a2c, 0xffb53a2c, 0xffb53a2c, 0xffbd3b31, 0xffbd3b31, 
+	0xffbd3b31, 0xffbd3b31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffd3a9a7, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffefefef, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffbff, 0xffe4bab8, 0xffad3929, 0xffad3929, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xff9c3129, 0xff943129, 0xff8f2e26, 0xff892b24, 0xff842821, 0xff732421, 0xff6b221e, 
+	0xff631f1b, 0xff5a1c19, 0xff521c10, 0xff37130b, 0xcc1b0905, 0x66000000, 0x22000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x33000000, 0x55000000, 0x88190808, 0xfffffbff, 0xfffffbff, 0x88190808, 0x55000000, 
+	0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee9c827e, 0xeedec2bd, 
+	0xeedec2bd, 0xeec5b6b5, 0xeec3aead, 0xeec0a6a5, 0xeebd9e9c, 0xeebd9694, 0xeeba8f8c, 0xeeb88884, 
+	0xeeb5827b, 0xee9c6d6b, 0xeece9e9c, 0xeece9e9c, 0xaa3a0c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x7737120e, 0xffa53529, 0xffa53529, 0xffa73629, 0xffa73629, 
+	0xffa53529, 0xffad3929, 0xffb53929, 0xffb53a2c, 0xffb53a2c, 0xffb53b2f, 0xffbd3a31, 0xffbd3b31, 
+	0xffbd3b31, 0xffbd3b31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffbd453a, 0xffdedbde, 
+	0xffdedbde, 0xffdedbde, 0xffefefef, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xfffffbff, 0xffad3929, 0xffad3929, 0xffad3929, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xff9f3229, 0xff943129, 0xff8f2e26, 0xff892b24, 0xff842821, 0xff732421, 0xff6b221e, 
+	0xff631f1b, 0xff5a1c19, 0xff521c10, 0xff37130b, 0xcc1b0905, 0x66000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x22000000, 0x44000000, 0x66000000, 0x99190808, 0xfffffbff, 0xfffffbff, 0x99190808, 0x66000000, 
+	0x44000000, 0x22000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee977f79, 0xeed6beb5, 
+	0xeed6beb5, 0xeec5b2b5, 0xeec3abaa, 0xeec0a59f, 0xeebd9e94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee9a6d65, 0xeece9e94, 0xeece9e94, 0xaa310c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x6637120e, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffaa3729, 0xffb53929, 0xffb53a2c, 0xffb53b2f, 0xffb53b2f, 0xffbd3b31, 0xffbd3b31, 
+	0xffbd3d31, 0xffbd3b31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffbd453a, 0xffc87770, 
+	0xffdedbde, 0xffdedbde, 0xffe6e7e6, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffc87970, 0xffad3929, 0xffad3929, 0xffad3929, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xff9f3229, 0xff943129, 0xff8f2e26, 0xff892b24, 0xff842821, 0xff732421, 0xff6b221e, 
+	0xff631f1b, 0xff5a1c19, 0xff521c10, 0xff37130b, 0xbb000000, 0x55000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x7745221e, 0xffce655a, 0xffc56152, 0xffc56152, 0xffc56152, 0xffc56152, 0xffc5594a, 
+	0xffc5594a, 0xffc5594a, 0xffc5594a, 0xffbd5142, 0xffbd5142, 0xffbd5142, 0xffbd5142, 0xffce4531, 
+	0xff892e21, 0xff892e21, 0xff892e21, 0xff190808, 0xfffffbff, 0xfffffbff, 0xff190808, 0xff581b16, 
+	0xff581b16, 0xff842821, 0xff842821, 0xff732419, 0xff732419, 0xff732419, 0xff732419, 0xff632019, 
+	0xff632019, 0xff632019, 0xff632019, 0xff632019, 0xff632019, 0xff632019, 0x88210b08, 0x22000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee977f79, 0xeed6beb5, 
+	0xeed6beb5, 0xeec5b2b5, 0xeec3abaa, 0xeec0a59f, 0xeebd9e94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee9a6d65, 0xeece9e94, 0xeece9e94, 0xaa310c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00080000, 0x33080000, 0xee9c3529, 0xff9c3529, 0xffa53529, 0xffa53529, 
+	0xffa73629, 0xffad3929, 0xffaf392c, 0xffb2392f, 0xffb2392f, 0xffb2392f, 0xffba3b2f, 0xffba3b2f, 
+	0xffba3b2f, 0xffba3b2f, 0xffba3b31, 0xffb83a31, 0xffba3b31, 0xffba3b31, 0xffb53931, 0xffb53931, 
+	0xffcba7a5, 0xffd6dfde, 0xffe6e3e6, 0xfff7f6f7, 0xffffffff, 0xffffffff, 0xfffffbff, 0xfffffbff, 
+	0xfffffbff, 0xfffffbff, 0xffb53d31, 0xffaf372c, 0xffaf372c, 0xffaf372c, 0xffa53529, 0xffa23329, 
+	0xff9f3229, 0xff9c3129, 0xff943121, 0xff8c2d21, 0xff8c2d21, 0xff842821, 0xff732421, 0xff68201b, 
+	0xff5d1c16, 0xff5d1c16, 0xff4a1810, 0xff31100b, 0xaa000000, 0x44000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x55451f1b, 0xffce5d52, 0xffc5594a, 0xffc5594a, 0xffc5594a, 0xffc5594a, 0xffc5554a, 
+	0xffc5554a, 0xffc04c3f, 0xffc04c3f, 0xffc5453a, 0xffc5453a, 0xffba3e34, 0xffba3e34, 0xffad3529, 
+	0xffad3529, 0xff76271e, 0xff5a2019, 0xff5a2d3a, 0xffe6e7e6, 0xffe6e7e6, 0xff5a2d3a, 0xff4a1819, 
+	0xff652019, 0xff652019, 0xff732419, 0xff632019, 0xff632019, 0xff632019, 0xff632019, 0xff632019, 
+	0xff5d1e16, 0xff5d1e16, 0xff5d1e16, 0xff5a1c19, 0xff5a1c19, 0xff5a1c19, 0x88240908, 0x33000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee977f79, 0xeed6beb5, 
+	0xeed6beb5, 0xeec5b2b5, 0xeec3abaa, 0xeec0a59f, 0xeebd9e94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee9a6d65, 0xeece9e94, 0xeece9e94, 0xaa310c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00080000, 0x11080000, 0xcc6b231b, 0xff9c3529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffaa3729, 0xffaf392c, 0xffb2392f, 0xffb2392f, 0xffb2392f, 0xffb83a2c, 0xffba3b2f, 
+	0xffba3b2f, 0xffba3b2f, 0xffb83a31, 0xffb83a31, 0xffba3b31, 0xffba3b31, 0xffb53931, 0xffb53931, 
+	0xffc0706b, 0xffd6dfde, 0xffe6e3e6, 0xfff7f6f7, 0xffffffff, 0xffffffff, 0xfffffbff, 0xfffffbff, 
+	0xfffffbff, 0xffc87770, 0xffaf372c, 0xffaf372c, 0xffaf372c, 0xffad3529, 0xffa53529, 0xffa23329, 
+	0xffa23329, 0xff9c3129, 0xff943121, 0xff8c2d21, 0xff8c2d21, 0xff842821, 0xff732421, 0xff68201b, 
+	0xff5d1c16, 0xff5d1c16, 0xff4a1810, 0xee31100b, 0x99000000, 0x33000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x22000000, 0xcc893e37, 0xffbd5042, 0xffbd5042, 0xffbd5042, 0xffbd5042, 0xffc04c3f, 
+	0xffc04c3f, 0xffba4234, 0xffba4234, 0xffba3e34, 0xffba3e34, 0xffaf372f, 0xffaf372f, 0xffad3529, 
+	0xff912e24, 0xff76271e, 0xff5a2019, 0xff5a2d3a, 0xffe6e7e6, 0xffe6e7e6, 0xff5a2d3a, 0xff4a1819, 
+	0xff581c19, 0xff652019, 0xff652019, 0xff632019, 0xff632019, 0xff5a1e16, 0xff5a1e16, 0xff581b13, 
+	0xff581b13, 0xff581b13, 0xff581b13, 0xff5a1c19, 0xff5a1c19, 0xdd3f1310, 0x77080000, 0x44000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x99190000, 0xee977f79, 0xeed6beb5, 
+	0xeed6beb5, 0xeec3abaa, 0xeec3abaa, 0xeec0a59f, 0xeebd9e94, 0xeebd968c, 0xeeba8f86, 0xeeb88881, 
+	0xeeb5827b, 0xee9a6d65, 0xeece9e94, 0xeece9e94, 0xaa310c08, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x993a120e, 0xff9c3529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffa73629, 0xffaf392c, 0xffaf392c, 0xffb2392f, 0xffb2392f, 0xffb83a2c, 0xffba3b2f, 
+	0xffb83a2c, 0xffba3b2f, 0xffb83a31, 0xffba3b31, 0xffb83a31, 0xffba3b31, 0xffb53931, 0xffb53931, 
+	0xffb53931, 0xffcba7a5, 0xffe6e3e6, 0xfff7f6f7, 0xffffffff, 0xffffffff, 0xfffffbff, 0xfffffbff, 
+	0xffe4b9b8, 0xffad3529, 0xffaf372c, 0xffaf372c, 0xffad3529, 0xffad3529, 0xffa53529, 0xffa23329, 
+	0xff9f3229, 0xff9c3129, 0xff8c2d21, 0xff8c2d21, 0xff842821, 0xff7b2421, 0xff732421, 0xff68201b, 
+	0xff5d1c16, 0xff521810, 0xff4a1810, 0xdd190805, 0x77000000, 0x22000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x99451f1b, 0xffbd5042, 0xffb5463a, 0xffb5463a, 0xffb5463a, 0xffba4234, 
+	0xffba4234, 0xffb53929, 0xffb53929, 0xffaf372f, 0xffaf372f, 0xffaf372f, 0xffaf372f, 0xffad3529, 
+	0xff912e24, 0xff76271e, 0xff5a2019, 0xff5a2d3a, 0xffe6e7e6, 0xffe6e7e6, 0xff5a2d3a, 0xff4a1819, 
+	0xff4a1819, 0xff581c19, 0xff652019, 0xff5a1e16, 0xff5a1e16, 0xff521b13, 0xff521b13, 0xff581b13, 
+	0xff581b13, 0xff581b13, 0xff581b13, 0xff5a1c19, 0xff5a1c19, 0xcc240908, 0x77080000, 0x33000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x33000000, 0x88290400, 0xee977873, 0xeeceb2ad, 
+	0xeeceb2ad, 0xeec5aead, 0xeec3a6a2, 0xeec09e97, 0xeec09e97, 0xeebd928c, 0xeeba8b84, 0xeeb8847b, 
+	0xeeb8847b, 0xeeb58a84, 0xeeb58a84, 0xeeb58a84, 0xaa210400, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x66080000, 0xff9c3529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffa53529, 0xffaf392c, 0xffaf392c, 0xffaf392c, 0xffb2392f, 0xffb83a2c, 0xffb83a2c, 
+	0xffb83a2c, 0xffb83a2c, 0xffb53931, 0xffb83a31, 0xffb83a31, 0xffb53931, 0xffb53931, 0xffb53931, 
+	0xffb53931, 0xffc0706b, 0xffe6e3e6, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffbff, 0xfffffbff, 
+	0xffc87770, 0xffad3529, 0xffaf372c, 0xffaf372c, 0xffad3529, 0xffad3529, 0xffa53529, 0xffa23329, 
+	0xff9c3129, 0xff9c3129, 0xff8c2d21, 0xff8c2d21, 0xff842821, 0xff7b2421, 0xff68201b, 0xff5d1c16, 
+	0xff521810, 0xff521810, 0xff31100b, 0xbb000000, 0x66000000, 0x22000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x44000000, 0xddad3d31, 0xffb5463a, 0xffad3d31, 0xffad3d31, 0xffb53929, 
+	0xffb53929, 0xffb53929, 0xffb53929, 0xffaf372f, 0xffaf372f, 0xffa53129, 0xffa53129, 0xff912e24, 
+	0xff912e24, 0xff5a2019, 0xff5a2019, 0xff5a2d3a, 0xffe6e7e6, 0xffe6e7e6, 0xff5a2d3a, 0xff4a1819, 
+	0xff4a1819, 0xff4a1819, 0xff581c19, 0xff521b13, 0xff521b13, 0xff521b13, 0xff4a1810, 0xff521810, 
+	0xff521810, 0xff521810, 0xff521810, 0xff5a1c19, 0xee3f1310, 0x99080000, 0x55080000, 0x22000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x88290400, 0xee977873, 0xeeceb2ad, 
+	0xeeceb2ad, 0xeec3a6a2, 0xeec3a6a2, 0xeec09e97, 0xeebd968c, 0xeebd928c, 0xeeba8b84, 0xeeb8847b, 
+	0xeeb8847b, 0xeeb58a84, 0xeeb58a84, 0xeeb58a84, 0x99210400, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x00000000, 0x22000000, 0xdd6b2019, 0xff9c3129, 0xff9c3129, 
+	0xff9c3129, 0xff9c3129, 0xffa23329, 0xffa73629, 0xffa73629, 0xffa73629, 0xffb53929, 0xffb53929, 
+	0xffb53929, 0xffb53929, 0xffaf3729, 0xffb53929, 0xffaf3729, 0xffb53929, 0xffaf3729, 0xffb53929, 
+	0xffaf3729, 0xffaf3729, 0xffdbb9b5, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfffff7f7, 0xffe1b7b2, 
+	0xffa53929, 0xffa53929, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 0xff9c3129, 0xff9c3129, 
+	0xff9c3129, 0xff942e26, 0xff8c2d21, 0xff8c2d21, 0xff7e271e, 0xff70221b, 0xff632019, 0xff632019, 
+	0xff471710, 0xff471710, 0xee290c08, 0xaa000000, 0x44000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x99451710, 0xffbd3d31, 0xffbd3d31, 0xffbd3d31, 0xffad3929, 
+	0xffad3929, 0xffa73629, 0xffa73629, 0xffa53529, 0xffa53529, 0xff9a3126, 0xff9a3126, 0xff842d29, 
+	0xff762824, 0xff5a2019, 0xff5a2019, 0xff6b495a, 0xffd6cad6, 0xffd6cad6, 0xff6b495a, 0xff4d1c1e, 
+	0xff4a1410, 0xff4d1c1e, 0xff4d1c1e, 0xff4a1810, 0xff4a1810, 0xff4a1810, 0xff4a1810, 0xff4a1810, 
+	0xff4a1810, 0xff4a1810, 0xff4a1810, 0xff4a1810, 0xcc190805, 0x77000000, 0x44000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x88290400, 0xee603e3a, 0xeeceb2ad, 
+	0xeeceb2ad, 0xeec3a6a2, 0xeec09e97, 0xeec09e97, 0xeebd968c, 0xeebd928c, 0xeeba8b84, 0xeeb8847b, 
+	0xeeb57d73, 0xeeb58a84, 0xeeb58a84, 0xeeb58a84, 0x99210400, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x77240b08, 0xff9c3129, 0xff9c3129, 
+	0xff9c3129, 0xff9c3129, 0xffa23329, 0xffa23329, 0xffa73629, 0xffa73629, 0xffb53929, 0xffad3629, 
+	0xffad3629, 0xffad3629, 0xffaf3729, 0xffaf3729, 0xffaf3729, 0xffaf3729, 0xffaf3729, 0xffaf3729, 
+	0xffaf3729, 0xffaf3729, 0xffa53d31, 0xfff7f7f7, 0xfff7f7f7, 0xfff7f7f7, 0xfffff7f7, 0xffa53929, 
+	0xffa53929, 0xffa53929, 0xffa53529, 0xffa53529, 0xff9f3329, 0xff9f3329, 0xff9c3129, 0xff9c3129, 
+	0xff942e26, 0xff942e26, 0xff8c2d21, 0xff8c2d21, 0xff7e271e, 0xff70221b, 0xff632019, 0xff471710, 
+	0xff471710, 0xff471710, 0xcc0e0403, 0x88000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x44080400, 0xcc812a21, 0xffbd3d31, 0xffbd3d31, 0xffa73629, 
+	0xffa73629, 0xffa73629, 0xffa23329, 0xff9a3126, 0xff9a3126, 0xff9a3126, 0xff8f2d24, 0xff762824, 
+	0xff68241e, 0xff5a2019, 0xff5a2019, 0xff6b495a, 0xffd6cad6, 0xffd6cad6, 0xff6b495a, 0xff4d1c1e, 
+	0xff4a1410, 0xff4a1410, 0xff4d1c1e, 0xff4a1810, 0xff4a1810, 0xff471710, 0xff471710, 0xff4a1810, 
+	0xff4a1810, 0xff4a1810, 0xff4a1810, 0xee31100b, 0x99000000, 0x55000000, 0x33000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x77290400, 0xee603e3a, 0xeeceb2ad, 
+	0xeeceb2ad, 0xeec3a6a2, 0xeec09e97, 0xeebd968c, 0xeebd968c, 0xeeba8b84, 0xeeba8b84, 0xeeb8847b, 
+	0xeeb57d73, 0xeeb58a84, 0xeeb58a84, 0xeeb58a84, 0x99210400, 0x33000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x22000000, 0xcc6e221e, 0xff9c3129, 
+	0xff9c3129, 0xff9c3129, 0xff9c3129, 0xffa23329, 0xffa23329, 0xffa73629, 0xffad3629, 0xffad3629, 
+	0xffad3629, 0xffad3629, 0xffaf3729, 0xffaa3629, 0xffa53529, 0xffaa3629, 0xffa53529, 0xffaf3729, 
+	0xffaa3629, 0xffa53529, 0xffa53d31, 0xffc07b73, 0xfff7f7f7, 0xfff7f7f7, 0xffc3786e, 0xffa53929, 
+	0xffa53929, 0xffa53929, 0xff9f3329, 0xff9f3329, 0xff9f3329, 0xff9a3229, 0xff9c3129, 0xff942e26, 
+	0xff942e26, 0xff942e26, 0xff7e271e, 0xff7e271e, 0xff70221b, 0xff70221b, 0xff632019, 0xff471710, 
+	0xff471710, 0xee2c0d08, 0xaa000000, 0x55000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11080400, 0x77451710, 0xee812a21, 0xffbd3d31, 0xffa73629, 
+	0xffa23329, 0xffa23329, 0xffa23329, 0xff9a3126, 0xff9a3126, 0xff8f2d24, 0xff8f2d24, 0xff762824, 
+	0xff68241e, 0xff5a2019, 0xff68241e, 0xff6b495a, 0xffb29fad, 0xffb29fad, 0xff8f7484, 0xff50242c, 
+	0xff4a1410, 0xff4a1410, 0xff4a1410, 0xff471710, 0xff471710, 0xff451610, 0xff451610, 0xff4a1810, 
+	0xff4a1810, 0xff4a1810, 0xee3c130e, 0xbb190805, 0x66000000, 0x44000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9dfdb, 0xfff7ffff, 0xffce9e94, 
+	0xffce9e94, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 0xffd6a294, 
+	0xffd39e91, 0xffce9e94, 0xffce9e94, 0xffce988c, 0xffce988c, 0xffc58e7b, 0xffc58e7b, 0xfff7ffff, 
+	0xffe6d9d3, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x77290400, 0xdd5d3731, 0xeec59e94, 
+	0xeec59e94, 0xeebd9e9c, 0xeebd9e9c, 0xeeba9794, 0xeeb8908c, 0xeeb58a84, 0xeeb2837b, 0xeeaf7c73, 
+	0xeeaf7c73, 0xee9c7168, 0xeed6a69c, 0xee9c7168, 0x88290800, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x66100408, 0xee6e221e, 
+	0xff9c3129, 0xff9c3129, 0xff9c3129, 0xff9c3129, 0xff9c3129, 0xffa23329, 0xffa53329, 0xffa53329, 
+	0xffa53329, 0xffa53329, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 0xffa53529, 
+	0xffa53529, 0xffa53529, 0xffa53d31, 0xffa53d31, 0xfff7f7f7, 0xfff7f7f7, 0xffa53929, 0xffa53929, 
+	0xffa53929, 0xffa53929, 0xff9a3229, 0xff9a3229, 0xff943129, 0xff943129, 0xff942e26, 0xff942e26, 
+	0xff8c2b24, 0xff842821, 0xff7e271e, 0xff70221b, 0xff70221b, 0xff631c19, 0xff471710, 0xff471710, 
+	0xff471710, 0xdd100400, 0x88000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11080400, 0x22080400, 0x99451710, 0xee812a21, 0xffa23329, 
+	0xffa23329, 0xff9c3129, 0xff9c3129, 0xff8f2d24, 0xff8f2d24, 0xff8f2d24, 0xff842821, 0xff68241e, 
+	0xff68241e, 0xff5a2019, 0xff842d29, 0xff8f7484, 0xffb29fad, 0xffb29fad, 0xff8f7484, 0xff522d3a, 
+	0xff4d1c1e, 0xff4a1410, 0xff4a1410, 0xff451610, 0xff451610, 0xff451610, 0xff451610, 0xff3c130e, 
+	0xff3c130e, 0xff3c130e, 0xcc210808, 0x77000000, 0x44000000, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9dfdb, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffd39f91, 0xffd39f91, 0xffd39f91, 0xffd39f91, 0xffd39e91, 0xffd39e91, 0xffd39e91, 
+	0xffd39e91, 0xffce988c, 0xffce988c, 0xffce988c, 0xffce9384, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 
+	0xffe6d9d3, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x66290400, 0xdd5d3731, 0xeec59e94, 
+	0xeec59e94, 0xeebd9e9c, 0xeeba9794, 0xeeb8908c, 0xeeb58a84, 0xeeb58a84, 0xeeb2837b, 0xeeaf7c73, 
+	0xeeaf7c73, 0xee9c7168, 0xeed6a69c, 0xee9c7168, 0x77290800, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0xaa2c0f0b, 
+	0xff842d21, 0xff842d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff9c3129, 0xff9c3129, 
+	0xff9c3129, 0xff9c3129, 0xff9a3126, 0xffa53529, 0xff9a3126, 0xff9a3126, 0xff9c3129, 0xff9c3129, 
+	0xff9c3129, 0xff9c3129, 0xff8c2d21, 0xff8c2d21, 0xffbd6d6b, 0xffbd6d6b, 0xff9c3129, 0xff9c3129, 
+	0xff9c3129, 0xff9c3129, 0xff9c3121, 0xff9c3121, 0xff912d21, 0xff9c3121, 0xff842d21, 0xff842d21, 
+	0xff76271e, 0xff76271e, 0xff732421, 0xff732421, 0xff5d1e19, 0xff5d1e19, 0xff421410, 0xff421410, 
+	0xee2c0d0b, 0xaa000000, 0x55000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x33000000, 0x994a1410, 0xee942d21, 
+	0xff942d21, 0xff942d21, 0xff942d21, 0xff8c2d21, 0xff8c2d21, 0xff812821, 0xff812821, 0xff632019, 
+	0xff632019, 0xff632019, 0xff633134, 0xff846573, 0xffa596a5, 0xffa596a5, 0xff846573, 0xff5a3d42, 
+	0xff4a2221, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 
+	0xff421410, 0xcc160705, 0x77000000, 0x55000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9dfdb, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffd39f91, 0xffd09d8f, 0xffd09d8f, 0xffd09d8f, 0xffd09a8f, 0xffd09a8f, 0xffd09a8f, 
+	0xffd09a8f, 0xffce988c, 0xffce9384, 0xffce9384, 0xffce9384, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 
+	0xffe6d9d3, 0xffadaaad, 0x00000000, 0x11000000, 0x22000000, 0x55290400, 0xcc290400, 0xeec59e94, 
+	0xeec59e94, 0xeeba9794, 0xeeb8908c, 0xeeb8908c, 0xeeb58a84, 0xeeb2837b, 0xeeaf7c73, 0xeeaf7c73, 
+	0xeead756b, 0xee9c7168, 0xeed6a69c, 0xdd633d34, 0x66290800, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22000000, 
+	0xbb2c0f0b, 0xff842d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8f2d26, 0xff8f2d26, 
+	0xff8f2d26, 0xff9c3129, 0xff8f2d24, 0xff9a3126, 0xff9a3126, 0xff9a3126, 0xff942e26, 0xff9c3129, 
+	0xff942e26, 0xff9c3129, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff942e26, 0xff942e26, 
+	0xff942e26, 0xff942e26, 0xff9c3121, 0xff912d21, 0xff912d21, 0xff912d21, 0xff842d21, 0xff76271e, 
+	0xff76271e, 0xff76271e, 0xff732421, 0xff5d1e19, 0xff5d1e19, 0xff471710, 0xff421410, 0xee2c0d0b, 
+	0xbb000000, 0x77000000, 0x33000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x33000000, 0x99370f0b, 
+	0xee942d21, 0xff942d21, 0xff942d21, 0xff8c2d21, 0xff812821, 0xff812821, 0xff762421, 0xff632019, 
+	0xff632019, 0xff632019, 0xff633942, 0xff846573, 0xffa596a5, 0xffa596a5, 0xff846573, 0xff5a3d42, 
+	0xff4a2221, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xee421410, 
+	0xcc160705, 0x77000000, 0x55000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe9dfdb, 0xffce9e94, 0xffce9e94, 
+	0xffce9e94, 0xffd09d8f, 0xffd09d8f, 0xffd09d8f, 0xffce9a8c, 0xffd09a8f, 0xffce968c, 0xffce968c, 
+	0xffce968c, 0xffce9384, 0xffce9384, 0xffce8e7b, 0xffce8e7b, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 
+	0xffe6d9d3, 0xffadaaad, 0x00000000, 0x00000000, 0x22000000, 0x44290400, 0xbb290400, 0xee916b63, 
+	0xeec59e94, 0xeeb8908c, 0xeeb8908c, 0xeeb58a84, 0xeeb58a84, 0xeeb2837b, 0xeeaf7c73, 0xeead756b, 
+	0xeead756b, 0xee9c7168, 0xeed6a69c, 0xcc290800, 0x55290800, 0x22000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x33000000, 0xcc2c0f0b, 0xff76241b, 0xff76241b, 0xff76241b, 0xff76241b, 0xff812824, 0xff812824, 
+	0xff812824, 0xff812824, 0xff8f2d24, 0xff8f2d24, 0xff8f2d24, 0xff8f2d24, 0xff8c2b24, 0xff8c2b24, 
+	0xff8c2b24, 0xff8c2b24, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff942e26, 0xff942e26, 
+	0xff942e26, 0xff942e26, 0xff912d21, 0xff912d21, 0xff862821, 0xff862821, 0xff76271e, 0xff76271e, 
+	0xff68221b, 0xff68221b, 0xff5d1e19, 0xff5d1e19, 0xff471710, 0xff471710, 0xff2c0d0b, 0xcc000000, 
+	0x88000000, 0x44000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x33080000, 
+	0x88370f0b, 0xdd651e16, 0xff942d21, 0xff812821, 0xff812821, 0xff762421, 0xff762421, 0xff632019, 
+	0xff632019, 0xff632826, 0xff633942, 0xff846573, 0xff947d8c, 0xff947d8c, 0xff846573, 0xff5a3d42, 
+	0xff4a2221, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xff421410, 0xee2f0d0b, 0xbb160705, 
+	0x77000000, 0x55000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000400, 0xff949694, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffc58a7b, 0xffc58a7b, 0xffc58a7b, 0xffc58a7b, 0xffb57d73, 0xffb57d73, 0xffb57d73, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x11000000, 0x33190400, 0xaa190400, 0xee91584d, 
+	0xeece8273, 0xeeb5867b, 0xeeb5867b, 0xeeb5867b, 0xeeb5867b, 0xeead7973, 0xeead7973, 0xeeaa6d65, 
+	0xeeaa6d65, 0xeeaa7d73, 0xeeefbaad, 0xbb210400, 0x44210400, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x44000000, 0xcc4a1410, 0xff76241b, 0xff76241b, 0xff76241b, 0xff732421, 0xff732421, 
+	0xff732421, 0xff812824, 0xff842821, 0xff842821, 0xff842821, 0xff842821, 0xff842821, 0xff842821, 
+	0xff8c2b24, 0xff842821, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2d21, 0xff8c2b24, 0xff8c2b24, 
+	0xff8c2b24, 0xff842821, 0xff862821, 0xff862821, 0xff862821, 0xff7b2421, 0xff76271e, 0xff68221b, 
+	0xff68221b, 0xff5a1c19, 0xff5d1e19, 0xff471710, 0xff311008, 0xff311008, 0xdd160705, 0x99000000, 
+	0x55000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11080000, 
+	0x33080000, 0x55080000, 0xaa370f0b, 0xee6b2021, 0xff812821, 0xff762421, 0xff762421, 0xff632019, 
+	0xff632019, 0xff632019, 0xff633134, 0xff734d5a, 0xff846573, 0xff846573, 0xff734d5a, 0xff522f31, 
+	0xff4a2221, 0xff421410, 0xff421410, 0xff421410, 0xee2f0d0b, 0xcc1b0705, 0x99080000, 0x66000000, 
+	0x44000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9a8c, 0xffefdbd3, 0xfffffbf7, 0xfffffbf7, 0xffefddd9, 0xffefddd9, 0xffefddd9, 
+	0xffefddd9, 0xfffffbf7, 0xfffffbf7, 0xffecd5ce, 0xffc58a7b, 0xffb57d73, 0xffb57d73, 0xffb57d73, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x11000000, 0x22190400, 0x77190400, 0xdd552e26, 
+	0xeece8273, 0xeeaf7165, 0xeeaf7165, 0xeeb5867b, 0xeeaf7165, 0xeead7973, 0xeeaa6d65, 0xeeaa6d65, 
+	0xeeaa6d65, 0xeeaa7d73, 0xeeaa7d73, 0x88210400, 0x22210400, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x33000000, 0x99210b08, 0xee421610, 0xff632019, 0xff632019, 0xff632019, 
+	0xff632019, 0xff632019, 0xff732419, 0xff732419, 0xff732419, 0xff732419, 0xff6b221b, 0xff7b2821, 
+	0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 0xff7b2821, 
+	0xff7b2821, 0xff7b2821, 0xff7b2421, 0xff7b2421, 0xff7b2421, 0xff7b2421, 0xff6b2019, 0xff6b2019, 
+	0xff6b2019, 0xff4a1610, 0xff421410, 0xff421410, 0xee2c0d0b, 0xcc000000, 0x99000000, 0x55000000, 
+	0x22000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x22000000, 0x44000000, 0x771e0908, 0xbb3c1310, 0xdd5a1c19, 0xff5a1c19, 0xff55221b, 
+	0xff55221b, 0xff55221b, 0xff7b3129, 0xff58373c, 0xff7b4d52, 0xff7b4d52, 0xff58373c, 0xff5a2d29, 
+	0xff3f1f1b, 0xff24120e, 0xee24120e, 0xcc210808, 0x990b0303, 0x77000000, 0x55000000, 0x44000000, 
+	0x22000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9a8c, 0xffefdbd3, 0xfffffbf7, 0xfffffbf7, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xfffffbf7, 0xfffffbf7, 0xffd9afa5, 0xffc58a7b, 0xffb57d73, 0xffb57d73, 0xffb57d73, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x11000000, 0x22190400, 0x44190400, 0xbb190400, 
+	0xee91584d, 0xeeaa5d50, 0xeeaf7165, 0xeeaf7165, 0xeeaf7165, 0xeeaa6d65, 0xeea76158, 0xeea76158, 
+	0xeeaa6d65, 0xeeaa7d73, 0xcc210400, 0x55210400, 0x22210400, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x11000000, 0x22000000, 0x66000000, 0xcc210b08, 0xff451610, 0xff632019, 
+	0xff451610, 0xff632019, 0xff5d1c13, 0xff5d1c13, 0xff5d1c13, 0xff5d1c13, 0xff6b221b, 0xff6b221b, 
+	0xff6b221b, 0xff6b221b, 0xff6e231b, 0xff6e231b, 0xff6e231b, 0xff6e231b, 0xff6e231b, 0xff6e231b, 
+	0xff6e231b, 0xff6e231b, 0xff651e1b, 0xff7b2421, 0xff651e1b, 0xff651e1b, 0xff6b2019, 0xff4a1610, 
+	0xff4a1610, 0xff4a1610, 0xff2c0d0b, 0xee160705, 0xbb000000, 0x88000000, 0x55000000, 0x22000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x11000000, 0x33000000, 0x44000000, 0x66000000, 0x991e0908, 0xbb2f130e, 
+	0xdd2f130e, 0xee55221b, 0xff55221b, 0xff58373c, 0xff58373c, 0xff58373c, 0xee342226, 0xdd3f1f1b, 
+	0xcc24120e, 0xaa080400, 0x88080400, 0x77000000, 0x55000000, 0x44000000, 0x33000000, 0x11000000, 
+	0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9a8c, 0xffce9a8c, 
+	0xffce9a8c, 0xffce9a8c, 0xffce9a8c, 0xfffffbf7, 0xfffffbf7, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xfffffbf7, 0xffecd5ce, 0xffc58a7b, 0xffc58a7b, 0xffb57d73, 0xffb57d73, 0xffb57d73, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x11190400, 0x22190400, 0x77190400, 
+	0xcc190400, 0xeea5493a, 0xeeaa5d50, 0xeeaa5d50, 0xeeaa5d50, 0xeea76158, 0xeea76158, 0xeea76158, 
+	0xeea5554a, 0xcc210400, 0x77210400, 0x22210400, 0x11210400, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x44000000, 0x88080000, 0xdd260b08, 
+	0xee451610, 0xff451610, 0xff47140e, 0xff5d1c13, 0xff5d1c13, 0xff5d1c13, 0xff5a1b16, 0xff5a1b16, 
+	0xff5a1b16, 0xff5a1b16, 0xff601e16, 0xff601e16, 0xff6e231b, 0xff601e16, 0xff601e16, 0xff601e16, 
+	0xff601e16, 0xff601e16, 0xff651e1b, 0xff651e1b, 0xff501716, 0xff501716, 0xff4a1610, 0xff4a1610, 
+	0xff290b08, 0xee290b08, 0xdd000000, 0xaa000000, 0x77000000, 0x44000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22000000, 0x33000000, 0x55080400, 
+	0x66080400, 0x77080400, 0x88080400, 0x88100c10, 0x99100c10, 0x99100c10, 0x88100c10, 0x8824120e, 
+	0x77080400, 0x66080400, 0x55080400, 0x44000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9284, 0xffce9284, 
+	0xffce9284, 0xffc58e7b, 0xffc58e7b, 0xffd9b3a7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffffffff, 0xffcea9a2, 0xffb57d73, 0xffb57d73, 0xffad756b, 0xffad756b, 0xffad756b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22000000, 
+	0x66000000, 0x99210400, 0xaa420800, 0xbb420800, 0xbb630c00, 0xcc520c00, 0xbb520c00, 0xbb370800, 
+	0x991b0400, 0x66000000, 0x33000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x22080000, 0x44080000, 
+	0x77080000, 0xbb080000, 0xee310c08, 0xff47140e, 0xff47140e, 0xff47140e, 0xff4a1410, 0xff4a1410, 
+	0xff5a1b16, 0xff5a1b16, 0xff521810, 0xff521810, 0xff521810, 0xff521810, 0xff521810, 0xff521810, 
+	0xff521810, 0xff521810, 0xff501716, 0xff501716, 0xff501716, 0xff3a1010, 0xff290b08, 0xee290b08, 
+	0xcc080000, 0xaa080000, 0x88000000, 0x55000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22080400, 
+	0x33080400, 0x33080400, 0x44080400, 0x44100c10, 0x55100c10, 0x55100c10, 0x44100c10, 0x44080400, 
+	0x33080400, 0x33080400, 0x22080400, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9284, 0xffce9284, 
+	0xffce9284, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 0xffecd9d3, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffe6d4d0, 0xffb57d73, 0xffb57d73, 0xffb57d73, 0xffad756b, 0xffad756b, 0xffad756b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 
+	0x22000000, 0x22000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000, 
+	0x22000000, 0x22000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 
+	0x22000000, 0x44000000, 0x66000000, 0x99000000, 0xbb080303, 0xdd190808, 0xee260b0b, 0xff3a1010, 
+	0xff3a1010, 0xff3a1010, 0xff3a1410, 0xff3a1410, 0xff3a1410, 0xff3a1410, 0xff4a1410, 0xff4a1410, 
+	0xff4a1410, 0xff4a1410, 0xff311010, 0xee210b0b, 0xdd100505, 0xcc100505, 0xbb000000, 0x99000000, 
+	0x77000000, 0x55000000, 0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9284, 0xffce9284, 
+	0xffce9284, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 0xffd9b3a7, 0xffffffff, 0xffffffff, 0xffffffff, 
+	0xffffffff, 0xffcea9a2, 0xffb57d73, 0xffb57d73, 0xffb57d73, 0xffad756b, 0xffad756b, 0xffad756b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x11000000, 0x33000000, 0x44000000, 0x55000000, 0x77000000, 0x88000000, 
+	0xaa000000, 0xbb000000, 0xcc130705, 0xcc130705, 0xcc130705, 0xdd130705, 0xcc190705, 0xcc190705, 
+	0xcc000000, 0xbb000000, 0xbb000000, 0x99000000, 0x88000000, 0x66000000, 0x55000000, 0x44000000, 
+	0x33000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffce9284, 0xffce9284, 
+	0xffce9284, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 0xffc58e7b, 0xffe9d7d3, 0xffffffff, 0xffffffff, 
+	0xffdec2bd, 0xffb57d73, 0xffb57d73, 0xffb57d73, 0xffb57d73, 0xffad756b, 0xffad756b, 0xffad756b, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11000000, 0x11000000, 0x22000000, 0x22000000, 
+	0x33000000, 0x44000000, 0x55000000, 0x55000000, 0x55000000, 0x66000000, 0x66000000, 0x66000000, 
+	0x55000000, 0x55000000, 0x44000000, 0x44000000, 0x33000000, 0x22000000, 0x11000000, 0x11000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffc5867b, 0xffc5867b, 
+	0xffc5867b, 0xffc58a7b, 0xffbd8376, 0xffbd8376, 0xffbd8376, 0xffc59b8f, 0xfff7e7e6, 0xfff7e7e6, 
+	0xffc59b8f, 0xffb5796b, 0xffb5796b, 0xffad7568, 0xffad7568, 0xffa56d63, 0xffa56d63, 0xffa56d63, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x11000000, 
+	0x11000000, 0x11000000, 0x11000000, 0x11000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffc5867b, 0xffc5867b, 
+	0xffc5867b, 0xffbd8376, 0xffbd8376, 0xffb57c70, 0xffb57c70, 0xffad7563, 0xffdec1ba, 0xffdec1ba, 
+	0xffad7563, 0xffad7568, 0xffad7568, 0xffa57165, 0xffa57165, 0xffa56d63, 0xffa56d63, 0xffa56d63, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffc5867b, 0xffc5867b, 
+	0xffc5867b, 0xffbd8376, 0xffb57c70, 0xffb57c70, 0xffb57c70, 0xffad7563, 0xffad7563, 0xffad7563, 
+	0xffad7563, 0xffa57165, 0xffa57165, 0xffa57165, 0xff9c6d63, 0xffa56d63, 0xffa56d63, 0xffa56d63, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff949694, 0xffe6e3e6, 0xffc5867b, 0xffc5867b, 
+	0xffc5867b, 0xffb57c70, 0xffb57c70, 0xffad756b, 0xffad756b, 0xffad7563, 0xffad7563, 0xffad7563, 
+	0xffad7563, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 0xff9c6d63, 0xffa56d63, 0xffa56d63, 0xffa56d63, 
+	0xffe6e3e6, 0xffadaaad, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff8f8f8f, 0xffded4d0, 0xffad7d73, 0xffad7d73, 
+	0xffad7d73, 0xffa57163, 0xffa57163, 0xffa57163, 0xffa57163, 0xff9c695a, 0xff9c695a, 0xff9c695a, 
+	0xff9c695a, 0xff94655a, 0xff94655a, 0xff94655a, 0xff94655a, 0xff946d63, 0xff946d63, 0xff946d63, 
+	0xffdbcecb, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff8f8f8f, 0xffded4d0, 0xfff7ffff, 0xffad7d73, 
+	0xffad7d73, 0xffa57163, 0xffa57163, 0xffa57163, 0xffa57163, 0xff9c695a, 0xff9c695a, 0xff9c695a, 
+	0xff9c695a, 0xff94655a, 0xff94655a, 0xff94655a, 0xff94655a, 0xff946d63, 0xff946d63, 0xffffffff, 
+	0xffdbcecb, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff8f8f8f, 0xffded4d0, 0xffded4d0, 0xffded4d0, 
+	0xffded4d0, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 
+	0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffd6dbde, 0xffdbcecb, 0xffdbcecb, 0xffdbcecb, 
+	0xffdbcecb, 0xffa5a6a5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff8f8f8f, 0xffc5a9a2, 0xffc5a9a2, 0xffc5a9a2, 
+	0xffc5a9a2, 0xffc5b7b5, 0xffc5b7b5, 0xffc5b7b5, 0xffc5b7b5, 0xffc3b5b2, 0xffc3b5b2, 0xffc3b5b2, 
+	0xffc3b5b2, 0xffc0b3b2, 0xffc0b3b2, 0xffc0b3b2, 0xffc0b3b2, 0xffb89e97, 0xffb89e97, 0xffb89e97, 
+	0xffb89e97, 0xff6e6f6e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+};
+
+static const UINT g_DXUTGUITextureSrcDataSizeInBytes = 262272;
+
+static const DWORD g_DXUTArrowMeshSrcData[] =
+{
+	0x20666f78, 0x33303330, 0x70697a62, 0x32333030, 0x000030d7, 0x087930c7, 0x59ed4b43, 0xd51c6c5d, 
+	0x71dbbe15, 0xacbbc1d6, 0xe125d493, 0xc1024e27, 0x7133f9c1, 0xec1098ec, 0x1b1daef1, 0xc6d24eb7, 
+	0xc713fa10, 0x64866f59, 0xd9aecd95, 0x694304dd, 0x4485686b, 0xad2fb6a5, 0x78df44a8, 0x6cca8828, 
+	0x20a2895a, 0x2aaf60ef, 0x905215b5, 0x4fa9515a, 0xa45b4d45, 0xa1e09548, 0x9e94d282, 0xcf5df333, 
+	0x8a3acdf1, 0xec0c5368, 0xbefec6ac, 0xf77ee733, 0xdef73bdc, 0x9d667739, 0x4a65a90a, 0xf27c81a9, 
+	0x7040d394, 0xba2785e0, 0x7e7e38ff, 0xd5bb0be5, 0xba1f17fa, 0x56a633b0, 0x1546bf79, 0x1d7cec51, 
+	0x164bef39, 0x8ec9e9f3, 0xb02e0ec9, 0x1fe77ed7, 0xbf399e4f, 0x550707f2, 0x1fceceef, 0x36a1db3e, 
+	0xdc985b93, 0x316e794e, 0xc415a965, 0x2413551a, 0xf77d749a, 0xc2d993e5, 0x29fcb983, 0xe2d5905f, 
+	0x61519a86, 0x7a942488, 0x36fb0b90, 0x1df5c9ad, 0x5cc55272, 0x188e559e, 0x4288e08d, 0x1aee41e4, 
+	0x47c0123e, 0xae72c8b5, 0x189c29ca, 0xbebca648, 0x5a643318, 0xf91567c9, 0x90e1d964, 0x933a2f93, 
+	0xe963d943, 0x52685394, 0xaeaf8a1d, 0x8bcce8e4, 0x058b45b1, 0xaa87527d, 0x2afedab9, 0x642f72d5, 
+	0x4daeacb9, 0xfc8fd936, 0x4cc6ae0c, 0x15a5ae77, 0x2018bc05, 0x8feb9b20, 0x2bdd0e02, 0x6172b81f, 
+	0x50440c73, 0xbadd3f70, 0x31c0a664, 0xadf719f7, 0xf859fa15, 0x3d721e5c, 0xc62ff55f, 0x701d670c, 
+	0x40b14754, 0x11d86164, 0x903fbd84, 0xbd058b32, 0x97d2ddcc, 0x07f2e4cb, 0x0e711307, 0x1ffd4ffb, 
+	0x09963e74, 0x6121e6c2, 0x39de5391, 0xee0f8fe6, 0xc779e395, 0x6f94fac9, 0xb4e678d3, 0x664c5c13, 
+	0xe5244e26, 0x2cfad200, 0xcdf678ff, 0x7e4e75df, 0x20317918, 0x9f274593, 0x6f58664e, 0x8c32319f, 
+	0x7b94f916, 0x550533c3, 0x761ee44c, 0x300c2e88, 0x5627aea4, 0xa7527098, 0x4a3cc933, 0x4e717354, 
+	0xf4850ba5, 0x8e6a2d19, 0x1fb81586, 0x74e1d03a, 0x26c1c8a1, 0x06890caa, 0xb1da35be, 0x9a65dc60, 
+	0x3064ce14, 0x859df497, 0xd5c55639, 0xfb0b9c1f, 0xd25ef2e9, 0x46f1ae81, 0xfebf4f1f, 0x749913d3, 
+	0xe74c592a, 0x1c8998b2, 0x6ffdd0f0, 0x3f9bfcbc, 0xa9e868fc, 0x3fcf23f3, 0xe7f1da57, 0x3f3c31f9, 
+	0xcf14f5c9, 0x8fa7c81e, 0x8cc9b3a7, 0x917c919c, 0x983a7507, 0x3fb4b2f5, 0xeb6ac50a, 0xca48c6f7, 
+	0x07633ac9, 0xb3ea3973, 0xf58d2d2b, 0x352b3f5e, 0x8ecbab65, 0x0119b7ab, 0xf3e78c30, 0xa6af87b9, 
+	0xfddef7ee, 0xe5551ece, 0xafc27690, 0x65c7aaa8, 0xfbe37375, 0x6f50c91e, 0x773bf939, 0x9bc6f87c, 
+	0xa35729f6, 0xaef0ae99, 0x256f73b6, 0x00957ff8, 0x7d46b8f8, 0x7e7fc53e, 0x5f343232, 0x75de5ead, 
+	0xc1ef61ad, 0xf59d3773, 0x3950da6a, 0x35c4aa5e, 0x8a503e1e, 0x3adebfd7, 0xb2c778cb, 0x7f9dfc62, 
+	0x97c3d8ff, 0x8ef74db6, 0x61ecbaff, 0xd5fa7db5, 0xb2fb7024, 0xd9f6ace2, 0xab34a077, 0xece692cb, 
+	0x9d93d74c, 0xfe5d9cd0, 0x4757ab7a, 0xe1efef9b, 0xbf4db7f7, 0x68719a4a, 0x498126f6, 0x7c36fe33, 
+	0x461e3348, 0x68ce20d9, 0x5a338825, 0x568ce209, 0x95a33882, 0x2568ce20, 0x095a3388, 0x82568ce2, 
+	0xc44d3d38, 0x7104ad19, 0x9c412b46, 0xf4e2269e, 0xa7a71134, 0x67c93889, 0x6bf4f0fe, 0xec3ffb7d, 
+	0x937ab0db, 0x4e8bbc62, 0x19fabd0b, 0x5b82433a, 0x075e69b0, 0x6132f9ac, 0x9b0c23e3, 0x69b0f5e6, 
+	0xcd361cbe, 0xf34d83af, 0x8f34d806, 0x1479a6c0, 0x87afcd36, 0x6c18f34d, 0x6360879a, 0x9fa74cde, 
+	0x1d7c06ca, 0x4af0166c, 0xcd87af83, 0xf0655e02, 0xc059b00d, 0xadf8359f, 0x4dc059b0, 0x360dbf06, 
+	0x0673f80b, 0x059b08df, 0x6fc1837c, 0x5e02cd87, 0xd816f06d, 0x0635e02c, 0x059b04df, 0xefc1a37c, 
+	0xbe02cd80, 0xb0ade0c9, 0x1b37c059, 0x166c337c, 0xdf062df0, 0xdc059b02, 0x7166f068, 0xb9d2d6bf, 
+	0x826dce95, 0x382ede33, 0x19c136e3, 0xe33829df, 0x6e33821d, 0x4ef19c17, 0x087719c1, 0x7053b8ce, 
+	0x6704bbc6, 0x977825dc, 0x816b5f98, 0x1bbe0b77, 0x9592aa6d, 0x5990fe2f, 0xd25cbcf0, 0xb7df7d78, 
+	0x9f46a7ec, 0xe17666e9, 0x7dced644, 0xf1995cfb, 0xf6eda1e0, 0x78f667b3, 0x2607facf, 0xf479ee9f, 
+	0xd5e045bb, 0x6fb686e5, 0xddffb878, 0x7a707746, 0x7f4fc3c4, 0xf4cdd47f, 0xa6930f2a, 0xd0339a4b, 
+	0x07b34974, 0xda692e9a, 0x26932cd0, 0xd21eeaf0, 0x9369a1b4, 0x9b4d0da6, 0x60448d34, 0x33cc45ca, 
+	0x6515c7c2, 0x8ae9a15d, 0x83115cba, 0x8b2b622b, 0x5b45bb98, 0x5b46d16c, 0x7d16ddb4, 0xb2be8b62, 
+	0x98f61f45, 0x5c652f31, 0x1ed4c87b, 0xcc87b532, 0x44c87852, 0x87eedd16, 0x084ce7bd, 0x87e93f65, 
+	0xdea666f9, 0xb3feed9b, 0x2da69e4b, 0x5f5e2238, 0x448df95e, 0xe783dd58, 0x2758b377, 0x87573af4, 
+	0xb58c2c35, 0xa4d6396a, 0x513dac06, 0x8c3131ac, 0x135815cd, 0x376e6156, 0x80de8e61, 0x7306b6b9, 
+	0xfd8c26e6, 0xffef705b, 0xf04675df, 0x0f57b05b, 0xb2a52f7b, 0x5179b5ce, 0xced6ede0, 0xe45895bd, 
+	0x7c35c54d, 0xeeaea051, 0xd7b8c145, 0x85a12ddf, 0x274a972a, 0x9ec71a13, 0xa10a254f, 0x1c69b7a2, 
+	0xb89c3b5d, 0xe1e8ba54, 0x24b5cfb3, 0xe3274e7e, 0x08ed917f, 0x413c635d, 0xf5065cbe, 0x4eb5a4bf, 
+	0xdab38a87, 0xe2e941fe, 0x49fc28ec, 0x742cee63, 0x7dee6348, 0x5cef93e8, 0xc692f516, 0xf57ecfdc, 
+	0x7db497d3, 0xcf10b492, 0xd17b3a9c, 0xf9d225c3, 0xff8c9d05, 0xc5acfa49, 0x36f924f8, 0xb7bc1952, 
+	0xc62d62e9, 0xf4e3f75f, 0xc5ece870, 0x93f861f8, 0x9d04a246, 0xbdf18a31, 0x1a4faf92, 0x57a81389, 
+	0x6fe7db1f, 0x862f0d6d, 0x36a9636b, 0x1c1bfe96, 0xead38f56, 0x9c13f474, 0x1c8a37a3, 0xba39195d, 
+	0x65727232, 0xc8cae0e4, 0x639195b9, 0x56a7232b, 0x8cad0e46, 0x3919599c, 0x740dceb2, 0xe46edc4e, 
+	0xd45f3ac0, 0x234eef39, 0xa3f9d607, 0x8c3b79ce, 0x93e7581c, 0x44ede73a, 0x2ef9206e, 0x66e02cd8, 
+	0x66c17783, 0xf833af01, 0xc059b05d, 0x1bbe0deb, 0x83780b36, 0xcd86efc1, 0xe0d5be02, 0x80b3607b, 
+	0x3df8336f, 0x1bc059b0, 0x9b0dde0d, 0xc1bb7c05, 0x80b3607b, 0xc36e0c5b, 0x326f0166, 0x166c2f78, 
+	0x8f061df0, 0xb70166c3, 0x9b013c1a, 0xe0d9bc05, 0xc059b07d, 0x0fde0c5b, 0xd5bc059b, 0xb3617be0, 
+	0x7c19b780, 0x0679ec40, 0x7c91c7b0, 0x0681ec50, 0xfc91e7b1, 0xba27b15e, 0xc9207b17, 0x691ec487, 
+	0xf25b6308, 0x79de3176, 0x3a79f4bf, 0xe33820bf, 0xef19c161, 0x7ef19c13, 0x101f19c1, 0x0517f19c, 
+	0xc125fc67, 0x9c141f19, 0x8ce088f1, 0xf19c13ef, 0x3e3382fd, 0x07e33824, 0x65fc6704, 0x457f19c1, 
+	0x155fc670, 0x04d7f19c, 0x70587c67, 0x3382a3c6, 0xe338223e, 0x1f19c131, 0x52719c15, 0x7cfa24f0, 
+	0xd59117d1, 0xfda5d892, 0xe02969e2, 0xb71fbffd, 0xdfebfe5f, 0xe5fede67, 0xbb807a5f, 0x46c64719, 
+	0x5f9b96ec, 0xf1dc61ec, 0xdafda744, 0xcc66c440, 0xae3399ff, 0xc7eceba3, 0x7971cb98, 0xc98d19e0, 
+	0xa87daca7, 0xd2cbabac, 0xd26b577f, 0x750eb775, 0xc7573951, 0x7c233c00, 0x2baca2ca, 0x97515d34, 
+	0x4570622b, 0xf16e1e6c, 0x5b457663, 0x5746d15c, 0x25d75db7, 0xa58f5337, 0xcb78798e, 0xe27adff0, 
+	0x6fb61ccf, 0x187a67cc, 0x5eedfe1f, 0x0ba97bfb, 0x9be57e1e, 0x193e6c1b, 0x31af8db3, 0xc32e5f66, 
+	0x5ec16b58, 0x2ff276d6, 0x70d27f6b, 0xdcd90eb5, 0x5f27d093, 0x1a4bd757, 0x84a72f7c, 0x59fdacbd, 
+	0x46bceb4b, 0x4577d0a7, 0xc788aebd, 0x22ba7115, 0xcbb4577e, 0x093dedd5, 0x8dfd8e7d, 0x3f7afc87, 
+	0x3ffe2f4e, 0x624b5c0a, 0x2d6c496b, 0xb125ad89, 0xd3f624b5, 0xe95ec49e, 0xd638c743, 0x829fa3a9, 
+	0x0fb51d0f, 0x9887fe31, 0xb4bfd863, 0x621f847f, 0xdec7c59a, 0xecc3e20d, 0x7511f146, 0xa9e0f893, 
+	0x156e5c3f, 0xc4db201f, 0x7b8fc5c7, 0xf7e2221b, 0x0000001f
+};
+
+static const UINT g_DXUTArrowMeshSrcDataSizeInBytes = 2193;
+
+//-----------------------------------------------------------------------------
+HRESULT DXUTCreateGUITextureFromInternalArray( LPDIRECT3DDEVICE9 pd3dDevice, IDirect3DTexture9** ppTexture, D3DXIMAGE_INFO* pInfo )
+{
+    return D3DXCreateTextureFromFileInMemoryEx( pd3dDevice, g_DXUTGUITextureSrcData, g_DXUTGUITextureSrcDataSizeInBytes, 
+                                                D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, 
+                                                D3DX_DEFAULT, D3DX_DEFAULT, 0, pInfo, NULL, ppTexture );
+}
+
+//-----------------------------------------------------------------------------
+HRESULT DXUTCreateArrowMeshFromInternalArray( LPDIRECT3DDEVICE9 pd3dDevice, ID3DXMesh** ppMesh )
+{
+    return D3DXLoadMeshFromXInMemory( g_DXUTArrowMeshSrcData, g_DXUTArrowMeshSrcDataSizeInBytes, 
+                                      D3DXMESH_MANAGED, pd3dDevice, NULL, NULL, NULL, NULL, ppMesh );
+}
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTmisc.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTmisc.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTmisc.cpp	(revision 1481)
@@ -0,0 +1,3313 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTMisc.cpp
+//
+// Shortcut macros and functions for using DX objects
+//
+// Copyright (c) Microsoft Corporation. All rights reserved
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+#define DXUT_GAMEPAD_TRIGGER_THRESHOLD      30
+#define DXUT_INPUT_DEADZONE                 ( 0.24f * FLOAT(0x7FFF) )  // Default to 24% of the +/- 32767 range.   This is a reasonable default value but can be altered if needed.
+#undef min // use __min instead
+#undef max // use __max instead
+
+//--------------------------------------------------------------------------------------
+// Global/Static Members
+//--------------------------------------------------------------------------------------
+CDXUTResourceCache& DXUTGetGlobalResourceCache()
+{
+    // Using an accessor function gives control of the construction order
+    static CDXUTResourceCache cache;
+    return cache;
+}
+CDXUTTimer* DXUTGetGlobalTimer()
+{
+    // Using an accessor function gives control of the construction order
+    static CDXUTTimer timer;
+    return &timer;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal functions forward declarations
+//--------------------------------------------------------------------------------------
+bool DXUTFindMediaSearchTypicalDirs( WCHAR* strSearchPath, int cchSearch, LPCWSTR strLeaf, WCHAR* strExePath, WCHAR* strExeName );
+bool DXUTFindMediaSearchParentDirs( WCHAR* strSearchPath, int cchSearch, WCHAR* strStartAt, WCHAR* strLeafName );
+INT_PTR CALLBACK DisplaySwitchToREFWarningProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
+
+
+//--------------------------------------------------------------------------------------
+// Shared code for samples to ask user if they want to use a REF device or quit
+//--------------------------------------------------------------------------------------
+void DXUTDisplaySwitchingToREFWarning()
+{
+    if( DXUTGetShowMsgBoxOnError() )
+    {
+        // Open the appropriate registry key
+        DWORD dwSkipWarning = 0;
+        HKEY hKey;
+        LONG lResult = RegOpenKeyEx( HKEY_CURRENT_USER, L"Software\\Microsoft\\DirectX 9.0 SDK", 0, KEY_READ, &hKey );
+        if( ERROR_SUCCESS == lResult ) 
+        {
+            DWORD dwType;
+            DWORD dwSize = sizeof(DWORD);
+            lResult = RegQueryValueEx( hKey, L"Skip Warning On REF", NULL, &dwType, (BYTE*)&dwSkipWarning, &dwSize );
+            RegCloseKey( hKey );
+        }
+
+        if( dwSkipWarning == 0 )
+        {
+            // Compact code to create a custom dialog box without using a template in a resource file.
+            // If this dialog were in a .rc file, this would be a lot simpler but every sample calling this function would
+            // need a copy of the dialog in its own .rc file. Also MessageBox API could be used here instead, but 
+            // the MessageBox API is simpler to call but it can't provide a "Don't show again" checkbox
+            typedef struct { DLGITEMTEMPLATE a; WORD b; WORD c; WORD d; WORD e; WORD f; } DXUT_DLG_ITEM; 
+            typedef struct { DLGTEMPLATE a; WORD b; WORD c; WCHAR d[2]; WORD e; WCHAR f[14]; DXUT_DLG_ITEM i1; DXUT_DLG_ITEM i2; DXUT_DLG_ITEM i3; DXUT_DLG_ITEM i4; DXUT_DLG_ITEM i5; } DXUT_DLG_DATA; 
+
+            DXUT_DLG_DATA dtp = 
+            {                                                                                                                                                  
+                {WS_CAPTION|WS_POPUP|WS_VISIBLE|WS_SYSMENU|DS_ABSALIGN|DS_3DLOOK|DS_SETFONT|DS_MODALFRAME|DS_CENTER,0,5,0,0,269,82},0,0,L" ",8,L"MS Sans Serif", 
+                {{WS_CHILD|WS_VISIBLE|SS_ICON|SS_CENTERIMAGE,0,7,7,24,24,0x100},0xFFFF,0x0082,0,0,0}, // icon
+                {{WS_CHILD|WS_VISIBLE,0,40,7,230,25,0x101},0xFFFF,0x0082,0,0,0}, // static text
+                {{WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,0,80,39,50,14,IDYES},0xFFFF,0x0080,0,0,0}, // Yes button
+                {{WS_CHILD|WS_VISIBLE,0,133,39,50,14,IDNO},0xFFFF,0x0080,0,0,0}, // No button
+                {{WS_CHILD|WS_VISIBLE|BS_CHECKBOX,0,7,59,70,16,IDIGNORE},0xFFFF,0x0080,0,0,0}, // checkbox
+            }; 
+
+            int nResult = (int) DialogBoxIndirect( DXUTGetHINSTANCE(), (DLGTEMPLATE*)&dtp, DXUTGetHWND(), DisplaySwitchToREFWarningProc ); 
+
+            if( (nResult & 0x80) == 0x80 ) // "Don't show again" checkbox was checked
+            {
+                lResult = RegOpenKeyEx( HKEY_CURRENT_USER, L"Software\\Microsoft\\DirectX 9.0 SDK", 0, KEY_WRITE, &hKey );
+                if( ERROR_SUCCESS == lResult ) 
+                {
+                    dwSkipWarning = 1;
+                    RegSetValueEx( hKey, L"Skip Warning On REF", 0, REG_DWORD, (BYTE*)&dwSkipWarning, sizeof(DWORD) );
+                    RegCloseKey( hKey );
+                }
+            }
+
+            // User choose not to continue
+            if( (nResult & 0x0F) == IDNO )
+                DXUTShutdown(1);
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// MsgProc for DXUTDisplaySwitchingToREFWarning() dialog box
+//--------------------------------------------------------------------------------------
+INT_PTR CALLBACK DisplaySwitchToREFWarningProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) 
+{ 
+    switch (message) 
+    { 
+        case WM_INITDIALOG:
+            // Easier to set text here than in the DLGITEMTEMPLATE
+            SetWindowText( hDlg, DXUTGetWindowTitle() );
+            SendMessage( GetDlgItem(hDlg, 0x100), STM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadIcon(0, IDI_QUESTION));
+            SetDlgItemText( hDlg, 0x101, L"Switching to the Direct3D reference rasterizer, a software device\nthat implements the entire Direct3D feature set, but runs very slowly.\nDo you wish to continue?" ); 
+            SetDlgItemText( hDlg, IDYES, L"&Yes" );
+            SetDlgItemText( hDlg, IDNO, L"&No" );
+            SetDlgItemText( hDlg, IDIGNORE, L"&Don't show again" );
+            break;
+
+        case WM_COMMAND: 
+            switch (LOWORD(wParam)) 
+            { 
+                case IDIGNORE: CheckDlgButton( hDlg, IDIGNORE, (IsDlgButtonChecked( hDlg, IDIGNORE ) == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED ); EnableWindow( GetDlgItem( hDlg, IDNO ), (IsDlgButtonChecked( hDlg, IDIGNORE ) != BST_CHECKED) ); break;
+                case IDNO: EndDialog(hDlg, (IsDlgButtonChecked( hDlg, IDIGNORE ) == BST_CHECKED) ? IDNO|0x80 : IDNO|0x00 ); return TRUE; 
+                case IDCANCEL:
+                case IDYES: EndDialog(hDlg, (IsDlgButtonChecked( hDlg, IDIGNORE ) == BST_CHECKED) ? IDYES|0x80 : IDYES|0x00 ); return TRUE; 
+            } 
+            break;
+    } 
+    return FALSE; 
+} 
+
+
+//--------------------------------------------------------------------------------------
+CDXUTTimer::CDXUTTimer()
+{
+    m_bUsingQPF         = false;
+    m_bTimerStopped     = true;
+    m_llQPFTicksPerSec  = 0;
+
+    m_llStopTime        = 0;
+    m_llLastElapsedTime = 0;
+    m_llBaseTime        = 0;
+
+    // Use QueryPerformanceFrequency() to get frequency of timer.  
+    LARGE_INTEGER qwTicksPerSec;
+    m_bUsingQPF = (bool) (QueryPerformanceFrequency( &qwTicksPerSec ) != 0);
+    m_llQPFTicksPerSec = qwTicksPerSec.QuadPart;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTTimer::Reset()
+{
+    if( !m_bUsingQPF )
+        return;
+
+    // Get either the current time or the stop time
+    LARGE_INTEGER qwTime;
+    if( m_llStopTime != 0 )
+        qwTime.QuadPart = m_llStopTime;
+    else
+        QueryPerformanceCounter( &qwTime );
+
+    m_llBaseTime        = qwTime.QuadPart;
+    m_llLastElapsedTime = qwTime.QuadPart;
+    m_llStopTime        = 0;
+    m_bTimerStopped     = FALSE;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTTimer::Start()
+{
+    if( !m_bUsingQPF )
+        return;
+
+    // Get the current time
+    LARGE_INTEGER qwTime;
+    QueryPerformanceCounter( &qwTime );
+
+    if( m_bTimerStopped )
+        m_llBaseTime += qwTime.QuadPart - m_llStopTime;
+    m_llStopTime = 0;
+    m_llLastElapsedTime = qwTime.QuadPart;
+    m_bTimerStopped = FALSE;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTTimer::Stop()
+{
+    if( !m_bUsingQPF )
+        return;
+
+    if( !m_bTimerStopped )
+    {
+        // Get either the current time or the stop time
+        LARGE_INTEGER qwTime;
+        if( m_llStopTime != 0 )
+            qwTime.QuadPart = m_llStopTime;
+        else
+            QueryPerformanceCounter( &qwTime );
+
+        m_llStopTime = qwTime.QuadPart;
+        m_llLastElapsedTime = qwTime.QuadPart;
+        m_bTimerStopped = TRUE;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTTimer::Advance()
+{
+    if( !m_bUsingQPF )
+        return;
+
+    m_llStopTime += m_llQPFTicksPerSec/10;
+}
+
+
+//--------------------------------------------------------------------------------------
+double CDXUTTimer::GetAbsoluteTime()
+{
+    if( !m_bUsingQPF )
+        return -1.0;
+
+    // Get either the current time or the stop time
+    LARGE_INTEGER qwTime;
+    if( m_llStopTime != 0 )
+        qwTime.QuadPart = m_llStopTime;
+    else
+        QueryPerformanceCounter( &qwTime );
+
+    double fTime = qwTime.QuadPart / (double) m_llQPFTicksPerSec;
+
+    return fTime;
+}
+
+
+//--------------------------------------------------------------------------------------
+double CDXUTTimer::GetTime()
+{
+    if( !m_bUsingQPF )
+        return -1.0;
+
+    // Get either the current time or the stop time
+    LARGE_INTEGER qwTime;
+    if( m_llStopTime != 0 )
+        qwTime.QuadPart = m_llStopTime;
+    else
+        QueryPerformanceCounter( &qwTime );
+
+    double fAppTime = (double) ( qwTime.QuadPart - m_llBaseTime ) / (double) m_llQPFTicksPerSec;
+
+    return fAppTime;
+}
+
+
+//--------------------------------------------------------------------------------------
+double CDXUTTimer::GetElapsedTime()
+{
+    if( !m_bUsingQPF )
+        return -1.0;
+
+    // Get either the current time or the stop time
+    LARGE_INTEGER qwTime;
+    if( m_llStopTime != 0 )
+        qwTime.QuadPart = m_llStopTime;
+    else
+        QueryPerformanceCounter( &qwTime );
+
+    double fElapsedTime = (double) ( qwTime.QuadPart - m_llLastElapsedTime ) / (double) m_llQPFTicksPerSec;
+    m_llLastElapsedTime = qwTime.QuadPart;
+
+    return fElapsedTime;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTTimer::IsStopped()
+{
+    return m_bTimerStopped;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns pointer to static media search buffer
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTMediaSearchPath()
+{
+    static WCHAR s_strMediaSearchPath[MAX_PATH] = {0};
+    return s_strMediaSearchPath;
+
+}   
+
+//--------------------------------------------------------------------------------------
+LPCWSTR DXUTGetMediaSearchPath()
+{
+    return DXUTMediaSearchPath();
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT DXUTSetMediaSearchPath( LPCWSTR strPath )
+{
+    HRESULT hr;
+
+    WCHAR* s_strSearchPath = DXUTMediaSearchPath();
+
+    hr = StringCchCopy( s_strSearchPath, MAX_PATH, strPath );   
+    if( SUCCEEDED(hr) )
+    {
+        // append slash if needed
+        size_t ch;
+        hr = StringCchLength( s_strSearchPath, MAX_PATH, &ch );
+        if( SUCCEEDED(hr) && s_strSearchPath[ch-1] != L'\\')
+        {
+            hr = StringCchCat( s_strSearchPath, MAX_PATH, L"\\" );
+        }
+    }
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Tries to find the location of a SDK media file
+//       cchDest is the size in WCHARs of strDestPath.  Be careful not to 
+//       pass in sizeof(strDest) on UNICODE builds.
+//--------------------------------------------------------------------------------------
+HRESULT DXUTFindDXSDKMediaFileCch( WCHAR* strDestPath, int cchDest, LPCWSTR strFilename )
+{
+    bool bFound;
+    WCHAR strSearchFor[MAX_PATH];
+    
+    if( NULL==strFilename || strFilename[0] == 0 || NULL==strDestPath || cchDest < 10 )
+        return E_INVALIDARG;
+
+    // Get the exe name, and exe path
+    WCHAR strExePath[MAX_PATH] = {0};
+    WCHAR strExeName[MAX_PATH] = {0};
+    WCHAR* strLastSlash = NULL;
+    GetModuleFileName( NULL, strExePath, MAX_PATH );
+    strExePath[MAX_PATH-1]=0;
+    strLastSlash = wcsrchr( strExePath, TEXT('\\') );
+    if( strLastSlash )
+    {
+        StringCchCopy( strExeName, MAX_PATH, &strLastSlash[1] );
+
+        // Chop the exe name from the exe path
+        *strLastSlash = 0;
+
+        // Chop the .exe from the exe name
+        strLastSlash = wcsrchr( strExeName, TEXT('.') );
+        if( strLastSlash )
+            *strLastSlash = 0;
+    }
+
+    // Typical directories:
+    //      .\
+    //      ..\
+    //      ..\..\
+    //      %EXE_DIR%\
+    //      %EXE_DIR%\..\
+    //      %EXE_DIR%\..\..\
+    //      %EXE_DIR%\..\%EXE_NAME%
+    //      %EXE_DIR%\..\..\%EXE_NAME%
+
+    // Typical directory search
+    bFound = DXUTFindMediaSearchTypicalDirs( strDestPath, cchDest, strFilename, strExePath, strExeName );
+    if( bFound )
+        return S_OK;
+
+    // Typical directory search again, but also look in a subdir called "\media\" 
+    StringCchPrintf( strSearchFor, MAX_PATH, L"media\\%s", strFilename ); 
+    bFound = DXUTFindMediaSearchTypicalDirs( strDestPath, cchDest, strSearchFor, strExePath, strExeName );
+    if( bFound )
+        return S_OK;
+
+    WCHAR strLeafName[MAX_PATH] = {0};
+
+    // Search all parent directories starting at .\ and using strFilename as the leaf name
+    StringCchCopy( strLeafName, MAX_PATH, strFilename ); 
+    bFound = DXUTFindMediaSearchParentDirs( strDestPath, cchDest, L".", strLeafName );
+    if( bFound )
+        return S_OK;
+
+    // Search all parent directories starting at the exe's dir and using strFilename as the leaf name
+    bFound = DXUTFindMediaSearchParentDirs( strDestPath, cchDest, strExePath, strLeafName );
+    if( bFound )
+        return S_OK;
+
+    // Search all parent directories starting at .\ and using "media\strFilename" as the leaf name
+    StringCchPrintf( strLeafName, MAX_PATH, L"media\\%s", strFilename ); 
+    bFound = DXUTFindMediaSearchParentDirs( strDestPath, cchDest, L".", strLeafName );
+    if( bFound )
+        return S_OK;
+
+    // Search all parent directories starting at the exe's dir and using "media\strFilename" as the leaf name
+    bFound = DXUTFindMediaSearchParentDirs( strDestPath, cchDest, strExePath, strLeafName );
+    if( bFound )
+        return S_OK;
+
+    // On failure, return the file as the path but also return an error code
+    StringCchCopy( strDestPath, cchDest, strFilename );
+
+    return DXUTERR_MEDIANOTFOUND;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Search a set of typical directories
+//--------------------------------------------------------------------------------------
+bool DXUTFindMediaSearchTypicalDirs( WCHAR* strSearchPath, int cchSearch, LPCWSTR strLeaf, 
+                                     WCHAR* strExePath, WCHAR* strExeName )
+{
+    // Typical directories:
+    //      .\
+    //      ..\
+    //      ..\..\
+    //      %EXE_DIR%\
+    //      %EXE_DIR%\..\
+    //      %EXE_DIR%\..\..\
+    //      %EXE_DIR%\..\%EXE_NAME%
+    //      %EXE_DIR%\..\..\%EXE_NAME%
+    //      DXSDK media path
+
+    // Search in .\  
+    StringCchCopy( strSearchPath, cchSearch, strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in ..\  
+    StringCchPrintf( strSearchPath, cchSearch, L"..\\%s", strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in ..\..\ 
+    StringCchPrintf( strSearchPath, cchSearch, L"..\\..\\%s", strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in ..\..\ 
+    StringCchPrintf( strSearchPath, cchSearch, L"..\\..\\%s", strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in the %EXE_DIR%\ 
+    StringCchPrintf( strSearchPath, cchSearch, L"%s\\%s", strExePath, strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in the %EXE_DIR%\..\ 
+    StringCchPrintf( strSearchPath, cchSearch, L"%s\\..\\%s", strExePath, strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in the %EXE_DIR%\..\..\ 
+    StringCchPrintf( strSearchPath, cchSearch, L"%s\\..\\..\\%s", strExePath, strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in "%EXE_DIR%\..\%EXE_NAME%\".  This matches the DirectX SDK layout
+    StringCchPrintf( strSearchPath, cchSearch, L"%s\\..\\%s\\%s", strExePath, strExeName, strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in "%EXE_DIR%\..\..\%EXE_NAME%\".  This matches the DirectX SDK layout
+    StringCchPrintf( strSearchPath, cchSearch, L"%s\\..\\..\\%s\\%s", strExePath, strExeName, strLeaf ); 
+    if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+        return true;
+
+    // Search in media search dir 
+    WCHAR* s_strSearchPath = DXUTMediaSearchPath();
+    if( s_strSearchPath[0] != 0 )
+    {
+        StringCchPrintf( strSearchPath, cchSearch, L"%s%s", s_strSearchPath, strLeaf ); 
+        if( GetFileAttributes( strSearchPath ) != 0xFFFFFFFF )
+            return true;
+    }
+
+    return false;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Search parent directories starting at strStartAt, and appending strLeafName
+// at each parent directory.  It stops at the root directory.
+//--------------------------------------------------------------------------------------
+bool DXUTFindMediaSearchParentDirs( WCHAR* strSearchPath, int cchSearch, WCHAR* strStartAt, WCHAR* strLeafName )
+{
+    WCHAR strFullPath[MAX_PATH] = {0};
+    WCHAR strFullFileName[MAX_PATH] = {0};
+    WCHAR strSearch[MAX_PATH] = {0};
+    WCHAR* strFilePart = NULL;
+
+    GetFullPathName( strStartAt, MAX_PATH, strFullPath, &strFilePart );
+    if( strFilePart == NULL )
+        return false;
+   
+    while( strFilePart != NULL && *strFilePart != '\0' )
+    {
+        StringCchPrintf( strFullFileName, MAX_PATH, L"%s\\%s", strFullPath, strLeafName ); 
+        if( GetFileAttributes( strFullFileName ) != 0xFFFFFFFF )
+        {
+            StringCchCopy( strSearchPath, cchSearch, strFullFileName ); 
+            return true;
+        }
+
+        StringCchPrintf( strSearch, MAX_PATH, L"%s\\..", strFullPath ); 
+        GetFullPathName( strSearch, MAX_PATH, strFullPath, &strFilePart );
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTResourceCache
+//--------------------------------------------------------------------------------------
+
+
+CDXUTResourceCache::~CDXUTResourceCache()
+{
+    OnDestroyDevice();
+
+    m_TextureCache.RemoveAll();
+    m_EffectCache.RemoveAll();
+    m_FontCache.RemoveAll();
+}
+
+
+HRESULT CDXUTResourceCache::CreateTextureFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, LPDIRECT3DTEXTURE9 *ppTexture )
+{
+    return CreateTextureFromFileEx( pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT,
+                                    0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT,
+                                    0, NULL, NULL, ppTexture );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Width, UINT Height, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DTEXTURE9 *ppTexture )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_TextureCache.GetSize(); ++i )
+    {
+        DXUTCache_Texture &Entry = m_TextureCache[i];
+        if( Entry.Location == DXUTCACHE_LOCATION_FILE &&
+            !lstrcmpW( Entry.wszSource, pSrcFile ) &&
+            Entry.Width == Width &&
+            Entry.Height == Height &&
+            Entry.MipLevels == MipLevels &&
+            Entry.Usage == Usage &&
+            Entry.Format == Format &&
+            Entry.Pool == Pool &&
+            Entry.Type == D3DRTYPE_TEXTURE )
+        {
+            // A match is found. Obtain the IDirect3DTexture9 interface and return that.
+            return Entry.pTexture->QueryInterface( IID_IDirect3DTexture9, (LPVOID*)ppTexture );
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateTextureFromFileEx( pDevice, pSrcFile, Width, Height, MipLevels, Usage, Format,
+                                      Pool, Filter, MipFilter, ColorKey, pSrcInfo, pPalette, ppTexture );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Texture NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_FILE;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcFile );
+    NewEntry.Width = Width;
+    NewEntry.Height = Height;
+    NewEntry.MipLevels = MipLevels;
+    NewEntry.Usage = Usage;
+    NewEntry.Format = Format;
+    NewEntry.Pool = Pool;
+    NewEntry.Type = D3DRTYPE_TEXTURE;
+    (*ppTexture)->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&NewEntry.pTexture );
+
+    m_TextureCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateTextureFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, LPDIRECT3DTEXTURE9 *ppTexture )
+{
+    return CreateTextureFromResourceEx( pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT,
+                                        D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT,
+                                        D3DX_DEFAULT, 0, NULL, NULL, ppTexture );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateTextureFromResourceEx( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, UINT Width, UINT Height, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DTEXTURE9 *ppTexture )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_TextureCache.GetSize(); ++i )
+    {
+        DXUTCache_Texture &Entry = m_TextureCache[i];
+        if( Entry.Location == DXUTCACHE_LOCATION_RESOURCE &&
+            Entry.hSrcModule == hSrcModule &&
+            !lstrcmpW( Entry.wszSource, pSrcResource ) &&
+            Entry.Width == Width &&
+            Entry.Height == Height &&
+            Entry.MipLevels == MipLevels &&
+            Entry.Usage == Usage &&
+            Entry.Format == Format &&
+            Entry.Pool == Pool &&
+            Entry.Type == D3DRTYPE_TEXTURE )
+        {
+            // A match is found. Obtain the IDirect3DTexture9 interface and return that.
+            return Entry.pTexture->QueryInterface( IID_IDirect3DTexture9, (LPVOID*)ppTexture );
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateTextureFromResourceEx( pDevice, hSrcModule, pSrcResource, Width, Height, MipLevels, Usage,
+                                          Format, Pool, Filter, MipFilter, ColorKey, pSrcInfo, pPalette, ppTexture );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Texture NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_RESOURCE;
+    NewEntry.hSrcModule = hSrcModule;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcResource );
+    NewEntry.Width = Width;
+    NewEntry.Height = Height;
+    NewEntry.MipLevels = MipLevels;
+    NewEntry.Usage = Usage;
+    NewEntry.Format = Format;
+    NewEntry.Pool = Pool;
+    NewEntry.Type = D3DRTYPE_TEXTURE;
+    (*ppTexture)->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&NewEntry.pTexture );
+
+    m_TextureCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateCubeTextureFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture )
+{
+    return CreateCubeTextureFromFileEx( pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, 0,
+                                        D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT,
+                                        0, NULL, NULL, ppCubeTexture );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateCubeTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Size, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_TextureCache.GetSize(); ++i )
+    {
+        DXUTCache_Texture &Entry = m_TextureCache[i];
+        if( Entry.Location == DXUTCACHE_LOCATION_FILE &&
+            !lstrcmpW( Entry.wszSource, pSrcFile ) &&
+            Entry.Width == Size &&
+            Entry.MipLevels == MipLevels &&
+            Entry.Usage == Usage &&
+            Entry.Format == Format &&
+            Entry.Pool == Pool &&
+            Entry.Type == D3DRTYPE_CUBETEXTURE )
+        {
+            // A match is found. Obtain the IDirect3DCubeTexture9 interface and return that.
+            return Entry.pTexture->QueryInterface( IID_IDirect3DCubeTexture9, (LPVOID*)ppCubeTexture );
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateCubeTextureFromFileEx( pDevice, pSrcFile, Size, MipLevels, Usage, Format, Pool, Filter,
+                                          MipFilter, ColorKey, pSrcInfo, pPalette, ppCubeTexture );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Texture NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_FILE;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcFile );
+    NewEntry.Width = Size;
+    NewEntry.MipLevels = MipLevels;
+    NewEntry.Usage = Usage;
+    NewEntry.Format = Format;
+    NewEntry.Pool = Pool;
+    NewEntry.Type = D3DRTYPE_CUBETEXTURE;
+    (*ppCubeTexture)->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&NewEntry.pTexture );
+
+    m_TextureCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateCubeTextureFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture )
+{
+    return CreateCubeTextureFromResourceEx( pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT,
+                                            0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT,
+                                            0, NULL, NULL, ppCubeTexture );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateCubeTextureFromResourceEx( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, UINT Size, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_TextureCache.GetSize(); ++i )
+    {
+        DXUTCache_Texture &Entry = m_TextureCache[i];
+        if( Entry.Location == DXUTCACHE_LOCATION_RESOURCE &&
+            Entry.hSrcModule == hSrcModule &&
+            !lstrcmpW( Entry.wszSource, pSrcResource ) &&
+            Entry.Width == Size &&
+            Entry.MipLevels == MipLevels &&
+            Entry.Usage == Usage &&
+            Entry.Format == Format &&
+            Entry.Pool == Pool &&
+            Entry.Type == D3DRTYPE_CUBETEXTURE )
+        {
+            // A match is found. Obtain the IDirect3DCubeTexture9 interface and return that.
+            return Entry.pTexture->QueryInterface( IID_IDirect3DCubeTexture9, (LPVOID*)ppCubeTexture );
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateCubeTextureFromResourceEx( pDevice, hSrcModule, pSrcResource, Size, MipLevels, Usage, Format,
+                                              Pool, Filter, MipFilter, ColorKey, pSrcInfo, pPalette, ppCubeTexture );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Texture NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_RESOURCE;
+    NewEntry.hSrcModule = hSrcModule;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcResource );
+    NewEntry.Width = Size;
+    NewEntry.MipLevels = MipLevels;
+    NewEntry.Usage = Usage;
+    NewEntry.Format = Format;
+    NewEntry.Pool = Pool;
+    NewEntry.Type = D3DRTYPE_CUBETEXTURE;
+    (*ppCubeTexture)->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&NewEntry.pTexture );
+
+    m_TextureCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateVolumeTextureFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, LPDIRECT3DVOLUMETEXTURE9 *ppVolumeTexture )
+{
+    return CreateVolumeTextureFromFileEx( pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT,
+                                          0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT,
+                                          0, NULL, NULL, ppVolumeTexture );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateVolumeTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Width, UINT Height, UINT Depth, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DVOLUMETEXTURE9 *ppTexture )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_TextureCache.GetSize(); ++i )
+    {
+        DXUTCache_Texture &Entry = m_TextureCache[i];
+        if( Entry.Location == DXUTCACHE_LOCATION_FILE &&
+            !lstrcmpW( Entry.wszSource, pSrcFile ) &&
+            Entry.Width == Width &&
+            Entry.Height == Height &&
+            Entry.Depth == Depth &&
+            Entry.MipLevels == MipLevels &&
+            Entry.Usage == Usage &&
+            Entry.Format == Format &&
+            Entry.Pool == Pool &&
+            Entry.Type == D3DRTYPE_VOLUMETEXTURE )
+        {
+            // A match is found. Obtain the IDirect3DVolumeTexture9 interface and return that.
+            return Entry.pTexture->QueryInterface( IID_IDirect3DVolumeTexture9, (LPVOID*)ppTexture );
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateVolumeTextureFromFileEx( pDevice, pSrcFile, Width, Height, Depth, MipLevels, Usage, Format,
+                                            Pool, Filter, MipFilter, ColorKey, pSrcInfo, pPalette, ppTexture );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Texture NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_FILE;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcFile );
+    NewEntry.Width = Width;
+    NewEntry.Height = Height;
+    NewEntry.Depth = Depth;
+    NewEntry.MipLevels = MipLevels;
+    NewEntry.Usage = Usage;
+    NewEntry.Format = Format;
+    NewEntry.Pool = Pool;
+    NewEntry.Type = D3DRTYPE_VOLUMETEXTURE;
+    (*ppTexture)->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&NewEntry.pTexture );
+
+    m_TextureCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateVolumeTextureFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, LPDIRECT3DVOLUMETEXTURE9 *ppVolumeTexture )
+{
+    return CreateVolumeTextureFromResourceEx( pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT,
+                                              D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED,
+                                              D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, ppVolumeTexture );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateVolumeTextureFromResourceEx( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, UINT Width, UINT Height, UINT Depth, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DVOLUMETEXTURE9 *ppVolumeTexture )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_TextureCache.GetSize(); ++i )
+    {
+        DXUTCache_Texture &Entry = m_TextureCache[i];
+        if( Entry.Location == DXUTCACHE_LOCATION_RESOURCE &&
+            Entry.hSrcModule == hSrcModule &&
+            !lstrcmpW( Entry.wszSource, pSrcResource ) &&
+            Entry.Width == Width &&
+            Entry.Height == Height &&
+            Entry.Depth == Depth &&
+            Entry.MipLevels == MipLevels &&
+            Entry.Usage == Usage &&
+            Entry.Format == Format &&
+            Entry.Pool == Pool &&
+            Entry.Type == D3DRTYPE_VOLUMETEXTURE )
+        {
+            // A match is found. Obtain the IDirect3DVolumeTexture9 interface and return that.
+            return Entry.pTexture->QueryInterface( IID_IDirect3DVolumeTexture9, (LPVOID*)ppVolumeTexture );
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateVolumeTextureFromResourceEx( pDevice, hSrcModule, pSrcResource, Width, Height, Depth, MipLevels, Usage,
+                                                Format, Pool, Filter, MipFilter, ColorKey, pSrcInfo, pPalette, ppVolumeTexture );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Texture NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_RESOURCE;
+    NewEntry.hSrcModule = hSrcModule;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcResource );
+    NewEntry.Width = Width;
+    NewEntry.Height = Height;
+    NewEntry.Depth = Depth;
+    NewEntry.MipLevels = MipLevels;
+    NewEntry.Usage = Usage;
+    NewEntry.Format = Format;
+    NewEntry.Pool = Pool;
+    NewEntry.Type = D3DRTYPE_VOLUMETEXTURE;
+    (*ppVolumeTexture)->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&NewEntry.pTexture );
+
+    m_TextureCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateFont( LPDIRECT3DDEVICE9 pDevice, UINT Height, UINT Width, UINT Weight, UINT MipLevels, BOOL Italic, DWORD CharSet, DWORD OutputPrecision, DWORD Quality, DWORD PitchAndFamily, LPCTSTR pFacename, LPD3DXFONT *ppFont )
+{
+    D3DXFONT_DESCW Desc;
+    
+    Desc.Height = Height;
+    Desc.Width = Width;
+    Desc.Weight = Weight;
+    Desc.MipLevels = MipLevels;
+    Desc.Italic = Italic;
+    Desc.CharSet = (BYTE)CharSet;
+    Desc.OutputPrecision = (BYTE)OutputPrecision;
+    Desc.Quality = (BYTE)Quality;
+    Desc.PitchAndFamily = (BYTE)PitchAndFamily;
+    StringCchCopy( Desc.FaceName, LF_FACESIZE, pFacename );
+
+    return CreateFontIndirect( pDevice, &Desc, ppFont );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateFontIndirect( LPDIRECT3DDEVICE9 pDevice, CONST D3DXFONT_DESC *pDesc, LPD3DXFONT *ppFont )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_FontCache.GetSize(); ++i )
+    {
+        DXUTCache_Font &Entry = m_FontCache[i];
+
+        if( Entry.Width == pDesc->Width &&
+            Entry.Height == pDesc->Height &&
+            Entry.Weight == pDesc->Weight &&
+            Entry.MipLevels == pDesc->MipLevels &&
+            Entry.Italic == pDesc->Italic &&
+            Entry.CharSet == pDesc->CharSet &&
+            Entry.OutputPrecision == pDesc->OutputPrecision &&
+            Entry.Quality == pDesc->Quality &&
+            Entry.PitchAndFamily == pDesc->PitchAndFamily &&
+            CompareString( LOCALE_USER_DEFAULT, NORM_IGNORECASE,
+                           Entry.FaceName, -1,
+                           pDesc->FaceName, -1 ) == CSTR_EQUAL )
+        {
+            // A match is found.  Increment the reference and return the ID3DXFont object.
+            Entry.pFont->AddRef();
+            *ppFont = Entry.pFont;
+            return S_OK;
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateFontIndirect( pDevice, pDesc, ppFont );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Font NewEntry;
+    (D3DXFONT_DESC &)NewEntry = *pDesc;
+    NewEntry.pFont = *ppFont;
+    NewEntry.pFont->AddRef();
+
+    m_FontCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateEffectFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, const D3DXMACRO *pDefines, LPD3DXINCLUDE pInclude, DWORD Flags, LPD3DXEFFECTPOOL pPool, LPD3DXEFFECT *ppEffect, LPD3DXBUFFER *ppCompilationErrors )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_EffectCache.GetSize(); ++i )
+    {
+        DXUTCache_Effect &Entry = m_EffectCache[i];
+
+        if( Entry.Location == DXUTCACHE_LOCATION_FILE &&
+            !lstrcmpW( Entry.wszSource, pSrcFile ) &&
+            Entry.dwFlags == Flags )
+        {
+            // A match is found.  Increment the ref coutn and return the ID3DXEffect object.
+            *ppEffect = Entry.pEffect;
+            (*ppEffect)->AddRef();
+            return S_OK;
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateEffectFromFile( pDevice, pSrcFile, pDefines, pInclude, Flags, pPool, ppEffect, ppCompilationErrors );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Effect NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_FILE;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcFile );
+    NewEntry.dwFlags = Flags;
+    NewEntry.pEffect = *ppEffect;
+    NewEntry.pEffect->AddRef();
+
+    m_EffectCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::CreateEffectFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, const D3DXMACRO *pDefines, LPD3DXINCLUDE pInclude, DWORD Flags, LPD3DXEFFECTPOOL pPool, LPD3DXEFFECT *ppEffect, LPD3DXBUFFER *ppCompilationErrors )
+{
+    // Search the cache for a matching entry.
+    for( int i = 0; i < m_EffectCache.GetSize(); ++i )
+    {
+        DXUTCache_Effect &Entry = m_EffectCache[i];
+
+        if( Entry.Location == DXUTCACHE_LOCATION_RESOURCE &&
+            Entry.hSrcModule == hSrcModule &&
+            !lstrcmpW( Entry.wszSource, pSrcResource ) &&
+            Entry.dwFlags == Flags )
+        {
+            // A match is found.  Increment the ref coutn and return the ID3DXEffect object.
+            *ppEffect = Entry.pEffect;
+            (*ppEffect)->AddRef();
+            return S_OK;
+        }
+    }
+
+    HRESULT hr;
+
+    // No matching entry.  Load the resource and create a new entry.
+    hr = D3DXCreateEffectFromResource( pDevice, hSrcModule, pSrcResource, pDefines, pInclude, Flags,
+                                       pPool, ppEffect, ppCompilationErrors );
+    if( FAILED( hr ) )
+        return hr;
+
+    DXUTCache_Effect NewEntry;
+    NewEntry.Location = DXUTCACHE_LOCATION_RESOURCE;
+    NewEntry.hSrcModule = hSrcModule;
+    StringCchCopy( NewEntry.wszSource, MAX_PATH, pSrcResource );
+    NewEntry.dwFlags = Flags;
+    NewEntry.pEffect = *ppEffect;
+    NewEntry.pEffect->AddRef();
+
+    m_EffectCache.Add( NewEntry );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Device event callbacks
+//--------------------------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::OnCreateDevice( IDirect3DDevice9 *pd3dDevice )
+{
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::OnResetDevice( IDirect3DDevice9 *pd3dDevice )
+{
+    // Call OnResetDevice on all effect and font objects
+    for( int i = 0; i < m_EffectCache.GetSize(); ++i )
+        m_EffectCache[i].pEffect->OnResetDevice();
+    for( int i = 0; i < m_FontCache.GetSize(); ++i )
+        m_FontCache[i].pFont->OnResetDevice();
+
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::OnLostDevice()
+{
+    // Call OnLostDevice on all effect and font objects
+    for( int i = 0; i < m_EffectCache.GetSize(); ++i )
+        m_EffectCache[i].pEffect->OnLostDevice();
+    for( int i = 0; i < m_FontCache.GetSize(); ++i )
+        m_FontCache[i].pFont->OnLostDevice();
+
+    // Release all the default pool textures
+    for( int i = m_TextureCache.GetSize() - 1; i >= 0; --i )
+        if( m_TextureCache[i].Pool == D3DPOOL_DEFAULT )
+        {
+            SAFE_RELEASE( m_TextureCache[i].pTexture );
+            m_TextureCache.Remove( i );  // Remove the entry
+        }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTResourceCache::OnDestroyDevice()
+{
+    // Release all resources
+    for( int i = m_EffectCache.GetSize() - 1; i >= 0; --i )
+    {
+        SAFE_RELEASE( m_EffectCache[i].pEffect );
+        m_EffectCache.Remove( i );
+    }
+    for( int i = m_FontCache.GetSize() - 1; i >= 0; --i )
+    {
+        SAFE_RELEASE( m_FontCache[i].pFont );
+        m_FontCache.Remove( i );
+    }
+    for( int i = m_TextureCache.GetSize() - 1; i >= 0; --i )
+    {
+        SAFE_RELEASE( m_TextureCache[i].pTexture );
+        m_TextureCache.Remove( i );
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+CD3DArcBall::CD3DArcBall()
+{
+    Reset();
+    m_vDownPt = D3DXVECTOR3(0,0,0);
+    m_vCurrentPt = D3DXVECTOR3(0,0,0);
+    m_Offset.x = m_Offset.y = 0;
+
+    RECT rc;
+    GetClientRect( GetForegroundWindow(), &rc );
+    SetWindow( rc.right, rc.bottom );
+}
+
+
+
+
+
+//--------------------------------------------------------------------------------------
+void CD3DArcBall::Reset()
+{
+    D3DXQuaternionIdentity( &m_qDown );
+    D3DXQuaternionIdentity( &m_qNow );
+    D3DXMatrixIdentity( &m_mRotation );
+    D3DXMatrixIdentity( &m_mTranslation );
+    D3DXMatrixIdentity( &m_mTranslationDelta );
+    m_bDrag = FALSE;
+    m_fRadiusTranslation = 1.0f;
+    m_fRadius = 1.0f;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+D3DXVECTOR3 CD3DArcBall::ScreenToVector( float fScreenPtX, float fScreenPtY )
+{
+    // Scale to screen
+    FLOAT x   = -(fScreenPtX - m_Offset.x - m_nWidth/2)  / (m_fRadius*m_nWidth/2);
+    FLOAT y   =  (fScreenPtY - m_Offset.y - m_nHeight/2) / (m_fRadius*m_nHeight/2);
+
+    FLOAT z   = 0.0f;
+    FLOAT mag = x*x + y*y;
+
+    if( mag > 1.0f )
+    {
+        FLOAT scale = 1.0f/sqrtf(mag);
+        x *= scale;
+        y *= scale;
+    }
+    else
+        z = sqrtf( 1.0f - mag );
+
+    // Return vector
+    return D3DXVECTOR3( x, y, z );
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+D3DXQUATERNION CD3DArcBall::QuatFromBallPoints(const D3DXVECTOR3 &vFrom, const D3DXVECTOR3 &vTo)
+{
+    D3DXVECTOR3 vPart;
+    float fDot = D3DXVec3Dot(&vFrom, &vTo);
+    D3DXVec3Cross(&vPart, &vFrom, &vTo);
+
+    return D3DXQUATERNION(vPart.x, vPart.y, vPart.z, fDot);
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+void CD3DArcBall::OnBegin( int nX, int nY )
+{
+    // Only enter the drag state if the click falls
+    // inside the click rectangle.
+    if( nX >= m_Offset.x &&
+        nX < m_Offset.x + m_nWidth &&
+        nY >= m_Offset.y &&
+        nY < m_Offset.y + m_nHeight )
+    {
+        m_bDrag = true;
+        m_qDown = m_qNow;
+        m_vDownPt = ScreenToVector( (float)nX, (float)nY );
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+void CD3DArcBall::OnMove( int nX, int nY )
+{
+    if (m_bDrag) 
+    { 
+        m_vCurrentPt = ScreenToVector( (float)nX, (float)nY );
+        m_qNow = m_qDown * QuatFromBallPoints( m_vDownPt, m_vCurrentPt );
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+void CD3DArcBall::OnEnd()
+{
+    m_bDrag = false;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Desc:
+//--------------------------------------------------------------------------------------
+LRESULT CD3DArcBall::HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    // Current mouse position
+    int iMouseX = (short)LOWORD(lParam);
+    int iMouseY = (short)HIWORD(lParam);
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+            SetCapture( hWnd );
+            OnBegin( iMouseX, iMouseY );
+            return TRUE;
+
+        case WM_LBUTTONUP:
+            ReleaseCapture();
+            OnEnd();
+            return TRUE;
+
+        case WM_RBUTTONDOWN:
+        case WM_RBUTTONDBLCLK:
+        case WM_MBUTTONDOWN:
+        case WM_MBUTTONDBLCLK:
+            SetCapture( hWnd );
+            // Store off the position of the cursor when the button is pressed
+            m_ptLastMouse.x = iMouseX;
+            m_ptLastMouse.y = iMouseY;
+            return TRUE;
+
+        case WM_RBUTTONUP:
+        case WM_MBUTTONUP:
+            ReleaseCapture();
+            return TRUE;
+
+        case WM_MOUSEMOVE:
+            if( MK_LBUTTON&wParam )
+            {
+                OnMove( iMouseX, iMouseY );
+            }
+            else if( (MK_RBUTTON&wParam) || (MK_MBUTTON&wParam) )
+            {
+                // Normalize based on size of window and bounding sphere radius
+                FLOAT fDeltaX = ( m_ptLastMouse.x-iMouseX ) * m_fRadiusTranslation / m_nWidth;
+                FLOAT fDeltaY = ( m_ptLastMouse.y-iMouseY ) * m_fRadiusTranslation / m_nHeight;
+
+                if( wParam & MK_RBUTTON )
+                {
+                    D3DXMatrixTranslation( &m_mTranslationDelta, -2*fDeltaX, 2*fDeltaY, 0.0f );
+                    D3DXMatrixMultiply( &m_mTranslation, &m_mTranslation, &m_mTranslationDelta );
+                }
+                else  // wParam & MK_MBUTTON
+                {
+                    D3DXMatrixTranslation( &m_mTranslationDelta, 0.0f, 0.0f, 5*fDeltaY );
+                    D3DXMatrixMultiply( &m_mTranslation, &m_mTranslation, &m_mTranslationDelta );
+                }
+
+                // Store mouse coordinate
+                m_ptLastMouse.x = iMouseX;
+                m_ptLastMouse.y = iMouseY;
+            }
+            return TRUE;
+    }
+
+    return FALSE;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Constructor
+//--------------------------------------------------------------------------------------
+CBaseCamera::CBaseCamera()
+{
+    m_cKeysDown = 0;
+    ZeroMemory( m_aKeys, sizeof(BYTE)*CAM_MAX_KEYS );
+    ZeroMemory( m_GamePad, sizeof(DXUT_GAMEPAD)*DXUT_MAX_CONTROLLERS );
+
+    // Set attributes for the view matrix
+    D3DXVECTOR3 vEyePt    = D3DXVECTOR3(0.0f,0.0f,0.0f);
+    D3DXVECTOR3 vLookatPt = D3DXVECTOR3(0.0f,0.0f,1.0f);
+
+    // Setup the view matrix
+    SetViewParams( &vEyePt, &vLookatPt );
+
+    // Setup the projection matrix
+    SetProjParams( D3DX_PI/4, 1.0f, 1.0f, 1000.0f );
+
+    GetCursorPos( &m_ptLastMousePosition );
+    m_bMouseLButtonDown = false;
+    m_bMouseMButtonDown = false;
+    m_bMouseRButtonDown = false;
+    m_nCurrentButtonMask = 0;
+    m_nMouseWheelDelta = 0;
+
+    m_fCameraYawAngle = 0.0f;
+    m_fCameraPitchAngle = 0.0f;
+
+    SetRect( &m_rcDrag, LONG_MIN, LONG_MIN, LONG_MAX, LONG_MAX );
+    m_vVelocity     = D3DXVECTOR3(0,0,0);
+    m_bMovementDrag = false;
+    m_vVelocityDrag = D3DXVECTOR3(0,0,0);
+    m_fDragTimer    = 0.0f;
+    m_fTotalDragTimeToZero = 0.25;
+    m_vRotVelocity = D3DXVECTOR2(0,0);
+
+    m_fRotationScaler = 0.01f;           
+    m_fMoveScaler = 5.0f;           
+
+    m_bInvertPitch = false;
+    m_bEnableYAxisMovement = true;
+    m_bEnablePositionMovement = true;
+
+    m_vMouseDelta   = D3DXVECTOR2(0,0);
+    m_fFramesToSmoothMouseData = 2.0f;
+
+    m_bClipToBoundary = false;
+    m_vMinBoundary = D3DXVECTOR3(-1,-1,-1);
+    m_vMaxBoundary = D3DXVECTOR3(1,1,1);
+}
+
+
+//--------------------------------------------------------------------------------------
+// Client can call this to change the position and direction of camera
+//--------------------------------------------------------------------------------------
+VOID CBaseCamera::SetViewParams( D3DXVECTOR3* pvEyePt, D3DXVECTOR3* pvLookatPt )
+{
+    if( NULL == pvEyePt || NULL == pvLookatPt )
+        return;
+
+    m_vDefaultEye = m_vEye = *pvEyePt;
+    m_vDefaultLookAt = m_vLookAt = *pvLookatPt;
+
+    // Calc the view matrix
+    D3DXVECTOR3 vUp(0,1,0);
+    D3DXMatrixLookAtLH( &m_mView, pvEyePt, pvLookatPt, &vUp );
+
+    D3DXMATRIX mInvView;
+    D3DXMatrixInverse( &mInvView, NULL, &m_mView );
+
+    // The axis basis vectors and camera position are stored inside the 
+    // position matrix in the 4 rows of the camera's world matrix.
+    // To figure out the yaw/pitch of the camera, we just need the Z basis vector
+    D3DXVECTOR3* pZBasis = (D3DXVECTOR3*) &mInvView._31;
+
+    m_fCameraYawAngle   = atan2f( pZBasis->x, pZBasis->z );
+    float fLen = sqrtf(pZBasis->z*pZBasis->z + pZBasis->x*pZBasis->x);
+    m_fCameraPitchAngle = -atan2f( pZBasis->y, fLen );
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Calculates the projection matrix based on input params
+//--------------------------------------------------------------------------------------
+VOID CBaseCamera::SetProjParams( FLOAT fFOV, FLOAT fAspect, FLOAT fNearPlane,
+                                   FLOAT fFarPlane )
+{
+    // Set attributes for the projection matrix
+    m_fFOV        = fFOV;
+    m_fAspect     = fAspect;
+    m_fNearPlane  = fNearPlane;
+    m_fFarPlane   = fFarPlane;
+
+    D3DXMatrixPerspectiveFovLH( &m_mProj, fFOV, fAspect, fNearPlane, fFarPlane );
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Call this from your message proc so this class can handle window messages
+//--------------------------------------------------------------------------------------
+LRESULT CBaseCamera::HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    UNREFERENCED_PARAMETER( hWnd );
+    UNREFERENCED_PARAMETER( lParam );
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            // Map this key to a D3DUtil_CameraKeys enum and update the
+            // state of m_aKeys[] by adding the KEY_WAS_DOWN_MASK|KEY_IS_DOWN_MASK mask
+            // only if the key is not down
+            D3DUtil_CameraKeys mappedKey = MapKey( (UINT)wParam );
+            if( mappedKey != CAM_UNKNOWN )
+            {
+                if( FALSE == IsKeyDown(m_aKeys[mappedKey]) )
+                {
+                    m_aKeys[ mappedKey ] = KEY_WAS_DOWN_MASK | KEY_IS_DOWN_MASK;
+                    ++m_cKeysDown;
+                }
+            }
+            break;
+        }
+
+        case WM_KEYUP:
+        {
+            // Map this key to a D3DUtil_CameraKeys enum and update the
+            // state of m_aKeys[] by removing the KEY_IS_DOWN_MASK mask.
+            D3DUtil_CameraKeys mappedKey = MapKey( (UINT)wParam );
+            if( mappedKey != CAM_UNKNOWN && (DWORD)mappedKey < 8 )
+            {
+                m_aKeys[ mappedKey ] &= ~KEY_IS_DOWN_MASK;
+                --m_cKeysDown;
+            }
+            break;
+        }
+
+        case WM_RBUTTONDOWN:
+        case WM_MBUTTONDOWN:
+        case WM_LBUTTONDOWN:
+        case WM_RBUTTONDBLCLK:
+        case WM_MBUTTONDBLCLK:
+        case WM_LBUTTONDBLCLK:
+        {
+            // Compute the drag rectangle in screen coord.
+            POINT ptCursor = { (short)LOWORD(lParam), (short)HIWORD(lParam) };
+
+            // Update member var state
+            if( ( uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONDBLCLK ) && PtInRect( &m_rcDrag, ptCursor ) )
+                { m_bMouseLButtonDown = true; m_nCurrentButtonMask |= MOUSE_LEFT_BUTTON; }
+            if( ( uMsg == WM_MBUTTONDOWN || uMsg == WM_MBUTTONDBLCLK ) && PtInRect( &m_rcDrag, ptCursor ) )
+                { m_bMouseMButtonDown = true; m_nCurrentButtonMask |= MOUSE_MIDDLE_BUTTON; }
+            if( ( uMsg == WM_RBUTTONDOWN || uMsg == WM_RBUTTONDBLCLK ) && PtInRect( &m_rcDrag, ptCursor ) )
+                { m_bMouseRButtonDown = true; m_nCurrentButtonMask |= MOUSE_RIGHT_BUTTON; }
+
+            // Capture the mouse, so if the mouse button is 
+            // released outside the window, we'll get the WM_LBUTTONUP message
+            SetCapture(hWnd);
+            GetCursorPos( &m_ptLastMousePosition );
+            return TRUE;
+        }
+
+        case WM_RBUTTONUP: 
+        case WM_MBUTTONUP: 
+        case WM_LBUTTONUP:   
+        {
+            // Update member var state
+            if( uMsg == WM_LBUTTONUP ) { m_bMouseLButtonDown = false; m_nCurrentButtonMask &= ~MOUSE_LEFT_BUTTON; }
+            if( uMsg == WM_MBUTTONUP ) { m_bMouseMButtonDown = false; m_nCurrentButtonMask &= ~MOUSE_MIDDLE_BUTTON; }
+            if( uMsg == WM_RBUTTONUP ) { m_bMouseRButtonDown = false; m_nCurrentButtonMask &= ~MOUSE_RIGHT_BUTTON; }
+
+            // Release the capture if no mouse buttons down
+            if( !m_bMouseLButtonDown  && 
+                !m_bMouseRButtonDown &&
+                !m_bMouseMButtonDown )
+            {
+                ReleaseCapture();
+            }
+            break;
+        }
+
+        case WM_MOUSEWHEEL: 
+            // Update member var state
+            m_nMouseWheelDelta = (short)HIWORD(wParam) / 120;
+            break;
+    }
+
+    return FALSE;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Figure out the velocity based on keyboard input & drag if any
+//--------------------------------------------------------------------------------------
+void CBaseCamera::GetInput( bool bGetKeyboardInput, bool bGetMouseInput, bool bGetGamepadInput, bool bResetCursorAfterMove )
+{
+    m_vKeyboardDirection = D3DXVECTOR3(0,0,0);
+    if( bGetKeyboardInput )
+    {
+        // Update acceleration vector based on keyboard state
+        if( IsKeyDown(m_aKeys[CAM_MOVE_FORWARD]) )
+            m_vKeyboardDirection.z += 1.0f;
+        if( IsKeyDown(m_aKeys[CAM_MOVE_BACKWARD]) )
+            m_vKeyboardDirection.z -= 1.0f;
+        if( m_bEnableYAxisMovement )
+        {
+            if( IsKeyDown(m_aKeys[CAM_MOVE_UP]) )
+                m_vKeyboardDirection.y += 1.0f;
+            if( IsKeyDown(m_aKeys[CAM_MOVE_DOWN]) )
+                m_vKeyboardDirection.y -= 1.0f;
+        }
+        if( IsKeyDown(m_aKeys[CAM_STRAFE_RIGHT]) )
+            m_vKeyboardDirection.x += 1.0f;
+        if( IsKeyDown(m_aKeys[CAM_STRAFE_LEFT]) )
+            m_vKeyboardDirection.x -= 1.0f;
+    }
+
+    if( bGetMouseInput )
+    {
+        // Get current position of mouse
+        POINT ptCurMouseDelta;
+        POINT ptCurMousePos;
+        
+        if( GetCursorPos( &ptCurMousePos ) )
+        {
+            // Calc how far it's moved since last frame
+            ptCurMouseDelta.x = ptCurMousePos.x - m_ptLastMousePosition.x;
+            ptCurMouseDelta.y = ptCurMousePos.y - m_ptLastMousePosition.y;
+            
+            // Record current position for next time
+            m_ptLastMousePosition = ptCurMousePos;
+        }
+        else
+        {
+            // If GetCursorPos() returns false, just set delta to zero
+            ptCurMouseDelta.x = 0;
+            ptCurMouseDelta.y = 0;
+        }
+
+        if( bResetCursorAfterMove && DXUTIsActive() )
+        {
+            // Set position of camera to center of desktop, 
+            // so it always has room to move.  This is very useful
+            // if the cursor is hidden.  If this isn't done and cursor is hidden, 
+            // then invisible cursor will hit the edge of the screen 
+            // and the user can't tell what happened
+            POINT ptCenter;
+
+            // Get the center of the current monitor
+            MONITORINFO mi;
+            mi.cbSize = sizeof(MONITORINFO);
+            DXUTGetMonitorInfo( DXUTMonitorFromWindow(DXUTGetHWND(),MONITOR_DEFAULTTONEAREST), &mi );
+            ptCenter.x = (mi.rcMonitor.left + mi.rcMonitor.right) / 2;
+            ptCenter.y = (mi.rcMonitor.top + mi.rcMonitor.bottom) / 2;   
+            SetCursorPos( ptCenter.x, ptCenter.y );
+            m_ptLastMousePosition = ptCenter;
+        }
+
+        // Smooth the relative mouse data over a few frames so it isn't 
+        // jerky when moving slowly at low frame rates.
+        float fPercentOfNew =  1.0f / m_fFramesToSmoothMouseData;
+        float fPercentOfOld =  1.0f - fPercentOfNew;
+        m_vMouseDelta.x = m_vMouseDelta.x*fPercentOfOld + ptCurMouseDelta.x*fPercentOfNew;
+        m_vMouseDelta.y = m_vMouseDelta.y*fPercentOfOld + ptCurMouseDelta.y*fPercentOfNew;
+
+    }
+
+    if( bGetGamepadInput )
+    {
+        m_vGamePadLeftThumb = D3DXVECTOR3(0,0,0);
+        m_vGamePadRightThumb = D3DXVECTOR3(0,0,0);
+
+        // Get controller state
+        for( DWORD iUserIndex=0; iUserIndex<DXUT_MAX_CONTROLLERS; iUserIndex++ )
+        {
+            DXUTGetGamepadState( iUserIndex, &m_GamePad[iUserIndex], true, true );
+
+            // Mark time if the controller is in a non-zero state
+            if( m_GamePad[iUserIndex].wButtons || 
+                m_GamePad[iUserIndex].sThumbLX || m_GamePad[iUserIndex].sThumbLX || 
+                m_GamePad[iUserIndex].sThumbRX || m_GamePad[iUserIndex].sThumbRY || 
+                m_GamePad[iUserIndex].bLeftTrigger || m_GamePad[iUserIndex].bRightTrigger )
+            {
+                m_GamePadLastActive[iUserIndex] = DXUTGetTime();
+            }
+        }
+
+        // Find out which controller was non-zero last
+        int iMostRecentlyActive = -1;
+        double fMostRecentlyActiveTime = 0.0f;
+        for( DWORD iUserIndex=0; iUserIndex<DXUT_MAX_CONTROLLERS; iUserIndex++ )
+        {
+            if( m_GamePadLastActive[iUserIndex] > fMostRecentlyActiveTime )
+            {
+                fMostRecentlyActiveTime = m_GamePadLastActive[iUserIndex];
+                iMostRecentlyActive = iUserIndex;
+            }
+        }
+
+        // Use the most recent non-zero controller if its connected
+        if( iMostRecentlyActive >= 0 && m_GamePad[iMostRecentlyActive].bConnected )
+        {
+            m_vGamePadLeftThumb.x = m_GamePad[iMostRecentlyActive].fThumbLX;
+            m_vGamePadLeftThumb.y = 0.0f;
+            m_vGamePadLeftThumb.z = m_GamePad[iMostRecentlyActive].fThumbLY;
+
+            m_vGamePadRightThumb.x = m_GamePad[iMostRecentlyActive].fThumbRX;
+            m_vGamePadRightThumb.y = 0.0f;
+            m_vGamePadRightThumb.z = m_GamePad[iMostRecentlyActive].fThumbRY;
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Figure out the velocity based on keyboard input & drag if any
+//--------------------------------------------------------------------------------------
+void CBaseCamera::UpdateVelocity( float fElapsedTime )
+{
+    D3DXMATRIX mRotDelta;
+
+    D3DXVECTOR2 vGamePadRightThumb = D3DXVECTOR2(m_vGamePadRightThumb.x, -m_vGamePadRightThumb.z);
+    m_vRotVelocity = m_vMouseDelta * m_fRotationScaler + vGamePadRightThumb * 0.02f;
+
+    D3DXVECTOR3 vAccel = m_vKeyboardDirection + m_vGamePadLeftThumb;
+
+    // Normalize vector so if moving 2 dirs (left & forward), 
+    // the camera doesn't move faster than if moving in 1 dir
+    D3DXVec3Normalize( &vAccel, &vAccel );
+
+    // Scale the acceleration vector
+    vAccel *= m_fMoveScaler;
+
+    if( m_bMovementDrag )
+    {
+        // Is there any acceleration this frame?
+        if( D3DXVec3LengthSq( &vAccel ) > 0 )
+        {
+            // If so, then this means the user has pressed a movement key\
+            // so change the velocity immediately to acceleration 
+            // upon keyboard input.  This isn't normal physics
+            // but it will give a quick response to keyboard input
+            m_vVelocity = vAccel;
+            m_fDragTimer = m_fTotalDragTimeToZero;
+            m_vVelocityDrag = vAccel / m_fDragTimer;
+        }
+        else 
+        {
+            // If no key being pressed, then slowly decrease velocity to 0
+            if( m_fDragTimer > 0 )
+            {
+                // Drag until timer is <= 0
+                m_vVelocity -= m_vVelocityDrag * fElapsedTime;
+                m_fDragTimer -= fElapsedTime;
+            }
+            else
+            {
+                // Zero velocity
+                m_vVelocity = D3DXVECTOR3(0,0,0);
+            }
+        }
+    }
+    else
+    {
+        // No drag, so immediately change the velocity
+        m_vVelocity = vAccel;
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Clamps pV to lie inside m_vMinBoundary & m_vMaxBoundary
+//--------------------------------------------------------------------------------------
+void CBaseCamera::ConstrainToBoundary( D3DXVECTOR3* pV )
+{
+    // Constrain vector to a bounding box 
+    pV->x = __max(pV->x, m_vMinBoundary.x);
+    pV->y = __max(pV->y, m_vMinBoundary.y);
+    pV->z = __max(pV->z, m_vMinBoundary.z);
+
+    pV->x = __min(pV->x, m_vMaxBoundary.x);
+    pV->y = __min(pV->y, m_vMaxBoundary.y);
+    pV->z = __min(pV->z, m_vMaxBoundary.z);
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Maps a windows virtual key to an enum
+//--------------------------------------------------------------------------------------
+D3DUtil_CameraKeys CBaseCamera::MapKey( UINT nKey )
+{
+    // This could be upgraded to a method that's user-definable but for 
+    // simplicity, we'll use a hardcoded mapping.
+    switch( nKey )
+    {
+        case VK_CONTROL:  return CAM_CONTROLDOWN;
+        case VK_LEFT:  return CAM_STRAFE_LEFT;
+        case VK_RIGHT: return CAM_STRAFE_RIGHT;
+        case VK_UP:    return CAM_MOVE_FORWARD;
+        case VK_DOWN:  return CAM_MOVE_BACKWARD;
+        case VK_PRIOR: return CAM_MOVE_UP;        // pgup
+        case VK_NEXT:  return CAM_MOVE_DOWN;      // pgdn
+
+        case 'A':      return CAM_STRAFE_LEFT;
+        case 'D':      return CAM_STRAFE_RIGHT;
+        case 'W':      return CAM_MOVE_FORWARD;
+        case 'S':      return CAM_MOVE_BACKWARD;
+        case 'Q':      return CAM_MOVE_DOWN;
+        case 'E':      return CAM_MOVE_UP;
+
+        case VK_NUMPAD4: return CAM_STRAFE_LEFT;
+        case VK_NUMPAD6: return CAM_STRAFE_RIGHT;
+        case VK_NUMPAD8: return CAM_MOVE_FORWARD;
+        case VK_NUMPAD2: return CAM_MOVE_BACKWARD;
+        case VK_NUMPAD9: return CAM_MOVE_UP;        
+        case VK_NUMPAD3: return CAM_MOVE_DOWN;      
+
+        case VK_HOME:   return CAM_RESET;
+    }
+
+    return CAM_UNKNOWN;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Reset the camera's position back to the default
+//--------------------------------------------------------------------------------------
+VOID CBaseCamera::Reset()
+{
+    SetViewParams( &m_vDefaultEye, &m_vDefaultLookAt );
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Constructor
+//--------------------------------------------------------------------------------------
+CFirstPersonCamera::CFirstPersonCamera() :
+    m_nActiveButtonMask( 0x07 )
+{
+	m_bRotateWithoutButtonDown = false;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Update the view matrix based on user input & elapsed time
+//--------------------------------------------------------------------------------------
+VOID CFirstPersonCamera::FrameMove( FLOAT fElapsedTime )
+{
+    if( DXUTGetGlobalTimer()->IsStopped() )
+        fElapsedTime = 1.0f / DXUTGetFPS();
+
+    if( IsKeyDown(m_aKeys[CAM_RESET]) )
+        Reset();
+
+    // Get keyboard/mouse/gamepad input
+    GetInput( m_bEnablePositionMovement, (m_nActiveButtonMask & m_nCurrentButtonMask) || m_bRotateWithoutButtonDown, true, m_bResetCursorAfterMove );
+
+    // Get amount of velocity based on the keyboard input and drag (if any)
+    UpdateVelocity( fElapsedTime );
+
+    // Simple euler method to calculate position delta
+    D3DXVECTOR3 vPosDelta = m_vVelocity * fElapsedTime;
+
+    // If rotating the camera 
+    if( (m_nActiveButtonMask & m_nCurrentButtonMask) || 
+        m_bRotateWithoutButtonDown || 
+        m_vGamePadRightThumb.x != 0 || 
+        m_vGamePadRightThumb.z != 0 )
+    {
+        // Update the pitch & yaw angle based on mouse movement
+        float fYawDelta   = m_vRotVelocity.x;
+        float fPitchDelta = m_vRotVelocity.y;
+
+        // Invert pitch if requested
+        if( m_bInvertPitch )
+            fPitchDelta = -fPitchDelta;
+
+        m_fCameraPitchAngle += fPitchDelta;
+        m_fCameraYawAngle   += fYawDelta;
+
+        // Limit pitch to straight up or straight down
+        m_fCameraPitchAngle = __max( -D3DX_PI/2.0f,  m_fCameraPitchAngle );
+        m_fCameraPitchAngle = __min( +D3DX_PI/2.0f,  m_fCameraPitchAngle );
+    }
+
+    // Make a rotation matrix based on the camera's yaw & pitch
+    D3DXMATRIX mCameraRot;
+    D3DXMatrixRotationYawPitchRoll( &mCameraRot, m_fCameraYawAngle, m_fCameraPitchAngle, 0 );
+
+    // Transform vectors based on camera's rotation matrix
+    D3DXVECTOR3 vWorldUp, vWorldAhead;
+    D3DXVECTOR3 vLocalUp    = D3DXVECTOR3(0,1,0);
+    D3DXVECTOR3 vLocalAhead = D3DXVECTOR3(0,0,1);
+    D3DXVec3TransformCoord( &vWorldUp, &vLocalUp, &mCameraRot );
+    D3DXVec3TransformCoord( &vWorldAhead, &vLocalAhead, &mCameraRot );
+
+    // Transform the position delta by the camera's rotation 
+    D3DXVECTOR3 vPosDeltaWorld;
+    if( !m_bEnableYAxisMovement )
+    {
+        // If restricting Y movement, do not include pitch
+        // when transforming position delta vector.
+        D3DXMatrixRotationYawPitchRoll( &mCameraRot, m_fCameraYawAngle, 0.0f, 0.0f );
+    }
+    D3DXVec3TransformCoord( &vPosDeltaWorld, &vPosDelta, &mCameraRot );
+
+    // Move the eye position 
+    m_vEye += vPosDeltaWorld;
+    if( m_bClipToBoundary )
+        ConstrainToBoundary( &m_vEye );
+
+    // Update the lookAt position based on the eye position 
+    m_vLookAt = m_vEye + vWorldAhead;
+
+    // Update the view matrix
+    D3DXMatrixLookAtLH( &m_mView, &m_vEye, &m_vLookAt, &vWorldUp );
+
+    D3DXMatrixInverse( &m_mCameraWorld, NULL, &m_mView );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Enable or disable each of the mouse buttons for rotation drag.
+//--------------------------------------------------------------------------------------
+void CFirstPersonCamera::SetRotateButtons( bool bLeft, bool bMiddle, bool bRight, bool bRotateWithoutButtonDown )
+{
+    m_nActiveButtonMask = ( bLeft ? MOUSE_LEFT_BUTTON : 0 ) |
+                          ( bMiddle ? MOUSE_MIDDLE_BUTTON : 0 ) |
+                          ( bRight ? MOUSE_RIGHT_BUTTON : 0 );
+	m_bRotateWithoutButtonDown = bRotateWithoutButtonDown;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Constructor 
+//--------------------------------------------------------------------------------------
+CModelViewerCamera::CModelViewerCamera()
+{
+    D3DXMatrixIdentity( &m_mWorld );
+    D3DXMatrixIdentity( &m_mModelRot );
+    D3DXMatrixIdentity( &m_mModelLastRot );    
+    D3DXMatrixIdentity( &m_mCameraRotLast );    
+    m_vModelCenter = D3DXVECTOR3(0,0,0);
+    m_fRadius    = 5.0f;
+    m_fDefaultRadius = 5.0f;
+    m_fMinRadius = 1.0f;
+    m_fMaxRadius = FLT_MAX;
+    m_bLimitPitch = false;
+    m_bEnablePositionMovement = false;
+    m_bAttachCameraToModel = false;
+
+    m_nRotateModelButtonMask  = MOUSE_LEFT_BUTTON;
+    m_nZoomButtonMask         = MOUSE_WHEEL;
+    m_nRotateCameraButtonMask = MOUSE_RIGHT_BUTTON;
+    m_bDragSinceLastUpdate    = true;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Update the view matrix & the model's world matrix based 
+//       on user input & elapsed time
+//--------------------------------------------------------------------------------------
+VOID CModelViewerCamera::FrameMove( FLOAT fElapsedTime )
+{
+    if( IsKeyDown(m_aKeys[CAM_RESET]) )
+        Reset();
+
+    // If no dragged has happend since last time FrameMove is called,
+    // and no camera key is held down, then no need to handle again.
+    if( !m_bDragSinceLastUpdate && 0 == m_cKeysDown )
+        return;
+    m_bDragSinceLastUpdate = false;
+
+    // Get keyboard/mouse/gamepad input
+    GetInput( m_bEnablePositionMovement, m_nCurrentButtonMask != 0, true, false );
+
+    // Get amount of velocity based on the keyboard input and drag (if any)
+    UpdateVelocity( fElapsedTime );
+
+    // Simple euler method to calculate position delta
+    D3DXVECTOR3 vPosDelta = m_vVelocity * fElapsedTime;
+
+    // Change the radius from the camera to the model based on wheel scrolling
+    if( m_nMouseWheelDelta && m_nZoomButtonMask == MOUSE_WHEEL )
+        m_fRadius -= m_nMouseWheelDelta * m_fRadius * 0.1f;
+    m_fRadius = __min( m_fMaxRadius, m_fRadius );
+    m_fRadius = __max( m_fMinRadius, m_fRadius );
+    m_nMouseWheelDelta = 0;
+
+    // Get the inverse of the arcball's rotation matrix
+    D3DXMATRIX mCameraRot;
+    D3DXMatrixInverse( &mCameraRot, NULL, m_ViewArcBall.GetRotationMatrix() );
+
+    // Transform vectors based on camera's rotation matrix
+    D3DXVECTOR3 vWorldUp, vWorldAhead;
+    D3DXVECTOR3 vLocalUp    = D3DXVECTOR3(0,1,0);
+    D3DXVECTOR3 vLocalAhead = D3DXVECTOR3(0,0,1);
+    D3DXVec3TransformCoord( &vWorldUp, &vLocalUp, &mCameraRot );
+    D3DXVec3TransformCoord( &vWorldAhead, &vLocalAhead, &mCameraRot );
+
+    // Transform the position delta by the camera's rotation 
+    D3DXVECTOR3 vPosDeltaWorld;
+    D3DXVec3TransformCoord( &vPosDeltaWorld, &vPosDelta, &mCameraRot );
+
+    // Move the lookAt position 
+    m_vLookAt += vPosDeltaWorld;
+    if( m_bClipToBoundary )
+        ConstrainToBoundary( &m_vLookAt );
+
+    // Update the eye point based on a radius away from the lookAt position
+    m_vEye = m_vLookAt - vWorldAhead * m_fRadius;
+
+    // Update the view matrix
+    D3DXMatrixLookAtLH( &m_mView, &m_vEye, &m_vLookAt, &vWorldUp );
+
+    D3DXMATRIX mInvView;
+    D3DXMatrixInverse( &mInvView, NULL, &m_mView );
+    mInvView._41 = mInvView._42 = mInvView._43 = 0;
+
+    D3DXMATRIX mModelLastRotInv;
+    D3DXMatrixInverse(&mModelLastRotInv, NULL, &m_mModelLastRot);
+
+    // Accumulate the delta of the arcball's rotation in view space.
+    // Note that per-frame delta rotations could be problematic over long periods of time.
+    D3DXMATRIX mModelRot;
+    mModelRot = *m_WorldArcBall.GetRotationMatrix();
+    m_mModelRot *= m_mView * mModelLastRotInv * mModelRot * mInvView;
+
+    if( m_ViewArcBall.IsBeingDragged() && m_bAttachCameraToModel && !IsKeyDown(m_aKeys[CAM_CONTROLDOWN]) )
+    {
+        // Attach camera to model by inverse of the model rotation
+        D3DXMATRIX mCameraLastRotInv;
+        D3DXMatrixInverse(&mCameraLastRotInv, NULL, &m_mCameraRotLast);
+        D3DXMATRIX mCameraRotDelta = mCameraLastRotInv * mCameraRot; // local to world matrix
+        m_mModelRot *= mCameraRotDelta;
+    }
+    m_mCameraRotLast = mCameraRot; 
+
+    m_mModelLastRot = mModelRot;
+
+    // Since we're accumulating delta rotations, we need to orthonormalize 
+    // the matrix to prevent eventual matrix skew
+    D3DXVECTOR3* pXBasis = (D3DXVECTOR3*) &m_mModelRot._11;
+    D3DXVECTOR3* pYBasis = (D3DXVECTOR3*) &m_mModelRot._21;
+    D3DXVECTOR3* pZBasis = (D3DXVECTOR3*) &m_mModelRot._31;
+    D3DXVec3Normalize( pXBasis, pXBasis );
+    D3DXVec3Cross( pYBasis, pZBasis, pXBasis );
+    D3DXVec3Normalize( pYBasis, pYBasis );
+    D3DXVec3Cross( pZBasis, pXBasis, pYBasis );
+
+    // Translate the rotation matrix to the same position as the lookAt position
+    m_mModelRot._41 = m_vLookAt.x;
+    m_mModelRot._42 = m_vLookAt.y;
+    m_mModelRot._43 = m_vLookAt.z;
+
+    // Translate world matrix so its at the center of the model
+    D3DXMATRIX mTrans;
+    D3DXMatrixTranslation( &mTrans, -m_vModelCenter.x, -m_vModelCenter.y, -m_vModelCenter.z );
+    m_mWorld = mTrans * m_mModelRot;
+}
+
+
+void CModelViewerCamera::SetDragRect( RECT &rc )
+{
+    CBaseCamera::SetDragRect( rc );
+
+    m_WorldArcBall.SetOffset( rc.left, rc.top );
+    m_ViewArcBall.SetOffset( rc.left, rc.top );
+    SetWindow( rc.right - rc.left, rc.bottom - rc.top );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Reset the camera's position back to the default
+//--------------------------------------------------------------------------------------
+VOID CModelViewerCamera::Reset()
+{
+    CBaseCamera::Reset();
+
+    D3DXMatrixIdentity( &m_mWorld );
+    D3DXMatrixIdentity( &m_mModelRot );
+    D3DXMatrixIdentity( &m_mModelLastRot );    
+    D3DXMatrixIdentity( &m_mCameraRotLast );    
+
+    m_fRadius = m_fDefaultRadius;
+    m_WorldArcBall.Reset();
+    m_ViewArcBall.Reset();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Override for setting the view parameters
+//--------------------------------------------------------------------------------------
+void CModelViewerCamera::SetViewParams( D3DXVECTOR3* pvEyePt, D3DXVECTOR3* pvLookatPt )
+{
+    CBaseCamera::SetViewParams( pvEyePt, pvLookatPt );
+
+    // Propogate changes to the member arcball
+    D3DXQUATERNION quat;
+    D3DXMATRIXA16 mRotation;
+    D3DXVECTOR3 vUp(0,1,0);
+    D3DXMatrixLookAtLH( &mRotation, pvEyePt, pvLookatPt, &vUp );
+    D3DXQuaternionRotationMatrix( &quat, &mRotation );
+    m_ViewArcBall.SetQuatNow( quat );
+
+    // Set the radius according to the distance
+    D3DXVECTOR3 vEyeToPoint;
+    D3DXVec3Subtract( &vEyeToPoint, pvLookatPt, pvEyePt );
+    SetRadius( D3DXVec3Length( &vEyeToPoint ) );
+
+    // View information changed. FrameMove should be called.
+    m_bDragSinceLastUpdate = true;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Call this from your message proc so this class can handle window messages
+//--------------------------------------------------------------------------------------
+LRESULT CModelViewerCamera::HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    CBaseCamera::HandleMessages( hWnd, uMsg, wParam, lParam );
+
+    if( ( (uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONDBLCLK ) && m_nRotateModelButtonMask & MOUSE_LEFT_BUTTON) ||
+        ( (uMsg == WM_MBUTTONDOWN || uMsg == WM_MBUTTONDBLCLK ) && m_nRotateModelButtonMask & MOUSE_MIDDLE_BUTTON) ||
+        ( (uMsg == WM_RBUTTONDOWN || uMsg == WM_RBUTTONDBLCLK ) && m_nRotateModelButtonMask & MOUSE_RIGHT_BUTTON) )
+    {
+        int iMouseX = (short)LOWORD(lParam);
+        int iMouseY = (short)HIWORD(lParam);
+        m_WorldArcBall.OnBegin( iMouseX, iMouseY );
+    }
+
+    if( ( (uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONDBLCLK ) && m_nRotateCameraButtonMask & MOUSE_LEFT_BUTTON) ||
+        ( (uMsg == WM_MBUTTONDOWN || uMsg == WM_MBUTTONDBLCLK ) && m_nRotateCameraButtonMask & MOUSE_MIDDLE_BUTTON) ||
+        ( (uMsg == WM_RBUTTONDOWN || uMsg == WM_RBUTTONDBLCLK ) && m_nRotateCameraButtonMask & MOUSE_RIGHT_BUTTON) )
+    {
+        int iMouseX = (short)LOWORD(lParam);
+        int iMouseY = (short)HIWORD(lParam);
+        m_ViewArcBall.OnBegin( iMouseX, iMouseY );
+    }
+
+    if( uMsg == WM_MOUSEMOVE )
+    {
+        int iMouseX = (short)LOWORD(lParam);
+        int iMouseY = (short)HIWORD(lParam);
+        m_WorldArcBall.OnMove( iMouseX, iMouseY );
+        m_ViewArcBall.OnMove( iMouseX, iMouseY );
+    }
+
+    if( (uMsg == WM_LBUTTONUP && m_nRotateModelButtonMask & MOUSE_LEFT_BUTTON) ||
+        (uMsg == WM_MBUTTONUP && m_nRotateModelButtonMask & MOUSE_MIDDLE_BUTTON) ||
+        (uMsg == WM_RBUTTONUP && m_nRotateModelButtonMask & MOUSE_RIGHT_BUTTON) )
+    {
+        m_WorldArcBall.OnEnd();
+    }
+
+    if( (uMsg == WM_LBUTTONUP && m_nRotateCameraButtonMask & MOUSE_LEFT_BUTTON) ||
+        (uMsg == WM_MBUTTONUP && m_nRotateCameraButtonMask & MOUSE_MIDDLE_BUTTON) ||
+        (uMsg == WM_RBUTTONUP && m_nRotateCameraButtonMask & MOUSE_RIGHT_BUTTON) )
+    {
+        m_ViewArcBall.OnEnd();
+    }
+
+    if( uMsg == WM_LBUTTONDOWN ||
+        uMsg == WM_LBUTTONDBLCLK ||
+        uMsg == WM_MBUTTONDOWN ||
+        uMsg == WM_MBUTTONDBLCLK ||
+        uMsg == WM_RBUTTONDOWN ||
+        uMsg == WM_RBUTTONDBLCLK ||
+        uMsg == WM_LBUTTONUP ||
+        uMsg == WM_MBUTTONUP ||
+        uMsg == WM_RBUTTONUP ||
+        uMsg == WM_MOUSEWHEEL ||
+        uMsg == WM_MOUSEMOVE )
+    {
+        m_bDragSinceLastUpdate = true;
+    }
+
+    return FALSE;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Desc: Returns a view matrix for rendering to a face of a cubemap.
+//--------------------------------------------------------------------------------------
+D3DXMATRIX DXUTGetCubeMapViewMatrix( DWORD dwFace )
+{
+    D3DXVECTOR3 vEyePt   = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
+    D3DXVECTOR3 vLookDir;
+    D3DXVECTOR3 vUpDir;
+
+    switch( dwFace )
+    {
+        case D3DCUBEMAP_FACE_POSITIVE_X:
+            vLookDir = D3DXVECTOR3( 1.0f, 0.0f, 0.0f );
+            vUpDir   = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
+            break;
+        case D3DCUBEMAP_FACE_NEGATIVE_X:
+            vLookDir = D3DXVECTOR3(-1.0f, 0.0f, 0.0f );
+            vUpDir   = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
+            break;
+        case D3DCUBEMAP_FACE_POSITIVE_Y:
+            vLookDir = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
+            vUpDir   = D3DXVECTOR3( 0.0f, 0.0f,-1.0f );
+            break;
+        case D3DCUBEMAP_FACE_NEGATIVE_Y:
+            vLookDir = D3DXVECTOR3( 0.0f,-1.0f, 0.0f );
+            vUpDir   = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
+            break;
+        case D3DCUBEMAP_FACE_POSITIVE_Z:
+            vLookDir = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
+            vUpDir   = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
+            break;
+        case D3DCUBEMAP_FACE_NEGATIVE_Z:
+            vLookDir = D3DXVECTOR3( 0.0f, 0.0f,-1.0f );
+            vUpDir   = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
+            break;
+    }
+
+    // Set the view transform for this cubemap surface
+    D3DXMATRIXA16 mView;
+    D3DXMatrixLookAtLH( &mView, &vEyePt, &vLookDir, &vUpDir );
+    return mView;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns the string for the given D3DFORMAT.
+//--------------------------------------------------------------------------------------
+LPCWSTR DXUTD3DFormatToString( D3DFORMAT format, bool bWithPrefix )
+{
+    WCHAR* pstr = NULL;
+    switch( format )
+    {
+    case D3DFMT_UNKNOWN:         pstr = L"D3DFMT_UNKNOWN"; break;
+    case D3DFMT_R8G8B8:          pstr = L"D3DFMT_R8G8B8"; break;
+    case D3DFMT_A8R8G8B8:        pstr = L"D3DFMT_A8R8G8B8"; break;
+    case D3DFMT_X8R8G8B8:        pstr = L"D3DFMT_X8R8G8B8"; break;
+    case D3DFMT_R5G6B5:          pstr = L"D3DFMT_R5G6B5"; break;
+    case D3DFMT_X1R5G5B5:        pstr = L"D3DFMT_X1R5G5B5"; break;
+    case D3DFMT_A1R5G5B5:        pstr = L"D3DFMT_A1R5G5B5"; break;
+    case D3DFMT_A4R4G4B4:        pstr = L"D3DFMT_A4R4G4B4"; break;
+    case D3DFMT_R3G3B2:          pstr = L"D3DFMT_R3G3B2"; break;
+    case D3DFMT_A8:              pstr = L"D3DFMT_A8"; break;
+    case D3DFMT_A8R3G3B2:        pstr = L"D3DFMT_A8R3G3B2"; break;
+    case D3DFMT_X4R4G4B4:        pstr = L"D3DFMT_X4R4G4B4"; break;
+    case D3DFMT_A2B10G10R10:     pstr = L"D3DFMT_A2B10G10R10"; break;
+    case D3DFMT_A8B8G8R8:        pstr = L"D3DFMT_A8B8G8R8"; break;
+    case D3DFMT_X8B8G8R8:        pstr = L"D3DFMT_X8B8G8R8"; break;
+    case D3DFMT_G16R16:          pstr = L"D3DFMT_G16R16"; break;
+    case D3DFMT_A2R10G10B10:     pstr = L"D3DFMT_A2R10G10B10"; break;
+    case D3DFMT_A16B16G16R16:    pstr = L"D3DFMT_A16B16G16R16"; break;
+    case D3DFMT_A8P8:            pstr = L"D3DFMT_A8P8"; break;
+    case D3DFMT_P8:              pstr = L"D3DFMT_P8"; break;
+    case D3DFMT_L8:              pstr = L"D3DFMT_L8"; break;
+    case D3DFMT_A8L8:            pstr = L"D3DFMT_A8L8"; break;
+    case D3DFMT_A4L4:            pstr = L"D3DFMT_A4L4"; break;
+    case D3DFMT_V8U8:            pstr = L"D3DFMT_V8U8"; break;
+    case D3DFMT_L6V5U5:          pstr = L"D3DFMT_L6V5U5"; break;
+    case D3DFMT_X8L8V8U8:        pstr = L"D3DFMT_X8L8V8U8"; break;
+    case D3DFMT_Q8W8V8U8:        pstr = L"D3DFMT_Q8W8V8U8"; break;
+    case D3DFMT_V16U16:          pstr = L"D3DFMT_V16U16"; break;
+    case D3DFMT_A2W10V10U10:     pstr = L"D3DFMT_A2W10V10U10"; break;
+    case D3DFMT_UYVY:            pstr = L"D3DFMT_UYVY"; break;
+    case D3DFMT_YUY2:            pstr = L"D3DFMT_YUY2"; break;
+    case D3DFMT_DXT1:            pstr = L"D3DFMT_DXT1"; break;
+    case D3DFMT_DXT2:            pstr = L"D3DFMT_DXT2"; break;
+    case D3DFMT_DXT3:            pstr = L"D3DFMT_DXT3"; break;
+    case D3DFMT_DXT4:            pstr = L"D3DFMT_DXT4"; break;
+    case D3DFMT_DXT5:            pstr = L"D3DFMT_DXT5"; break;
+    case D3DFMT_D16_LOCKABLE:    pstr = L"D3DFMT_D16_LOCKABLE"; break;
+    case D3DFMT_D32:             pstr = L"D3DFMT_D32"; break;
+    case D3DFMT_D15S1:           pstr = L"D3DFMT_D15S1"; break;
+    case D3DFMT_D24S8:           pstr = L"D3DFMT_D24S8"; break;
+    case D3DFMT_D24X8:           pstr = L"D3DFMT_D24X8"; break;
+    case D3DFMT_D24X4S4:         pstr = L"D3DFMT_D24X4S4"; break;
+    case D3DFMT_D16:             pstr = L"D3DFMT_D16"; break;
+    case D3DFMT_L16:             pstr = L"D3DFMT_L16"; break;
+    case D3DFMT_VERTEXDATA:      pstr = L"D3DFMT_VERTEXDATA"; break;
+    case D3DFMT_INDEX16:         pstr = L"D3DFMT_INDEX16"; break;
+    case D3DFMT_INDEX32:         pstr = L"D3DFMT_INDEX32"; break;
+    case D3DFMT_Q16W16V16U16:    pstr = L"D3DFMT_Q16W16V16U16"; break;
+    case D3DFMT_MULTI2_ARGB8:    pstr = L"D3DFMT_MULTI2_ARGB8"; break;
+    case D3DFMT_R16F:            pstr = L"D3DFMT_R16F"; break;
+    case D3DFMT_G16R16F:         pstr = L"D3DFMT_G16R16F"; break;
+    case D3DFMT_A16B16G16R16F:   pstr = L"D3DFMT_A16B16G16R16F"; break;
+    case D3DFMT_R32F:            pstr = L"D3DFMT_R32F"; break;
+    case D3DFMT_G32R32F:         pstr = L"D3DFMT_G32R32F"; break;
+    case D3DFMT_A32B32G32R32F:   pstr = L"D3DFMT_A32B32G32R32F"; break;
+    case D3DFMT_CxV8U8:          pstr = L"D3DFMT_CxV8U8"; break;
+    default:                     pstr = L"Unknown format"; break;
+    }
+    if( bWithPrefix || wcsstr( pstr, L"D3DFMT_" )== NULL )
+        return pstr;
+    else
+        return pstr + lstrlen( L"D3DFMT_" );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Outputs to the debug stream a formatted Unicode string with a variable-argument list.
+//--------------------------------------------------------------------------------------
+VOID DXUTOutputDebugStringW( LPCWSTR strMsg, ... )
+{
+#if defined(DEBUG) || defined(_DEBUG)
+    WCHAR strBuffer[512];
+    
+    va_list args;
+    va_start(args, strMsg);
+    StringCchVPrintfW( strBuffer, 512, strMsg, args );
+    strBuffer[511] = L'\0';
+    va_end(args);
+
+    OutputDebugString( strBuffer );
+#else
+    UNREFERENCED_PARAMETER(strMsg);
+#endif
+}
+
+
+//--------------------------------------------------------------------------------------
+// Outputs to the debug stream a formatted MBCS string with a variable-argument list.
+//--------------------------------------------------------------------------------------
+VOID DXUTOutputDebugStringA( LPCSTR strMsg, ... )
+{
+#if defined(DEBUG) || defined(_DEBUG)
+    CHAR strBuffer[512];
+    
+    va_list args;
+    va_start(args, strMsg);
+    StringCchVPrintfA( strBuffer, 512, strMsg, args );
+    strBuffer[511] = '\0';
+    va_end(args);
+
+    OutputDebugStringA( strBuffer );
+#else
+    UNREFERENCED_PARAMETER(strMsg);
+#endif
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTLineManager::CDXUTLineManager()
+{
+    m_pd3dDevice = NULL;
+    m_pD3DXLine = NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTLineManager::~CDXUTLineManager()
+{
+    OnDeletedDevice();
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::OnCreatedDevice( IDirect3DDevice9* pd3dDevice )
+{
+    m_pd3dDevice = pd3dDevice;
+
+    HRESULT hr;
+    hr = D3DXCreateLine( m_pd3dDevice, &m_pD3DXLine );
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::OnResetDevice()
+{
+    if( m_pD3DXLine )
+        m_pD3DXLine->OnResetDevice();
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::OnRender()
+{
+    HRESULT hr;
+    if( NULL == m_pD3DXLine )
+        return E_INVALIDARG;
+
+    bool bDrawingHasBegun = false;
+    float fLastWidth = 0.0f;
+    bool bLastAntiAlias = false;
+    
+    for( int i=0; i<m_LinesList.GetSize(); i++ )
+    {
+        LINE_NODE* pLineNode = m_LinesList.GetAt(i);
+        if( pLineNode )
+        {
+            if( !bDrawingHasBegun || 
+                fLastWidth != pLineNode->fWidth || 
+                bLastAntiAlias != pLineNode->bAntiAlias )
+            {
+                if( bDrawingHasBegun )
+                {
+                    hr = m_pD3DXLine->End();
+                    if( FAILED(hr) )
+                        return hr;
+                }
+
+                m_pD3DXLine->SetWidth( pLineNode->fWidth );
+                m_pD3DXLine->SetAntialias( pLineNode->bAntiAlias );
+
+                fLastWidth = pLineNode->fWidth;
+                bLastAntiAlias = pLineNode->bAntiAlias;
+
+                hr = m_pD3DXLine->Begin();
+                if( FAILED(hr) )
+                    return hr;
+                bDrawingHasBegun = true;
+            }
+
+            hr = m_pD3DXLine->Draw( pLineNode->pVertexList, pLineNode->dwVertexListCount, pLineNode->Color );
+            if( FAILED(hr) )
+                return hr;
+        }
+    }
+
+    if( bDrawingHasBegun )
+    {
+        hr = m_pD3DXLine->End();
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::OnLostDevice()
+{
+    if( m_pD3DXLine )
+        m_pD3DXLine->OnLostDevice();
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::OnDeletedDevice()
+{
+    RemoveAllLines();
+    SAFE_RELEASE( m_pD3DXLine );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::AddLine( int* pnLineID, D3DXVECTOR2* pVertexList, DWORD dwVertexListCount, D3DCOLOR Color, float fWidth, float fScaleRatio, bool bAntiAlias )
+{
+    if( pVertexList == NULL || dwVertexListCount == 0 )
+        return E_INVALIDARG;
+
+    LINE_NODE* pLineNode = new LINE_NODE;
+    if( pLineNode == NULL )
+        return E_OUTOFMEMORY;
+    ZeroMemory( pLineNode, sizeof(LINE_NODE) );
+
+    pLineNode->nLineID = m_LinesList.GetSize();
+    pLineNode->Color = Color;
+    pLineNode->fWidth = fWidth;
+    pLineNode->bAntiAlias = bAntiAlias;
+    pLineNode->dwVertexListCount = dwVertexListCount;
+
+    if( pnLineID )
+        *pnLineID = pLineNode->nLineID;
+
+    pLineNode->pVertexList = new D3DXVECTOR2[dwVertexListCount];
+    if( pLineNode->pVertexList == NULL )
+    {
+        delete pLineNode;
+        return E_OUTOFMEMORY;
+    }
+    for( DWORD i=0; i<dwVertexListCount; i++ )
+    {
+        pLineNode->pVertexList[i] = pVertexList[i] * fScaleRatio;
+    }
+
+    m_LinesList.Add( pLineNode );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::AddRect( int* pnLineID, RECT rc, D3DCOLOR Color, float fWidth, float fScaleRatio, bool bAntiAlias )
+{
+    if( fWidth > 2.0f )
+    {
+        D3DXVECTOR2 vertexList[8];
+
+        vertexList[0].x = (float)rc.left;
+        vertexList[0].y = (float)rc.top - (fWidth/2.0f);
+
+        vertexList[1].x = (float)rc.left;
+        vertexList[1].y = (float)rc.bottom + (fWidth/2.0f);
+
+        vertexList[2].x = (float)rc.left;
+        vertexList[2].y = (float)rc.bottom - 0.5f;
+
+        vertexList[3].x = (float)rc.right;
+        vertexList[3].y = (float)rc.bottom - 0.5f;
+
+        vertexList[4].x = (float)rc.right;
+        vertexList[4].y = (float)rc.bottom + (fWidth/2.0f);
+
+        vertexList[5].x = (float)rc.right;
+        vertexList[5].y = (float)rc.top - (fWidth/2.0f);
+
+        vertexList[6].x = (float)rc.right;
+        vertexList[6].y = (float)rc.top;
+
+        vertexList[7].x = (float)rc.left;
+        vertexList[7].y = (float)rc.top;
+        
+        return AddLine( pnLineID, vertexList, 8, Color, fWidth, fScaleRatio, bAntiAlias );
+    }
+    else
+    {
+        D3DXVECTOR2 vertexList[5];
+        vertexList[0].x = (float)rc.left;
+        vertexList[0].y = (float)rc.top;
+
+        vertexList[1].x = (float)rc.left;
+        vertexList[1].y = (float)rc.bottom;
+
+        vertexList[2].x = (float)rc.right;
+        vertexList[2].y = (float)rc.bottom;
+
+        vertexList[3].x = (float)rc.right;
+        vertexList[3].y = (float)rc.top;
+
+        vertexList[4].x = (float)rc.left;
+        vertexList[4].y = (float)rc.top;
+        
+        return AddLine( pnLineID, vertexList, 5, Color, fWidth, fScaleRatio, bAntiAlias );
+    }
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::RemoveLine( int nLineID )
+{
+    for( int i=0; i<m_LinesList.GetSize(); i++ )
+    {
+        LINE_NODE* pLineNode = m_LinesList.GetAt(i);
+        if( pLineNode && pLineNode->nLineID == nLineID )
+        {
+            SAFE_DELETE_ARRAY( pLineNode->pVertexList );
+            delete pLineNode;
+            m_LinesList.SetAt(i, NULL);
+        }
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTLineManager::RemoveAllLines()
+{
+    for( int i=0; i<m_LinesList.GetSize(); i++ )
+    {
+        LINE_NODE* pLineNode = m_LinesList.GetAt(i);
+        if( pLineNode )
+        {
+            SAFE_DELETE_ARRAY( pLineNode->pVertexList );
+            delete pLineNode;
+        }
+    }
+    m_LinesList.RemoveAll();
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTTextHelper::CDXUTTextHelper( ID3DXFont* pFont, ID3DXSprite* pSprite, int nLineHeight )
+{
+    m_pFont = pFont;
+    m_pSprite = pSprite;
+    m_clr = D3DXCOLOR(1,1,1,1);
+    m_pt.x = 0; 
+    m_pt.y = 0; 
+    m_nLineHeight = nLineHeight;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTTextHelper::DrawFormattedTextLine( const WCHAR* strMsg, ... )
+{
+    WCHAR strBuffer[512];
+    
+    va_list args;
+    va_start(args, strMsg);
+    StringCchVPrintf( strBuffer, 512, strMsg, args );
+    strBuffer[511] = L'\0';
+    va_end(args);
+
+    return DrawTextLine( strBuffer );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTTextHelper::DrawTextLine( const WCHAR* strMsg )
+{
+    if( NULL == m_pFont ) 
+        return DXUT_ERR_MSGBOX( L"DrawTextLine", E_INVALIDARG );
+
+    HRESULT hr;
+    RECT rc;
+    SetRect( &rc, m_pt.x, m_pt.y, 0, 0 ); 
+    hr = m_pFont->DrawText( m_pSprite, strMsg, -1, &rc, DT_NOCLIP, m_clr );
+    if( FAILED(hr) )
+        return DXTRACE_ERR_MSGBOX( L"DrawText", hr );
+
+    m_pt.y += m_nLineHeight;
+
+    return S_OK;
+}
+
+
+HRESULT CDXUTTextHelper::DrawFormattedTextLine( RECT &rc, DWORD dwFlags, const WCHAR* strMsg, ... )
+{
+    WCHAR strBuffer[512];
+    
+    va_list args;
+    va_start(args, strMsg);
+    StringCchVPrintf( strBuffer, 512, strMsg, args );
+    strBuffer[511] = L'\0';
+    va_end(args);
+
+    return DrawTextLine( rc, dwFlags, strBuffer );
+}
+
+
+HRESULT CDXUTTextHelper::DrawTextLine( RECT &rc, DWORD dwFlags, const WCHAR* strMsg )
+{
+    if( NULL == m_pFont ) 
+        return DXUT_ERR_MSGBOX( L"DrawTextLine", E_INVALIDARG );
+
+    HRESULT hr;
+    hr = m_pFont->DrawText( m_pSprite, strMsg, -1, &rc, dwFlags, m_clr );
+    if( FAILED(hr) )
+        return DXTRACE_ERR_MSGBOX( L"DrawText", hr );
+
+    m_pt.y += m_nLineHeight;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTTextHelper::Begin()
+{
+    if( m_pSprite )
+        m_pSprite->Begin( D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_TEXTURE );
+}
+void CDXUTTextHelper::End()
+{
+    if( m_pSprite )
+        m_pSprite->End();
+}
+
+
+//--------------------------------------------------------------------------------------
+IDirect3DDevice9* CDXUTDirectionWidget::s_pd3dDevice = NULL;
+ID3DXEffect*      CDXUTDirectionWidget::s_pEffect = NULL;       
+ID3DXMesh*        CDXUTDirectionWidget::s_pMesh = NULL;    
+
+
+//--------------------------------------------------------------------------------------
+CDXUTDirectionWidget::CDXUTDirectionWidget()
+{
+    m_fRadius = 1.0f;
+    m_vDefaultDir = D3DXVECTOR3(0,1,0);
+    m_vCurrentDir = m_vDefaultDir;
+    m_nRotateMask = MOUSE_RIGHT_BUTTON;
+
+    D3DXMatrixIdentity( &m_mView );
+    D3DXMatrixIdentity( &m_mRot );
+    D3DXMatrixIdentity( &m_mRotSnapshot );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDirectionWidget::StaticOnCreateDevice( IDirect3DDevice9* pd3dDevice )
+{
+    HRESULT hr;
+
+    s_pd3dDevice = pd3dDevice;
+
+    const char* g_strBuffer = 
+    "float4 g_MaterialDiffuseColor;      // Material's diffuse color\r\n"
+    "float3 g_LightDir;                  // Light's direction in world space\r\n"
+    "float4x4 g_mWorld;                  // World matrix for object\r\n"
+    "float4x4 g_mWorldViewProjection;    // World * View * Projection matrix\r\n"
+    "\r\n"
+    "struct VS_OUTPUT\r\n"
+    "{\r\n"
+    "    float4 Position   : POSITION;   // vertex position\r\n"
+    "    float4 Diffuse    : COLOR0;     // vertex diffuse color\r\n"
+    "};\r\n"
+    "\r\n"
+    "VS_OUTPUT RenderWith1LightNoTextureVS( float4 vPos : POSITION,\r\n"
+    "                                       float3 vNormal : NORMAL )\r\n"
+    "{\r\n"
+    "    VS_OUTPUT Output;\r\n"
+    "\r\n"
+    "    // Transform the position from object space to homogeneous projection space\r\n"
+    "    Output.Position = mul(vPos, g_mWorldViewProjection);\r\n"
+    "\r\n"
+    "    // Transform the normal from object space to world space\r\n"
+    "    float3 vNormalWorldSpace;\r\n"
+    "    vNormalWorldSpace = normalize(mul(vNormal, (float3x3)g_mWorld)); // normal (world space)\r\n"
+    "\r\n"
+    "    // Compute simple directional lighting equation\r\n"
+    "    Output.Diffuse.rgb = g_MaterialDiffuseColor * max(0,dot(vNormalWorldSpace, g_LightDir));\r\n"
+    "    Output.Diffuse.a = 1.0f;\r\n"
+    "\r\n"
+    "    return Output;\r\n"
+    "}\r\n"
+    "\r\n"
+    "float4 RenderWith1LightNoTexturePS( float4 Diffuse : COLOR0 ) : COLOR0\r\n"
+    "{\r\n"
+    "    return Diffuse;\r\n"
+    "}\r\n"
+    "\r\n"
+    "technique RenderWith1LightNoTexture\r\n"
+    "{\r\n"
+    "    pass P0\r\n"
+    "    {\r\n"
+    "        VertexShader = compile vs_1_1 RenderWith1LightNoTextureVS();\r\n"
+    "        PixelShader  = compile ps_1_1 RenderWith1LightNoTexturePS();\r\n"
+    "    }\r\n"
+    "}\r\n"
+    "";
+
+    UINT dwBufferSize = (UINT)strlen(g_strBuffer) + 1; 
+
+    V_RETURN( D3DXCreateEffect( s_pd3dDevice, g_strBuffer, dwBufferSize, NULL, NULL, D3DXFX_NOT_CLONEABLE, NULL, &s_pEffect, NULL ) );
+
+    // Load the mesh with D3DX and get back a ID3DXMesh*.  For this
+    // sample we'll ignore the X file's embedded materials since we know 
+    // exactly the model we're loading.  See the mesh samples such as
+    // "OptimizedMesh" for a more generic mesh loading example.
+    V_RETURN( DXUTCreateArrowMeshFromInternalArray( s_pd3dDevice, &s_pMesh ) );
+
+    // Optimize the mesh for this graphics card's vertex cache 
+    // so when rendering the mesh's triangle list the vertices will 
+    // cache hit more often so it won't have to re-execute the vertex shader 
+    // on those vertices so it will improve perf.     
+    DWORD* rgdwAdjacency = new DWORD[s_pMesh->GetNumFaces() * 3];
+    if( rgdwAdjacency == NULL )
+        return E_OUTOFMEMORY;
+    V( s_pMesh->GenerateAdjacency(1e-6f,rgdwAdjacency) );
+    V( s_pMesh->OptimizeInplace(D3DXMESHOPT_VERTEXCACHE, rgdwAdjacency, NULL, NULL, NULL) );
+    delete []rgdwAdjacency;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDirectionWidget::OnResetDevice( const D3DSURFACE_DESC* pBackBufferSurfaceDesc )
+{
+    m_ArcBall.SetWindow( pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDirectionWidget::StaticOnLostDevice()
+{
+    if( s_pEffect )
+        s_pEffect->OnLostDevice();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDirectionWidget::StaticOnDestroyDevice()
+{
+    SAFE_RELEASE(s_pEffect);
+    SAFE_RELEASE(s_pMesh);
+}    
+
+
+//--------------------------------------------------------------------------------------
+LRESULT CDXUTDirectionWidget::HandleMessages( HWND hWnd, UINT uMsg, 
+                                              WPARAM wParam, LPARAM lParam )
+{
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_MBUTTONDOWN:
+        case WM_RBUTTONDOWN:
+        {
+            if( ((m_nRotateMask & MOUSE_LEFT_BUTTON) != 0 && uMsg == WM_LBUTTONDOWN) ||
+                ((m_nRotateMask & MOUSE_MIDDLE_BUTTON) != 0 && uMsg == WM_MBUTTONDOWN) ||
+                ((m_nRotateMask & MOUSE_RIGHT_BUTTON) != 0 && uMsg == WM_RBUTTONDOWN) )
+            {
+                int iMouseX = (int)(short)LOWORD(lParam);
+                int iMouseY = (int)(short)HIWORD(lParam);
+                m_ArcBall.OnBegin( iMouseX, iMouseY );
+                SetCapture(hWnd);
+            }
+            return TRUE;
+        }
+
+        case WM_MOUSEMOVE:
+        {
+            if( m_ArcBall.IsBeingDragged() )
+            {
+                int iMouseX = (int)(short)LOWORD(lParam);
+                int iMouseY = (int)(short)HIWORD(lParam);
+                m_ArcBall.OnMove( iMouseX, iMouseY );
+                UpdateLightDir();
+            }
+            return TRUE;
+        }
+
+        case WM_LBUTTONUP:
+        case WM_MBUTTONUP:
+        case WM_RBUTTONUP:
+        {
+            if( ((m_nRotateMask & MOUSE_LEFT_BUTTON) != 0 && uMsg == WM_LBUTTONUP) ||
+                ((m_nRotateMask & MOUSE_MIDDLE_BUTTON) != 0 && uMsg == WM_MBUTTONUP) ||
+                ((m_nRotateMask & MOUSE_RIGHT_BUTTON) != 0 && uMsg == WM_RBUTTONUP) )
+            {
+                m_ArcBall.OnEnd();
+                ReleaseCapture();
+            }
+
+            UpdateLightDir();
+            return TRUE;
+        }
+    }
+
+    return 0;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDirectionWidget::OnRender( D3DXCOLOR color, const D3DXMATRIX* pmView, 
+                                        const D3DXMATRIX* pmProj, const D3DXVECTOR3* pEyePt )
+{
+    m_mView = *pmView;
+
+    // Render the light spheres so the user can visually see the light dir
+    UINT iPass, cPasses;
+    D3DXMATRIX mRotate;
+    D3DXMATRIX mScale;
+    D3DXMATRIX mTrans;
+    D3DXMATRIXA16 mWorldViewProj;
+    HRESULT hr;
+
+    V( s_pEffect->SetTechnique( "RenderWith1LightNoTexture" ) );
+    V( s_pEffect->SetVector( "g_MaterialDiffuseColor", (D3DXVECTOR4*)&color ) );
+
+    D3DXVECTOR3 vEyePt;
+    D3DXVec3Normalize( &vEyePt, pEyePt );
+    V( s_pEffect->SetValue( "g_LightDir", &vEyePt, sizeof(D3DXVECTOR3) ) );
+
+    // Rotate arrow model to point towards origin
+    D3DXMATRIX mRotateA, mRotateB;
+    D3DXVECTOR3 vAt = D3DXVECTOR3(0,0,0);
+    D3DXVECTOR3 vUp = D3DXVECTOR3(0,1,0);
+    D3DXMatrixRotationX( &mRotateB, D3DX_PI );
+    D3DXMatrixLookAtLH( &mRotateA, &m_vCurrentDir, &vAt, &vUp );
+    D3DXMatrixInverse( &mRotateA, NULL, &mRotateA );
+    mRotate = mRotateB * mRotateA;
+
+    D3DXVECTOR3 vL = m_vCurrentDir * m_fRadius * 1.0f;
+    D3DXMatrixTranslation( &mTrans, vL.x, vL.y, vL.z );
+    D3DXMatrixScaling( &mScale, m_fRadius*0.2f, m_fRadius*0.2f, m_fRadius*0.2f );
+
+    D3DXMATRIX mWorld = mRotate * mScale * mTrans;
+    mWorldViewProj = mWorld * (m_mView) * (*pmProj);
+
+    V( s_pEffect->SetMatrix( "g_mWorldViewProjection", &mWorldViewProj ) );
+    V( s_pEffect->SetMatrix( "g_mWorld", &mWorld ) );
+
+    for( int iSubset=0; iSubset<2; iSubset++ )
+    {
+        V( s_pEffect->Begin(&cPasses, 0) );
+        for (iPass = 0; iPass < cPasses; iPass++)
+        {
+            V( s_pEffect->BeginPass(iPass) );
+            V( s_pMesh->DrawSubset(iSubset) );
+            V( s_pEffect->EndPass() );
+        }
+        V( s_pEffect->End() );
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDirectionWidget::UpdateLightDir()
+{
+    D3DXMATRIX mInvView;
+    D3DXMatrixInverse(&mInvView, NULL, &m_mView);
+    mInvView._41 = mInvView._42 = mInvView._43 = 0;
+
+    D3DXMATRIX mLastRotInv;
+    D3DXMatrixInverse(&mLastRotInv, NULL, &m_mRotSnapshot);
+
+    D3DXMATRIX mRot = *m_ArcBall.GetRotationMatrix();
+    m_mRotSnapshot = mRot;
+
+    // Accumulate the delta of the arcball's rotation in view space.
+    // Note that per-frame delta rotations could be problematic over long periods of time.
+    m_mRot *= m_mView * mLastRotInv * mRot * mInvView;
+
+    // Since we're accumulating delta rotations, we need to orthonormalize 
+    // the matrix to prevent eventual matrix skew
+    D3DXVECTOR3* pXBasis = (D3DXVECTOR3*) &m_mRot._11;
+    D3DXVECTOR3* pYBasis = (D3DXVECTOR3*) &m_mRot._21;
+    D3DXVECTOR3* pZBasis = (D3DXVECTOR3*) &m_mRot._31;
+    D3DXVec3Normalize( pXBasis, pXBasis );
+    D3DXVec3Cross( pYBasis, pZBasis, pXBasis );
+    D3DXVec3Normalize( pYBasis, pYBasis );
+    D3DXVec3Cross( pZBasis, pXBasis, pYBasis );
+
+    // Transform the default direction vector by the light's rotation matrix
+    D3DXVec3TransformNormal( &m_vCurrentDir, &m_vDefaultDir, &m_mRot );
+
+    return S_OK;
+}
+
+//--------------------------------------------------------------------------------------
+// Direct3D9 dynamic linking support -- calls top-level D3D9 APIs with graceful
+// failure if APIs are not present.
+//--------------------------------------------------------------------------------------
+
+// Function prototypes
+typedef IDirect3D9* (WINAPI * LPDIRECT3DCREATE9) (UINT);
+typedef INT         (WINAPI * LPD3DPERF_BEGINEVENT)(D3DCOLOR, LPCWSTR);
+typedef INT         (WINAPI * LPD3DPERF_ENDEVENT)(void);
+typedef VOID        (WINAPI * LPD3DPERF_SETMARKER)(D3DCOLOR, LPCWSTR);
+typedef VOID        (WINAPI * LPD3DPERF_SETREGION)(D3DCOLOR, LPCWSTR);
+typedef BOOL        (WINAPI * LPD3DPERF_QUERYREPEATFRAME)(void);
+typedef VOID        (WINAPI * LPD3DPERF_SETOPTIONS)( DWORD dwOptions );
+typedef DWORD       (WINAPI * LPD3DPERF_GETSTATUS)( void );
+
+// Module and function pointers
+static HMODULE s_hModD3D9 = NULL;
+static LPDIRECT3DCREATE9 s_DynamicDirect3DCreate9 = NULL;
+static LPD3DPERF_BEGINEVENT s_DynamicD3DPERF_BeginEvent = NULL;
+static LPD3DPERF_ENDEVENT s_DynamicD3DPERF_EndEvent = NULL;
+static LPD3DPERF_SETMARKER s_DynamicD3DPERF_SetMarker = NULL;
+static LPD3DPERF_SETREGION s_DynamicD3DPERF_SetRegion = NULL;
+static LPD3DPERF_QUERYREPEATFRAME s_DynamicD3DPERF_QueryRepeatFrame = NULL;
+static LPD3DPERF_SETOPTIONS s_DynamicD3DPERF_SetOptions = NULL;
+static LPD3DPERF_GETSTATUS s_DynamicD3DPERF_GetStatus = NULL;
+
+// Ensure function pointers are initialized
+static bool DXUT_EnsureD3DAPIs( void )
+{
+    // If module is non-NULL, this function has already been called.  Note
+    // that this doesn't guarantee that all D3D9 procaddresses were found.
+    if( s_hModD3D9 != NULL )
+        return true;
+
+    // This may fail if DirectX 9 isn't installed
+    WCHAR wszPath[MAX_PATH+1];
+    if( !::GetSystemDirectory( wszPath, MAX_PATH+1 ) )
+        return false;
+    StringCchCat( wszPath, MAX_PATH, L"\\d3d9.dll" );
+    s_hModD3D9 = LoadLibrary( wszPath );
+    if( s_hModD3D9 == NULL ) 
+        return false;
+    s_DynamicDirect3DCreate9 = (LPDIRECT3DCREATE9)GetProcAddress( s_hModD3D9, "Direct3DCreate9" );
+    s_DynamicD3DPERF_BeginEvent = (LPD3DPERF_BEGINEVENT)GetProcAddress( s_hModD3D9, "D3DPERF_BeginEvent" );
+    s_DynamicD3DPERF_EndEvent = (LPD3DPERF_ENDEVENT)GetProcAddress( s_hModD3D9, "D3DPERF_EndEvent" );
+    s_DynamicD3DPERF_SetMarker = (LPD3DPERF_SETMARKER)GetProcAddress( s_hModD3D9, "D3DPERF_SetMarker" );
+    s_DynamicD3DPERF_SetRegion = (LPD3DPERF_SETREGION)GetProcAddress( s_hModD3D9, "D3DPERF_SetRegion" );
+    s_DynamicD3DPERF_QueryRepeatFrame = (LPD3DPERF_QUERYREPEATFRAME)GetProcAddress( s_hModD3D9, "D3DPERF_QueryRepeatFrame" );
+    s_DynamicD3DPERF_SetOptions = (LPD3DPERF_SETOPTIONS)GetProcAddress( s_hModD3D9, "D3DPERF_SetOptions" );
+    s_DynamicD3DPERF_GetStatus = (LPD3DPERF_GETSTATUS)GetProcAddress( s_hModD3D9, "D3DPERF_GetStatus" );
+    return true;
+}
+
+IDirect3D9 * WINAPI DXUT_Dynamic_Direct3DCreate9(UINT SDKVersion) 
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicDirect3DCreate9 != NULL )
+        return s_DynamicDirect3DCreate9( SDKVersion );
+    else
+        return NULL;
+}
+
+int WINAPI DXUT_Dynamic_D3DPERF_BeginEvent( D3DCOLOR col, LPCWSTR wszName )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_BeginEvent != NULL )
+        return s_DynamicD3DPERF_BeginEvent( col, wszName );
+    else
+        return -1;
+}
+
+int WINAPI DXUT_Dynamic_D3DPERF_EndEvent( void )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_EndEvent != NULL )
+        return s_DynamicD3DPERF_EndEvent();
+    else
+        return -1;
+}
+
+void WINAPI DXUT_Dynamic_D3DPERF_SetMarker( D3DCOLOR col, LPCWSTR wszName )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_SetMarker != NULL )
+        s_DynamicD3DPERF_SetMarker( col, wszName );
+}
+
+void WINAPI DXUT_Dynamic_D3DPERF_SetRegion( D3DCOLOR col, LPCWSTR wszName )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_SetRegion != NULL )
+        s_DynamicD3DPERF_SetRegion( col, wszName );
+}
+
+BOOL WINAPI DXUT_Dynamic_D3DPERF_QueryRepeatFrame( void )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_QueryRepeatFrame != NULL )
+        return s_DynamicD3DPERF_QueryRepeatFrame();
+    else
+        return FALSE;
+}
+
+void WINAPI DXUT_Dynamic_D3DPERF_SetOptions( DWORD dwOptions )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_SetOptions != NULL )
+        s_DynamicD3DPERF_SetOptions( dwOptions );
+}
+
+DWORD WINAPI DXUT_Dynamic_D3DPERF_GetStatus( void )
+{
+    if( DXUT_EnsureD3DAPIs() && s_DynamicD3DPERF_GetStatus != NULL )
+        return s_DynamicD3DPERF_GetStatus();
+    else
+        return 0;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Trace a string description of a decl 
+//--------------------------------------------------------------------------------------
+void DXUTTraceDecl( D3DVERTEXELEMENT9 decl[MAX_FVF_DECL_SIZE] )
+{
+    int iDecl=0;
+    for( iDecl=0; iDecl<MAX_FVF_DECL_SIZE; iDecl++ )
+    {
+        if( decl[iDecl].Stream == 0xFF )
+            break;
+
+        DXUTOutputDebugString( L"decl[%d]=Stream:%d, Offset:%d, %s, %s, %s, UsageIndex:%d\n", iDecl, 
+                    decl[iDecl].Stream,
+                    decl[iDecl].Offset,
+                    DXUTTraceD3DDECLTYPEtoString( decl[iDecl].Type ),
+                    DXUTTraceD3DDECLMETHODtoString( decl[iDecl].Method ),
+                    DXUTTraceD3DDECLUSAGEtoString( decl[iDecl].Usage ),
+                    decl[iDecl].UsageIndex );
+    }
+
+    DXUTOutputDebugString( L"decl[%d]=D3DDECL_END\n", iDecl );
+}
+
+
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTTraceD3DDECLTYPEtoString( BYTE t )
+{
+    switch( t )
+    {
+        case D3DDECLTYPE_FLOAT1: return L"D3DDECLTYPE_FLOAT1";
+        case D3DDECLTYPE_FLOAT2: return L"D3DDECLTYPE_FLOAT2";
+        case D3DDECLTYPE_FLOAT3: return L"D3DDECLTYPE_FLOAT3";
+        case D3DDECLTYPE_FLOAT4: return L"D3DDECLTYPE_FLOAT4";
+        case D3DDECLTYPE_D3DCOLOR: return L"D3DDECLTYPE_D3DCOLOR";
+        case D3DDECLTYPE_UBYTE4: return L"D3DDECLTYPE_UBYTE4";
+        case D3DDECLTYPE_SHORT2: return L"D3DDECLTYPE_SHORT2";
+        case D3DDECLTYPE_SHORT4: return L"D3DDECLTYPE_SHORT4";
+        case D3DDECLTYPE_UBYTE4N: return L"D3DDECLTYPE_UBYTE4N";
+        case D3DDECLTYPE_SHORT2N: return L"D3DDECLTYPE_SHORT2N";
+        case D3DDECLTYPE_SHORT4N: return L"D3DDECLTYPE_SHORT4N";
+        case D3DDECLTYPE_USHORT2N: return L"D3DDECLTYPE_USHORT2N";
+        case D3DDECLTYPE_USHORT4N: return L"D3DDECLTYPE_USHORT4N";
+        case D3DDECLTYPE_UDEC3: return L"D3DDECLTYPE_UDEC3";
+        case D3DDECLTYPE_DEC3N: return L"D3DDECLTYPE_DEC3N";
+        case D3DDECLTYPE_FLOAT16_2: return L"D3DDECLTYPE_FLOAT16_2";
+        case D3DDECLTYPE_FLOAT16_4: return L"D3DDECLTYPE_FLOAT16_4";
+        case D3DDECLTYPE_UNUSED: return L"D3DDECLTYPE_UNUSED";
+        default: return L"D3DDECLTYPE Unknown";
+    }
+}
+
+WCHAR* DXUTTraceD3DDECLMETHODtoString( BYTE m )
+{
+    switch( m )
+    {
+        case D3DDECLMETHOD_DEFAULT: return L"D3DDECLMETHOD_DEFAULT";
+        case D3DDECLMETHOD_PARTIALU: return L"D3DDECLMETHOD_PARTIALU";
+        case D3DDECLMETHOD_PARTIALV: return L"D3DDECLMETHOD_PARTIALV";
+        case D3DDECLMETHOD_CROSSUV: return L"D3DDECLMETHOD_CROSSUV";
+        case D3DDECLMETHOD_UV: return L"D3DDECLMETHOD_UV";
+        case D3DDECLMETHOD_LOOKUP: return L"D3DDECLMETHOD_LOOKUP";
+        case D3DDECLMETHOD_LOOKUPPRESAMPLED: return L"D3DDECLMETHOD_LOOKUPPRESAMPLED";
+        default: return L"D3DDECLMETHOD Unknown";
+    }
+}
+
+WCHAR* DXUTTraceD3DDECLUSAGEtoString( BYTE u )
+{
+    switch( u )
+    {
+        case D3DDECLUSAGE_POSITION: return L"D3DDECLUSAGE_POSITION";
+        case D3DDECLUSAGE_BLENDWEIGHT: return L"D3DDECLUSAGE_BLENDWEIGHT";
+        case D3DDECLUSAGE_BLENDINDICES: return L"D3DDECLUSAGE_BLENDINDICES";
+        case D3DDECLUSAGE_NORMAL: return L"D3DDECLUSAGE_NORMAL";
+        case D3DDECLUSAGE_PSIZE: return L"D3DDECLUSAGE_PSIZE";
+        case D3DDECLUSAGE_TEXCOORD: return L"D3DDECLUSAGE_TEXCOORD";
+        case D3DDECLUSAGE_TANGENT: return L"D3DDECLUSAGE_TANGENT";
+        case D3DDECLUSAGE_BINORMAL: return L"D3DDECLUSAGE_BINORMAL";
+        case D3DDECLUSAGE_TESSFACTOR: return L"D3DDECLUSAGE_TESSFACTOR";
+        case D3DDECLUSAGE_POSITIONT: return L"D3DDECLUSAGE_POSITIONT";
+        case D3DDECLUSAGE_COLOR: return L"D3DDECLUSAGE_COLOR";
+        case D3DDECLUSAGE_FOG: return L"D3DDECLUSAGE_FOG";
+        case D3DDECLUSAGE_DEPTH: return L"D3DDECLUSAGE_DEPTH";
+        case D3DDECLUSAGE_SAMPLE: return L"D3DDECLUSAGE_SAMPLE";
+        default: return L"D3DDECLUSAGE Unknown";
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Multimon API handling for OSes with or without multimon API support
+//--------------------------------------------------------------------------------------
+#define DXUT_PRIMARY_MONITOR ((HMONITOR)0x12340042)
+typedef HMONITOR (WINAPI* LPMONITORFROMWINDOW)(HWND, DWORD);
+typedef BOOL     (WINAPI* LPGETMONITORINFO)(HMONITOR, LPMONITORINFO);
+
+BOOL DXUTGetMonitorInfo(HMONITOR hMonitor, LPMONITORINFO lpMonitorInfo)
+{
+    static bool s_bInited = false;
+    static LPGETMONITORINFO s_pFnGetMonitorInfo = NULL;
+    if( !s_bInited )        
+    {
+        s_bInited = true;
+        HMODULE hUser32 = GetModuleHandle( L"USER32" );
+        if (hUser32 ) 
+        {
+            OSVERSIONINFOA osvi = {0}; osvi.dwOSVersionInfoSize = sizeof(osvi); GetVersionExA((OSVERSIONINFOA*)&osvi);
+            bool bNT = (VER_PLATFORM_WIN32_NT == osvi.dwPlatformId);    
+            s_pFnGetMonitorInfo = (LPGETMONITORINFO) (bNT ? GetProcAddress(hUser32,"GetMonitorInfoW") : GetProcAddress(hUser32,"GetMonitorInfoA"));
+        }
+    }
+
+    if( s_pFnGetMonitorInfo ) 
+        return s_pFnGetMonitorInfo(hMonitor, lpMonitorInfo);
+
+    RECT rcWork;
+    if ((hMonitor == DXUT_PRIMARY_MONITOR) && lpMonitorInfo && (lpMonitorInfo->cbSize >= sizeof(MONITORINFO)) && SystemParametersInfoA(SPI_GETWORKAREA, 0, &rcWork, 0))
+    {
+        lpMonitorInfo->rcMonitor.left = 0;
+        lpMonitorInfo->rcMonitor.top  = 0;
+        lpMonitorInfo->rcMonitor.right  = GetSystemMetrics(SM_CXSCREEN);
+        lpMonitorInfo->rcMonitor.bottom = GetSystemMetrics(SM_CYSCREEN);
+        lpMonitorInfo->rcWork = rcWork;
+        lpMonitorInfo->dwFlags = MONITORINFOF_PRIMARY;
+        return TRUE;
+    }
+    return FALSE;
+}
+
+
+HMONITOR DXUTMonitorFromWindow(HWND hWnd, DWORD dwFlags)
+{
+    static bool s_bInited = false;
+    static LPMONITORFROMWINDOW s_pFnGetMonitorFronWindow = NULL;
+    if( !s_bInited )        
+    {
+        s_bInited = true;
+        HMODULE hUser32 = GetModuleHandle( L"USER32" );
+        if (hUser32 ) s_pFnGetMonitorFronWindow = (LPMONITORFROMWINDOW) GetProcAddress(hUser32,"MonitorFromWindow");
+    }
+
+    if( s_pFnGetMonitorFronWindow ) 
+        return s_pFnGetMonitorFronWindow(hWnd, dwFlags);
+    if (dwFlags & (MONITOR_DEFAULTTOPRIMARY | MONITOR_DEFAULTTONEAREST))
+        return DXUT_PRIMARY_MONITOR;
+    return NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Get the desktop resolution of an adapter. This isn't the same as the current resolution 
+// from GetAdapterDisplayMode since the device might be fullscreen 
+//--------------------------------------------------------------------------------------
+void DXUTGetDesktopResolution( UINT AdapterOrdinal, UINT* pWidth, UINT* pHeight )
+{
+    CD3DEnumeration* pd3dEnum = DXUTGetEnumeration();
+    CD3DEnumAdapterInfo* pAdapterInfo = pd3dEnum->GetAdapterInfo( AdapterOrdinal );                       
+    DEVMODE devMode;
+    ZeroMemory( &devMode, sizeof(DEVMODE) );
+    devMode.dmSize = sizeof(DEVMODE);
+    WCHAR strDeviceName[256];
+    MultiByteToWideChar( CP_ACP, 0, pAdapterInfo->AdapterIdentifier.DeviceName, -1, strDeviceName, 256 );
+    strDeviceName[255] = 0;
+    EnumDisplaySettings( strDeviceName, ENUM_REGISTRY_SETTINGS, &devMode );
+    
+    if( pWidth )
+        *pWidth = devMode.dmPelsWidth;
+    if( pHeight )
+        *pHeight = devMode.dmPelsHeight;
+}
+
+
+//--------------------------------------------------------------------------------------
+IDirect3DDevice9* DXUTCreateRefDevice( HWND hWnd, bool bNullRef )
+{
+    HRESULT hr;
+    IDirect3D9* pD3D = DXUT_Dynamic_Direct3DCreate9( D3D_SDK_VERSION );
+    if( NULL == pD3D )
+        return NULL;
+
+    D3DDISPLAYMODE Mode;
+    pD3D->GetAdapterDisplayMode(0, &Mode);
+
+    D3DPRESENT_PARAMETERS pp;
+    ZeroMemory( &pp, sizeof(D3DPRESENT_PARAMETERS) );
+    pp.BackBufferWidth  = 1;
+    pp.BackBufferHeight = 1;
+    pp.BackBufferFormat = Mode.Format;
+    pp.BackBufferCount  = 1;
+    pp.SwapEffect       = D3DSWAPEFFECT_COPY;
+    pp.Windowed         = TRUE;
+    pp.hDeviceWindow    = hWnd;
+
+    IDirect3DDevice9* pd3dDevice = NULL;
+    hr = pD3D->CreateDevice( D3DADAPTER_DEFAULT, bNullRef ? D3DDEVTYPE_NULLREF : D3DDEVTYPE_REF,
+                             hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &pp, &pd3dDevice );
+
+    SAFE_RELEASE( pD3D );
+    return pd3dDevice;
+}
+
+
+typedef DWORD (WINAPI* LPXINPUTGETSTATE)(DWORD dwUserIndex, XINPUT_STATE* pState );
+typedef DWORD (WINAPI* LPXINPUTSETSTATE)(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration );
+typedef DWORD (WINAPI* LPXINPUTGETCAPABILITIES)( DWORD dwUserIndex, DWORD dwFlags, XINPUT_CAPABILITIES* pCapabilities );
+
+
+
+//--------------------------------------------------------------------------------------
+// Does extra processing on XInput data to make it slightly more convenient to use
+//--------------------------------------------------------------------------------------
+HRESULT DXUTGetGamepadState( DWORD dwPort, DXUT_GAMEPAD* pGamePad, bool bThumbstickDeadZone, bool bSnapThumbstickToCardinals )
+{
+    if( dwPort >= DXUT_MAX_CONTROLLERS || pGamePad == NULL )
+        return E_FAIL;
+
+    static LPXINPUTGETSTATE s_pXInputGetState = NULL;
+    static LPXINPUTGETCAPABILITIES s_pXInputGetCapabilities = NULL;
+    if( NULL == s_pXInputGetState || NULL == s_pXInputGetCapabilities )
+    {
+        WCHAR wszPath[MAX_PATH];
+        if( GetSystemDirectory( wszPath, MAX_PATH ) )
+        {
+            StringCchCat( wszPath, MAX_PATH, L"\\" );
+            StringCchCat( wszPath, MAX_PATH, XINPUT_DLL );
+            HINSTANCE hInst = LoadLibrary( wszPath );
+            if( hInst ) 
+            {
+                s_pXInputGetState = (LPXINPUTGETSTATE)GetProcAddress( hInst, "XInputGetState" );
+                s_pXInputGetCapabilities = (LPXINPUTGETCAPABILITIES)GetProcAddress( hInst, "XInputGetCapabilities" );
+            }
+        }
+    }
+    if( s_pXInputGetState == NULL )
+        return E_FAIL;
+
+    XINPUT_STATE InputState;
+    DWORD dwResult = s_pXInputGetState( dwPort, &InputState );
+
+    // Track insertion and removals
+    BOOL bWasConnected = pGamePad->bConnected;
+    pGamePad->bConnected = (dwResult == ERROR_SUCCESS);
+    pGamePad->bRemoved  = (  bWasConnected && !pGamePad->bConnected );
+    pGamePad->bInserted = ( !bWasConnected &&  pGamePad->bConnected );
+
+    // Don't update rest of the state if not connected
+    if( !pGamePad->bConnected )
+        return S_OK;
+
+    // Store the capabilities of the device
+    if( pGamePad->bInserted )
+    {
+        ZeroMemory( pGamePad, sizeof(DXUT_GAMEPAD) );
+        pGamePad->bConnected = true;
+        pGamePad->bInserted  = true;
+        if( s_pXInputGetCapabilities )
+            s_pXInputGetCapabilities( dwPort, XINPUT_DEVTYPE_GAMEPAD, &pGamePad->caps );
+    }
+
+    // Copy gamepad to local structure (assumes that XINPUT_GAMEPAD at the front in CONTROLER_STATE)
+    memcpy( pGamePad, &InputState.Gamepad, sizeof(XINPUT_GAMEPAD) );
+
+    if( bSnapThumbstickToCardinals )
+    {
+        // Apply deadzone to each axis independantly to slightly snap to up/down/left/right
+	    if( pGamePad->sThumbLX < DXUT_INPUT_DEADZONE && pGamePad->sThumbLX > -DXUT_INPUT_DEADZONE )
+		    pGamePad->sThumbLX = 0;
+        if( pGamePad->sThumbLY < DXUT_INPUT_DEADZONE && pGamePad->sThumbLY > -DXUT_INPUT_DEADZONE ) 
+		    pGamePad->sThumbLY = 0;
+        if( pGamePad->sThumbRX < DXUT_INPUT_DEADZONE && pGamePad->sThumbRX > -DXUT_INPUT_DEADZONE )
+		    pGamePad->sThumbRX = 0;
+        if( pGamePad->sThumbRY < DXUT_INPUT_DEADZONE && pGamePad->sThumbRY > -DXUT_INPUT_DEADZONE ) 
+		    pGamePad->sThumbRY = 0;
+    }
+    else if( bThumbstickDeadZone )
+    {
+        // Apply deadzone if centered
+	    if( (pGamePad->sThumbLX < DXUT_INPUT_DEADZONE && pGamePad->sThumbLX > -DXUT_INPUT_DEADZONE) && 
+            (pGamePad->sThumbLY < DXUT_INPUT_DEADZONE && pGamePad->sThumbLY > -DXUT_INPUT_DEADZONE) ) 
+	    {	
+		    pGamePad->sThumbLX = 0;
+		    pGamePad->sThumbLY = 0;
+	    }
+	    if( (pGamePad->sThumbRX < DXUT_INPUT_DEADZONE && pGamePad->sThumbRX > -DXUT_INPUT_DEADZONE) && 
+            (pGamePad->sThumbRY < DXUT_INPUT_DEADZONE && pGamePad->sThumbRY > -DXUT_INPUT_DEADZONE) ) 
+	    {
+		    pGamePad->sThumbRX = 0;
+		    pGamePad->sThumbRY = 0;
+	    }
+    }
+
+    // Convert [-1,+1] range
+    pGamePad->fThumbLX = pGamePad->sThumbLX / 32767.0f;
+    pGamePad->fThumbLY = pGamePad->sThumbLY / 32767.0f;
+    pGamePad->fThumbRX = pGamePad->sThumbRX / 32767.0f;
+    pGamePad->fThumbRY = pGamePad->sThumbRY / 32767.0f;
+
+    // Get the boolean buttons that have been pressed since the last call. 
+    // Each button is represented by one bit.
+    pGamePad->wPressedButtons = ( pGamePad->wLastButtons ^ pGamePad->wButtons ) & pGamePad->wButtons;
+    pGamePad->wLastButtons    = pGamePad->wButtons;
+
+    // Figure out if the left trigger has been pressed or released
+    bool bPressed = ( pGamePad->bLeftTrigger > DXUT_GAMEPAD_TRIGGER_THRESHOLD );
+    pGamePad->bPressedLeftTrigger = ( bPressed ) ? !pGamePad->bLastLeftTrigger : false;
+    pGamePad->bLastLeftTrigger = bPressed;
+
+    // Figure out if the right trigger has been pressed or released
+    bPressed = ( pGamePad->bRightTrigger > DXUT_GAMEPAD_TRIGGER_THRESHOLD );
+    pGamePad->bPressedRightTrigger = ( bPressed ) ? !pGamePad->bLastRightTrigger : false;
+    pGamePad->bLastRightTrigger = bPressed;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Don't pause the game or deactive the window without first stopping rumble otherwise 
+// the controller will continue to rumble
+//--------------------------------------------------------------------------------------
+HRESULT DXUTStopRumbleOnAllControllers()
+{
+    static LPXINPUTSETSTATE s_pXInputSetState = NULL;
+    if( NULL == s_pXInputSetState )
+    {
+        WCHAR wszPath[MAX_PATH];
+        if( GetSystemDirectory( wszPath, MAX_PATH ) )
+        {
+            StringCchCat( wszPath, MAX_PATH, L"\\" );
+            StringCchCat( wszPath, MAX_PATH, XINPUT_DLL );
+            HINSTANCE hInst = LoadLibrary( wszPath );
+            if( hInst ) 
+                s_pXInputSetState = (LPXINPUTSETSTATE)GetProcAddress( hInst, "XInputSetState" );
+        }
+    }
+    if( s_pXInputSetState == NULL )
+        return E_FAIL;
+
+    XINPUT_VIBRATION vibration;
+    vibration.wLeftMotorSpeed  = 0;
+    vibration.wRightMotorSpeed = 0;
+    for( int iUserIndex=0; iUserIndex<DXUT_MAX_CONTROLLERS; iUserIndex++ )
+        s_pXInputSetState( iUserIndex, &vibration );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Helper function to launch the Media Center UI after the program terminates
+//--------------------------------------------------------------------------------------
+bool DXUTReLaunchMediaCenter()
+{
+    // Skip if not running on a Media Center
+    if( GetSystemMetrics( 87 ) == 0 ) //  SM_MEDIACENTER == 87, but is only defined if _WIN32_WINNT >= 0x0501
+        return false;
+ 
+    // Get the path to Media Center
+    WCHAR szExpandedPath[MAX_PATH];
+    if( !ExpandEnvironmentStrings( L"%SystemRoot%\\ehome\\ehshell.exe", szExpandedPath, MAX_PATH) )
+        return false;
+
+    // Skip if ehshell.exe doesn't exist
+    if( GetFileAttributes( szExpandedPath ) == 0xFFFFFFFF )
+        return false;
+ 
+    // Launch ehshell.exe 
+    INT_PTR result = (INT_PTR)ShellExecute( NULL, TEXT("open"), szExpandedPath, NULL, NULL, SW_SHOWNORMAL);
+    return (result > 32);
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTMesh.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTMesh.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTMesh.cpp	(revision 1481)
@@ -0,0 +1,1080 @@
+//-----------------------------------------------------------------------------
+// File: DXUTMesh.cpp
+//
+// Desc: Support code for loading DirectX .X files.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#include "dxstdafx.h"
+#include <dxfile.h>
+#include <rmxfguid.h>
+#include <rmxftmpl.h>
+#include "DXUTMesh.h"
+#undef min // use __min instead
+#undef max // use __max instead
+
+
+
+
+//-----------------------------------------------------------------------------
+CDXUTMesh::CDXUTMesh( LPCWSTR strName )
+{
+    StringCchCopy( m_strName, 512, strName );
+    m_pMesh              = NULL;
+    m_dwNumMaterials     = 0L;
+    m_pMaterials         = NULL;
+    m_pTextures          = NULL;
+    m_bUseMaterials      = TRUE;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+CDXUTMesh::~CDXUTMesh()
+{
+    Destroy();
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::Create( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strFilename )
+{
+    WCHAR        strPath[MAX_PATH];
+    LPD3DXBUFFER pAdjacencyBuffer = NULL;
+    LPD3DXBUFFER pMtrlBuffer = NULL;
+    HRESULT      hr;
+
+    // Cleanup previous mesh if any
+    Destroy();
+
+    // Find the path for the file, and convert it to ANSI (for the D3DX API)
+    DXUTFindDXSDKMediaFileCch( strPath, sizeof(strPath) / sizeof(WCHAR), strFilename );
+
+    // Load the mesh
+    if( FAILED( hr = D3DXLoadMeshFromX( strPath, D3DXMESH_MANAGED, pd3dDevice, 
+                                        &pAdjacencyBuffer, &pMtrlBuffer, NULL,
+                                        &m_dwNumMaterials, &m_pMesh ) ) )
+    {
+        return hr;
+    }
+
+    // Optimize the mesh for performance
+    if( FAILED( hr = m_pMesh->OptimizeInplace(
+                        D3DXMESHOPT_COMPACT | D3DXMESHOPT_ATTRSORT | D3DXMESHOPT_VERTEXCACHE,
+                        (DWORD*)pAdjacencyBuffer->GetBufferPointer(), NULL, NULL, NULL ) ) )
+    {
+        SAFE_RELEASE( pAdjacencyBuffer );
+        SAFE_RELEASE( pMtrlBuffer );
+        return hr;
+    }
+
+    // Set strPath to the path of the mesh file
+    WCHAR *pLastBSlash = wcsrchr( strPath, L'\\' );
+    if( pLastBSlash )
+        *(pLastBSlash + 1) = L'\0';
+    else
+        *strPath = L'\0';
+
+    D3DXMATERIAL* d3dxMtrls = (D3DXMATERIAL*)pMtrlBuffer->GetBufferPointer();
+    hr = CreateMaterials( strPath, pd3dDevice, d3dxMtrls, m_dwNumMaterials );
+
+    SAFE_RELEASE( pAdjacencyBuffer );
+    SAFE_RELEASE( pMtrlBuffer );
+
+    // Extract data from m_pMesh for easy access
+    D3DVERTEXELEMENT9 decl[MAX_FVF_DECL_SIZE];
+    m_dwNumVertices    = m_pMesh->GetNumVertices();
+    m_dwNumFaces       = m_pMesh->GetNumFaces();
+    m_dwBytesPerVertex = m_pMesh->GetNumBytesPerVertex();
+    m_pMesh->GetIndexBuffer( &m_pIB );
+    m_pMesh->GetVertexBuffer( &m_pVB );
+    m_pMesh->GetDeclaration( decl );
+    pd3dDevice->CreateVertexDeclaration( decl, &m_pDecl );
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::Create( LPDIRECT3DDEVICE9 pd3dDevice,
+                           LPD3DXFILEDATA pFileData )
+{
+    LPD3DXBUFFER pMtrlBuffer = NULL;
+    LPD3DXBUFFER pAdjacencyBuffer = NULL;
+    HRESULT      hr;
+
+    // Cleanup previous mesh if any
+    Destroy();
+
+    // Load the mesh from the DXFILEDATA object
+    if( FAILED( hr = D3DXLoadMeshFromXof( pFileData, D3DXMESH_MANAGED, pd3dDevice,
+                                          &pAdjacencyBuffer, &pMtrlBuffer, NULL,
+                                          &m_dwNumMaterials, &m_pMesh ) ) )
+    {
+        return hr;
+    }
+
+    // Optimize the mesh for performance
+    if( FAILED( hr = m_pMesh->OptimizeInplace(
+                        D3DXMESHOPT_COMPACT | D3DXMESHOPT_ATTRSORT | D3DXMESHOPT_VERTEXCACHE,
+                        (DWORD*)pAdjacencyBuffer->GetBufferPointer(), NULL, NULL, NULL ) ) )
+    {
+        SAFE_RELEASE( pAdjacencyBuffer );
+        SAFE_RELEASE( pMtrlBuffer );
+        return hr;
+    }
+
+    D3DXMATERIAL* d3dxMtrls = (D3DXMATERIAL*)pMtrlBuffer->GetBufferPointer();
+    hr = CreateMaterials( L"", pd3dDevice, d3dxMtrls, m_dwNumMaterials );
+
+    SAFE_RELEASE( pAdjacencyBuffer );
+    SAFE_RELEASE( pMtrlBuffer );
+
+    // Extract data from m_pMesh for easy access
+    D3DVERTEXELEMENT9 decl[MAX_FVF_DECL_SIZE];
+    m_dwNumVertices    = m_pMesh->GetNumVertices();
+    m_dwNumFaces       = m_pMesh->GetNumFaces();
+    m_dwBytesPerVertex = m_pMesh->GetNumBytesPerVertex();
+    m_pMesh->GetIndexBuffer( &m_pIB );
+    m_pMesh->GetVertexBuffer( &m_pVB );
+    m_pMesh->GetDeclaration( decl );
+    pd3dDevice->CreateVertexDeclaration( decl, &m_pDecl );
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::Create( LPDIRECT3DDEVICE9 pd3dDevice, ID3DXMesh* pInMesh, 
+                           D3DXMATERIAL* pd3dxMaterials, DWORD dwMaterials )
+{
+    // Cleanup previous mesh if any
+    Destroy();
+
+    // Optimize the mesh for performance
+    DWORD *rgdwAdjacency = NULL;
+    rgdwAdjacency = new DWORD[pInMesh->GetNumFaces() * 3];
+    if( rgdwAdjacency == NULL )
+        return E_OUTOFMEMORY;
+    pInMesh->GenerateAdjacency(1e-6f,rgdwAdjacency);
+
+    D3DVERTEXELEMENT9 decl[MAX_FVF_DECL_SIZE];
+    pInMesh->GetDeclaration( decl );
+
+    DWORD dwOptions = pInMesh->GetOptions();
+    dwOptions &= ~(D3DXMESH_32BIT | D3DXMESH_SYSTEMMEM | D3DXMESH_WRITEONLY);
+    dwOptions |= D3DXMESH_MANAGED;
+    dwOptions |= D3DXMESHOPT_COMPACT | D3DXMESHOPT_ATTRSORT | D3DXMESHOPT_VERTEXCACHE;
+
+    ID3DXMesh* pTempMesh = NULL;
+    if( FAILED( pInMesh->Optimize( dwOptions, rgdwAdjacency, NULL, NULL, NULL, &pTempMesh ) ) )
+    {
+        SAFE_DELETE_ARRAY( rgdwAdjacency );
+        return E_FAIL;
+    }
+
+    SAFE_DELETE_ARRAY( rgdwAdjacency );
+    SAFE_RELEASE( m_pMesh );
+    m_pMesh = pTempMesh;
+
+    HRESULT hr;
+    hr = CreateMaterials( L"", pd3dDevice, pd3dxMaterials, dwMaterials );
+
+    // Extract data from m_pMesh for easy access
+    m_dwNumVertices    = m_pMesh->GetNumVertices();
+    m_dwNumFaces       = m_pMesh->GetNumFaces();
+    m_dwBytesPerVertex = m_pMesh->GetNumBytesPerVertex();
+    m_pMesh->GetIndexBuffer( &m_pIB );
+    m_pMesh->GetVertexBuffer( &m_pVB );
+    m_pMesh->GetDeclaration( decl );
+    pd3dDevice->CreateVertexDeclaration( decl, &m_pDecl );
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::CreateMaterials( LPCWSTR strPath, IDirect3DDevice9 *pd3dDevice, D3DXMATERIAL* d3dxMtrls, DWORD dwNumMaterials )
+{
+    // Get material info for the mesh
+    // Get the array of materials out of the buffer
+    m_dwNumMaterials = dwNumMaterials;
+    if( d3dxMtrls && m_dwNumMaterials > 0 )
+    {
+        // Allocate memory for the materials and textures
+        m_pMaterials = new D3DMATERIAL9[m_dwNumMaterials];
+        if( m_pMaterials == NULL )
+            return E_OUTOFMEMORY;
+        m_pTextures = new LPDIRECT3DBASETEXTURE9[m_dwNumMaterials];
+        if( m_pTextures == NULL )
+            return E_OUTOFMEMORY;
+        m_strMaterials = new CHAR[m_dwNumMaterials][MAX_PATH];
+        if( m_strMaterials == NULL )
+            return E_OUTOFMEMORY;
+
+        // Copy each material and create its texture
+        for( DWORD i=0; i<m_dwNumMaterials; i++ )
+        {
+            // Copy the material
+            m_pMaterials[i]         = d3dxMtrls[i].MatD3D;
+            m_pTextures[i]          = NULL;
+
+            // Create a texture
+            if( d3dxMtrls[i].pTextureFilename )
+            {
+                StringCchCopyA( m_strMaterials[i], MAX_PATH, d3dxMtrls[i].pTextureFilename );
+
+                WCHAR strTexture[MAX_PATH];
+                WCHAR strTextureTemp[MAX_PATH];
+                D3DXIMAGE_INFO ImgInfo;
+
+                // First attempt to look for texture in the same folder as the input folder.
+                MultiByteToWideChar( CP_ACP, 0, d3dxMtrls[i].pTextureFilename, -1, strTextureTemp, MAX_PATH );
+                strTextureTemp[MAX_PATH-1] = 0;
+
+                StringCchCopy( strTexture, MAX_PATH, strPath );
+                StringCchCat( strTexture, MAX_PATH, strTextureTemp );
+
+                // Inspect the texture file to determine the texture type.
+                if( FAILED( D3DXGetImageInfoFromFile( strTexture, &ImgInfo ) ) )
+                {
+                    // Search the media folder
+                    if( FAILED( DXUTFindDXSDKMediaFileCch( strTexture, MAX_PATH, strTextureTemp ) ) )
+                        continue;  // Can't find. Skip.
+
+                    D3DXGetImageInfoFromFile( strTexture, &ImgInfo );
+                }
+
+                // Call the appropriate loader according to the texture type.
+                switch( ImgInfo.ResourceType )
+                {
+                    case D3DRTYPE_TEXTURE:
+                    {
+                        IDirect3DTexture9 *pTex;
+                        if( SUCCEEDED( D3DXCreateTextureFromFile( pd3dDevice, strTexture, &pTex ) ) )
+                        {
+                            // Obtain the base texture interface
+                            pTex->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&m_pTextures[i] );
+                            // Release the specialized instance
+                            pTex->Release();
+                        }
+                        break;
+                    }
+                    case D3DRTYPE_CUBETEXTURE:
+                    {
+                        IDirect3DCubeTexture9 *pTex;
+                        if( SUCCEEDED( D3DXCreateCubeTextureFromFile( pd3dDevice, strTexture, &pTex ) ) )
+                        {
+                            // Obtain the base texture interface
+                            pTex->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&m_pTextures[i] );
+                            // Release the specialized instance
+                            pTex->Release();
+                        }
+                        break;
+                    }
+                    case D3DRTYPE_VOLUMETEXTURE:
+                    {
+                        IDirect3DVolumeTexture9 *pTex;
+                        if( SUCCEEDED( D3DXCreateVolumeTextureFromFile( pd3dDevice, strTexture, &pTex ) ) )
+                        {
+                            // Obtain the base texture interface
+                            pTex->QueryInterface( IID_IDirect3DBaseTexture9, (LPVOID*)&m_pTextures[i] );
+                            // Release the specialized instance
+                            pTex->Release();
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::SetFVF( LPDIRECT3DDEVICE9 pd3dDevice, DWORD dwFVF )
+{
+    LPD3DXMESH pTempMesh = NULL;
+
+    if( m_pMesh )
+    {
+        if( FAILED( m_pMesh->CloneMeshFVF( m_pMesh->GetOptions(), dwFVF,
+                                           pd3dDevice, &pTempMesh ) ) )
+        {
+            SAFE_RELEASE( pTempMesh );
+            return E_FAIL;
+        }
+
+        DWORD dwOldFVF = 0;
+        dwOldFVF = m_pMesh->GetFVF();
+        SAFE_RELEASE( m_pMesh );
+        m_pMesh = pTempMesh;
+
+        // Compute normals if they are being requested and
+        // the old mesh does not have them.
+        if( !(dwOldFVF & D3DFVF_NORMAL) && dwFVF & D3DFVF_NORMAL )
+        {
+            D3DXComputeNormals( m_pMesh, NULL );
+        }
+    }
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+// Convert the mesh to the format specified by the given vertex declarations.
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::SetVertexDecl( LPDIRECT3DDEVICE9 pd3dDevice, const D3DVERTEXELEMENT9 *pDecl, 
+                                  bool bAutoComputeNormals, bool bAutoComputeTangents, 
+                                  bool bSplitVertexForOptimalTangents )
+{
+    LPD3DXMESH pTempMesh = NULL;
+
+    if( m_pMesh )
+    {
+        if( FAILED( m_pMesh->CloneMesh( m_pMesh->GetOptions(), pDecl,
+                                        pd3dDevice, &pTempMesh ) ) )
+        {
+            SAFE_RELEASE( pTempMesh );
+            return E_FAIL;
+        }
+    }
+
+
+    // Check if the old declaration contains a normal.
+    bool bHadNormal = false;
+    bool bHadTangent = false;
+    D3DVERTEXELEMENT9 aOldDecl[MAX_FVF_DECL_SIZE];
+    if( m_pMesh && SUCCEEDED( m_pMesh->GetDeclaration( aOldDecl ) ) )
+    {
+        for( UINT index = 0; index < D3DXGetDeclLength( aOldDecl ); ++index )
+        {
+            if( aOldDecl[index].Usage == D3DDECLUSAGE_NORMAL )
+            {
+                bHadNormal = true;
+            }
+            if( aOldDecl[index].Usage == D3DDECLUSAGE_TANGENT )
+            {
+                bHadTangent = true;
+            }
+        }
+    }
+
+    // Check if the new declaration contains a normal.
+    bool bHaveNormalNow = false;
+    bool bHaveTangentNow = false;
+    D3DVERTEXELEMENT9 aNewDecl[MAX_FVF_DECL_SIZE];
+    if( pTempMesh && SUCCEEDED( pTempMesh->GetDeclaration( aNewDecl ) ) )
+    {
+        for( UINT index = 0; index < D3DXGetDeclLength( aNewDecl ); ++index )
+        {
+            if( aNewDecl[index].Usage == D3DDECLUSAGE_NORMAL )
+            {
+                bHaveNormalNow = true;
+            }
+            if( aNewDecl[index].Usage == D3DDECLUSAGE_TANGENT )
+            {
+                bHaveTangentNow = true;
+            }
+        }
+    }
+
+    SAFE_RELEASE( m_pMesh );
+
+    if( pTempMesh )
+    {
+        m_pMesh = pTempMesh;
+
+        if( !bHadNormal && bHaveNormalNow && bAutoComputeNormals )
+        {
+            // Compute normals in case the meshes have them
+            D3DXComputeNormals( m_pMesh, NULL );
+        }
+
+        if( bHaveNormalNow && !bHadTangent && bHaveTangentNow && bAutoComputeTangents )
+        {
+            ID3DXMesh* pNewMesh;
+            HRESULT hr;
+
+            DWORD *rgdwAdjacency = NULL;
+            rgdwAdjacency = new DWORD[m_pMesh->GetNumFaces() * 3];
+            if( rgdwAdjacency == NULL )
+                return E_OUTOFMEMORY;
+            V( m_pMesh->GenerateAdjacency(1e-6f,rgdwAdjacency) );
+
+            float fPartialEdgeThreshold;
+            float fSingularPointThreshold;
+            float fNormalEdgeThreshold;
+            if( bSplitVertexForOptimalTangents )
+            {
+                fPartialEdgeThreshold = 0.01f;
+                fSingularPointThreshold = 0.25f;
+                fNormalEdgeThreshold = 0.01f;
+            }
+            else
+            {
+                fPartialEdgeThreshold = -1.01f;
+                fSingularPointThreshold = 0.01f;
+                fNormalEdgeThreshold = -1.01f;
+            }
+
+            // Compute tangents, which are required for normal mapping
+            hr = D3DXComputeTangentFrameEx( m_pMesh, 
+                                            D3DDECLUSAGE_TEXCOORD, 0, 
+                                            D3DDECLUSAGE_TANGENT, 0,
+                                            D3DX_DEFAULT, 0, 
+                                            D3DDECLUSAGE_NORMAL, 0,
+                                            0, rgdwAdjacency, 
+                                            fPartialEdgeThreshold, fSingularPointThreshold, fNormalEdgeThreshold, 
+                                            &pNewMesh, NULL );
+
+            SAFE_DELETE_ARRAY( rgdwAdjacency );
+            if( FAILED(hr) )
+                return hr;
+
+            SAFE_RELEASE( m_pMesh );
+            m_pMesh = pNewMesh;
+        }
+    }
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice )
+{
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::InvalidateDeviceObjects()
+{
+    SAFE_RELEASE( m_pIB );
+    SAFE_RELEASE( m_pVB );
+    SAFE_RELEASE( m_pDecl );
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::Destroy()
+{
+    InvalidateDeviceObjects();
+    for( UINT i=0; i<m_dwNumMaterials; i++ )
+        SAFE_RELEASE( m_pTextures[i] );
+    SAFE_DELETE_ARRAY( m_pTextures );
+    SAFE_DELETE_ARRAY( m_pMaterials );
+    SAFE_DELETE_ARRAY( m_strMaterials );
+
+    SAFE_RELEASE( m_pMesh );
+
+    m_dwNumMaterials = 0L;
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::Render( LPDIRECT3DDEVICE9 pd3dDevice, bool bDrawOpaqueSubsets,
+                          bool bDrawAlphaSubsets )
+{
+    if( NULL == m_pMesh )
+        return E_FAIL;
+
+    // Frist, draw the subsets without alpha
+    if( bDrawOpaqueSubsets )
+    {
+        for( DWORD i=0; i<m_dwNumMaterials; i++ )
+        {
+            if( m_bUseMaterials )
+            {
+                if( m_pMaterials[i].Diffuse.a < 1.0f )
+                    continue;
+                pd3dDevice->SetMaterial( &m_pMaterials[i] );
+                pd3dDevice->SetTexture( 0, m_pTextures[i] );
+            }
+            m_pMesh->DrawSubset( i );
+        }
+    }
+
+    // Then, draw the subsets with alpha
+    if( bDrawAlphaSubsets && m_bUseMaterials )
+    {
+        for( DWORD i=0; i<m_dwNumMaterials; i++ )
+        {
+            if( m_pMaterials[i].Diffuse.a == 1.0f )
+                continue;
+
+            // Set the material and texture
+            pd3dDevice->SetMaterial( &m_pMaterials[i] );
+            pd3dDevice->SetTexture( 0, m_pTextures[i] );
+            m_pMesh->DrawSubset( i );
+        }
+    }
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMesh::Render( ID3DXEffect *pEffect,
+                           D3DXHANDLE hTexture,
+                           D3DXHANDLE hDiffuse,
+                           D3DXHANDLE hAmbient,
+                           D3DXHANDLE hSpecular,
+                           D3DXHANDLE hEmissive,
+                           D3DXHANDLE hPower,
+                           bool bDrawOpaqueSubsets,
+                           bool bDrawAlphaSubsets )
+{
+    if( NULL == m_pMesh )
+        return E_FAIL;
+
+    UINT cPasses;
+    // Frist, draw the subsets without alpha
+    if( bDrawOpaqueSubsets )
+    {
+        pEffect->Begin( &cPasses, 0 );
+        for( UINT p = 0; p < cPasses; ++p )
+        {
+            pEffect->BeginPass( p );
+            for( DWORD i=0; i<m_dwNumMaterials; i++ )
+            {
+                if( m_bUseMaterials )
+                {
+                    if( m_pMaterials[i].Diffuse.a < 1.0f )
+                        continue;
+                    if( hTexture )
+                        pEffect->SetTexture( hTexture, m_pTextures[i] );
+                    // D3DCOLORVALUE and D3DXVECTOR4 are data-wise identical.
+                    // No conversion is needed.
+                    if( hDiffuse )
+                        pEffect->SetVector( hDiffuse, (D3DXVECTOR4*)&m_pMaterials[i].Diffuse );
+                    if( hAmbient )
+                        pEffect->SetVector( hAmbient, (D3DXVECTOR4*)&m_pMaterials[i].Ambient );
+                    if( hSpecular )
+                        pEffect->SetVector( hSpecular, (D3DXVECTOR4*)&m_pMaterials[i].Specular );
+                    if( hEmissive )
+                        pEffect->SetVector( hEmissive, (D3DXVECTOR4*)&m_pMaterials[i].Emissive );
+                    if( hPower )
+                        pEffect->SetFloat( hPower, m_pMaterials[i].Power );
+                    pEffect->CommitChanges();
+                }
+                m_pMesh->DrawSubset( i );
+            }
+            pEffect->EndPass();
+        }
+        pEffect->End();
+    }
+
+    // Then, draw the subsets with alpha
+    if( bDrawAlphaSubsets && m_bUseMaterials )
+    {
+        pEffect->Begin( &cPasses, 0 );
+        for( UINT p = 0; p < cPasses; ++p )
+        {
+            pEffect->BeginPass( p );
+            for( DWORD i=0; i<m_dwNumMaterials; i++ )
+            {
+                if( m_bUseMaterials )
+                {
+                    if( m_pMaterials[i].Diffuse.a == 1.0f )
+                        continue;
+                    if( hTexture )
+                        pEffect->SetTexture( hTexture, m_pTextures[i] );
+                    // D3DCOLORVALUE and D3DXVECTOR4 are data-wise identical.
+                    // No conversion is needed.
+                    if( hDiffuse )
+                        pEffect->SetVector( hDiffuse, (D3DXVECTOR4*)&m_pMaterials[i].Diffuse );
+                    if( hAmbient )
+                        pEffect->SetVector( hAmbient, (D3DXVECTOR4*)&m_pMaterials[i].Ambient );
+                    if( hSpecular )
+                        pEffect->SetVector( hSpecular, (D3DXVECTOR4*)&m_pMaterials[i].Specular );
+                    if( hEmissive )
+                        pEffect->SetVector( hEmissive, (D3DXVECTOR4*)&m_pMaterials[i].Emissive );
+                    if( hPower )
+                        pEffect->SetFloat( hPower, m_pMaterials[i].Power );
+                    pEffect->CommitChanges();
+                }
+                m_pMesh->DrawSubset( i );
+            }
+            pEffect->EndPass();
+        }
+        pEffect->End();
+    }
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+CDXUTMeshFrame::CDXUTMeshFrame( LPCWSTR strName )
+{
+    StringCchCopy( m_strName, 512, strName );
+    D3DXMatrixIdentity( &m_mat );
+    m_pMesh  = NULL;
+
+    m_pChild = NULL;
+    m_pNext  = NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+CDXUTMeshFrame::~CDXUTMeshFrame()
+{
+    SAFE_DELETE( m_pChild );
+    SAFE_DELETE( m_pNext );
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+bool CDXUTMeshFrame::EnumMeshes( bool (*EnumMeshCB)(CDXUTMesh*,void*),
+                            void* pContext )
+{
+    if( m_pMesh )
+        EnumMeshCB( m_pMesh, pContext );
+    if( m_pChild )
+        m_pChild->EnumMeshes( EnumMeshCB, pContext );
+    if( m_pNext )
+        m_pNext->EnumMeshes( EnumMeshCB, pContext );
+
+    return TRUE;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+CDXUTMesh* CDXUTMeshFrame::FindMesh( LPCWSTR strMeshName )
+{
+    CDXUTMesh* pMesh;
+
+    if( m_pMesh )
+        if( !lstrcmpi( m_pMesh->m_strName, strMeshName ) )
+            return m_pMesh;
+
+    if( m_pChild )
+        if( NULL != ( pMesh = m_pChild->FindMesh( strMeshName ) ) )
+            return pMesh;
+
+    if( m_pNext )
+        if( NULL != ( pMesh = m_pNext->FindMesh( strMeshName ) ) )
+            return pMesh;
+
+    return NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+CDXUTMeshFrame* CDXUTMeshFrame::FindFrame( LPCWSTR strFrameName )
+{
+    CDXUTMeshFrame* pFrame;
+
+    if( !lstrcmpi( m_strName, strFrameName ) )
+        return this;
+
+    if( m_pChild )
+        if( NULL != ( pFrame = m_pChild->FindFrame( strFrameName ) ) )
+            return pFrame;
+
+    if( m_pNext )
+        if( NULL != ( pFrame = m_pNext->FindFrame( strFrameName ) ) )
+            return pFrame;
+
+    return NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFrame::Destroy()
+{
+    if( m_pMesh )  m_pMesh->Destroy();
+    if( m_pChild ) m_pChild->Destroy();
+    if( m_pNext )  m_pNext->Destroy();
+
+    SAFE_DELETE( m_pMesh );
+    SAFE_DELETE( m_pNext );
+    SAFE_DELETE( m_pChild );
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFrame::RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice )
+{
+    if( m_pMesh )  m_pMesh->RestoreDeviceObjects( pd3dDevice );
+    if( m_pChild ) m_pChild->RestoreDeviceObjects( pd3dDevice );
+    if( m_pNext )  m_pNext->RestoreDeviceObjects( pd3dDevice );
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFrame::InvalidateDeviceObjects()
+{
+    if( m_pMesh )  m_pMesh->InvalidateDeviceObjects();
+    if( m_pChild ) m_pChild->InvalidateDeviceObjects();
+    if( m_pNext )  m_pNext->InvalidateDeviceObjects();
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFrame::Render( LPDIRECT3DDEVICE9 pd3dDevice, bool bDrawOpaqueSubsets,
+                           bool bDrawAlphaSubsets, D3DXMATRIX* pmatWorldMatrix )
+{
+    // For pure devices, specify the world transform. If the world transform is not
+    // specified on pure devices, this function will fail.
+
+    D3DXMATRIX matSavedWorld, matWorld;
+
+    if ( NULL == pmatWorldMatrix )
+        pd3dDevice->GetTransform( D3DTS_WORLD, &matSavedWorld );
+    else
+        matSavedWorld = *pmatWorldMatrix;
+
+    D3DXMatrixMultiply( &matWorld, &m_mat, &matSavedWorld );
+    pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
+
+    if( m_pMesh )
+        m_pMesh->Render( pd3dDevice, bDrawOpaqueSubsets, bDrawAlphaSubsets );
+
+    if( m_pChild )
+        m_pChild->Render( pd3dDevice, bDrawOpaqueSubsets, bDrawAlphaSubsets, &matWorld );
+
+    pd3dDevice->SetTransform( D3DTS_WORLD, &matSavedWorld );
+
+    if( m_pNext )
+        m_pNext->Render( pd3dDevice, bDrawOpaqueSubsets, bDrawAlphaSubsets, &matSavedWorld );
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFile::LoadFrame( LPDIRECT3DDEVICE9 pd3dDevice,
+                             LPD3DXFILEDATA pFileData,
+                             CDXUTMeshFrame* pParentFrame )
+{
+    LPD3DXFILEDATA   pChildData = NULL;
+    GUID Guid;
+    SIZE_T      cbSize;
+    CDXUTMeshFrame*  pCurrentFrame;
+    HRESULT     hr;
+
+    // Get the type of the object
+    if( FAILED( hr = pFileData->GetType( &Guid ) ) )
+        return hr;
+
+    if( Guid == TID_D3DRMMesh )
+    {
+        hr = LoadMesh( pd3dDevice, pFileData, pParentFrame );
+        if( FAILED(hr) )
+            return hr;
+    }
+    if( Guid == TID_D3DRMFrameTransformMatrix )
+    {
+        D3DXMATRIX* pmatMatrix;
+        hr = pFileData->Lock(&cbSize, (LPCVOID*)&pmatMatrix );
+        if( FAILED(hr) )
+            return hr;
+
+        // Update the parent's matrix with the new one
+        pParentFrame->SetMatrix( pmatMatrix );
+    }
+    if( Guid == TID_D3DRMFrame )
+    {
+        // Get the frame name
+        CHAR  strAnsiName[512] = "";
+        WCHAR strName[512];
+        SIZE_T dwNameLength = 512;
+        SIZE_T cChildren;
+        if( FAILED( hr = pFileData->GetName( strAnsiName, &dwNameLength ) ) )
+            return hr;
+
+        WideCharToMultiByte( CP_ACP, 0, strName, -1, strAnsiName, 512, NULL, NULL );
+        strName[511] = 0;
+
+        // Create the frame
+        pCurrentFrame = new CDXUTMeshFrame( strName );
+        if( pCurrentFrame == NULL )
+            return E_OUTOFMEMORY;
+
+        pCurrentFrame->m_pNext = pParentFrame->m_pChild;
+        pParentFrame->m_pChild = pCurrentFrame;
+
+        // Enumerate child objects
+        pFileData->GetChildren(&cChildren);
+        for (UINT iChild = 0; iChild < cChildren; iChild++)
+        {
+            // Query the child for its FileData
+            hr = pFileData->GetChild(iChild, &pChildData );
+            if( SUCCEEDED(hr) )
+            {
+                hr = LoadFrame( pd3dDevice, pChildData, pCurrentFrame );
+                SAFE_RELEASE( pChildData );
+            }
+
+            if( FAILED(hr) )
+                return hr;
+        }
+    }
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFile::LoadMesh( LPDIRECT3DDEVICE9 pd3dDevice,
+                            LPD3DXFILEDATA pFileData,
+                            CDXUTMeshFrame* pParentFrame )
+{
+    // Currently only allowing one mesh per frame
+    if( pParentFrame->m_pMesh )
+        return E_FAIL;
+
+    // Get the mesh name
+    CHAR  strAnsiName[512] = {0};
+    WCHAR strName[512];
+    SIZE_T dwNameLength = 512;
+    HRESULT hr;
+    if( FAILED( hr = pFileData->GetName( strAnsiName, &dwNameLength ) ) )
+        return hr;
+
+    MultiByteToWideChar( CP_ACP, 0, strAnsiName, -1, strName, 512 );
+    strName[511] = 0;
+
+    // Create the mesh
+    pParentFrame->m_pMesh = new CDXUTMesh( strName );
+    if( pParentFrame->m_pMesh == NULL )
+        return E_OUTOFMEMORY;
+    pParentFrame->m_pMesh->Create( pd3dDevice, pFileData );
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFile::CreateFromResource( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strResource, LPCWSTR strType )
+{
+    LPD3DXFILE           pDXFile   = NULL;
+    LPD3DXFILEENUMOBJECT pEnumObj  = NULL;
+    LPD3DXFILEDATA       pFileData = NULL;
+    HRESULT hr;
+    SIZE_T cChildren;
+
+    // Create a x file object
+    if( FAILED( hr = D3DXFileCreate( &pDXFile ) ) )
+        return E_FAIL;
+
+    // Register templates for d3drm and patch extensions.
+    if( FAILED( hr = pDXFile->RegisterTemplates( (void*)D3DRM_XTEMPLATES,
+                                                 D3DRM_XTEMPLATE_BYTES ) ) )
+    {
+        SAFE_RELEASE( pDXFile );
+        return E_FAIL;
+    }
+    
+    CHAR strTypeAnsi[MAX_PATH];
+    CHAR strResourceAnsi[MAX_PATH];
+
+    WideCharToMultiByte( CP_ACP, 0, strType, -1, strTypeAnsi, MAX_PATH, NULL, NULL );
+    strTypeAnsi[MAX_PATH-1] = 0;
+
+    WideCharToMultiByte( CP_ACP, 0, strResource, -1, strResourceAnsi, MAX_PATH, NULL, NULL );
+    strResourceAnsi[MAX_PATH-1] = 0;
+
+    D3DXF_FILELOADRESOURCE dxlr;
+    dxlr.hModule = NULL;
+    dxlr.lpName = strResourceAnsi;
+    dxlr.lpType = strTypeAnsi;
+
+    // Create enum object
+    hr = pDXFile->CreateEnumObject( (void*)&dxlr, D3DXF_FILELOAD_FROMRESOURCE, 
+                                    &pEnumObj );
+    if( FAILED(hr) )
+    {
+        SAFE_RELEASE( pDXFile );
+        return hr;
+    }
+
+    // Enumerate top level objects (which are always frames)
+    pEnumObj->GetChildren(&cChildren);
+    for (UINT iChild = 0; iChild < cChildren; iChild++)
+    {
+        hr = pEnumObj->GetChild(iChild, &pFileData);
+        if (FAILED(hr))
+            return hr;
+
+        hr = LoadFrame( pd3dDevice, pFileData, this );
+        SAFE_RELEASE( pFileData );
+        if( FAILED(hr) )
+        {
+            SAFE_RELEASE( pEnumObj );
+            SAFE_RELEASE( pDXFile );
+            return E_FAIL;
+        }
+    }
+
+    SAFE_RELEASE( pFileData );
+    SAFE_RELEASE( pEnumObj );
+    SAFE_RELEASE( pDXFile );
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFile::Create( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strFilename )
+{
+    LPD3DXFILE           pDXFile   = NULL;
+    LPD3DXFILEENUMOBJECT pEnumObj  = NULL;
+    LPD3DXFILEDATA       pFileData = NULL;
+    HRESULT hr;
+    SIZE_T cChildren;
+
+    // Create a x file object
+    if( FAILED( hr = D3DXFileCreate( &pDXFile ) ) )
+        return E_FAIL;
+
+    // Register templates for d3drm and patch extensions.
+    if( FAILED( hr = pDXFile->RegisterTemplates( (void*)D3DRM_XTEMPLATES,
+                                                 D3DRM_XTEMPLATE_BYTES ) ) )
+    {
+        SAFE_RELEASE( pDXFile );
+        return E_FAIL;
+    }
+
+    // Find the path to the file, and convert it to ANSI (for the D3DXOF API)
+    WCHAR strPath[MAX_PATH];
+    CHAR  strPathANSI[MAX_PATH];
+    DXUTFindDXSDKMediaFileCch( strPath, sizeof(strPath) / sizeof(WCHAR), strFilename );
+    
+    
+    WideCharToMultiByte( CP_ACP, 0, strPath, -1, strPathANSI, MAX_PATH, NULL, NULL );
+    strPathANSI[MAX_PATH-1] = 0;
+
+    
+    // Create enum object
+    hr = pDXFile->CreateEnumObject( (void*)strPathANSI, D3DXF_FILELOAD_FROMFILE, 
+                                    &pEnumObj );
+    if( FAILED(hr) )
+    {
+        SAFE_RELEASE( pDXFile );
+        return hr;
+    }
+
+    // Enumerate top level objects (which are always frames)
+    pEnumObj->GetChildren(&cChildren);
+    for (UINT iChild = 0; iChild < cChildren; iChild++)
+    {
+        hr = pEnumObj->GetChild(iChild, &pFileData);
+        if (FAILED(hr))
+            return hr;
+
+        hr = LoadFrame( pd3dDevice, pFileData, this );
+        SAFE_RELEASE( pFileData );
+        if( FAILED(hr) )
+        {
+            SAFE_RELEASE( pEnumObj );
+            SAFE_RELEASE( pDXFile );
+            return E_FAIL;
+        }
+    }
+
+    SAFE_RELEASE( pFileData );
+    SAFE_RELEASE( pEnumObj );
+    SAFE_RELEASE( pDXFile );
+
+    return S_OK;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+HRESULT CDXUTMeshFile::Render( LPDIRECT3DDEVICE9 pd3dDevice, D3DXMATRIX* pmatWorldMatrix )
+{
+
+    // For pure devices, specify the world transform. If the world transform is not
+    // specified on pure devices, this function will fail.
+
+    // Set up the world transformation
+    D3DXMATRIX matSavedWorld, matWorld;
+
+    if ( NULL == pmatWorldMatrix )
+        pd3dDevice->GetTransform( D3DTS_WORLD, &matSavedWorld );
+    else
+        matSavedWorld = *pmatWorldMatrix;
+
+    D3DXMatrixMultiply( &matWorld, &matSavedWorld, &m_mat );
+    pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
+
+    // Render opaque subsets in the meshes
+    if( m_pChild )
+        m_pChild->Render( pd3dDevice, TRUE, FALSE, &matWorld );
+
+    // Enable alpha blending
+    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
+    pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
+    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
+
+    // Render alpha subsets in the meshes
+    if( m_pChild )
+        m_pChild->Render( pd3dDevice, FALSE, TRUE, &matWorld );
+
+    // Restore state
+    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
+    pd3dDevice->SetTransform( D3DTS_WORLD, &matSavedWorld );
+
+    return S_OK;
+}
+
+
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTSettingsDlg.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTSettingsDlg.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTSettingsDlg.h	(revision 1481)
@@ -0,0 +1,142 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTSettingsDlg.cpp
+//
+// Copyright (c) Microsoft Corporation. All rights reserved
+//--------------------------------------------------------------------------------------
+#pragma once
+#ifndef DXUT_SETTINGS_H
+#define DXUT_SETTINGS_H
+
+
+//--------------------------------------------------------------------------------------
+// Control IDs
+//--------------------------------------------------------------------------------------
+#define DXUTSETTINGSDLG_STATIC                  -1
+#define DXUTSETTINGSDLG_OK                      1
+#define DXUTSETTINGSDLG_CANCEL                  2
+#define DXUTSETTINGSDLG_ADAPTER                 3
+#define DXUTSETTINGSDLG_DEVICE_TYPE             4
+#define DXUTSETTINGSDLG_WINDOWED                5
+#define DXUTSETTINGSDLG_FULLSCREEN              6
+#define DXUTSETTINGSDLG_ADAPTER_FORMAT          7
+#define DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL    8
+#define DXUTSETTINGSDLG_RESOLUTION              9
+#define DXUTSETTINGSDLG_RESOLUTION_LABEL        10
+#define DXUTSETTINGSDLG_REFRESH_RATE            11
+#define DXUTSETTINGSDLG_REFRESH_RATE_LABEL      12
+#define DXUTSETTINGSDLG_BACK_BUFFER_FORMAT      13
+#define DXUTSETTINGSDLG_DEPTH_STENCIL           14
+#define DXUTSETTINGSDLG_MULTISAMPLE_TYPE        15
+#define DXUTSETTINGSDLG_MULTISAMPLE_QUALITY     16
+#define DXUTSETTINGSDLG_VERTEX_PROCESSING       17
+#define DXUTSETTINGSDLG_PRESENT_INTERVAL        18
+#define DXUTSETTINGSDLG_DEVICECLIP              19
+#define DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL     20
+#define DXUTSETTINGSDLG_WINDOWED_GROUP          0x0100
+
+
+//--------------------------------------------------------------------------------------
+// Dialog for selection of device settings 
+// Use DXUTGetSettingsDialog() to access global instance
+// To control the contents of the dialog, use the CD3DEnumeration class.
+//--------------------------------------------------------------------------------------
+class CD3DSettingsDlg
+{
+public:
+    CD3DSettingsDlg();
+    ~CD3DSettingsDlg();
+
+    void Init( CDXUTDialogResourceManager* pManager );
+    void Init( CDXUTDialogResourceManager* pManager, LPCWSTR szControlTextureFileName );
+	void Init( CDXUTDialogResourceManager* pManager, LPCWSTR pszControlTextureResourcename, HMODULE hModule);
+
+    HRESULT OnCreateDevice( IDirect3DDevice9* pd3dDevice );
+    HRESULT Refresh();
+    HRESULT OnResetDevice();
+    HRESULT OnLostDevice();
+    HRESULT OnRender( float fElapsedTime );
+    HRESULT OnDestroyDevice();
+
+    CDXUTDialog* GetDialogControl() { return &m_Dialog; }
+    bool IsActive() { return m_bActive; }
+    void SetActive( bool bActive ) { m_bActive = bActive; if( bActive ) Refresh(); }
+
+    LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+protected:
+    friend CD3DSettingsDlg* DXUTGetSettingsDialog();
+
+    void CreateControls();
+    HRESULT SetDeviceSettingsFromUI();
+
+    void OnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl );
+    static void WINAPI StaticOnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserData );
+
+    CD3DEnumAdapterInfo* GetCurrentAdapterInfo();
+    CD3DEnumDeviceInfo* GetCurrentDeviceInfo();
+    CD3DEnumDeviceSettingsCombo* GetCurrentDeviceSettingsCombo();
+
+    void AddAdapter( const WCHAR* strDescription, UINT iAdapter );
+    UINT GetSelectedAdapter();
+
+    void AddDeviceType( D3DDEVTYPE devType );
+    D3DDEVTYPE GetSelectedDeviceType();
+
+    void SetWindowed( bool bWindowed );
+    bool IsWindowed();
+
+    void AddAdapterFormat( D3DFORMAT format );
+    D3DFORMAT GetSelectedAdapterFormat();
+
+    void AddResolution( DWORD dwWidth, DWORD dwHeight );
+    void GetSelectedResolution( DWORD* pdwWidth, DWORD* pdwHeight );
+
+    void AddRefreshRate( DWORD dwRate );
+    DWORD GetSelectedRefreshRate();
+
+    void AddBackBufferFormat( D3DFORMAT format );
+    D3DFORMAT GetSelectedBackBufferFormat();
+
+    void AddDepthStencilBufferFormat( D3DFORMAT format );
+    D3DFORMAT GetSelectedDepthStencilBufferFormat();
+
+    void AddMultisampleType( D3DMULTISAMPLE_TYPE type );
+    D3DMULTISAMPLE_TYPE GetSelectedMultisampleType();
+
+    void AddMultisampleQuality( DWORD dwQuality );
+    DWORD GetSelectedMultisampleQuality();
+
+    void AddVertexProcessingType( DWORD dwType );
+    DWORD GetSelectedVertexProcessingType();
+
+    DWORD GetSelectedPresentInterval();
+
+    void SetDeviceClip( bool bDeviceClip );
+    bool IsDeviceClip();
+
+    HRESULT OnAdapterChanged();
+    HRESULT OnDeviceTypeChanged();
+    HRESULT OnWindowedFullScreenChanged();
+    HRESULT OnAdapterFormatChanged();
+    HRESULT OnResolutionChanged();
+    HRESULT OnRefreshRateChanged();
+    HRESULT OnBackBufferFormatChanged();
+    HRESULT OnDepthStencilBufferFormatChanged();
+    HRESULT OnMultisampleTypeChanged();
+    HRESULT OnMultisampleQualityChanged();
+    HRESULT OnVertexProcessingChanged();
+    HRESULT OnPresentIntervalChanged();
+    HRESULT OnDeviceClipChanged();
+
+    IDirect3DStateBlock9* m_pStateBlock;
+    CDXUTDialog m_Dialog;
+    bool m_bActive; 
+};
+
+
+CD3DSettingsDlg* DXUTGetSettingsDialog();
+
+
+
+#endif
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2002.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2002.sln	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2002.sln	(revision 1481)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DXUT", "DXUT_2002.vcproj", "{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		ConfigName.0 = Debug
+		ConfigName.1 = Release
+	EndGlobalSection
+	GlobalSection(ProjectDependencies) = postSolution
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug.ActiveCfg = Debug|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug.Build.0 = Debug|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release.ActiveCfg = Release|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTsound.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTsound.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTsound.h	(revision 1481)
@@ -0,0 +1,151 @@
+//-----------------------------------------------------------------------------
+// File: DXUTsound.h
+//
+// Copyright (c) Microsoft Corp. All rights reserved.
+//-----------------------------------------------------------------------------
+#ifndef DXUTSOUND_H
+#define DXUTSOUND_H
+
+//-----------------------------------------------------------------------------
+// Classes used by this header
+//-----------------------------------------------------------------------------
+class CSoundManager;
+class CSound;
+class CStreamingSound;
+class CWaveFile;
+
+
+//-----------------------------------------------------------------------------
+// Typing macros 
+//-----------------------------------------------------------------------------
+#define WAVEFILE_READ   1
+#define WAVEFILE_WRITE  2
+
+#define DXUT_StopSound(s)         { if(s) s->Stop(); }
+#define DXUT_PlaySound(s)         { if(s) s->Play( 0, 0 ); }
+#define DXUT_PlaySoundLooping(s)  { if(s) s->Play( 0, DSBPLAY_LOOPING ); }
+
+
+//-----------------------------------------------------------------------------
+// Name: class CSoundManager
+// Desc: 
+//-----------------------------------------------------------------------------
+class CSoundManager
+{
+protected:
+    IDirectSound8* m_pDS;
+
+public:
+    CSoundManager();
+    ~CSoundManager();
+
+    HRESULT Initialize( HWND hWnd, DWORD dwCoopLevel );
+    inline  LPDIRECTSOUND8 GetDirectSound() { return m_pDS; }
+    HRESULT SetPrimaryBufferFormat( DWORD dwPrimaryChannels, DWORD dwPrimaryFreq, DWORD dwPrimaryBitRate );
+    HRESULT Get3DListenerInterface( LPDIRECTSOUND3DLISTENER* ppDSListener );
+
+    HRESULT Create( CSound** ppSound, LPWSTR strWaveFileName, DWORD dwCreationFlags = 0, GUID guid3DAlgorithm = GUID_NULL, DWORD dwNumBuffers = 1 );
+    HRESULT CreateFromMemory( CSound** ppSound, BYTE* pbData, ULONG ulDataSize, LPWAVEFORMATEX pwfx, DWORD dwCreationFlags = 0, GUID guid3DAlgorithm = GUID_NULL, DWORD dwNumBuffers = 1 );
+    HRESULT CreateStreaming( CStreamingSound** ppStreamingSound, LPWSTR strWaveFileName, DWORD dwCreationFlags, GUID guid3DAlgorithm, DWORD dwNotifyCount, DWORD dwNotifySize, HANDLE hNotifyEvent );
+};
+
+
+//-----------------------------------------------------------------------------
+// Name: class CSound
+// Desc: Encapsulates functionality of a DirectSound buffer.
+//-----------------------------------------------------------------------------
+class CSound
+{
+protected:
+    LPDIRECTSOUNDBUFFER* m_apDSBuffer;
+    DWORD                m_dwDSBufferSize;
+    CWaveFile*           m_pWaveFile;
+    DWORD                m_dwNumBuffers;
+    DWORD                m_dwCreationFlags;
+
+    HRESULT RestoreBuffer( LPDIRECTSOUNDBUFFER pDSB, BOOL* pbWasRestored );
+
+public:
+    CSound( LPDIRECTSOUNDBUFFER* apDSBuffer, DWORD dwDSBufferSize, DWORD dwNumBuffers, CWaveFile* pWaveFile, DWORD dwCreationFlags );
+    virtual ~CSound();
+
+    HRESULT Get3DBufferInterface( DWORD dwIndex, LPDIRECTSOUND3DBUFFER* ppDS3DBuffer );
+    HRESULT FillBufferWithSound( LPDIRECTSOUNDBUFFER pDSB, BOOL bRepeatWavIfBufferLarger );
+    LPDIRECTSOUNDBUFFER GetFreeBuffer();
+    LPDIRECTSOUNDBUFFER GetBuffer( DWORD dwIndex );
+
+    HRESULT Play( DWORD dwPriority = 0, DWORD dwFlags = 0, LONG lVolume = 0, LONG lFrequency = -1, LONG lPan = 0 );
+    HRESULT Play3D( LPDS3DBUFFER p3DBuffer, DWORD dwPriority = 0, DWORD dwFlags = 0, LONG lFrequency = 0 );
+    HRESULT Stop();
+    HRESULT Reset();
+    BOOL    IsSoundPlaying();
+};
+
+
+//-----------------------------------------------------------------------------
+// Name: class CStreamingSound
+// Desc: Encapsulates functionality to play a wave file with DirectSound.  
+//       The Create() method loads a chunk of wave file into the buffer, 
+//       and as sound plays more is written to the buffer by calling 
+//       HandleWaveStreamNotification() whenever hNotifyEvent is signaled.
+//-----------------------------------------------------------------------------
+class CStreamingSound : public CSound
+{
+protected:
+    DWORD m_dwLastPlayPos;
+    DWORD m_dwPlayProgress;
+    DWORD m_dwNotifySize;
+    DWORD m_dwNextWriteOffset;
+    BOOL  m_bFillNextNotificationWithSilence;
+
+public:
+    CStreamingSound( LPDIRECTSOUNDBUFFER pDSBuffer, DWORD dwDSBufferSize, CWaveFile* pWaveFile, DWORD dwNotifySize );
+    ~CStreamingSound();
+
+    HRESULT HandleWaveStreamNotification( BOOL bLoopedPlay );
+    HRESULT Reset();
+};
+
+
+//-----------------------------------------------------------------------------
+// Name: class CWaveFile
+// Desc: Encapsulates reading or writing sound data to or from a wave file
+//-----------------------------------------------------------------------------
+class CWaveFile
+{
+public:
+    WAVEFORMATEX* m_pwfx;        // Pointer to WAVEFORMATEX structure
+    HMMIO         m_hmmio;       // MM I/O handle for the WAVE
+    MMCKINFO      m_ck;          // Multimedia RIFF chunk
+    MMCKINFO      m_ckRiff;      // Use in opening a WAVE file
+    DWORD         m_dwSize;      // The size of the wave file
+    MMIOINFO      m_mmioinfoOut;
+    DWORD         m_dwFlags;
+    BOOL          m_bIsReadingFromMemory;
+    BYTE*         m_pbData;
+    BYTE*         m_pbDataCur;
+    ULONG         m_ulDataSize;
+    CHAR*         m_pResourceBuffer;
+
+protected:
+    HRESULT ReadMMIO();
+    HRESULT WriteMMIO( WAVEFORMATEX *pwfxDest );
+
+public:
+    CWaveFile();
+    ~CWaveFile();
+
+    HRESULT Open( LPWSTR strFileName, WAVEFORMATEX* pwfx, DWORD dwFlags );
+    HRESULT OpenFromMemory( BYTE* pbData, ULONG ulDataSize, WAVEFORMATEX* pwfx, DWORD dwFlags );
+    HRESULT Close();
+
+    HRESULT Read( BYTE* pBuffer, DWORD dwSizeToRead, DWORD* pdwSizeRead );
+    HRESULT Write( UINT nSizeToWrite, BYTE* pbData, UINT* pnSizeWrote );
+
+    DWORD   GetSize();
+    HRESULT ResetFile();
+    WAVEFORMATEX* GetFormat() { return m_pwfx; };
+};
+
+
+#endif // DXUTSOUND_H
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2003.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2003.sln	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2003.sln	(revision 1481)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DXUT", "DXUT_2003.vcproj", "{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug.ActiveCfg = Debug|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug.Build.0 = Debug|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release.ActiveCfg = Release|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTRes.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTRes.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTRes.h	(revision 1481)
@@ -0,0 +1,15 @@
+//----------------------------------------------------------------------------
+// File: dxutres.h
+//
+// Functions to create DXUT media from arrays in memory 
+//
+// Copyright (c) Microsoft Corp. All rights reserved.
+//-----------------------------------------------------------------------------
+#pragma once
+#ifndef DXUT_RES_H
+#define DXUT_RES_H
+
+HRESULT DXUTCreateGUITextureFromInternalArray( LPDIRECT3DDEVICE9 pd3dDevice, IDirect3DTexture9** ppTexture, D3DXIMAGE_INFO* pInfo );
+HRESULT DXUTCreateArrowMeshFromInternalArray( LPDIRECT3DDEVICE9 pd3dDevice, ID3DXMesh** ppMesh );
+
+#endif 
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2005.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2005.sln	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2005.sln	(revision 1481)
@@ -0,0 +1,19 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DXUT", "DXUT_2005.vcproj", "{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug|Win32.Build.0 = Debug|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release|Win32.ActiveCfg = Release|Win32
+		{E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTmisc.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTmisc.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTmisc.h	(revision 1481)
@@ -0,0 +1,1000 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTMisc.h
+//
+// Helper functions for Direct3D programming.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved
+//--------------------------------------------------------------------------------------
+#pragma once
+#ifndef DXUT_MISC_H
+#define DXUT_MISC_H
+
+//--------------------------------------------------------------------------------------
+// XInput helper state/function
+// This performs extra processing on XInput gamepad data to make it slightly more convenient to use
+// 
+// Example usage:
+//
+//      DXUT_GAMEPAD gamepad[4];
+//      for( DWORD iPort=0; iPort<DXUT_MAX_CONTROLLERS; iPort++ )
+//          DXUTGetGamepadState( iPort, gamepad[iPort] );
+//
+//--------------------------------------------------------------------------------------
+#define DXUT_MAX_CONTROLLERS 4  // XInput handles up to 4 controllers 
+
+struct DXUT_GAMEPAD
+{
+    // From XINPUT_GAMEPAD
+    WORD    wButtons;
+    BYTE    bLeftTrigger;
+    BYTE    bRightTrigger;
+    SHORT   sThumbLX;
+    SHORT   sThumbLY;
+    SHORT   sThumbRX;
+    SHORT   sThumbRY;
+
+    // Device properties
+    XINPUT_CAPABILITIES caps;
+    bool    bConnected; // If the controller is currently connected
+    bool    bInserted;  // If the controller was inserted this frame
+    bool    bRemoved;   // If the controller was removed this frame
+
+    // Thumb stick values converted to range [-1,+1]
+    float   fThumbRX;
+    float   fThumbRY;
+    float   fThumbLX;
+    float   fThumbLY;
+
+    // Records which buttons were pressed this frame.
+    // These are only set on the first frame that the button is pressed
+    WORD    wPressedButtons;
+    bool    bPressedLeftTrigger;
+    bool    bPressedRightTrigger;
+
+    // Last state of the buttons
+    WORD    wLastButtons;
+    bool    bLastLeftTrigger;
+    bool    bLastRightTrigger;
+};
+
+HRESULT DXUTGetGamepadState( DWORD dwPort, DXUT_GAMEPAD* pGamePad, bool bThumbstickDeadZone = true, bool bSnapThumbstickToCardinals = true );
+HRESULT DXUTStopRumbleOnAllControllers();
+
+
+//--------------------------------------------------------------------------------------
+// A growable array
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+class CGrowableArray
+{
+public:
+    CGrowableArray()  { m_pData = NULL; m_nSize = 0; m_nMaxSize = 0; }
+    CGrowableArray( const CGrowableArray<TYPE>& a ) { for( int i=0; i < a.m_nSize; i++ ) Add( a.m_pData[i] ); }
+    ~CGrowableArray() { RemoveAll(); }
+
+    const TYPE& operator[]( int nIndex ) const { return GetAt( nIndex ); }
+    TYPE& operator[]( int nIndex ) { return GetAt( nIndex ); }
+   
+    CGrowableArray& operator=( const CGrowableArray<TYPE>& a ) { if( this == &a ) return *this; RemoveAll(); for( int i=0; i < a.m_nSize; i++ ) Add( a.m_pData[i] ); return *this; }
+
+    HRESULT SetSize( int nNewMaxSize );
+    HRESULT Add( const TYPE& value );
+    HRESULT Insert( int nIndex, const TYPE& value );
+    HRESULT SetAt( int nIndex, const TYPE& value );
+    TYPE&   GetAt( int nIndex ) { assert( nIndex >= 0 && nIndex < m_nSize ); return m_pData[nIndex]; }
+    int     GetSize() const { return m_nSize; }
+    TYPE*   GetData() { return m_pData; }
+    bool    Contains( const TYPE& value ){ return ( -1 != IndexOf( value ) ); }
+
+    int     IndexOf( const TYPE& value ) { return ( m_nSize > 0 ) ? IndexOf( value, 0, m_nSize ) : -1; }
+    int     IndexOf( const TYPE& value, int iStart ) { return IndexOf( value, iStart, m_nSize - iStart ); }
+    int     IndexOf( const TYPE& value, int nIndex, int nNumElements );
+
+    int     LastIndexOf( const TYPE& value ) { return ( m_nSize > 0 ) ? LastIndexOf( value, m_nSize-1, m_nSize ) : -1; }
+    int     LastIndexOf( const TYPE& value, int nIndex ) { return LastIndexOf( value, nIndex, nIndex+1 ); }
+    int     LastIndexOf( const TYPE& value, int nIndex, int nNumElements );
+
+    HRESULT Remove( int nIndex );
+    void    RemoveAll() { SetSize(0); }
+
+protected:
+    TYPE* m_pData;      // the actual array of data
+    int m_nSize;        // # of elements (upperBound - 1)
+    int m_nMaxSize;     // max allocated
+
+    HRESULT SetSizeInternal( int nNewMaxSize );  // This version doesn't call ctor or dtor.
+};
+
+
+//--------------------------------------------------------------------------------------
+// Performs timer operations
+// Use DXUTGetGlobalTimer() to get the global instance
+//--------------------------------------------------------------------------------------
+class CDXUTTimer
+{
+public:
+    CDXUTTimer();
+
+    void Reset(); // resets the timer
+    void Start(); // starts the timer
+    void Stop();  // stop (or pause) the timer
+    void Advance(); // advance the timer by 0.1 seconds
+    double GetAbsoluteTime(); // get the absolute system time
+    double GetTime(); // get the current time
+    double GetElapsedTime(); // get the time that elapsed between GetElapsedTime() calls
+    bool IsStopped(); // returns true if timer stopped
+
+protected:
+    bool m_bUsingQPF;
+    bool m_bTimerStopped;
+    LONGLONG m_llQPFTicksPerSec;
+
+    LONGLONG m_llStopTime;
+    LONGLONG m_llLastElapsedTime;
+    LONGLONG m_llBaseTime;
+};
+
+CDXUTTimer* DXUTGetGlobalTimer();
+
+
+//-----------------------------------------------------------------------------
+// Resource cache for textures, fonts, meshs, and effects.  
+// Use DXUTGetGlobalResourceCache() to access the global cache
+//-----------------------------------------------------------------------------
+
+enum DXUTCACHE_SOURCELOCATION { DXUTCACHE_LOCATION_FILE, DXUTCACHE_LOCATION_RESOURCE };
+
+struct DXUTCache_Texture
+{
+    DXUTCACHE_SOURCELOCATION Location;
+    WCHAR wszSource[MAX_PATH];
+    HMODULE hSrcModule;
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+    UINT MipLevels;
+    DWORD Usage;
+    D3DFORMAT Format;
+    D3DPOOL Pool;
+    D3DRESOURCETYPE Type;
+    IDirect3DBaseTexture9 *pTexture;
+};
+
+struct DXUTCache_Font : public D3DXFONT_DESC
+{
+    ID3DXFont *pFont;
+};
+
+struct DXUTCache_Effect
+{
+    DXUTCACHE_SOURCELOCATION Location;
+    WCHAR wszSource[MAX_PATH];
+    HMODULE hSrcModule;
+    DWORD dwFlags;
+    ID3DXEffect *pEffect;
+};
+
+
+class CDXUTResourceCache
+{
+public:
+    ~CDXUTResourceCache();
+
+    HRESULT CreateTextureFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, LPDIRECT3DTEXTURE9 *ppTexture );
+    HRESULT CreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Width, UINT Height, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DTEXTURE9 *ppTexture );
+    HRESULT CreateTextureFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, LPDIRECT3DTEXTURE9 *ppTexture );
+    HRESULT CreateTextureFromResourceEx( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, UINT Width, UINT Height, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DTEXTURE9 *ppTexture );
+    HRESULT CreateCubeTextureFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture );
+    HRESULT CreateCubeTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Size, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture );
+    HRESULT CreateCubeTextureFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture );
+    HRESULT CreateCubeTextureFromResourceEx( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, UINT Size, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DCUBETEXTURE9 *ppCubeTexture );
+    HRESULT CreateVolumeTextureFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, LPDIRECT3DVOLUMETEXTURE9 *ppVolumeTexture );
+    HRESULT CreateVolumeTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Width, UINT Height, UINT Depth, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DVOLUMETEXTURE9 *ppTexture );
+    HRESULT CreateVolumeTextureFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, LPDIRECT3DVOLUMETEXTURE9 *ppVolumeTexture );
+    HRESULT CreateVolumeTextureFromResourceEx( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, UINT Width, UINT Height, UINT Depth, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DVOLUMETEXTURE9 *ppVolumeTexture );
+    HRESULT CreateFont( LPDIRECT3DDEVICE9 pDevice, UINT Height, UINT Width, UINT Weight, UINT MipLevels, BOOL Italic, DWORD CharSet, DWORD OutputPrecision, DWORD Quality, DWORD PitchAndFamily, LPCTSTR pFacename, LPD3DXFONT *ppFont );
+    HRESULT CreateFontIndirect( LPDIRECT3DDEVICE9 pDevice, CONST D3DXFONT_DESC *pDesc, LPD3DXFONT *ppFont );
+    HRESULT CreateEffectFromFile( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, const D3DXMACRO *pDefines, LPD3DXINCLUDE pInclude, DWORD Flags, LPD3DXEFFECTPOOL pPool, LPD3DXEFFECT *ppEffect, LPD3DXBUFFER *ppCompilationErrors );
+    HRESULT CreateEffectFromResource( LPDIRECT3DDEVICE9 pDevice, HMODULE hSrcModule, LPCTSTR pSrcResource, const D3DXMACRO *pDefines, LPD3DXINCLUDE pInclude, DWORD Flags, LPD3DXEFFECTPOOL pPool, LPD3DXEFFECT *ppEffect, LPD3DXBUFFER *ppCompilationErrors );
+
+public:
+    HRESULT OnCreateDevice( IDirect3DDevice9 *pd3dDevice );
+    HRESULT OnResetDevice( IDirect3DDevice9 *pd3dDevice );
+    HRESULT OnLostDevice();
+    HRESULT OnDestroyDevice();
+
+protected:
+    friend CDXUTResourceCache& DXUTGetGlobalResourceCache();
+    friend HRESULT DXUTInitialize3DEnvironment();
+    friend HRESULT DXUTReset3DEnvironment();
+    friend void DXUTCleanup3DEnvironment( bool bReleaseSettings );
+
+    CDXUTResourceCache() { }
+
+    CGrowableArray< DXUTCache_Texture > m_TextureCache;
+    CGrowableArray< DXUTCache_Effect > m_EffectCache;
+    CGrowableArray< DXUTCache_Font > m_FontCache;
+};
+
+CDXUTResourceCache& DXUTGetGlobalResourceCache();
+
+
+//--------------------------------------------------------------------------------------
+class CD3DArcBall
+{
+public:
+    CD3DArcBall();
+
+    // Functions to change behavior
+    void Reset(); 
+    void SetTranslationRadius( FLOAT fRadiusTranslation ) { m_fRadiusTranslation = fRadiusTranslation; }
+    void SetWindow( INT nWidth, INT nHeight, FLOAT fRadius = 0.9f ) { m_nWidth = nWidth; m_nHeight = nHeight; m_fRadius = fRadius; m_vCenter = D3DXVECTOR2(m_nWidth/2.0f,m_nHeight/2.0f); }
+    void SetOffset( INT nX, INT nY ) { m_Offset.x = nX; m_Offset.y = nY; }
+
+    // Call these from client and use GetRotationMatrix() to read new rotation matrix
+    void OnBegin( int nX, int nY );  // start the rotation (pass current mouse position)
+    void OnMove( int nX, int nY );   // continue the rotation (pass current mouse position)
+    void OnEnd();                    // end the rotation 
+
+    // Or call this to automatically handle left, middle, right buttons
+    LRESULT     HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+    // Functions to get/set state
+    const D3DXMATRIX* GetRotationMatrix()                   { return D3DXMatrixRotationQuaternion(&m_mRotation, &m_qNow); };
+    const D3DXMATRIX* GetTranslationMatrix() const          { return &m_mTranslation; }
+    const D3DXMATRIX* GetTranslationDeltaMatrix() const     { return &m_mTranslationDelta; }
+    bool        IsBeingDragged() const                      { return m_bDrag; }
+    D3DXQUATERNION GetQuatNow() const                       { return m_qNow; }
+    void        SetQuatNow( D3DXQUATERNION q ) { m_qNow = q; }
+
+    static D3DXQUATERNION QuatFromBallPoints( const D3DXVECTOR3 &vFrom, const D3DXVECTOR3 &vTo );
+
+
+protected:
+    D3DXMATRIXA16  m_mRotation;         // Matrix for arc ball's orientation
+    D3DXMATRIXA16  m_mTranslation;      // Matrix for arc ball's position
+    D3DXMATRIXA16  m_mTranslationDelta; // Matrix for arc ball's position
+
+    POINT          m_Offset;   // window offset, or upper-left corner of window
+    INT            m_nWidth;   // arc ball's window width
+    INT            m_nHeight;  // arc ball's window height
+    D3DXVECTOR2    m_vCenter;  // center of arc ball 
+    FLOAT          m_fRadius;  // arc ball's radius in screen coords
+    FLOAT          m_fRadiusTranslation; // arc ball's radius for translating the target
+
+    D3DXQUATERNION m_qDown;             // Quaternion before button down
+    D3DXQUATERNION m_qNow;              // Composite quaternion for current drag
+    bool           m_bDrag;             // Whether user is dragging arc ball
+
+    POINT          m_ptLastMouse;      // position of last mouse point
+    D3DXVECTOR3    m_vDownPt;           // starting point of rotation arc
+    D3DXVECTOR3    m_vCurrentPt;        // current point of rotation arc
+
+    D3DXVECTOR3    ScreenToVector( float fScreenPtX, float fScreenPtY );
+};
+
+
+//--------------------------------------------------------------------------------------
+// used by CCamera to map WM_KEYDOWN keys
+//--------------------------------------------------------------------------------------
+enum D3DUtil_CameraKeys
+{
+    CAM_STRAFE_LEFT = 0,
+    CAM_STRAFE_RIGHT,
+    CAM_MOVE_FORWARD,
+    CAM_MOVE_BACKWARD,
+    CAM_MOVE_UP,
+    CAM_MOVE_DOWN,
+    CAM_RESET,
+    CAM_CONTROLDOWN,
+    CAM_MAX_KEYS,
+    CAM_UNKNOWN = 0xFF
+};
+
+#define KEY_WAS_DOWN_MASK 0x80
+#define KEY_IS_DOWN_MASK  0x01
+
+#define MOUSE_LEFT_BUTTON   0x01
+#define MOUSE_MIDDLE_BUTTON 0x02
+#define MOUSE_RIGHT_BUTTON  0x04
+#define MOUSE_WHEEL         0x08
+
+
+//--------------------------------------------------------------------------------------
+// Simple base camera class that moves and rotates.  The base class
+//       records mouse and keyboard input for use by a derived class, and 
+//       keeps common state.
+//--------------------------------------------------------------------------------------
+class CBaseCamera
+{
+public:
+    CBaseCamera();
+
+    // Call these from client and use Get*Matrix() to read new matrices
+    virtual LRESULT HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual void    FrameMove( FLOAT fElapsedTime ) = 0;
+
+    // Functions to change camera matrices
+    virtual void Reset(); 
+    virtual void SetViewParams( D3DXVECTOR3* pvEyePt, D3DXVECTOR3* pvLookatPt );
+    virtual void SetProjParams( FLOAT fFOV, FLOAT fAspect, FLOAT fNearPlane, FLOAT fFarPlane );
+
+    // Functions to change behavior
+    virtual void SetDragRect( RECT &rc ) { m_rcDrag = rc; }
+    void SetInvertPitch( bool bInvertPitch ) { m_bInvertPitch = bInvertPitch; }
+    void SetDrag( bool bMovementDrag, FLOAT fTotalDragTimeToZero = 0.25f ) { m_bMovementDrag = bMovementDrag; m_fTotalDragTimeToZero = fTotalDragTimeToZero; }
+    void SetEnableYAxisMovement( bool bEnableYAxisMovement ) { m_bEnableYAxisMovement = bEnableYAxisMovement; }
+    void SetEnablePositionMovement( bool bEnablePositionMovement ) { m_bEnablePositionMovement = bEnablePositionMovement; }
+    void SetClipToBoundary( bool bClipToBoundary, D3DXVECTOR3* pvMinBoundary, D3DXVECTOR3* pvMaxBoundary ) { m_bClipToBoundary = bClipToBoundary; if( pvMinBoundary ) m_vMinBoundary = *pvMinBoundary; if( pvMaxBoundary ) m_vMaxBoundary = *pvMaxBoundary; }
+    void SetScalers( FLOAT fRotationScaler = 0.01f, FLOAT fMoveScaler = 5.0f )  { m_fRotationScaler = fRotationScaler; m_fMoveScaler = fMoveScaler; }
+    void SetNumberOfFramesToSmoothMouseData( int nFrames ) { if( nFrames > 0 ) m_fFramesToSmoothMouseData = (float)nFrames; }
+
+    // Functions to get state
+    const D3DXMATRIX*  GetViewMatrix() const { return &m_mView; }
+    const D3DXMATRIX*  GetProjMatrix() const { return &m_mProj; }
+    const D3DXVECTOR3* GetEyePt() const      { return &m_vEye; }
+    const D3DXVECTOR3* GetLookAtPt() const   { return &m_vLookAt; }
+    float GetNearClip() const { return m_fNearPlane; }
+    float GetFarClip() const { return m_fFarPlane; }
+
+    bool IsBeingDragged() const         { return (m_bMouseLButtonDown || m_bMouseMButtonDown || m_bMouseRButtonDown); }
+    bool IsMouseLButtonDown() const     { return m_bMouseLButtonDown; } 
+    bool IsMouseMButtonDown() const     { return m_bMouseMButtonDown; } 
+    bool IsMouseRButtonDown() const     { return m_bMouseRButtonDown; } 
+
+protected:
+    // Functions to map a WM_KEYDOWN key to a D3DUtil_CameraKeys enum
+    virtual D3DUtil_CameraKeys MapKey( UINT nKey );    
+    bool IsKeyDown( BYTE key ) const { return( (key & KEY_IS_DOWN_MASK) == KEY_IS_DOWN_MASK ); }
+    bool WasKeyDown( BYTE key ) const { return( (key & KEY_WAS_DOWN_MASK) == KEY_WAS_DOWN_MASK ); }
+
+    void ConstrainToBoundary( D3DXVECTOR3* pV );
+    void UpdateVelocity( float fElapsedTime );
+    void GetInput( bool bGetKeyboardInput, bool bGetMouseInput, bool bGetGamepadInput, bool bResetCursorAfterMove );
+
+    D3DXMATRIX            m_mView;              // View matrix 
+    D3DXMATRIX            m_mProj;              // Projection matrix
+
+    DXUT_GAMEPAD          m_GamePad[DXUT_MAX_CONTROLLERS]; // XInput controller state
+    D3DXVECTOR3           m_vGamePadLeftThumb;
+    D3DXVECTOR3           m_vGamePadRightThumb;
+    double                m_GamePadLastActive[DXUT_MAX_CONTROLLERS];
+
+    int                   m_cKeysDown;            // Number of camera keys that are down.
+    BYTE                  m_aKeys[CAM_MAX_KEYS];  // State of input - KEY_WAS_DOWN_MASK|KEY_IS_DOWN_MASK
+    D3DXVECTOR3           m_vKeyboardDirection;   // Direction vector of keyboard input
+    POINT                 m_ptLastMousePosition;  // Last absolute position of mouse cursor
+    bool                  m_bMouseLButtonDown;    // True if left button is down 
+    bool                  m_bMouseMButtonDown;    // True if middle button is down 
+    bool                  m_bMouseRButtonDown;    // True if right button is down 
+    int                   m_nCurrentButtonMask;   // mask of which buttons are down
+    int                   m_nMouseWheelDelta;     // Amount of middle wheel scroll (+/-) 
+    D3DXVECTOR2           m_vMouseDelta;          // Mouse relative delta smoothed over a few frames
+    float                 m_fFramesToSmoothMouseData; // Number of frames to smooth mouse data over
+
+    D3DXVECTOR3           m_vDefaultEye;          // Default camera eye position
+    D3DXVECTOR3           m_vDefaultLookAt;       // Default LookAt position
+    D3DXVECTOR3           m_vEye;                 // Camera eye position
+    D3DXVECTOR3           m_vLookAt;              // LookAt position
+    float                 m_fCameraYawAngle;      // Yaw angle of camera
+    float                 m_fCameraPitchAngle;    // Pitch angle of camera
+
+    RECT                  m_rcDrag;               // Rectangle within which a drag can be initiated.
+    D3DXVECTOR3           m_vVelocity;            // Velocity of camera
+    bool                  m_bMovementDrag;        // If true, then camera movement will slow to a stop otherwise movement is instant
+    D3DXVECTOR3           m_vVelocityDrag;        // Velocity drag force
+    FLOAT                 m_fDragTimer;           // Countdown timer to apply drag
+    FLOAT                 m_fTotalDragTimeToZero; // Time it takes for velocity to go from full to 0
+    D3DXVECTOR2           m_vRotVelocity;         // Velocity of camera
+
+    float                 m_fFOV;                 // Field of view
+    float                 m_fAspect;              // Aspect ratio
+    float                 m_fNearPlane;           // Near plane
+    float                 m_fFarPlane;            // Far plane
+
+    float                 m_fRotationScaler;      // Scaler for rotation
+    float                 m_fMoveScaler;          // Scaler for movement
+
+    bool                  m_bInvertPitch;         // Invert the pitch axis
+    bool                  m_bEnablePositionMovement; // If true, then the user can translate the camera/model 
+    bool                  m_bEnableYAxisMovement; // If true, then camera can move in the y-axis
+
+    bool                  m_bClipToBoundary;      // If true, then the camera will be clipped to the boundary
+    D3DXVECTOR3           m_vMinBoundary;         // Min point in clip boundary
+    D3DXVECTOR3           m_vMaxBoundary;         // Max point in clip boundary
+};
+
+
+//--------------------------------------------------------------------------------------
+// Simple first person camera class that moves and rotates.
+//       It allows yaw and pitch but not roll.  It uses WM_KEYDOWN and 
+//       GetCursorPos() to respond to keyboard and mouse input and updates the 
+//       view matrix based on input.  
+//--------------------------------------------------------------------------------------
+class CFirstPersonCamera : public CBaseCamera
+{
+public:
+    CFirstPersonCamera();
+
+    // Call these from client and use Get*Matrix() to read new matrices
+    virtual void FrameMove( FLOAT fElapsedTime );
+
+    // Functions to change behavior
+    void SetRotateButtons( bool bLeft, bool bMiddle, bool bRight, bool bRotateWithoutButtonDown = false );
+
+    void SetResetCursorAfterMove( bool bResetCursorAfterMove ) { m_bResetCursorAfterMove = bResetCursorAfterMove; }
+
+    // Functions to get state
+    D3DXMATRIX*  GetWorldMatrix()            { return &m_mCameraWorld; }
+
+    const D3DXVECTOR3* GetWorldRight() const { return (D3DXVECTOR3*)&m_mCameraWorld._11; } 
+    const D3DXVECTOR3* GetWorldUp() const    { return (D3DXVECTOR3*)&m_mCameraWorld._21; }
+    const D3DXVECTOR3* GetWorldAhead() const { return (D3DXVECTOR3*)&m_mCameraWorld._31; }
+    const D3DXVECTOR3* GetEyePt() const      { return (D3DXVECTOR3*)&m_mCameraWorld._41; }
+
+protected:
+    D3DXMATRIX m_mCameraWorld;       // World matrix of the camera (inverse of the view matrix)
+
+    int        m_nActiveButtonMask;  // Mask to determine which button to enable for rotation
+	bool	   m_bRotateWithoutButtonDown;
+
+    bool       m_bResetCursorAfterMove;// If true, the class will reset the cursor position so that the cursor always has space to move 
+};
+
+
+//--------------------------------------------------------------------------------------
+// Simple model viewing camera class that rotates around the object.
+//--------------------------------------------------------------------------------------
+class CModelViewerCamera : public CBaseCamera
+{
+public:
+    CModelViewerCamera();
+
+    // Call these from client and use Get*Matrix() to read new matrices
+    virtual LRESULT HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+    virtual void FrameMove( FLOAT fElapsedTime );
+
+   
+    // Functions to change behavior
+    virtual void SetDragRect( RECT &rc );
+    void Reset(); 
+    void SetViewParams( D3DXVECTOR3* pvEyePt, D3DXVECTOR3* pvLookatPt );
+    void SetButtonMasks( int nRotateModelButtonMask = MOUSE_LEFT_BUTTON, int nZoomButtonMask = MOUSE_WHEEL, int nRotateCameraButtonMask = MOUSE_RIGHT_BUTTON ) { m_nRotateModelButtonMask = nRotateModelButtonMask, m_nZoomButtonMask = nZoomButtonMask; m_nRotateCameraButtonMask = nRotateCameraButtonMask; }
+    
+    void SetAttachCameraToModel( bool bEnable = false ) { m_bAttachCameraToModel = bEnable; }
+    void SetWindow( int nWidth, int nHeight, float fArcballRadius=0.9f ) { m_WorldArcBall.SetWindow( nWidth, nHeight, fArcballRadius ); m_ViewArcBall.SetWindow( nWidth, nHeight, fArcballRadius ); }
+    void SetRadius( float fDefaultRadius=5.0f, float fMinRadius=1.0f, float fMaxRadius=FLT_MAX  ) { m_fDefaultRadius = m_fRadius = fDefaultRadius; m_fMinRadius = fMinRadius; m_fMaxRadius = fMaxRadius; m_bDragSinceLastUpdate = true; }
+    void SetModelCenter( D3DXVECTOR3 vModelCenter ) { m_vModelCenter = vModelCenter; }
+    void SetLimitPitch( bool bLimitPitch ) { m_bLimitPitch = bLimitPitch; }
+    void SetViewQuat( D3DXQUATERNION q ) { m_ViewArcBall.SetQuatNow( q ); m_bDragSinceLastUpdate = true; }
+    void SetWorldQuat( D3DXQUATERNION q ) { m_WorldArcBall.SetQuatNow( q ); m_bDragSinceLastUpdate = true; }
+
+    // Functions to get state
+    const D3DXMATRIX* GetWorldMatrix() const { return &m_mWorld; }
+    void SetWorldMatrix( D3DXMATRIX &mWorld ) { m_mWorld = mWorld; m_bDragSinceLastUpdate = true; }
+
+protected:
+    CD3DArcBall  m_WorldArcBall;
+    CD3DArcBall  m_ViewArcBall;
+    D3DXVECTOR3  m_vModelCenter;
+    D3DXMATRIX   m_mModelLastRot;        // Last arcball rotation matrix for model 
+    D3DXMATRIX   m_mModelRot;            // Rotation matrix of model
+    D3DXMATRIX   m_mWorld;               // World matrix of model
+
+    int          m_nRotateModelButtonMask;
+    int          m_nZoomButtonMask;
+    int          m_nRotateCameraButtonMask;
+
+    bool         m_bAttachCameraToModel;
+    bool         m_bLimitPitch;
+    float        m_fRadius;              // Distance from the camera to model 
+    float        m_fDefaultRadius;       // Distance from the camera to model 
+    float        m_fMinRadius;           // Min radius
+    float        m_fMaxRadius;           // Max radius
+    bool         m_bDragSinceLastUpdate; // True if mouse drag has happened since last time FrameMove is called.
+
+    D3DXMATRIX   m_mCameraRotLast;
+
+};
+
+
+//--------------------------------------------------------------------------------------
+// Manages the intertion point when drawing text
+//--------------------------------------------------------------------------------------
+class CDXUTTextHelper
+{
+public:
+    CDXUTTextHelper( ID3DXFont* pFont, ID3DXSprite* pSprite, int nLineHeight );
+
+    void SetInsertionPos( int x, int y ) { m_pt.x = x; m_pt.y = y; }
+    void SetForegroundColor( D3DXCOLOR clr ) { m_clr = clr; }
+
+    void Begin();
+    HRESULT DrawFormattedTextLine( const WCHAR* strMsg, ... );
+    HRESULT DrawTextLine( const WCHAR* strMsg );
+    HRESULT DrawFormattedTextLine( RECT &rc, DWORD dwFlags, const WCHAR* strMsg, ... );
+    HRESULT DrawTextLine( RECT &rc, DWORD dwFlags, const WCHAR* strMsg );
+    void End();
+
+protected:
+    ID3DXFont*   m_pFont;
+    ID3DXSprite* m_pSprite;
+    D3DXCOLOR    m_clr;
+    POINT        m_pt;
+    int          m_nLineHeight;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Manages a persistent list of lines and draws them using ID3DXLine
+//--------------------------------------------------------------------------------------
+class CDXUTLineManager
+{
+public:
+    CDXUTLineManager();
+    ~CDXUTLineManager();
+
+    HRESULT OnCreatedDevice( IDirect3DDevice9* pd3dDevice );
+    HRESULT OnResetDevice();
+    HRESULT OnRender();
+    HRESULT OnLostDevice();
+    HRESULT OnDeletedDevice();
+
+    HRESULT AddLine( int* pnLineID, D3DXVECTOR2* pVertexList, DWORD dwVertexListCount, D3DCOLOR Color, float fWidth, float fScaleRatio, bool bAntiAlias );
+    HRESULT AddRect( int* pnLineID, RECT rc, D3DCOLOR Color, float fWidth, float fScaleRatio, bool bAntiAlias );
+    HRESULT RemoveLine( int nLineID );
+    HRESULT RemoveAllLines();
+
+protected:
+    struct LINE_NODE
+    {
+        int      nLineID;
+        D3DCOLOR Color;
+        float    fWidth;
+        bool     bAntiAlias;
+        float    fScaleRatio;
+        D3DXVECTOR2* pVertexList;
+        DWORD    dwVertexListCount;
+    };
+
+    CGrowableArray<LINE_NODE*> m_LinesList;
+    IDirect3DDevice9* m_pd3dDevice;
+    ID3DXLine* m_pD3DXLine;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Manages the mesh, direction, mouse events of a directional arrow that 
+// rotates around a radius controlled by an arcball 
+//--------------------------------------------------------------------------------------
+class CDXUTDirectionWidget
+{
+public:
+    CDXUTDirectionWidget();
+
+    static HRESULT StaticOnCreateDevice( IDirect3DDevice9* pd3dDevice );
+    HRESULT OnResetDevice( const D3DSURFACE_DESC* pBackBufferSurfaceDesc );
+    HRESULT OnRender( D3DXCOLOR color, const D3DXMATRIX* pmView, const D3DXMATRIX* pmProj, const D3DXVECTOR3* pEyePt );
+    LRESULT HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+    static void StaticOnLostDevice();
+    static void StaticOnDestroyDevice();
+
+    D3DXVECTOR3 GetLightDirection()         { return m_vCurrentDir; };
+    void        SetLightDirection( D3DXVECTOR3 vDir ) { m_vDefaultDir = m_vCurrentDir = vDir; };
+    void        SetButtonMask( int nRotate = MOUSE_RIGHT_BUTTON ) { m_nRotateMask = nRotate; }
+
+    float GetRadius()                 { return m_fRadius; };
+    void  SetRadius( float fRadius )  { m_fRadius = fRadius; };
+
+    bool  IsBeingDragged() { return m_ArcBall.IsBeingDragged(); };
+
+protected:
+    HRESULT UpdateLightDir();
+
+    D3DXMATRIXA16  m_mRot;
+    D3DXMATRIXA16  m_mRotSnapshot;
+    static IDirect3DDevice9* s_pd3dDevice;
+    static ID3DXEffect* s_pEffect;       
+    static ID3DXMesh*   s_pMesh;    
+
+    float          m_fRadius;
+    int            m_nRotateMask;
+    CD3DArcBall    m_ArcBall;
+    D3DXVECTOR3    m_vDefaultDir;
+    D3DXVECTOR3    m_vCurrentDir;
+    D3DXMATRIX     m_mView;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Shared code for samples to ask user if they want to use a REF device or quit
+//--------------------------------------------------------------------------------------
+void DXUTDisplaySwitchingToREFWarning();
+
+//--------------------------------------------------------------------------------------
+// Tries to finds a media file by searching in common locations
+//--------------------------------------------------------------------------------------
+HRESULT DXUTFindDXSDKMediaFileCch( WCHAR* strDestPath, int cchDest, LPCWSTR strFilename );
+HRESULT DXUTSetMediaSearchPath( LPCWSTR strPath );
+LPCWSTR DXUTGetMediaSearchPath();
+
+
+//--------------------------------------------------------------------------------------
+// Returns the string for the given D3DFORMAT.
+//       bWithPrefix determines whether the string should include the "D3DFMT_"
+//--------------------------------------------------------------------------------------
+LPCWSTR DXUTD3DFormatToString( D3DFORMAT format, bool bWithPrefix );
+
+
+//--------------------------------------------------------------------------------------
+// Returns a view matrix for rendering to a face of a cubemap.
+//--------------------------------------------------------------------------------------
+D3DXMATRIX DXUTGetCubeMapViewMatrix( DWORD dwFace );
+
+
+//--------------------------------------------------------------------------------------
+// Helper function to launch the Media Center UI after the program terminates
+//--------------------------------------------------------------------------------------
+bool DXUTReLaunchMediaCenter();
+
+
+//--------------------------------------------------------------------------------------
+// Debug printing support
+// See dxerr9.h for more debug printing support
+//--------------------------------------------------------------------------------------
+void DXUTOutputDebugStringW( LPCWSTR strMsg, ... );
+void DXUTOutputDebugStringA( LPCSTR strMsg, ... );
+HRESULT WINAPI DXUTTrace( const CHAR* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, bool bPopMsgBox );
+void DXUTTraceDecl( D3DVERTEXELEMENT9 decl[MAX_FVF_DECL_SIZE] );
+WCHAR* DXUTTraceD3DDECLUSAGEtoString( BYTE u );
+WCHAR* DXUTTraceD3DDECLMETHODtoString( BYTE m );
+WCHAR* DXUTTraceD3DDECLTYPEtoString( BYTE t );
+
+#ifdef UNICODE
+#define DXUTOutputDebugString DXUTOutputDebugStringW
+#else
+#define DXUTOutputDebugString DXUTOutputDebugStringA
+#endif
+
+// These macros are very similar to dxerr9's but it special cases the HRESULT defined
+// by DXUT to pop better message boxes. 
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXUT_ERR(str,hr)           DXUTTrace( __FILE__, (DWORD)__LINE__, hr, str, false )
+#define DXUT_ERR_MSGBOX(str,hr)    DXUTTrace( __FILE__, (DWORD)__LINE__, hr, str, true )
+#define DXUTTRACE                  DXUTOutputDebugString
+#else
+#define DXUT_ERR(str,hr)           (hr)
+#define DXUT_ERR_MSGBOX(str,hr)    (hr)
+#define DXUTTRACE                  (__noop)
+#endif
+
+
+//--------------------------------------------------------------------------------------
+// Direct3D9 dynamic linking support -- calls top-level D3D9 APIs with graceful
+// failure if APIs are not present.
+//--------------------------------------------------------------------------------------
+
+IDirect3D9 * WINAPI DXUT_Dynamic_Direct3DCreate9(UINT SDKVersion);
+int WINAPI DXUT_Dynamic_D3DPERF_BeginEvent( D3DCOLOR col, LPCWSTR wszName );
+int WINAPI DXUT_Dynamic_D3DPERF_EndEvent( void );
+void WINAPI DXUT_Dynamic_D3DPERF_SetMarker( D3DCOLOR col, LPCWSTR wszName );
+void WINAPI DXUT_Dynamic_D3DPERF_SetRegion( D3DCOLOR col, LPCWSTR wszName );
+BOOL WINAPI DXUT_Dynamic_D3DPERF_QueryRepeatFrame( void );
+void WINAPI DXUT_Dynamic_D3DPERF_SetOptions( DWORD dwOptions );
+DWORD WINAPI DXUT_Dynamic_D3DPERF_GetStatus( void );
+
+
+//--------------------------------------------------------------------------------------
+// Profiling/instrumentation support
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+// Some D3DPERF APIs take a color that can be used when displaying user events in 
+// performance analysis tools.  The following constants are provided for your 
+// convenience, but you can use any colors you like.
+//--------------------------------------------------------------------------------------
+const D3DCOLOR DXUT_PERFEVENTCOLOR  = D3DCOLOR_XRGB(200,100,100);
+const D3DCOLOR DXUT_PERFEVENTCOLOR2 = D3DCOLOR_XRGB(100,200,100);
+const D3DCOLOR DXUT_PERFEVENTCOLOR3 = D3DCOLOR_XRGB(100,100,200);
+
+//--------------------------------------------------------------------------------------
+// The following macros provide a convenient way for your code to call the D3DPERF 
+// functions only when PROFILE is defined.  If PROFILE is not defined (as for the final 
+// release version of a program), these macros evaluate to nothing, so no detailed event
+// information is embedded in your shipping program.  It is recommended that you create
+// and use three build configurations for your projects:
+//     Debug (nonoptimized code, asserts active, PROFILE defined to assist debugging)
+//     Profile (optimized code, asserts disabled, PROFILE defined to assist optimization)
+//     Release (optimized code, asserts disabled, PROFILE not defined)
+//--------------------------------------------------------------------------------------
+#ifdef PROFILE
+// PROFILE is defined, so these macros call the D3DPERF functions
+#define DXUT_BeginPerfEvent( color, pstrMessage )   DXUT_Dynamic_D3DPERF_BeginEvent( color, pstrMessage )
+#define DXUT_EndPerfEvent()                         DXUT_Dynamic_D3DPERF_EndEvent()
+#define DXUT_SetPerfMarker( color, pstrMessage )    DXUT_Dynamic_D3DPERF_SetMarker( color, pstrMessage )
+#else
+// PROFILE is not defined, so these macros do nothing
+#define DXUT_BeginPerfEvent( color, pstrMessage )   (__noop)
+#define DXUT_EndPerfEvent()                         (__noop)
+#define DXUT_SetPerfMarker( color, pstrMessage )    (__noop)
+#endif
+
+//--------------------------------------------------------------------------------------
+// CDXUTPerfEventGenerator is a helper class that makes it easy to attach begin and end
+// events to a block of code.  Simply define a CDXUTPerfEventGenerator variable anywhere 
+// in a block of code, and the class's constructor will call DXUT_BeginPerfEvent when 
+// the block of code begins, and the class's destructor will call DXUT_EndPerfEvent when 
+// the block ends.
+//--------------------------------------------------------------------------------------
+class CDXUTPerfEventGenerator
+{
+public:
+    CDXUTPerfEventGenerator( D3DCOLOR color, LPCWSTR pstrMessage ) { DXUT_BeginPerfEvent( color, pstrMessage ); }
+    ~CDXUTPerfEventGenerator( void ) { DXUT_EndPerfEvent(); }
+};
+
+
+//--------------------------------------------------------------------------------------
+// Multimon handling to support OSes with or without multimon API support.  
+// Purposely avoiding the use of multimon.h so DXUT.lib doesn't require 
+// COMPILE_MULTIMON_STUBS and cause complication with MFC or other users of multimon.h
+//--------------------------------------------------------------------------------------
+#ifndef MONITOR_DEFAULTTOPRIMARY
+    #define MONITORINFOF_PRIMARY        0x00000001
+    #define MONITOR_DEFAULTTONULL       0x00000000
+    #define MONITOR_DEFAULTTOPRIMARY    0x00000001
+    #define MONITOR_DEFAULTTONEAREST    0x00000002
+    typedef struct tagMONITORINFO
+    {
+        DWORD   cbSize;
+        RECT    rcMonitor;
+        RECT    rcWork;
+        DWORD   dwFlags;
+    } MONITORINFO, *LPMONITORINFO;
+    typedef struct tagMONITORINFOEXW : public tagMONITORINFO
+    {
+        WCHAR       szDevice[CCHDEVICENAME];
+    } MONITORINFOEXW, *LPMONITORINFOEXW;
+    typedef MONITORINFOEXW MONITORINFOEX;
+    typedef LPMONITORINFOEXW LPMONITORINFOEX;
+#endif
+
+HMONITOR DXUTMonitorFromWindow( HWND hWnd, DWORD dwFlags );
+BOOL     DXUTGetMonitorInfo( HMONITOR hMonitor, LPMONITORINFO lpMonitorInfo );
+void     DXUTGetDesktopResolution( UINT AdapterOrdinal, UINT* pWidth, UINT* pHeight );
+
+
+//--------------------------------------------------------------------------------------
+// Implementation of CGrowableArray
+//--------------------------------------------------------------------------------------
+
+// This version doesn't call ctor or dtor.
+template< typename TYPE >
+HRESULT CGrowableArray<TYPE>::SetSizeInternal( int nNewMaxSize )
+{
+    if( nNewMaxSize < 0 )
+    {
+        assert( false );
+        return E_INVALIDARG;
+    }
+
+    if( nNewMaxSize == 0 )
+    {
+        // Shrink to 0 size & cleanup
+        if( m_pData )
+        {
+            free( m_pData );
+            m_pData = NULL;
+        }
+
+        m_nMaxSize = 0;
+        m_nSize = 0;
+    }
+    else if( m_pData == NULL || nNewMaxSize > m_nMaxSize )
+    {
+        // Grow array
+        int nGrowBy = ( m_nMaxSize == 0 ) ? 16 : m_nMaxSize;
+        nNewMaxSize = __max( nNewMaxSize, m_nMaxSize + nGrowBy );
+
+        TYPE* pDataNew = (TYPE*) realloc( m_pData, nNewMaxSize * sizeof(TYPE) );
+        if( pDataNew == NULL )
+            return E_OUTOFMEMORY;
+
+        m_pData = pDataNew;
+        m_nMaxSize = nNewMaxSize;
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+HRESULT CGrowableArray<TYPE>::SetSize( int nNewMaxSize )
+{
+    int nOldSize = m_nSize;
+
+    if( nOldSize > nNewMaxSize )
+    {
+        // Removing elements. Call dtor.
+
+        for( int i = nNewMaxSize; i < nOldSize; ++i )
+            m_pData[i].~TYPE();
+    }
+
+    // Adjust buffer.  Note that there's no need to check for error
+    // since if it happens, nOldSize == nNewMaxSize will be true.)
+    HRESULT hr = SetSizeInternal( nNewMaxSize );
+
+    if( nOldSize < nNewMaxSize )
+    {
+        // Adding elements. Call ctor.
+
+        for( int i = nOldSize; i < nNewMaxSize; ++i )
+            ::new (&m_pData[i]) TYPE;
+    }
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+HRESULT CGrowableArray<TYPE>::Add( const TYPE& value )
+{
+    HRESULT hr;
+    if( FAILED( hr = SetSizeInternal( m_nSize + 1 ) ) )
+        return hr;
+
+    // Construct the new element
+    ::new (&m_pData[m_nSize]) TYPE;
+
+    // Assign
+    m_pData[m_nSize] = value;
+    ++m_nSize;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+HRESULT CGrowableArray<TYPE>::Insert( int nIndex, const TYPE& value )
+{
+    HRESULT hr;
+
+    // Validate index
+    if( nIndex < 0 || 
+        nIndex > m_nSize )
+    {
+        assert( false );
+        return E_INVALIDARG;
+    }
+
+    // Prepare the buffer
+    if( FAILED( hr = SetSizeInternal( m_nSize + 1 ) ) )
+        return hr;
+
+    // Shift the array
+    MoveMemory( &m_pData[nIndex+1], &m_pData[nIndex], sizeof(TYPE) * (m_nSize - nIndex) );
+
+    // Construct the new element
+    ::new (&m_pData[nIndex]) TYPE;
+
+    // Set the value and increase the size
+    m_pData[nIndex] = value;
+    ++m_nSize;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+HRESULT CGrowableArray<TYPE>::SetAt( int nIndex, const TYPE& value )
+{
+    // Validate arguments
+    if( nIndex < 0 ||
+        nIndex >= m_nSize )
+    {
+        assert( false );
+        return E_INVALIDARG;
+    }
+
+    m_pData[nIndex] = value;
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Searches for the specified value and returns the index of the first occurrence
+// within the section of the data array that extends from iStart and contains the 
+// specified number of elements. Returns -1 if value is not found within the given 
+// section.
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+int CGrowableArray<TYPE>::IndexOf( const TYPE& value, int iStart, int nNumElements )
+{
+    // Validate arguments
+    if( iStart < 0 || 
+        iStart >= m_nSize ||
+        nNumElements < 0 ||
+        iStart + nNumElements > m_nSize )
+    {
+        assert( false );
+        return -1;
+    }
+
+    // Search
+    for( int i = iStart; i < (iStart + nNumElements); i++ )
+    {
+        if( value == m_pData[i] )
+            return i;
+    }
+
+    // Not found
+    return -1;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Searches for the specified value and returns the index of the last occurrence
+// within the section of the data array that contains the specified number of elements
+// and ends at iEnd. Returns -1 if value is not found within the given section.
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+int CGrowableArray<TYPE>::LastIndexOf( const TYPE& value, int iEnd, int nNumElements )
+{
+    // Validate arguments
+    if( iEnd < 0 || 
+        iEnd >= m_nSize ||
+        nNumElements < 0 ||
+        iEnd - nNumElements < 0 )
+    {
+        assert( false );
+        return -1;
+    }
+
+    // Search
+    for( int i = iEnd; i > (iEnd - nNumElements); i-- )
+    {
+        if( value == m_pData[i] )
+            return i;
+    }
+
+    // Not found
+    return -1;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+template< typename TYPE >
+HRESULT CGrowableArray<TYPE>::Remove( int nIndex )
+{
+    if( nIndex < 0 || 
+        nIndex >= m_nSize )
+    {
+        assert( false );
+        return E_INVALIDARG;
+    }
+
+    // Destruct the element to be removed
+    m_pData[nIndex].~TYPE();
+
+    // Compact the array and decrease the size
+    MoveMemory( &m_pData[nIndex], &m_pData[nIndex+1], sizeof(TYPE) * (m_nSize - (nIndex+1)) );
+    --m_nSize;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Creates a REF or NULLREF device and returns that device.  The caller should call
+// Release() when done with the device.
+//--------------------------------------------------------------------------------------
+IDirect3DDevice9* DXUTCreateRefDevice( HWND hWnd, bool bNullRef = true );
+
+
+#endif
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTMesh.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTMesh.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTMesh.h	(revision 1481)
@@ -0,0 +1,147 @@
+//-----------------------------------------------------------------------------
+// File: DXUTMesh.h
+//
+// Desc: Support code for loading DirectX .X files.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#pragma once
+#ifndef DXUTMESH_H
+#define DXUTMESH_H
+
+
+
+
+
+//-----------------------------------------------------------------------------
+// Name: class CDXUTMesh
+// Desc: Class for loading and rendering file-based meshes
+//-----------------------------------------------------------------------------
+class CDXUTMesh
+{
+public:
+    WCHAR                   m_strName[512];
+    LPD3DXMESH              m_pMesh;   // Managed mesh
+    
+    // Cache of data in m_pMesh for easy access
+    IDirect3DVertexBuffer9* m_pVB;
+    IDirect3DIndexBuffer9*  m_pIB;
+    IDirect3DVertexDeclaration9* m_pDecl;
+    DWORD                   m_dwNumVertices;
+    DWORD                   m_dwNumFaces;
+    DWORD                   m_dwBytesPerVertex;
+
+    DWORD                   m_dwNumMaterials; // Materials for the mesh
+    D3DMATERIAL9*           m_pMaterials;
+    CHAR					(*m_strMaterials)[MAX_PATH];
+    IDirect3DBaseTexture9** m_pTextures;
+    bool                    m_bUseMaterials;
+
+public:
+    // Rendering
+    HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, 
+                    bool bDrawOpaqueSubsets = true,
+                    bool bDrawAlphaSubsets = true );
+    HRESULT Render( ID3DXEffect *pEffect,
+                    D3DXHANDLE hTexture = NULL,
+                    D3DXHANDLE hDiffuse = NULL,
+                    D3DXHANDLE hAmbient = NULL,
+                    D3DXHANDLE hSpecular = NULL,
+                    D3DXHANDLE hEmissive = NULL,
+                    D3DXHANDLE hPower = NULL,
+                    bool bDrawOpaqueSubsets = true,
+                    bool bDrawAlphaSubsets = true );
+
+    // Mesh access
+    LPD3DXMESH GetMesh() { return m_pMesh; }
+
+    // Rendering options
+    void    UseMeshMaterials( bool bFlag ) { m_bUseMaterials = bFlag; }
+    HRESULT SetFVF( LPDIRECT3DDEVICE9 pd3dDevice, DWORD dwFVF );
+    HRESULT SetVertexDecl( LPDIRECT3DDEVICE9 pd3dDevice, const D3DVERTEXELEMENT9 *pDecl, 
+                           bool bAutoComputeNormals = true, bool bAutoComputeTangents = true, 
+                           bool bSplitVertexForOptimalTangents = false );
+
+    // Initializing
+    HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
+    HRESULT InvalidateDeviceObjects();
+
+    // Creation/destruction
+    HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strFilename );
+    HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXFILEDATA pFileData );
+	HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, ID3DXMesh* pInMesh, D3DXMATERIAL* pd3dxMaterials, DWORD dwMaterials );
+    HRESULT CreateMaterials( LPCWSTR strPath, IDirect3DDevice9 *pd3dDevice, D3DXMATERIAL* d3dxMtrls, DWORD dwNumMaterials );
+    HRESULT Destroy();
+
+    CDXUTMesh( LPCWSTR strName = L"CDXUTMeshFile_Mesh" );
+    virtual ~CDXUTMesh();
+};
+
+
+
+
+//-----------------------------------------------------------------------------
+// Name: class CDXUTMeshFrame
+// Desc: Class for loading and rendering file-based meshes
+//-----------------------------------------------------------------------------
+class CDXUTMeshFrame
+{
+public:
+    WCHAR      m_strName[512];
+    D3DXMATRIX m_mat;
+    CDXUTMesh*  m_pMesh;
+
+    CDXUTMeshFrame* m_pNext;
+    CDXUTMeshFrame* m_pChild;
+
+public:
+    // Matrix access
+    void        SetMatrix( D3DXMATRIX* pmat ) { m_mat = *pmat; }
+    D3DXMATRIX* GetMatrix()                   { return &m_mat; }
+
+    CDXUTMesh*   FindMesh( LPCWSTR strMeshName );
+    CDXUTMeshFrame*  FindFrame( LPCWSTR strFrameName );
+    bool        EnumMeshes( bool (*EnumMeshCB)(CDXUTMesh*,void*), 
+                            void* pContext );
+
+    HRESULT Destroy();
+    HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
+    HRESULT InvalidateDeviceObjects();
+    HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, 
+                    bool bDrawOpaqueSubsets = true,
+                    bool bDrawAlphaSubsets = true,
+                    D3DXMATRIX* pmatWorldMatrix = NULL);
+
+    CDXUTMeshFrame( LPCWSTR strName = L"CDXUTMeshFile_Frame" );
+    virtual ~CDXUTMeshFrame();
+};
+
+
+
+
+//-----------------------------------------------------------------------------
+// Name: class CDXUTMeshFile
+// Desc: Class for loading and rendering file-based meshes
+//-----------------------------------------------------------------------------
+class CDXUTMeshFile : public CDXUTMeshFrame
+{
+    HRESULT LoadMesh( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXFILEDATA pFileData, 
+                      CDXUTMeshFrame* pParentFrame );
+    HRESULT LoadFrame( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXFILEDATA pFileData, 
+                       CDXUTMeshFrame* pParentFrame );
+public:
+    HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strFilename );
+    HRESULT CreateFromResource( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strResource, LPCWSTR strType );
+    // For pure devices, specify the world transform. If the world transform is not
+    // specified on pure devices, this function will fail.
+    HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, D3DXMATRIX* pmatWorldMatrix = NULL );
+
+    CDXUTMeshFile() : CDXUTMeshFrame( L"CDXUTMeshFile_Root" ) {}
+};
+
+
+
+#endif
+
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2002.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2002.vcproj	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2002.vcproj	(revision 1481)
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="DXUT"
+	ProjectGUID="{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="4"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/DXUT.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="4"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/DXUT.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<Files>
+		<File
+			RelativePath=".\dxstdafx.cpp">
+			<FileConfiguration
+				Name="Debug|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="1"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Release|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="1"/>
+			</FileConfiguration>
+		</File>
+		<File
+			RelativePath=".\dxstdafx.h">
+		</File>
+		<File
+			RelativePath=".\DXUT.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUT.h">
+		</File>
+		<File
+			RelativePath=".\DXUTenum.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTenum.h">
+		</File>
+		<File
+			RelativePath=".\DXUTgui.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTgui.h">
+		</File>
+		<File
+			RelativePath=".\DXUTMesh.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTMesh.h">
+		</File>
+		<File
+			RelativePath=".\DXUTmisc.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTmisc.h">
+		</File>
+		<File
+			RelativePath=".\DXUTRes.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTRes.h">
+		</File>
+		<File
+			RelativePath=".\DXUTSettingsDlg.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTSettingsDlg.h">
+		</File>
+		<File
+			RelativePath=".\DXUTsound.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTsound.h">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2003.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2003.vcproj	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2003.vcproj	(revision 1481)
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="DXUT"
+	ProjectGUID="{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="4"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/DXUT.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="4"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/DXUT.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<File
+			RelativePath=".\dxstdafx.cpp">
+			<FileConfiguration
+				Name="Debug|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="1"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Release|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="1"/>
+			</FileConfiguration>
+		</File>
+		<File
+			RelativePath=".\dxstdafx.h">
+		</File>
+		<File
+			RelativePath=".\DXUT.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUT.h">
+		</File>
+		<File
+			RelativePath=".\DXUTenum.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTenum.h">
+		</File>
+		<File
+			RelativePath=".\DXUTgui.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTgui.h">
+		</File>
+		<File
+			RelativePath=".\DXUTMesh.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTMesh.h">
+		</File>
+		<File
+			RelativePath=".\DXUTmisc.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTmisc.h">
+		</File>
+		<File
+			RelativePath=".\DXUTRes.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTRes.h">
+		</File>
+		<File
+			RelativePath=".\DXUTSettingsDlg.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTSettingsDlg.h">
+		</File>
+		<File
+			RelativePath=".\DXUTsound.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTsound.h">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTenum.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTenum.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTenum.cpp	(revision 1481)
@@ -0,0 +1,897 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTEnum.cpp
+//
+// Enumerates D3D adapters, devices, modes, etc.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+#undef min // use __min instead
+#undef max // use __max instead
+
+
+//--------------------------------------------------------------------------------------
+// Forward declarations
+//--------------------------------------------------------------------------------------
+static int __cdecl SortModesCallback( const void* arg1, const void* arg2 );
+UINT DXUTStencilBits( D3DFORMAT fmt );
+UINT DXUTDepthBits( D3DFORMAT fmt );
+UINT DXUTAlphaChannelBits( D3DFORMAT fmt );
+UINT DXUTColorChannelBits( D3DFORMAT fmt );
+CD3DEnumeration* DXUTGetEnumeration()
+{
+    // Using an accessor function gives control of the construction order
+    static CD3DEnumeration d3denum;
+    return &d3denum;
+}
+
+
+//--------------------------------------------------------------------------------------
+CD3DEnumeration::CD3DEnumeration()
+{
+    m_pD3D = NULL;
+    m_IsDeviceAcceptableFunc = NULL;
+    m_pIsDeviceAcceptableFuncUserContext = NULL;
+    m_bRequirePostPixelShaderBlending = true;
+
+    m_nMinWidth = 640;
+    m_nMinHeight = 480;
+    m_nMaxWidth = UINT_MAX;
+    m_nMaxHeight = UINT_MAX;
+
+    m_nRefreshMin = 0;
+    m_nRefreshMax = UINT_MAX;
+
+    m_nMultisampleQualityMax = 0xFFFF;
+
+    ResetPossibleDepthStencilFormats();
+    ResetPossibleMultisampleTypeList();                                   
+    ResetPossiblePresentIntervalList();
+    SetPossibleVertexProcessingList( true, true, true, false );
+}
+
+
+//--------------------------------------------------------------------------------------
+CD3DEnumeration::~CD3DEnumeration()
+{
+    ClearAdapterInfoList();
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Enumerates available D3D adapters, devices, modes, etc.
+//--------------------------------------------------------------------------------------
+HRESULT CD3DEnumeration::Enumerate( IDirect3D9* pD3D,
+                                    LPDXUTCALLBACKISDEVICEACCEPTABLE IsDeviceAcceptableFunc,
+                                    void* pIsDeviceAcceptableFuncUserContext )
+{
+    if( pD3D == NULL )
+    {
+        pD3D = DXUTGetD3DObject();
+        if( pD3D == NULL )
+            return DXUTERR_NODIRECT3D;
+    }
+
+    m_pD3D = pD3D;
+    m_IsDeviceAcceptableFunc = IsDeviceAcceptableFunc;
+    m_pIsDeviceAcceptableFuncUserContext = pIsDeviceAcceptableFuncUserContext;
+
+    HRESULT hr;
+    ClearAdapterInfoList();
+    CGrowableArray<D3DFORMAT> adapterFormatList;
+
+    const D3DFORMAT allowedAdapterFormatArray[] = 
+    {   
+        D3DFMT_X8R8G8B8, 
+        D3DFMT_X1R5G5B5, 
+        D3DFMT_R5G6B5, 
+        D3DFMT_A2R10G10B10
+    };
+    const UINT allowedAdapterFormatArrayCount  = sizeof(allowedAdapterFormatArray) / sizeof(allowedAdapterFormatArray[0]);
+
+    UINT numAdapters = pD3D->GetAdapterCount();
+    for (UINT adapterOrdinal = 0; adapterOrdinal < numAdapters; adapterOrdinal++)
+    {
+        CD3DEnumAdapterInfo* pAdapterInfo = new CD3DEnumAdapterInfo;
+        if( pAdapterInfo == NULL )
+            return E_OUTOFMEMORY;
+
+        pAdapterInfo->AdapterOrdinal = adapterOrdinal;
+        pD3D->GetAdapterIdentifier(adapterOrdinal, 0, &pAdapterInfo->AdapterIdentifier);
+
+        // Get list of all display modes on this adapter.  
+        // Also build a temporary list of all display adapter formats.
+        adapterFormatList.RemoveAll();
+
+        for( UINT iFormatList = 0; iFormatList < allowedAdapterFormatArrayCount; iFormatList++ )
+        {
+            D3DFORMAT allowedAdapterFormat = allowedAdapterFormatArray[iFormatList];
+            UINT numAdapterModes = pD3D->GetAdapterModeCount( adapterOrdinal, allowedAdapterFormat );
+            for (UINT mode = 0; mode < numAdapterModes; mode++)
+            {
+                D3DDISPLAYMODE displayMode;
+                pD3D->EnumAdapterModes( adapterOrdinal, allowedAdapterFormat, mode, &displayMode );
+
+                if( displayMode.Width < m_nMinWidth ||
+                    displayMode.Height < m_nMinHeight || 
+                    displayMode.Width > m_nMaxWidth ||
+                    displayMode.Height > m_nMaxHeight || 
+                    displayMode.RefreshRate < m_nRefreshMin ||
+                    displayMode.RefreshRate > m_nRefreshMax )
+                {
+                    continue;
+                }
+
+                pAdapterInfo->displayModeList.Add( displayMode );
+                
+                if( !adapterFormatList.Contains(displayMode.Format) )
+                    adapterFormatList.Add( displayMode.Format );
+            }
+
+        }
+
+        D3DDISPLAYMODE displayMode;
+        pD3D->GetAdapterDisplayMode( adapterOrdinal, &displayMode );
+        if( !adapterFormatList.Contains(displayMode.Format) )
+            adapterFormatList.Add( displayMode.Format );
+
+        // Sort displaymode list
+        ::qsort( pAdapterInfo->displayModeList.GetData(), 
+               pAdapterInfo->displayModeList.GetSize(), sizeof( D3DDISPLAYMODE ),
+               SortModesCallback );
+
+        // Get info for each device on this adapter
+        if( FAILED( EnumerateDevices( pAdapterInfo, &adapterFormatList ) ) )
+        {
+            delete pAdapterInfo;
+            continue;
+        }
+
+        // If at least one device on this adapter is available and compatible
+        // with the app, add the adapterInfo to the list
+        if( pAdapterInfo->deviceInfoList.GetSize() > 0 )
+        {
+            hr = m_AdapterInfoList.Add( pAdapterInfo );
+            if( FAILED(hr) )
+                return hr;
+        } else
+            delete pAdapterInfo;
+    }
+
+    bool bUniqueDesc = true;
+    CD3DEnumAdapterInfo* pAdapterInfo;
+    for( int i=0; i<m_AdapterInfoList.GetSize(); i++ )
+    {
+        CD3DEnumAdapterInfo* pAdapterInfo1 = m_AdapterInfoList.GetAt(i);
+
+        for( int j=i+1; j<m_AdapterInfoList.GetSize(); j++ )
+        {
+            CD3DEnumAdapterInfo* pAdapterInfo2 = m_AdapterInfoList.GetAt(j);
+            if( _stricmp( pAdapterInfo1->AdapterIdentifier.Description, 
+                          pAdapterInfo2->AdapterIdentifier.Description ) == 0 )
+            {
+                bUniqueDesc = false;
+                break;
+            }
+        }
+
+        if( !bUniqueDesc )
+            break;
+    }
+
+    for( int i=0; i<m_AdapterInfoList.GetSize(); i++ )
+    {
+        pAdapterInfo = m_AdapterInfoList.GetAt(i);
+
+        MultiByteToWideChar( CP_ACP, 0, 
+                             pAdapterInfo->AdapterIdentifier.Description, -1, 
+                             pAdapterInfo->szUniqueDescription, 100 );
+        pAdapterInfo->szUniqueDescription[100] = 0;
+
+        if( !bUniqueDesc )
+        {
+            WCHAR sz[100];
+            StringCchPrintf( sz, 100, L" (#%d)", pAdapterInfo->AdapterOrdinal );
+            StringCchCat( pAdapterInfo->szUniqueDescription, 256, sz );
+
+        }
+    }
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Enumerates D3D devices for a particular adapter.
+//--------------------------------------------------------------------------------------
+HRESULT CD3DEnumeration::EnumerateDevices( CD3DEnumAdapterInfo* pAdapterInfo, CGrowableArray<D3DFORMAT>* pAdapterFormatList )
+{
+    HRESULT hr;
+
+    const D3DDEVTYPE devTypeArray[] = 
+    { 
+        D3DDEVTYPE_HAL, 
+        D3DDEVTYPE_SW, 
+        D3DDEVTYPE_REF 
+    };
+    const UINT devTypeArrayCount = sizeof(devTypeArray) / sizeof(devTypeArray[0]);
+
+    // Enumerate each Direct3D device type
+    for( UINT iDeviceType = 0; iDeviceType < devTypeArrayCount; iDeviceType++ )
+    {
+        CD3DEnumDeviceInfo* pDeviceInfo = new CD3DEnumDeviceInfo;
+        if( pDeviceInfo == NULL )
+            return E_OUTOFMEMORY;
+
+        // Fill struct w/ AdapterOrdinal and D3DDEVTYPE
+        pDeviceInfo->DeviceType = devTypeArray[iDeviceType];
+
+        // Store device caps
+        if( FAILED( hr = m_pD3D->GetDeviceCaps( pAdapterInfo->AdapterOrdinal, pDeviceInfo->DeviceType, 
+                                                &pDeviceInfo->Caps ) ) )
+        {
+            delete pDeviceInfo;
+            continue;
+        }
+
+        // Create a dummy device to verify that we really can create of this type.
+        D3DDISPLAYMODE Mode;
+        m_pD3D->GetAdapterDisplayMode(0, &Mode);
+        D3DPRESENT_PARAMETERS pp;
+        ZeroMemory( &pp, sizeof(D3DPRESENT_PARAMETERS) );
+        pp.BackBufferWidth  = 1;
+        pp.BackBufferHeight = 1;
+        pp.BackBufferFormat = Mode.Format;
+        pp.BackBufferCount  = 1;
+        pp.SwapEffect       = D3DSWAPEFFECT_COPY;
+        pp.Windowed         = TRUE;
+        pp.hDeviceWindow    = DXUTGetHWNDFocus();
+        IDirect3DDevice9 *pDevice;
+        if( FAILED( hr = m_pD3D->CreateDevice( pAdapterInfo->AdapterOrdinal, pDeviceInfo->DeviceType, DXUTGetHWNDFocus(),
+                                          D3DCREATE_HARDWARE_VERTEXPROCESSING, &pp, &pDevice ) ) )
+        {
+            if( hr == D3DERR_NOTAVAILABLE )
+            {
+                delete pDeviceInfo;
+                continue;
+            }
+        }
+        SAFE_RELEASE( pDevice );
+
+        // Get info for each devicecombo on this device
+        if( FAILED( hr = EnumerateDeviceCombos( pAdapterInfo, pDeviceInfo, pAdapterFormatList ) ) )
+        {
+            delete pDeviceInfo;
+            continue;
+        }
+
+        // If at least one devicecombo for this device is found, 
+        // add the deviceInfo to the list
+        if (pDeviceInfo->deviceSettingsComboList.GetSize() > 0 )
+            pAdapterInfo->deviceInfoList.Add( pDeviceInfo );
+        else
+            delete pDeviceInfo;
+    }
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Enumerates DeviceCombos for a particular device.
+//--------------------------------------------------------------------------------------
+HRESULT CD3DEnumeration::EnumerateDeviceCombos( CD3DEnumAdapterInfo* pAdapterInfo, CD3DEnumDeviceInfo* pDeviceInfo, CGrowableArray<D3DFORMAT>* pAdapterFormatList )
+{
+    const D3DFORMAT backBufferFormatArray[] = 
+    {   
+        D3DFMT_A8R8G8B8, 
+        D3DFMT_X8R8G8B8, 
+        D3DFMT_A2R10G10B10, 
+        D3DFMT_R5G6B5, 
+        D3DFMT_A1R5G5B5, 
+        D3DFMT_X1R5G5B5 
+    };
+    const UINT backBufferFormatArrayCount = sizeof(backBufferFormatArray) / sizeof(backBufferFormatArray[0]);
+
+    // See which adapter formats are supported by this device
+    for( int iFormat=0; iFormat<pAdapterFormatList->GetSize(); iFormat++ )
+    {
+        D3DFORMAT adapterFormat = pAdapterFormatList->GetAt(iFormat);
+
+        for( UINT iBackBufferFormat = 0; iBackBufferFormat < backBufferFormatArrayCount; iBackBufferFormat++ )
+        {
+            D3DFORMAT backBufferFormat = backBufferFormatArray[iBackBufferFormat];
+
+            for( int nWindowed = 0; nWindowed < 2; nWindowed++)
+            {
+                if( !nWindowed && pAdapterInfo->displayModeList.GetSize() == 0 )
+                    continue;
+
+                if (FAILED( m_pD3D->CheckDeviceType( pAdapterInfo->AdapterOrdinal, pDeviceInfo->DeviceType, 
+                                                     adapterFormat, backBufferFormat, nWindowed )))
+                {
+                    continue;
+                }
+
+                if( m_bRequirePostPixelShaderBlending )
+                {
+                    // If the backbuffer format doesn't support D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING
+                    // then alpha test, pixel fog, render-target blending, color write enable, and dithering. 
+                    // are not supported.
+                    if( FAILED( m_pD3D->CheckDeviceFormat( pAdapterInfo->AdapterOrdinal, pDeviceInfo->DeviceType,
+                                                           adapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING, 
+                                                           D3DRTYPE_TEXTURE, backBufferFormat ) ) )
+                    {
+                        continue;
+                    }
+                }
+
+                // If an application callback function has been provided, make sure this device
+                // is acceptable to the app.
+                if( m_IsDeviceAcceptableFunc != NULL )
+                {
+                    if( !m_IsDeviceAcceptableFunc( &pDeviceInfo->Caps, adapterFormat, backBufferFormat, FALSE != nWindowed, m_pIsDeviceAcceptableFuncUserContext ) )
+                        continue;
+                }
+                
+                // At this point, we have an adapter/device/adapterformat/backbufferformat/iswindowed
+                // DeviceCombo that is supported by the system and acceptable to the app. We still 
+                // need to find one or more suitable depth/stencil buffer format,
+                // multisample type, and present interval.
+                CD3DEnumDeviceSettingsCombo* pDeviceCombo = new CD3DEnumDeviceSettingsCombo;
+                if( pDeviceCombo == NULL )
+                    return E_OUTOFMEMORY;
+
+                pDeviceCombo->AdapterOrdinal = pAdapterInfo->AdapterOrdinal;
+                pDeviceCombo->DeviceType = pDeviceInfo->DeviceType;
+                pDeviceCombo->AdapterFormat = adapterFormat;
+                pDeviceCombo->BackBufferFormat = backBufferFormat;
+                pDeviceCombo->Windowed = (nWindowed != 0);
+               
+                BuildDepthStencilFormatList( pDeviceCombo );
+                BuildMultiSampleTypeList( pDeviceCombo );
+                if (pDeviceCombo->multiSampleTypeList.GetSize() == 0)
+                {
+                    delete pDeviceCombo;
+                    continue;
+                }
+                BuildDSMSConflictList( pDeviceCombo );
+                BuildPresentIntervalList(pDeviceInfo, pDeviceCombo );
+                pDeviceCombo->pAdapterInfo = pAdapterInfo;
+                pDeviceCombo->pDeviceInfo = pDeviceInfo;
+
+                pDeviceInfo->deviceSettingsComboList.Add( pDeviceCombo );
+            
+            }
+        }
+    }
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Adds all depth/stencil formats that are compatible with the device 
+//       and app to the given D3DDeviceCombo.
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::BuildDepthStencilFormatList( CD3DEnumDeviceSettingsCombo* pDeviceCombo )
+{
+    D3DFORMAT depthStencilFmt;
+    for( int idsf = 0; idsf < m_DepthStecilPossibleList.GetSize(); idsf++ )
+    {
+        depthStencilFmt = m_DepthStecilPossibleList.GetAt(idsf);
+        if (SUCCEEDED(m_pD3D->CheckDeviceFormat(pDeviceCombo->AdapterOrdinal, 
+                pDeviceCombo->DeviceType, pDeviceCombo->AdapterFormat, 
+                D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, depthStencilFmt)))
+        {
+            if (SUCCEEDED(m_pD3D->CheckDepthStencilMatch(pDeviceCombo->AdapterOrdinal, 
+                    pDeviceCombo->DeviceType, pDeviceCombo->AdapterFormat, 
+                    pDeviceCombo->BackBufferFormat, depthStencilFmt)))
+            {
+                pDeviceCombo->depthStencilFormatList.Add( depthStencilFmt );
+            }
+        }
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Adds all multisample types that are compatible with the device and app to
+//       the given D3DDeviceCombo.
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::BuildMultiSampleTypeList( CD3DEnumDeviceSettingsCombo* pDeviceCombo )
+{
+    D3DMULTISAMPLE_TYPE msType;
+    DWORD msQuality;
+    for( int imst = 0; imst < m_MultiSampleTypeList.GetSize(); imst++ )
+    {
+        msType = m_MultiSampleTypeList.GetAt(imst);
+        if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType( pDeviceCombo->AdapterOrdinal, 
+                pDeviceCombo->DeviceType, pDeviceCombo->BackBufferFormat, 
+                pDeviceCombo->Windowed, msType, &msQuality ) ) )
+        {
+            pDeviceCombo->multiSampleTypeList.Add( msType );
+            if( msQuality > m_nMultisampleQualityMax+1 )
+                msQuality = m_nMultisampleQualityMax+1;
+            pDeviceCombo->multiSampleQualityList.Add( msQuality );
+        }
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Find any conflicts between the available depth/stencil formats and
+//       multisample types.
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::BuildDSMSConflictList( CD3DEnumDeviceSettingsCombo* pDeviceCombo )
+{
+    CD3DEnumDSMSConflict DSMSConflict;
+
+    for( int iDS=0; iDS<pDeviceCombo->depthStencilFormatList.GetSize(); iDS++ )
+    {
+        D3DFORMAT dsFmt = pDeviceCombo->depthStencilFormatList.GetAt(iDS);
+
+        for( int iMS=0; iMS<pDeviceCombo->multiSampleTypeList.GetSize(); iMS++ )
+        {
+            D3DMULTISAMPLE_TYPE msType = pDeviceCombo->multiSampleTypeList.GetAt(iMS);
+
+            if( FAILED( m_pD3D->CheckDeviceMultiSampleType( pDeviceCombo->AdapterOrdinal, pDeviceCombo->DeviceType,
+                                                            dsFmt, pDeviceCombo->Windowed, msType, NULL ) ) )
+            {
+                DSMSConflict.DSFormat = dsFmt;
+                DSMSConflict.MSType = msType;
+                pDeviceCombo->DSMSConflictList.Add( DSMSConflict );
+            }
+        }
+    }
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Adds all present intervals that are compatible with the device and app 
+//       to the given D3DDeviceCombo.
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::BuildPresentIntervalList( CD3DEnumDeviceInfo* pDeviceInfo, 
+                                                CD3DEnumDeviceSettingsCombo* pDeviceCombo )
+{
+    UINT pi;
+    for( int ipi = 0; ipi < m_PresentIntervalList.GetSize(); ipi++ )
+    {
+        pi = m_PresentIntervalList.GetAt(ipi);
+        if( pDeviceCombo->Windowed )
+        {
+            if( pi == D3DPRESENT_INTERVAL_TWO ||
+                pi == D3DPRESENT_INTERVAL_THREE ||
+                pi == D3DPRESENT_INTERVAL_FOUR )
+            {
+                // These intervals are not supported in windowed mode.
+                continue;
+            }
+        }
+        // Note that D3DPRESENT_INTERVAL_DEFAULT is zero, so you
+        // can't do a caps check for it -- it is always available.
+        if( pi == D3DPRESENT_INTERVAL_DEFAULT ||
+            (pDeviceInfo->Caps.PresentationIntervals & pi) )
+        {
+            pDeviceCombo->presentIntervalList.Add( pi );
+        }
+    }
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Release all the allocated CD3DEnumAdapterInfo objects and empty the list
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::ClearAdapterInfoList()
+{
+    CD3DEnumAdapterInfo* pAdapterInfo;
+    for( int i=0; i<m_AdapterInfoList.GetSize(); i++ )
+    {
+        pAdapterInfo = m_AdapterInfoList.GetAt(i);
+        delete pAdapterInfo;
+    }
+
+    m_AdapterInfoList.RemoveAll();
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Call GetAdapterInfoList() after Enumerate() to get a STL vector of 
+//       CD3DEnumAdapterInfo* 
+//--------------------------------------------------------------------------------------
+CGrowableArray<CD3DEnumAdapterInfo*>* CD3DEnumeration::GetAdapterInfoList()
+{
+    return &m_AdapterInfoList;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+CD3DEnumAdapterInfo* CD3DEnumeration::GetAdapterInfo( UINT AdapterOrdinal )
+{
+    for( int iAdapter=0; iAdapter<m_AdapterInfoList.GetSize(); iAdapter++ )
+    {
+        CD3DEnumAdapterInfo* pAdapterInfo = m_AdapterInfoList.GetAt(iAdapter);
+        if( pAdapterInfo->AdapterOrdinal == AdapterOrdinal )
+            return pAdapterInfo;
+    }
+
+    return NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+CD3DEnumDeviceInfo* CD3DEnumeration::GetDeviceInfo( UINT AdapterOrdinal, D3DDEVTYPE DeviceType )
+{
+    CD3DEnumAdapterInfo* pAdapterInfo = GetAdapterInfo( AdapterOrdinal );
+    if( pAdapterInfo )
+    {
+        for( int iDeviceInfo=0; iDeviceInfo<pAdapterInfo->deviceInfoList.GetSize(); iDeviceInfo++ )
+        {
+            CD3DEnumDeviceInfo* pDeviceInfo = pAdapterInfo->deviceInfoList.GetAt(iDeviceInfo);
+            if( pDeviceInfo->DeviceType == DeviceType )
+                return pDeviceInfo;
+        }
+    }
+
+    return NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+// 
+//--------------------------------------------------------------------------------------
+CD3DEnumDeviceSettingsCombo* CD3DEnumeration::GetDeviceSettingsCombo( UINT AdapterOrdinal, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed )
+{
+    CD3DEnumDeviceInfo* pDeviceInfo = GetDeviceInfo( AdapterOrdinal, DeviceType );
+    if( pDeviceInfo )
+    {
+        for( int iDeviceCombo=0; iDeviceCombo<pDeviceInfo->deviceSettingsComboList.GetSize(); iDeviceCombo++ )
+        {
+            CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = pDeviceInfo->deviceSettingsComboList.GetAt(iDeviceCombo);
+            if( pDeviceSettingsCombo->AdapterFormat == AdapterFormat &&
+                pDeviceSettingsCombo->BackBufferFormat == BackBufferFormat &&
+                pDeviceSettingsCombo->Windowed == bWindowed )
+                return pDeviceSettingsCombo;
+        }
+    }
+
+    return NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns the number of color channel bits in the specified D3DFORMAT
+//--------------------------------------------------------------------------------------
+UINT DXUTColorChannelBits( D3DFORMAT fmt )
+{
+    switch( fmt )
+    {
+        case D3DFMT_R8G8B8:
+            return 8;
+        case D3DFMT_A8R8G8B8:
+            return 8;
+        case D3DFMT_X8R8G8B8:
+            return 8;
+        case D3DFMT_R5G6B5:
+            return 5;
+        case D3DFMT_X1R5G5B5:
+            return 5;
+        case D3DFMT_A1R5G5B5:
+            return 5;
+        case D3DFMT_A4R4G4B4:
+            return 4;
+        case D3DFMT_R3G3B2:
+            return 2;
+        case D3DFMT_A8R3G3B2:
+            return 2;
+        case D3DFMT_X4R4G4B4:
+            return 4;
+        case D3DFMT_A2B10G10R10:
+            return 10;
+        case D3DFMT_A8B8G8R8:
+            return 8;
+        case D3DFMT_A2R10G10B10:
+            return 10;
+        case D3DFMT_A16B16G16R16:
+            return 16;
+        default:
+            return 0;
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Returns the number of alpha channel bits in the specified D3DFORMAT
+//--------------------------------------------------------------------------------------
+UINT DXUTAlphaChannelBits( D3DFORMAT fmt )
+{
+    switch( fmt )
+    {
+        case D3DFMT_R8G8B8:
+            return 0;
+        case D3DFMT_A8R8G8B8:
+            return 8;
+        case D3DFMT_X8R8G8B8:
+            return 0;
+        case D3DFMT_R5G6B5:
+            return 0;
+        case D3DFMT_X1R5G5B5:
+            return 0;
+        case D3DFMT_A1R5G5B5:
+            return 1;
+        case D3DFMT_A4R4G4B4:
+            return 4;
+        case D3DFMT_R3G3B2:
+            return 0;
+        case D3DFMT_A8R3G3B2:
+            return 8;
+        case D3DFMT_X4R4G4B4:
+            return 0;
+        case D3DFMT_A2B10G10R10:
+            return 2;
+        case D3DFMT_A8B8G8R8:
+            return 8;
+        case D3DFMT_A2R10G10B10:
+            return 2;
+        case D3DFMT_A16B16G16R16:
+            return 16;
+        default:
+            return 0;
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Returns the number of depth bits in the specified D3DFORMAT
+//--------------------------------------------------------------------------------------
+UINT DXUTDepthBits( D3DFORMAT fmt )
+{
+    switch( fmt )
+    {
+        case D3DFMT_D32F_LOCKABLE:
+        case D3DFMT_D32:
+            return 32;
+
+        case D3DFMT_D24X8:
+        case D3DFMT_D24S8:
+        case D3DFMT_D24X4S4:
+        case D3DFMT_D24FS8:
+            return 24;
+
+        case D3DFMT_D16_LOCKABLE:
+        case D3DFMT_D16:
+            return 16;
+
+        case D3DFMT_D15S1:
+            return 15;
+
+        default:
+            return 0;
+    }
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// Returns the number of stencil bits in the specified D3DFORMAT
+//--------------------------------------------------------------------------------------
+UINT DXUTStencilBits( D3DFORMAT fmt )
+{
+    switch( fmt )
+    {
+        case D3DFMT_D16_LOCKABLE:
+        case D3DFMT_D16:
+        case D3DFMT_D32F_LOCKABLE:
+        case D3DFMT_D32:
+        case D3DFMT_D24X8:
+            return 0;
+
+        case D3DFMT_D15S1:
+            return 1;
+
+        case D3DFMT_D24X4S4:
+            return 4;
+
+        case D3DFMT_D24S8:
+        case D3DFMT_D24FS8:
+            return 8;
+
+        default:
+            return 0;
+    }
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Used to sort D3DDISPLAYMODEs
+//--------------------------------------------------------------------------------------
+static int __cdecl SortModesCallback( const void* arg1, const void* arg2 )
+{
+    D3DDISPLAYMODE* pdm1 = (D3DDISPLAYMODE*)arg1;
+    D3DDISPLAYMODE* pdm2 = (D3DDISPLAYMODE*)arg2;
+
+    if (pdm1->Width > pdm2->Width)
+        return 1;
+    if (pdm1->Width < pdm2->Width)
+        return -1;
+    if (pdm1->Height > pdm2->Height)
+        return 1;
+    if (pdm1->Height < pdm2->Height)
+        return -1;
+    if (pdm1->Format > pdm2->Format)
+        return 1;
+    if (pdm1->Format < pdm2->Format)
+        return -1;
+    if (pdm1->RefreshRate > pdm2->RefreshRate)
+        return 1;
+    if (pdm1->RefreshRate < pdm2->RefreshRate)
+        return -1;
+    return 0;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+CD3DEnumAdapterInfo::~CD3DEnumAdapterInfo( void )
+{
+    CD3DEnumDeviceInfo* pDeviceInfo;
+    for( int i=0; i<deviceInfoList.GetSize(); i++ )
+    {
+        pDeviceInfo = deviceInfoList.GetAt(i);
+        delete pDeviceInfo;
+    }
+    deviceInfoList.RemoveAll();
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+CD3DEnumDeviceInfo::~CD3DEnumDeviceInfo( void )
+{
+    CD3DEnumDeviceSettingsCombo* pDeviceCombo;
+    for( int i=0; i<deviceSettingsComboList.GetSize(); i++ )
+    {
+        pDeviceCombo = deviceSettingsComboList.GetAt(i);
+        delete pDeviceCombo;
+    }
+    deviceSettingsComboList.RemoveAll();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::ResetPossibleDepthStencilFormats()
+{
+    m_DepthStecilPossibleList.RemoveAll();
+    m_DepthStecilPossibleList.Add( D3DFMT_D16 );
+    m_DepthStecilPossibleList.Add( D3DFMT_D15S1 );
+    m_DepthStecilPossibleList.Add( D3DFMT_D24X8 );
+    m_DepthStecilPossibleList.Add( D3DFMT_D24S8 );
+    m_DepthStecilPossibleList.Add( D3DFMT_D24X4S4 );
+    m_DepthStecilPossibleList.Add( D3DFMT_D32 );
+}
+
+
+//--------------------------------------------------------------------------------------
+CGrowableArray<D3DFORMAT>* CD3DEnumeration::GetPossibleDepthStencilFormatList() 
+{
+    return &m_DepthStecilPossibleList;
+}
+
+
+//--------------------------------------------------------------------------------------
+CGrowableArray<D3DMULTISAMPLE_TYPE>* CD3DEnumeration::GetPossibleMultisampleTypeList()
+{
+    return &m_MultiSampleTypeList;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::ResetPossibleMultisampleTypeList()
+{
+    m_MultiSampleTypeList.RemoveAll();
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_NONE );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_NONMASKABLE );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_2_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_3_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_4_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_5_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_6_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_7_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_8_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_9_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_10_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_11_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_12_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_13_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_14_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_15_SAMPLES );
+    m_MultiSampleTypeList.Add( D3DMULTISAMPLE_16_SAMPLES );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::GetPossibleVertexProcessingList( bool* pbSoftwareVP, bool* pbHardwareVP, bool* pbPureHarewareVP, bool* pbMixedVP )
+{
+    *pbSoftwareVP = m_bSoftwareVP;
+    *pbHardwareVP = m_bHardwareVP;
+    *pbPureHarewareVP = m_bPureHarewareVP;
+    *pbMixedVP = m_bMixedVP;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::SetPossibleVertexProcessingList( bool bSoftwareVP, bool bHardwareVP, bool bPureHarewareVP, bool bMixedVP )
+{
+    m_bSoftwareVP = bSoftwareVP;
+    m_bHardwareVP = bHardwareVP;
+    m_bPureHarewareVP = bPureHarewareVP;
+    m_bMixedVP = bMixedVP;
+}
+
+
+//--------------------------------------------------------------------------------------
+CGrowableArray<UINT>* CD3DEnumeration::GetPossiblePresentIntervalList()
+{
+    return &m_PresentIntervalList;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::ResetPossiblePresentIntervalList()
+{
+    m_PresentIntervalList.RemoveAll();
+    m_PresentIntervalList.Add( D3DPRESENT_INTERVAL_IMMEDIATE );
+    m_PresentIntervalList.Add( D3DPRESENT_INTERVAL_DEFAULT );
+    m_PresentIntervalList.Add( D3DPRESENT_INTERVAL_ONE );
+    m_PresentIntervalList.Add( D3DPRESENT_INTERVAL_TWO );
+    m_PresentIntervalList.Add( D3DPRESENT_INTERVAL_THREE );
+    m_PresentIntervalList.Add( D3DPRESENT_INTERVAL_FOUR );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::SetResolutionMinMax( UINT nMinWidth, UINT nMinHeight, 
+                                           UINT nMaxWidth, UINT nMaxHeight )
+{
+    m_nMinWidth = nMinWidth;
+    m_nMinHeight = nMinHeight;
+    m_nMaxWidth = nMaxWidth;
+    m_nMaxHeight = nMaxHeight;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::SetRefreshMinMax( UINT nMin, UINT nMax )
+{
+    m_nRefreshMin = nMin;
+    m_nRefreshMax = nMax;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DEnumeration::SetMultisampleQualityMax( UINT nMax )
+{
+    if( nMax > 0xFFFF )
+        nMax = 0xFFFF;
+    m_nMultisampleQualityMax = nMax;
+}
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2005.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2005.vcproj	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT_2005.vcproj	(revision 1481)
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="DXUT"
+	ProjectGUID="{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="4"
+			InheritedPropertySheets="UpgradeFromVC71.vsprops"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/DXUT.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="4"
+			InheritedPropertySheets="UpgradeFromVC71.vsprops"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/DXUT.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<File
+			RelativePath=".\dxstdafx.cpp">
+			<FileConfiguration
+				Name="Debug|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="1"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Release|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="1"/>
+			</FileConfiguration>
+		</File>
+		<File
+			RelativePath=".\dxstdafx.h">
+		</File>
+		<File
+			RelativePath=".\DXUT.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUT.h">
+		</File>
+		<File
+			RelativePath=".\DXUTenum.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTenum.h">
+		</File>
+		<File
+			RelativePath=".\DXUTgui.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTgui.h">
+		</File>
+		<File
+			RelativePath=".\DXUTMesh.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTMesh.h">
+		</File>
+		<File
+			RelativePath=".\DXUTmisc.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTmisc.h">
+		</File>
+		<File
+			RelativePath=".\DXUTRes.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTRes.h">
+		</File>
+		<File
+			RelativePath=".\DXUTSettingsDlg.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTSettingsDlg.h">
+		</File>
+		<File
+			RelativePath=".\DXUTsound.cpp">
+		</File>
+		<File
+			RelativePath=".\DXUTsound.h">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTenum.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTenum.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTenum.h	(revision 1481)
@@ -0,0 +1,173 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTEnum.h
+//
+// Enumerates D3D adapters, devices, modes, etc.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#pragma once
+#ifndef DXUT_ENUM_H
+#define DXUT_ENUM_H
+
+//--------------------------------------------------------------------------------------
+// Forward declarations
+//--------------------------------------------------------------------------------------
+class CD3DEnumAdapterInfo;
+class CD3DEnumDeviceInfo;
+struct CD3DEnumDeviceSettingsCombo;
+struct CD3DEnumDSMSConflict;
+
+
+//--------------------------------------------------------------------------------------
+// Enumerates available Direct3D adapters, devices, modes, etc.
+// Use DXUTGetEnumeration() to access global instance
+//--------------------------------------------------------------------------------------
+class CD3DEnumeration
+{
+public:
+    // These should be called before Enumerate(). 
+    //
+    // Use these calls and the IsDeviceAcceptable to control the contents of 
+    // the enumeration object, which affects the device selection and the device settings dialog.
+    void SetRequirePostPixelShaderBlending( bool bRequire ) { m_bRequirePostPixelShaderBlending = bRequire; }
+    void SetResolutionMinMax( UINT nMinWidth, UINT nMinHeight, UINT nMaxWidth, UINT nMaxHeight );  
+    void SetRefreshMinMax( UINT nMin, UINT nMax );
+    void SetMultisampleQualityMax( UINT nMax );    
+    void GetPossibleVertexProcessingList( bool* pbSoftwareVP, bool* pbHardwareVP, bool* pbPureHarewareVP, bool* pbMixedVP );
+    void SetPossibleVertexProcessingList( bool bSoftwareVP, bool bHardwareVP, bool bPureHarewareVP, bool bMixedVP );
+    CGrowableArray<D3DFORMAT>* GetPossibleDepthStencilFormatList();   
+    CGrowableArray<D3DMULTISAMPLE_TYPE>* GetPossibleMultisampleTypeList();   
+    CGrowableArray<UINT>* GetPossiblePresentIntervalList();
+    void ResetPossibleDepthStencilFormats();
+    void ResetPossibleMultisampleTypeList();
+    void ResetPossiblePresentIntervalList();
+
+    // Call Enumerate() to enumerate available D3D adapters, devices, modes, etc.
+    HRESULT Enumerate( IDirect3D9* pD3D = NULL,
+                       LPDXUTCALLBACKISDEVICEACCEPTABLE IsDeviceAcceptableFunc = NULL,
+                       void* pIsDeviceAcceptableFuncUserContext = NULL );
+
+    // These should be called after Enumerate() is called
+    CGrowableArray<CD3DEnumAdapterInfo*>*   GetAdapterInfoList();  
+    CD3DEnumAdapterInfo*                    GetAdapterInfo( UINT AdapterOrdinal );  
+    CD3DEnumDeviceInfo*                     GetDeviceInfo( UINT AdapterOrdinal, D3DDEVTYPE DeviceType );    
+    CD3DEnumDeviceSettingsCombo*            GetDeviceSettingsCombo( DXUTDeviceSettings* pDeviceSettings ) { return GetDeviceSettingsCombo( pDeviceSettings->AdapterOrdinal, pDeviceSettings->DeviceType, pDeviceSettings->AdapterFormat, pDeviceSettings->pp.BackBufferFormat, pDeviceSettings->pp.Windowed ); }
+    CD3DEnumDeviceSettingsCombo*            GetDeviceSettingsCombo( UINT AdapterOrdinal, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL Windowed );  
+
+    ~CD3DEnumeration();
+
+private:
+    friend CD3DEnumeration* DXUTGetEnumeration(); 
+
+    // Use DXUTGetEnumeration() to access global instance
+    CD3DEnumeration();
+
+    IDirect3D9* m_pD3D;                                    
+    LPDXUTCALLBACKISDEVICEACCEPTABLE m_IsDeviceAcceptableFunc;
+    void* m_pIsDeviceAcceptableFuncUserContext;
+    bool m_bRequirePostPixelShaderBlending;
+    CGrowableArray<D3DFORMAT> m_DepthStecilPossibleList;
+    CGrowableArray<D3DMULTISAMPLE_TYPE> m_MultiSampleTypeList;
+    CGrowableArray<UINT> m_PresentIntervalList;
+
+    bool m_bSoftwareVP;
+    bool m_bHardwareVP;
+    bool m_bPureHarewareVP;
+    bool m_bMixedVP;
+
+    UINT m_nMinWidth;
+    UINT m_nMaxWidth;
+    UINT m_nMinHeight;
+    UINT m_nMaxHeight;
+    UINT m_nRefreshMin;
+    UINT m_nRefreshMax;
+    UINT m_nMultisampleQualityMax;
+
+    // Array of CD3DEnumAdapterInfo* with unique AdapterOrdinals
+    CGrowableArray<CD3DEnumAdapterInfo*> m_AdapterInfoList;  
+
+    HRESULT EnumerateDevices( CD3DEnumAdapterInfo* pAdapterInfo, CGrowableArray<D3DFORMAT>* pAdapterFormatList );
+    HRESULT EnumerateDeviceCombos( CD3DEnumAdapterInfo* pAdapterInfo, CD3DEnumDeviceInfo* pDeviceInfo, CGrowableArray<D3DFORMAT>* pAdapterFormatList );
+    void BuildDepthStencilFormatList( CD3DEnumDeviceSettingsCombo* pDeviceCombo );
+    void BuildMultiSampleTypeList( CD3DEnumDeviceSettingsCombo* pDeviceCombo );
+    void BuildDSMSConflictList( CD3DEnumDeviceSettingsCombo* pDeviceCombo );
+    void BuildPresentIntervalList( CD3DEnumDeviceInfo* pDeviceInfo, CD3DEnumDeviceSettingsCombo* pDeviceCombo );
+    void ClearAdapterInfoList();
+};
+
+CD3DEnumeration* DXUTGetEnumeration(); 
+
+
+//--------------------------------------------------------------------------------------
+// A class describing an adapter which contains a unique adapter ordinal 
+// that is installed on the system
+//--------------------------------------------------------------------------------------
+class CD3DEnumAdapterInfo
+{
+public:
+    ~CD3DEnumAdapterInfo();
+
+    UINT AdapterOrdinal;
+    D3DADAPTER_IDENTIFIER9 AdapterIdentifier;
+    WCHAR szUniqueDescription[256];
+
+    CGrowableArray<D3DDISPLAYMODE> displayModeList; // Array of supported D3DDISPLAYMODEs
+    CGrowableArray<CD3DEnumDeviceInfo*> deviceInfoList; // Array of CD3DEnumDeviceInfo* with unique supported DeviceTypes
+};
+
+
+//--------------------------------------------------------------------------------------
+// A class describing a Direct3D device that contains a 
+//       unique supported device type 
+//--------------------------------------------------------------------------------------
+class CD3DEnumDeviceInfo
+{
+public:
+    ~CD3DEnumDeviceInfo();
+
+    UINT AdapterOrdinal;
+    D3DDEVTYPE DeviceType;
+    D3DCAPS9 Caps;
+
+    // List of CD3DEnumDeviceSettingsCombo* with a unique set 
+    // of AdapterFormat, BackBufferFormat, and Windowed
+    CGrowableArray<CD3DEnumDeviceSettingsCombo*> deviceSettingsComboList; 
+};
+
+
+//--------------------------------------------------------------------------------------
+// A struct describing device settings that contains a unique combination of 
+// adapter format, back buffer format, and windowed that is compatible with a 
+// particular Direct3D device and the app.
+//--------------------------------------------------------------------------------------
+struct CD3DEnumDeviceSettingsCombo
+{
+    UINT AdapterOrdinal;
+    D3DDEVTYPE DeviceType;
+    D3DFORMAT AdapterFormat;
+    D3DFORMAT BackBufferFormat;
+    BOOL Windowed;
+
+    CGrowableArray<D3DFORMAT> depthStencilFormatList; // List of D3DFORMATs
+    CGrowableArray<D3DMULTISAMPLE_TYPE> multiSampleTypeList; // List of D3DMULTISAMPLE_TYPEs
+    CGrowableArray<DWORD> multiSampleQualityList; // List of number of quality levels for each multisample type
+    CGrowableArray<UINT> presentIntervalList; // List of D3DPRESENT flags
+    CGrowableArray<CD3DEnumDSMSConflict> DSMSConflictList; // List of CD3DEnumDSMSConflict
+
+    CD3DEnumAdapterInfo* pAdapterInfo;
+    CD3DEnumDeviceInfo* pDeviceInfo;
+};
+
+
+//--------------------------------------------------------------------------------------
+// A depth/stencil buffer format that is incompatible with a
+// multisample type.
+//--------------------------------------------------------------------------------------
+struct CD3DEnumDSMSConflict
+{
+    D3DFORMAT DSFormat;
+    D3DMULTISAMPLE_TYPE MSType;
+};
+
+
+#endif
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT.cpp	(revision 1481)
@@ -0,0 +1,5151 @@
+//--------------------------------------------------------------------------------------
+// File: DXUT.cpp
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+#define DXUT_MIN_WINDOW_SIZE_X 200
+#define DXUT_MIN_WINDOW_SIZE_Y 200
+#undef min // use __min instead inside this source file
+#undef max // use __max instead inside this source file
+
+
+//--------------------------------------------------------------------------------------
+// Thread safety 
+//--------------------------------------------------------------------------------------
+CRITICAL_SECTION g_cs;  
+bool g_bThreadSafe = true;
+
+
+//--------------------------------------------------------------------------------------
+// Automatically enters & leaves the CS upon object creation/deletion
+//--------------------------------------------------------------------------------------
+class DXUTLock
+{
+public:
+    inline DXUTLock()  { if( g_bThreadSafe ) EnterCriticalSection( &g_cs ); }
+    inline ~DXUTLock() { if( g_bThreadSafe ) LeaveCriticalSection( &g_cs ); }
+};
+
+
+
+//--------------------------------------------------------------------------------------
+// Helper macros to build member functions that access member variables with thread safety
+//--------------------------------------------------------------------------------------
+#define SET_ACCESSOR( x, y )       inline void Set##y( x t )  { DXUTLock l; m_state.m_##y = t; };
+#define GET_ACCESSOR( x, y )       inline x Get##y() { DXUTLock l; return m_state.m_##y; };
+#define GET_SET_ACCESSOR( x, y )   SET_ACCESSOR( x, y ) GET_ACCESSOR( x, y )
+
+#define SETP_ACCESSOR( x, y )      inline void Set##y( x* t )  { DXUTLock l; m_state.m_##y = *t; };
+#define GETP_ACCESSOR( x, y )      inline x* Get##y() { DXUTLock l; return &m_state.m_##y; };
+#define GETP_SETP_ACCESSOR( x, y ) SETP_ACCESSOR( x, y ) GETP_ACCESSOR( x, y )
+
+
+//--------------------------------------------------------------------------------------
+// Stores timer callback info
+//--------------------------------------------------------------------------------------
+struct DXUT_TIMER
+{
+    LPDXUTCALLBACKTIMER pCallbackTimer;
+    void* pCallbackUserContext;
+    float fTimeoutInSecs;
+    float fCountdown;
+    bool  bEnabled;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Stores DXUT state and data access is done with thread safety (if g_bThreadSafe==true)
+//--------------------------------------------------------------------------------------
+class DXUTState
+{
+protected:
+    struct STATE
+    {
+        IDirect3D9*          m_D3D;                     // the main D3D object
+
+        IDirect3DDevice9*    m_D3DDevice;               // the D3D rendering device
+        CD3DEnumeration*     m_D3DEnumeration;          // CD3DEnumeration object
+
+        DXUTDeviceSettings*  m_CurrentDeviceSettings;   // current device settings
+        D3DSURFACE_DESC      m_BackBufferSurfaceDesc;   // back buffer surface description
+        D3DCAPS9             m_Caps;                    // D3D caps for current device
+
+        HWND  m_HWNDFocus;                  // the main app focus window
+        HWND  m_HWNDDeviceFullScreen;       // the main app device window in fullscreen mode
+        HWND  m_HWNDDeviceWindowed;         // the main app device window in windowed mode
+        HMONITOR m_AdapterMonitor;          // the monitor of the adapter 
+        HMENU m_Menu;                       // handle to menu
+
+        UINT m_FullScreenBackBufferWidthAtModeChange;  // back buffer size of fullscreen mode right before switching to windowed mode.  Used to restore to same resolution when toggling back to fullscreen
+        UINT m_FullScreenBackBufferHeightAtModeChange; // back buffer size of fullscreen mode right before switching to windowed mode.  Used to restore to same resolution when toggling back to fullscreen
+        UINT m_WindowBackBufferWidthAtModeChange;  // back buffer size of windowed mode right before switching to fullscreen mode.  Used to restore to same resolution when toggling back to windowed mode
+        UINT m_WindowBackBufferHeightAtModeChange; // back buffer size of windowed mode right before switching to fullscreen mode.  Used to restore to same resolution when toggling back to windowed mode
+        DWORD m_WindowedStyleAtModeChange;  // window style
+        WINDOWPLACEMENT m_WindowedPlacement; // record of windowed HWND position/show state/etc
+        bool  m_TopmostWhileWindowed;       // if true, the windowed HWND is topmost 
+        bool  m_Minimized;                  // if true, the HWND is minimized
+        bool  m_Maximized;                  // if true, the HWND is maximized
+        bool  m_MinimizedWhileFullscreen;   // if true, the HWND is minimized due to a focus switch away when fullscreen mode
+        bool  m_IgnoreSizeChange;           // if true, DXUT won't reset the device upon HWND size change
+
+        double m_Time;                      // current time in seconds
+        float m_ElapsedTime;                // time elapsed since last frame
+
+        HINSTANCE m_HInstance;              // handle to the app instance
+        double m_LastStatsUpdateTime;       // last time the stats were updated
+        DWORD m_LastStatsUpdateFrames;      // frames count since last time the stats were updated
+        float m_FPS;                        // frames per second
+        int   m_CurrentFrameNumber;         // the current frame number
+        HHOOK m_KeyboardHook;               // handle to keyboard hook
+        bool  m_AllowShortcutKeysWhenFullscreen; // if true, when fullscreen enable shortcut keys (Windows keys, StickyKeys shortcut, ToggleKeys shortcut, FilterKeys shortcut) 
+        bool  m_AllowShortcutKeysWhenWindowed;   // if true, when windowed enable shortcut keys (Windows keys, StickyKeys shortcut, ToggleKeys shortcut, FilterKeys shortcut) 
+        bool  m_AllowShortcutKeys;          // if true, then shortcut keys are currently disabled (Windows key, etc)
+        bool  m_CallDefWindowProc;          // if true, DXUTStaticWndProc will call DefWindowProc for unhandled messages. Applications rendering to a dialog may need to set this to false.
+        STICKYKEYS m_StartupStickyKeys;     // StickyKey settings upon startup so they can be restored later
+        TOGGLEKEYS m_StartupToggleKeys;     // ToggleKey settings upon startup so they can be restored later
+        FILTERKEYS m_StartupFilterKeys;     // FilterKey settings upon startup so they can be restored later
+
+        bool  m_HandleDefaultHotkeys;       // if true, then DXUT will handle some default hotkeys
+        bool  m_HandleAltEnter;             // if true, then DXUT will handle Alt-Enter
+        bool  m_ShowMsgBoxOnError;          // if true, then msgboxes are displayed upon errors
+        bool  m_NoStats;                    // if true, then DXUTGetFrameStats() and DXUTGetDeviceStats() will return blank strings
+        bool  m_ClipCursorWhenFullScreen;   // if true, then DXUT will keep the cursor from going outside the window when full screen
+        bool  m_ShowCursorWhenFullScreen;   // if true, then DXUT will show a cursor when full screen
+        bool  m_ConstantFrameTime;          // if true, then elapsed frame time will always be 0.05f seconds which is good for debugging or automated capture
+        float m_TimePerFrame;               // the constant time per frame in seconds, only valid if m_ConstantFrameTime==true
+        bool  m_WireframeMode;              // if true, then D3DRS_FILLMODE==D3DFILL_WIREFRAME else D3DRS_FILLMODE==D3DFILL_SOLID 
+        bool  m_AutoChangeAdapter;          // if true, then the adapter will automatically change if the window is different monitor
+        bool  m_WindowCreatedWithDefaultPositions; // if true, then CW_USEDEFAULT was used and the window should be moved to the right adapter
+        int   m_ExitCode;                   // the exit code to be returned to the command line
+
+        bool  m_DXUTInited;                 // if true, then DXUTInit() has succeeded
+        bool  m_WindowCreated;              // if true, then DXUTCreateWindow() or DXUTSetWindow() has succeeded
+        bool  m_DeviceCreated;              // if true, then DXUTCreateDevice*() or DXUTSetDevice() has succeeded
+
+        bool  m_DXUTInitCalled;             // if true, then DXUTInit() was called
+        bool  m_WindowCreateCalled;         // if true, then DXUTCreateWindow() or DXUTSetWindow() was called
+        bool  m_DeviceCreateCalled;         // if true, then DXUTCreateDevice*() or DXUTSetDevice() was called
+
+        bool  m_DeviceObjectsCreated;       // if true, then DeviceCreated callback has been called (if non-NULL)
+        bool  m_DeviceObjectsReset;         // if true, then DeviceReset callback has been called (if non-NULL)
+        bool  m_InsideDeviceCallback;       // if true, then the framework is inside an app device callback
+        bool  m_InsideMainloop;             // if true, then the framework is inside the main loop
+        bool  m_Active;                     // if true, then the app is the active top level window
+        bool  m_TimePaused;                 // if true, then time is paused
+        bool  m_RenderingPaused;            // if true, then rendering is paused
+        int   m_PauseRenderingCount;        // pause rendering ref count
+        int   m_PauseTimeCount;             // pause time ref count
+        bool  m_DeviceLost;                 // if true, then the device is lost and needs to be reset
+        bool  m_NotifyOnMouseMove;          // if true, include WM_MOUSEMOVE in mousecallback
+        bool  m_Automation;                 // if true, automation is enabled
+        bool  m_InSizeMove;                 // if true, app is inside a WM_ENTERSIZEMOVE
+
+        int   m_OverrideAdapterOrdinal;     // if != -1, then override to use this adapter ordinal
+        bool  m_OverrideWindowed;           // if true, then force to start windowed
+        bool  m_OverrideFullScreen;         // if true, then force to start full screen
+        int   m_OverrideStartX;             // if != -1, then override to this X position of the window
+        int   m_OverrideStartY;             // if != -1, then override to this Y position of the window
+        int   m_OverrideWidth;              // if != 0, then override to this width
+        int   m_OverrideHeight;             // if != 0, then override to this height
+        bool  m_OverrideForceHAL;           // if true, then force to HAL device (failing if one doesn't exist)
+        bool  m_OverrideForceREF;           // if true, then force to REF device (failing if one doesn't exist)
+        bool  m_OverrideForcePureHWVP;      // if true, then force to use pure HWVP (failing if device doesn't support it)
+        bool  m_OverrideForceHWVP;          // if true, then force to use HWVP (failing if device doesn't support it)
+        bool  m_OverrideForceSWVP;          // if true, then force to use SWVP 
+        bool  m_OverrideConstantFrameTime;  // if true, then force to constant frame time
+        float m_OverrideConstantTimePerFrame; // the constant time per frame in seconds if m_OverrideConstantFrameTime==true
+        int   m_OverrideQuitAfterFrame;     // if != 0, then it will force the app to quit after that frame
+        int   m_OverrideForceVsync;         // if == 0, then it will force the app to use D3DPRESENT_INTERVAL_IMMEDIATE, if == 1 force use of D3DPRESENT_INTERVAL_DEFAULT
+        bool  m_OverrideRelaunchMCE;          // if true, then force relaunch of MCE at exit
+
+        LPDXUTCALLBACKISDEVICEACCEPTABLE    m_IsDeviceAcceptableFunc;   // is device acceptable callback
+        LPDXUTCALLBACKMODIFYDEVICESETTINGS  m_ModifyDeviceSettingsFunc; // modify device settings callback
+        LPDXUTCALLBACKDEVICECREATED         m_DeviceCreatedFunc;        // device created callback
+        LPDXUTCALLBACKDEVICERESET           m_DeviceResetFunc;          // device reset callback
+        LPDXUTCALLBACKDEVICELOST            m_DeviceLostFunc;           // device lost callback
+        LPDXUTCALLBACKDEVICEDESTROYED       m_DeviceDestroyedFunc;      // device destroyed callback
+        LPDXUTCALLBACKFRAMEMOVE             m_FrameMoveFunc;            // frame move callback
+        LPDXUTCALLBACKFRAMERENDER           m_FrameRenderFunc;          // frame render callback
+        LPDXUTCALLBACKKEYBOARD              m_KeyboardFunc;             // keyboard callback
+        LPDXUTCALLBACKMOUSE                 m_MouseFunc;                // mouse callback
+        LPDXUTCALLBACKMSGPROC               m_WindowMsgFunc;            // window messages callback
+
+        void*                               m_IsDeviceAcceptableFuncUserContext;   // user context for is device acceptable callback
+        void*                               m_ModifyDeviceSettingsFuncUserContext; // user context for modify device settings callback
+        void*                               m_DeviceCreatedUserContext;            // user context for device created callback
+        void*                               m_DeviceCreatedFuncUserContext;        // user context for device created callback
+        void*                               m_DeviceResetFuncUserContext;          // user context for device reset callback
+        void*                               m_DeviceLostFuncUserContext;           // user context for device lost callback
+        void*                               m_DeviceDestroyedFuncUserContext;      // user context for device destroyed callback
+        void*                               m_FrameMoveFuncUserContext;            // user context for frame move callback
+        void*                               m_FrameRenderFuncUserContext;          // user context for frame render callback
+        void*                               m_KeyboardFuncUserContext;             // user context for keyboard callback
+        void*                               m_MouseFuncUserContext;                // user context for mouse callback
+        void*                               m_WindowMsgFuncUserContext;            // user context for window messages callback
+
+        bool                         m_Keys[256];                       // array of key state
+        bool                         m_MouseButtons[5];                 // array of mouse states
+
+        CGrowableArray<DXUT_TIMER>*  m_TimerList;                       // list of DXUT_TIMER structs
+        WCHAR                        m_StaticFrameStats[256];           // static part of frames stats 
+        WCHAR                        m_FPSStats[64];                    // fps stats
+        WCHAR                        m_FrameStats[256];                 // frame stats (fps, width, etc)
+        WCHAR                        m_DeviceStats[256];                // device stats (description, device type, etc)
+        WCHAR                        m_WindowTitle[256];                // window title
+    };
+    
+    STATE m_state;
+
+public:
+    DXUTState()  { Create(); }
+    ~DXUTState() { Destroy(); }
+
+    void Create()
+    {
+        // Make sure these are created before DXUTState so they 
+        // destroyed last because DXUTState cleanup needs them
+        DXUTGetGlobalResourceCache();
+
+        ZeroMemory( &m_state, sizeof(STATE) ); 
+        g_bThreadSafe = true; 
+        InitializeCriticalSection( &g_cs ); 
+        m_state.m_OverrideStartX = -1; 
+        m_state.m_OverrideStartY = -1; 
+        m_state.m_OverrideAdapterOrdinal = -1; 
+        m_state.m_OverrideForceVsync = -1;
+        m_state.m_AutoChangeAdapter = true; 
+        m_state.m_ShowMsgBoxOnError = true;
+        m_state.m_AllowShortcutKeysWhenWindowed = true;
+        m_state.m_Active = true;
+        m_state.m_CallDefWindowProc = true;
+    }
+
+    void Destroy()
+    {
+        DXUTShutdown();
+        DeleteCriticalSection( &g_cs ); 
+    }
+
+    // Macros to define access functions for thread safe access into m_state 
+    GET_SET_ACCESSOR( IDirect3D9*, D3D );
+
+    GET_SET_ACCESSOR( IDirect3DDevice9*, D3DDevice );
+    GET_SET_ACCESSOR( CD3DEnumeration*, D3DEnumeration );   
+    GET_SET_ACCESSOR( DXUTDeviceSettings*, CurrentDeviceSettings );   
+    GETP_SETP_ACCESSOR( D3DSURFACE_DESC, BackBufferSurfaceDesc );
+    GETP_SETP_ACCESSOR( D3DCAPS9, Caps );
+
+    GET_SET_ACCESSOR( HWND, HWNDFocus );
+    GET_SET_ACCESSOR( HWND, HWNDDeviceFullScreen );
+    GET_SET_ACCESSOR( HWND, HWNDDeviceWindowed );
+    GET_SET_ACCESSOR( HMONITOR, AdapterMonitor );
+    GET_SET_ACCESSOR( HMENU, Menu );   
+
+    GET_SET_ACCESSOR( UINT, FullScreenBackBufferWidthAtModeChange );
+    GET_SET_ACCESSOR( UINT, FullScreenBackBufferHeightAtModeChange );
+    GET_SET_ACCESSOR( UINT, WindowBackBufferWidthAtModeChange );
+    GET_SET_ACCESSOR( UINT, WindowBackBufferHeightAtModeChange );
+    GETP_SETP_ACCESSOR( WINDOWPLACEMENT, WindowedPlacement );
+    GET_SET_ACCESSOR( DWORD, WindowedStyleAtModeChange );
+    GET_SET_ACCESSOR( bool, TopmostWhileWindowed );
+    GET_SET_ACCESSOR( bool, Minimized );
+    GET_SET_ACCESSOR( bool, Maximized );
+    GET_SET_ACCESSOR( bool, MinimizedWhileFullscreen );
+    GET_SET_ACCESSOR( bool, IgnoreSizeChange );   
+
+    GET_SET_ACCESSOR( double, Time );
+    GET_SET_ACCESSOR( float, ElapsedTime );
+
+    GET_SET_ACCESSOR( HINSTANCE, HInstance );
+    GET_SET_ACCESSOR( double, LastStatsUpdateTime );   
+    GET_SET_ACCESSOR( DWORD, LastStatsUpdateFrames );   
+    GET_SET_ACCESSOR( float, FPS );    
+    GET_SET_ACCESSOR( int, CurrentFrameNumber );
+    GET_SET_ACCESSOR( HHOOK, KeyboardHook );
+    GET_SET_ACCESSOR( bool, AllowShortcutKeysWhenFullscreen );
+    GET_SET_ACCESSOR( bool, AllowShortcutKeysWhenWindowed );
+    GET_SET_ACCESSOR( bool, AllowShortcutKeys );
+    GET_SET_ACCESSOR( bool, CallDefWindowProc );
+    GET_SET_ACCESSOR( STICKYKEYS, StartupStickyKeys );
+    GET_SET_ACCESSOR( TOGGLEKEYS, StartupToggleKeys );
+    GET_SET_ACCESSOR( FILTERKEYS, StartupFilterKeys );
+
+    GET_SET_ACCESSOR( bool, HandleDefaultHotkeys );
+    GET_SET_ACCESSOR( bool, HandleAltEnter );
+    GET_SET_ACCESSOR( bool, ShowMsgBoxOnError );
+    GET_SET_ACCESSOR( bool, NoStats );
+    GET_SET_ACCESSOR( bool, ClipCursorWhenFullScreen );   
+    GET_SET_ACCESSOR( bool, ShowCursorWhenFullScreen );
+    GET_SET_ACCESSOR( bool, ConstantFrameTime );
+    GET_SET_ACCESSOR( float, TimePerFrame );
+    GET_SET_ACCESSOR( bool, WireframeMode );   
+    GET_SET_ACCESSOR( bool, AutoChangeAdapter );
+    GET_SET_ACCESSOR( bool, WindowCreatedWithDefaultPositions );
+    GET_SET_ACCESSOR( int, ExitCode );
+
+    GET_SET_ACCESSOR( bool, DXUTInited );
+    GET_SET_ACCESSOR( bool, WindowCreated );
+    GET_SET_ACCESSOR( bool, DeviceCreated );
+    GET_SET_ACCESSOR( bool, DXUTInitCalled );
+    GET_SET_ACCESSOR( bool, WindowCreateCalled );
+    GET_SET_ACCESSOR( bool, DeviceCreateCalled );
+    GET_SET_ACCESSOR( bool, InsideDeviceCallback );
+    GET_SET_ACCESSOR( bool, InsideMainloop );
+    GET_SET_ACCESSOR( bool, DeviceObjectsCreated );
+    GET_SET_ACCESSOR( bool, DeviceObjectsReset );
+    GET_SET_ACCESSOR( bool, Active );
+    GET_SET_ACCESSOR( bool, RenderingPaused );
+    GET_SET_ACCESSOR( bool, TimePaused );
+    GET_SET_ACCESSOR( int, PauseRenderingCount );
+    GET_SET_ACCESSOR( int, PauseTimeCount );
+    GET_SET_ACCESSOR( bool, DeviceLost );
+    GET_SET_ACCESSOR( bool, NotifyOnMouseMove );
+    GET_SET_ACCESSOR( bool, Automation );
+    GET_SET_ACCESSOR( bool, InSizeMove );
+
+    GET_SET_ACCESSOR( int, OverrideAdapterOrdinal );
+    GET_SET_ACCESSOR( bool, OverrideWindowed );
+    GET_SET_ACCESSOR( bool, OverrideFullScreen );
+    GET_SET_ACCESSOR( int, OverrideStartX );
+    GET_SET_ACCESSOR( int, OverrideStartY );
+    GET_SET_ACCESSOR( int, OverrideWidth );
+    GET_SET_ACCESSOR( int, OverrideHeight );
+    GET_SET_ACCESSOR( bool, OverrideForceHAL );
+    GET_SET_ACCESSOR( bool, OverrideForceREF );
+    GET_SET_ACCESSOR( bool, OverrideForcePureHWVP );
+    GET_SET_ACCESSOR( bool, OverrideForceHWVP );
+    GET_SET_ACCESSOR( bool, OverrideForceSWVP );
+    GET_SET_ACCESSOR( bool, OverrideConstantFrameTime );
+    GET_SET_ACCESSOR( float, OverrideConstantTimePerFrame );
+    GET_SET_ACCESSOR( int, OverrideQuitAfterFrame );
+    GET_SET_ACCESSOR( int, OverrideForceVsync );
+    GET_SET_ACCESSOR( bool, OverrideRelaunchMCE );
+
+    GET_SET_ACCESSOR( LPDXUTCALLBACKISDEVICEACCEPTABLE, IsDeviceAcceptableFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKMODIFYDEVICESETTINGS, ModifyDeviceSettingsFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKDEVICECREATED, DeviceCreatedFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKDEVICERESET, DeviceResetFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKDEVICELOST, DeviceLostFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKDEVICEDESTROYED, DeviceDestroyedFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKFRAMEMOVE, FrameMoveFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKFRAMERENDER, FrameRenderFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKKEYBOARD, KeyboardFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKMOUSE, MouseFunc );
+    GET_SET_ACCESSOR( LPDXUTCALLBACKMSGPROC, WindowMsgFunc );
+
+    GET_SET_ACCESSOR( void*, IsDeviceAcceptableFuncUserContext );
+    GET_SET_ACCESSOR( void*, ModifyDeviceSettingsFuncUserContext );
+    GET_SET_ACCESSOR( void*, DeviceCreatedFuncUserContext );
+    GET_SET_ACCESSOR( void*, DeviceResetFuncUserContext );
+    GET_SET_ACCESSOR( void*, DeviceLostFuncUserContext );
+    GET_SET_ACCESSOR( void*, DeviceDestroyedFuncUserContext );
+    GET_SET_ACCESSOR( void*, FrameMoveFuncUserContext );
+    GET_SET_ACCESSOR( void*, FrameRenderFuncUserContext );
+    GET_SET_ACCESSOR( void*, KeyboardFuncUserContext );
+    GET_SET_ACCESSOR( void*, MouseFuncUserContext );
+    GET_SET_ACCESSOR( void*, WindowMsgFuncUserContext );
+
+    GET_SET_ACCESSOR( CGrowableArray<DXUT_TIMER>*, TimerList );   
+    GET_ACCESSOR( bool*, Keys );
+    GET_ACCESSOR( bool*, MouseButtons );
+    GET_ACCESSOR( WCHAR*, StaticFrameStats );
+    GET_ACCESSOR( WCHAR*, FPSStats );
+    GET_ACCESSOR( WCHAR*, FrameStats );
+    GET_ACCESSOR( WCHAR*, DeviceStats );    
+    GET_ACCESSOR( WCHAR*, WindowTitle );
+};
+
+
+//--------------------------------------------------------------------------------------
+// Global state class
+//--------------------------------------------------------------------------------------
+DXUTState& GetDXUTState()
+{
+    // Using an accessor function gives control of the construction order
+    static DXUTState state;
+    return state;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal functions forward declarations
+//--------------------------------------------------------------------------------------
+typedef IDirect3D9* (WINAPI* LPDIRECT3DCREATE9)(UINT SDKVersion);
+typedef DECLSPEC_IMPORT UINT (WINAPI* LPTIMEBEGINPERIOD)( UINT uPeriod );
+int     DXUTMapButtonToArrayIndex( BYTE vButton );
+void    DXUTParseCommandLine();
+CD3DEnumeration* DXUTPrepareEnumerationObject( bool bEnumerate = false );
+void    DXUTBuildOptimalDeviceSettings( DXUTDeviceSettings* pOptimalDeviceSettings, DXUTDeviceSettings* pDeviceSettingsIn, DXUTMatchOptions* pMatchOptions );
+bool    DXUTDoesDeviceComboMatchPreserveOptions( CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo, DXUTDeviceSettings* pDeviceSettingsIn, DXUTMatchOptions* pMatchOptions );
+float   DXUTRankDeviceCombo( CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo, DXUTDeviceSettings* pDeviceSettingsIn, D3DDISPLAYMODE* pAdapterDesktopDisplayMode );
+void    DXUTBuildValidDeviceSettings( DXUTDeviceSettings* pDeviceSettings, CD3DEnumDeviceSettingsCombo* pBestDeviceSettingsCombo, DXUTDeviceSettings* pDeviceSettingsIn, DXUTMatchOptions* pMatchOptions );
+HRESULT DXUTFindValidResolution( CD3DEnumDeviceSettingsCombo* pBestDeviceSettingsCombo, D3DDISPLAYMODE displayModeIn, D3DDISPLAYMODE* pBestDisplayMode );
+HRESULT DXUTFindAdapterFormat( UINT AdapterOrdinal, D3DDEVTYPE DeviceType, D3DFORMAT BackBufferFormat, BOOL Windowed, D3DFORMAT* pAdapterFormat );
+HRESULT DXUTChangeDevice( DXUTDeviceSettings* pNewDeviceSettings, IDirect3DDevice9* pd3dDeviceFromApp, bool bForceRecreate, bool bClipWindowToSingleAdapter );
+void    DXUTUpdateDeviceSettingsWithOverrides( DXUTDeviceSettings* pNewDeviceSettings );
+HRESULT DXUTCreate3DEnvironment( IDirect3DDevice9* pd3dDeviceFromApp );
+HRESULT DXUTReset3DEnvironment();
+void    DXUTRender3DEnvironment();
+void    DXUTCleanup3DEnvironment( bool bReleaseSettings = true );
+void    DXUTUpdateFrameStats();
+void    DXUTUpdateDeviceStats( D3DDEVTYPE DeviceType, DWORD BehaviorFlags, D3DADAPTER_IDENTIFIER9* pAdapterIdentifier );
+void    DXUTUpdateStaticFrameStats();
+void    DXUTHandleTimers();
+bool    DXUTIsNextArg( WCHAR*& strCmdLine, WCHAR* strArg );
+bool    DXUTGetCmdParam( WCHAR*& strCmdLine, WCHAR* strFlag );
+void    DXUTDisplayErrorMessage( HRESULT hr );
+LRESULT CALLBACK DXUTStaticWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+void    DXUTCheckForWindowSizeChange();
+void    DXUTCheckForWindowChangingMonitors();
+UINT    DXUTColorChannelBits( D3DFORMAT fmt );
+UINT    DXUTStencilBits( D3DFORMAT fmt );
+UINT    DXUTDepthBits( D3DFORMAT fmt );
+HRESULT DXUTGetAdapterOrdinalFromMonitor( HMONITOR hMonitor, UINT* pAdapterOrdinal );
+void    DXUTAllowShortcutKeys( bool bAllowKeys );
+void    DXUTUpdateBackBufferDesc();
+void    DXUTSetupCursor();
+HRESULT DXUTSetDeviceCursor( IDirect3DDevice9* pd3dDevice, HCURSOR hCursor, bool bAddWatermark );
+
+
+//--------------------------------------------------------------------------------------
+// External callback setup functions
+//--------------------------------------------------------------------------------------
+void DXUTSetCallbackDeviceCreated( LPDXUTCALLBACKDEVICECREATED pCallbackDeviceCreated, void* pUserContext ) { GetDXUTState().SetDeviceCreatedFunc( pCallbackDeviceCreated ); GetDXUTState().SetDeviceCreatedFuncUserContext( pUserContext ); }
+void DXUTSetCallbackDeviceReset( LPDXUTCALLBACKDEVICERESET pCallbackDeviceReset, void* pUserContext )       { GetDXUTState().SetDeviceResetFunc( pCallbackDeviceReset );  GetDXUTState().SetDeviceResetFuncUserContext( pUserContext ); }
+void DXUTSetCallbackDeviceLost( LPDXUTCALLBACKDEVICELOST pCallbackDeviceLost, void* pUserContext )          { GetDXUTState().SetDeviceLostFunc( pCallbackDeviceLost );  GetDXUTState().SetDeviceLostFuncUserContext( pUserContext ); }
+void DXUTSetCallbackDeviceDestroyed( LPDXUTCALLBACKDEVICEDESTROYED pCallbackDeviceDestroyed, void* pUserContext ) { GetDXUTState().SetDeviceDestroyedFunc( pCallbackDeviceDestroyed );  GetDXUTState().SetDeviceDestroyedFuncUserContext( pUserContext ); }
+void DXUTSetCallbackDeviceChanging( LPDXUTCALLBACKMODIFYDEVICESETTINGS pCallbackModifyDeviceSettings, void* pUserContext ) { GetDXUTState().SetModifyDeviceSettingsFunc( pCallbackModifyDeviceSettings );  GetDXUTState().SetModifyDeviceSettingsFuncUserContext( pUserContext ); }
+void DXUTSetCallbackFrameMove( LPDXUTCALLBACKFRAMEMOVE pCallbackFrameMove, void* pUserContext ) { GetDXUTState().SetFrameMoveFunc( pCallbackFrameMove );  GetDXUTState().SetFrameMoveFuncUserContext( pUserContext ); }
+void DXUTSetCallbackFrameRender( LPDXUTCALLBACKFRAMERENDER pCallbackFrameRender, void* pUserContext )       { GetDXUTState().SetFrameRenderFunc( pCallbackFrameRender );  GetDXUTState().SetFrameRenderFuncUserContext( pUserContext ); }
+void DXUTSetCallbackKeyboard( LPDXUTCALLBACKKEYBOARD pCallbackKeyboard, void* pUserContext )                { GetDXUTState().SetKeyboardFunc( pCallbackKeyboard );  GetDXUTState().SetKeyboardFuncUserContext( pUserContext ); }
+void DXUTSetCallbackMouse( LPDXUTCALLBACKMOUSE pCallbackMouse, bool bIncludeMouseMove, void* pUserContext ) { GetDXUTState().SetMouseFunc( pCallbackMouse ); GetDXUTState().SetNotifyOnMouseMove( bIncludeMouseMove );  GetDXUTState().SetMouseFuncUserContext( pUserContext ); }
+void DXUTSetCallbackMsgProc( LPDXUTCALLBACKMSGPROC pCallbackMsgProc, void* pUserContext )                   { GetDXUTState().SetWindowMsgFunc( pCallbackMsgProc );  GetDXUTState().SetWindowMsgFuncUserContext( pUserContext ); }
+
+
+//--------------------------------------------------------------------------------------
+// Optionally parses the command line and sets if default hotkeys are handled
+//
+//       Possible command line parameters are:
+//          -adapter:#              forces app to use this adapter # (fails if the adapter doesn't exist)
+//          -windowed               forces app to start windowed
+//          -fullscreen             forces app to start full screen
+//          -forcehal               forces app to use HAL (fails if HAL doesn't exist)
+//          -forceref               forces app to use REF (fails if REF doesn't exist)
+//          -forcepurehwvp          forces app to use pure HWVP (fails if device doesn't support it)
+//          -forcehwvp              forces app to use HWVP (fails if device doesn't support it)
+//          -forceswvp              forces app to use SWVP 
+//          -forcevsync:#           if # is 0, forces app to use D3DPRESENT_INTERVAL_IMMEDIATE otherwise force use of D3DPRESENT_INTERVAL_DEFAULT 
+//          -width:#                forces app to use # for width. for full screen, it will pick the closest possible supported mode
+//          -height:#               forces app to use # for height. for full screen, it will pick the closest possible supported mode
+//          -startx:#               forces app to use # for the x coord of the window position for windowed mode
+//          -starty:#               forces app to use # for the y coord of the window position for windowed mode
+//          -constantframetime:#    forces app to use constant frame time, where # is the time/frame in seconds
+//          -quitafterframe:x       forces app to quit after # frames
+//          -noerrormsgboxes        prevents the display of message boxes generated by the framework so the application can be run without user interaction
+//          -nostats                prevents the display of the stats
+//          -relaunchmce            re-launches the MCE UI after the app exits
+//          -automation             every CDXUTDialog created will have EnableKeyboardInput(true) called, enabling UI navigation with keyboard
+//                                  This is useful when automating application testing.
+//
+//      Hotkeys handled by default are:
+//          Alt-Enter           toggle between full screen & windowed (hotkey always enabled)
+//          ESC                 exit app 
+//          F3                  toggle HAL/REF
+//          F8                  toggle wire-frame mode
+//          Pause               pause time
+//--------------------------------------------------------------------------------------
+HRESULT DXUTInit( bool bParseCommandLine, bool bHandleDefaultHotkeys, bool bShowMsgBoxOnError, bool bHandleAltEnter )
+{
+    GetDXUTState().SetDXUTInitCalled( true );
+
+    // Not always needed, but lets the app create GDI dialogs
+    InitCommonControls();
+
+    // Save the current sticky/toggle/filter key settings so DXUT can restore them later
+    STICKYKEYS sk = {sizeof(STICKYKEYS), 0};
+    SystemParametersInfo(SPI_GETSTICKYKEYS, sizeof(STICKYKEYS), &sk, 0);
+    GetDXUTState().SetStartupStickyKeys( sk );
+
+    TOGGLEKEYS tk = {sizeof(TOGGLEKEYS), 0};
+    SystemParametersInfo(SPI_GETTOGGLEKEYS, sizeof(TOGGLEKEYS), &tk, 0);
+    GetDXUTState().SetStartupToggleKeys( tk );
+
+    FILTERKEYS fk = {sizeof(FILTERKEYS), 0};
+    SystemParametersInfo(SPI_GETFILTERKEYS, sizeof(FILTERKEYS), &fk, 0);
+    GetDXUTState().SetStartupFilterKeys( fk );
+
+    // Increase the accuracy of Sleep() without needing to link to winmm.lib
+    WCHAR wszPath[MAX_PATH+1];
+    if( GetSystemDirectory( wszPath, MAX_PATH+1 ) )
+    {
+        StringCchCat( wszPath, MAX_PATH, L"\\winmm.dll" );
+        HINSTANCE hInstWinMM = LoadLibrary( wszPath );
+        if( hInstWinMM ) 
+        {
+            LPTIMEBEGINPERIOD pTimeBeginPeriod = (LPTIMEBEGINPERIOD)GetProcAddress( hInstWinMM, "timeBeginPeriod" );
+            if( NULL != pTimeBeginPeriod )
+                pTimeBeginPeriod(1);
+
+            FreeLibrary(hInstWinMM);
+        }
+    }
+
+    GetDXUTState().SetShowMsgBoxOnError( bShowMsgBoxOnError );
+    GetDXUTState().SetHandleDefaultHotkeys( bHandleDefaultHotkeys );
+    GetDXUTState().SetHandleAltEnter( bHandleAltEnter );
+
+    if( bParseCommandLine )
+        DXUTParseCommandLine();
+
+    // Verify D3DX version
+    if( !D3DXCheckVersion( D3D_SDK_VERSION, D3DX_SDK_VERSION ) )
+    {
+        DXUTDisplayErrorMessage( DXUTERR_INCORRECTVERSION );
+        return DXUT_ERR( L"D3DXCheckVersion", DXUTERR_INCORRECTVERSION );
+    }
+
+    // Create a Direct3D object if one has not already been created
+    IDirect3D9* pD3D = DXUTGetD3DObject();
+    if( pD3D == NULL )
+    {
+        // This may fail if DirectX 9 isn't installed
+        // This may fail if the DirectX headers are out of sync with the installed DirectX DLLs
+        pD3D = DXUT_Dynamic_Direct3DCreate9( D3D_SDK_VERSION );
+        GetDXUTState().SetD3D( pD3D );
+    }
+
+    if( pD3D == NULL )
+    {
+        // If still NULL, then something went wrong
+        DXUTDisplayErrorMessage( DXUTERR_NODIRECT3D );
+        return DXUT_ERR( L"Direct3DCreate9", DXUTERR_NODIRECT3D );
+    }
+
+    // Reset the timer
+    DXUTGetGlobalTimer()->Reset();
+
+    GetDXUTState().SetDXUTInited( true );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Parses the command line for parameters.  See DXUTInit() for list 
+//--------------------------------------------------------------------------------------
+void DXUTParseCommandLine()
+{
+    WCHAR* strCmdLine;
+    WCHAR strFlag[MAX_PATH];
+
+    int nNumArgs;
+    WCHAR** pstrArgList = CommandLineToArgvW( GetCommandLine(), &nNumArgs );
+    for( int iArg=1; iArg<nNumArgs; iArg++ )
+    {
+        strCmdLine = pstrArgList[iArg];
+
+        // Handle flag args
+        if( *strCmdLine == L'/' || *strCmdLine == L'-' )
+        {
+            strCmdLine++;
+
+            if( DXUTIsNextArg( strCmdLine, L"adapter" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nAdapter = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideAdapterOrdinal( nAdapter );
+                    continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"windowed" ) )
+            {
+                GetDXUTState().SetOverrideWindowed( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"fullscreen" ) )
+            {
+                GetDXUTState().SetOverrideFullScreen( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"forcehal" ) )
+            {
+                GetDXUTState().SetOverrideForceHAL( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"forceref" ) )
+            {
+                GetDXUTState().SetOverrideForceREF( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"forcepurehwvp" ) )
+            {
+                GetDXUTState().SetOverrideForcePureHWVP( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"forcehwvp" ) )
+            {
+                GetDXUTState().SetOverrideForceHWVP( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"forceswvp" ) )
+            {
+                GetDXUTState().SetOverrideForceSWVP( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"forcevsync" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nOn = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideForceVsync( nOn );
+                    continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"width" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nWidth = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideWidth( nWidth );
+                    continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"height" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nHeight = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideHeight( nHeight );
+                continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"startx" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nX = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideStartX( nX );
+                    continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"starty" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nY = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideStartY( nY );
+                    continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"constantframetime" ) )
+            {
+                float fTimePerFrame;
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                    fTimePerFrame = (float)wcstod( strFlag, NULL );
+                else
+                    fTimePerFrame = 0.0333f;
+                GetDXUTState().SetOverrideConstantFrameTime( true );
+                GetDXUTState().SetOverrideConstantTimePerFrame( fTimePerFrame );
+                DXUTSetConstantFrameTime( true, fTimePerFrame );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"quitafterframe" ) )
+            {
+                if( DXUTGetCmdParam( strCmdLine, strFlag ) )
+                {
+                    int nFrame = _wtoi(strFlag);
+                    GetDXUTState().SetOverrideQuitAfterFrame( nFrame );
+                    continue;
+                }
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"noerrormsgboxes" ) )
+            {
+                GetDXUTState().SetShowMsgBoxOnError( false );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"nostats" ) )
+            {
+                GetDXUTState().SetNoStats( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"relaunchmce" ) )
+            {
+                GetDXUTState().SetOverrideRelaunchMCE( true );
+                continue;
+            }
+
+            if( DXUTIsNextArg( strCmdLine, L"automation" ) )
+            {
+                GetDXUTState().SetAutomation( true );
+                continue;
+            }
+        }
+
+        // Unrecognized flag
+        StringCchCopy( strFlag, 256, strCmdLine ); 
+        WCHAR* strSpace = strFlag;
+        while (*strSpace && (*strSpace > L' '))
+            strSpace++;
+        *strSpace = 0;
+
+        DXUTOutputDebugString( L"Unrecognized flag: %s", strFlag );
+        strCmdLine += wcslen(strFlag);
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Helper function for DXUTParseCommandLine
+//--------------------------------------------------------------------------------------
+bool DXUTIsNextArg( WCHAR*& strCmdLine, WCHAR* strArg )
+{
+    int nArgLen = (int) wcslen(strArg);
+    int nCmdLen = (int) wcslen(strCmdLine);
+
+    if( nCmdLen >= nArgLen && 
+        _wcsnicmp( strCmdLine, strArg, nArgLen ) == 0 && 
+        (strCmdLine[nArgLen] == 0 || strCmdLine[nArgLen] == L':') )
+    {
+        strCmdLine += nArgLen;
+        return true;
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Helper function for DXUTParseCommandLine.  Updates strCmdLine and strFlag 
+//      Example: if strCmdLine=="-width:1024 -forceref"
+// then after: strCmdLine==" -forceref" and strFlag=="1024"
+//--------------------------------------------------------------------------------------
+bool DXUTGetCmdParam( WCHAR*& strCmdLine, WCHAR* strFlag )
+{
+    if( *strCmdLine == L':' )
+    {       
+        strCmdLine++; // Skip ':'
+
+        // Place NULL terminator in strFlag after current token
+        StringCchCopy( strFlag, 256, strCmdLine );
+        WCHAR* strSpace = strFlag;
+        while (*strSpace && (*strSpace > L' '))
+            strSpace++;
+        *strSpace = 0;
+    
+        // Update strCmdLine
+        strCmdLine += wcslen(strFlag);
+        return true;
+    }
+    else
+    {
+        strFlag[0] = 0;
+        return false;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Creates a window with the specified window title, icon, menu, and 
+// starting position.  If DXUTInit() has not already been called, it will
+// call it with the default parameters.  Instead of calling this, you can 
+// call DXUTSetWindow() to use an existing window.  
+//--------------------------------------------------------------------------------------
+HRESULT DXUTCreateWindow( const WCHAR* strWindowTitle, HINSTANCE hInstance, 
+                          HICON hIcon, HMENU hMenu, int x, int y )
+{
+    HRESULT hr;
+
+    // Not allowed to call this from inside the device callbacks
+    if( GetDXUTState().GetInsideDeviceCallback() )
+        return DXUT_ERR_MSGBOX( L"DXUTCreateWindow", E_FAIL );
+
+    GetDXUTState().SetWindowCreateCalled( true );
+
+    if( !GetDXUTState().GetDXUTInited() ) 
+    {
+        // If DXUTInit() was already called and failed, then fail.
+        // DXUTInit() must first succeed for this function to succeed
+        if( GetDXUTState().GetDXUTInitCalled() )
+            return E_FAIL; 
+
+        // If DXUTInit() hasn't been called, then automatically call it
+        // with default params
+        hr = DXUTInit();
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    if( DXUTGetHWNDFocus() == NULL )
+    {
+        if( hInstance == NULL ) 
+            hInstance = (HINSTANCE)GetModuleHandle(NULL);
+        GetDXUTState().SetHInstance( hInstance );
+
+        WCHAR szExePath[MAX_PATH];
+        GetModuleFileName( NULL, szExePath, MAX_PATH );
+        if( hIcon == NULL ) // If the icon is NULL, then use the first one found in the exe
+            hIcon = ExtractIcon( hInstance, szExePath, 0 ); 
+
+        // Register the windows class
+        WNDCLASS wndClass;
+        wndClass.style = CS_DBLCLKS;
+        wndClass.lpfnWndProc = DXUTStaticWndProc;
+        wndClass.cbClsExtra = 0;
+        wndClass.cbWndExtra = 0;
+        wndClass.hInstance = hInstance;
+        wndClass.hIcon = hIcon;
+        wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
+        wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
+        wndClass.lpszMenuName = NULL;
+        wndClass.lpszClassName = L"Direct3DWindowClass";
+
+        if( !RegisterClass( &wndClass ) )
+        {
+            DWORD dwError = GetLastError();
+            if( dwError != ERROR_CLASS_ALREADY_EXISTS )
+                return DXUT_ERR_MSGBOX( L"RegisterClass", HRESULT_FROM_WIN32(dwError) );
+        }
+
+        RECT rc;
+        // Override the window's initial & size position if there were cmd line args
+        if( GetDXUTState().GetOverrideStartX() != -1 )
+            x = GetDXUTState().GetOverrideStartX();
+        if( GetDXUTState().GetOverrideStartY() != -1 )
+            y = GetDXUTState().GetOverrideStartY();
+
+        GetDXUTState().SetWindowCreatedWithDefaultPositions( false );
+        if( x == CW_USEDEFAULT && y == CW_USEDEFAULT )
+            GetDXUTState().SetWindowCreatedWithDefaultPositions( true );
+
+        // Find the window's initial size, but it might be changed later
+        int nDefaultWidth = 640;
+        int nDefaultHeight = 480;
+        if( GetDXUTState().GetOverrideWidth() != 0 )
+            nDefaultWidth = GetDXUTState().GetOverrideWidth();
+        if( GetDXUTState().GetOverrideHeight() != 0 )
+            nDefaultHeight = GetDXUTState().GetOverrideHeight();
+        SetRect( &rc, 0, 0, nDefaultWidth, nDefaultHeight );        
+        AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, ( hMenu != NULL ) ? true : false );
+
+        WCHAR* strCachedWindowTitle = GetDXUTState().GetWindowTitle();
+        StringCchCopy( strCachedWindowTitle, 256, strWindowTitle );
+
+        // Create the render window
+        HWND hWnd = CreateWindow( L"Direct3DWindowClass", strWindowTitle, WS_OVERLAPPEDWINDOW,
+                               x, y, (rc.right-rc.left), (rc.bottom-rc.top), 0,
+                               hMenu, hInstance, 0 );
+        if( hWnd == NULL )
+        {
+            DWORD dwError = GetLastError();
+            return DXUT_ERR_MSGBOX( L"CreateWindow", HRESULT_FROM_WIN32(dwError) );
+        }
+
+        GetDXUTState().SetWindowCreated( true );
+        GetDXUTState().SetHWNDFocus( hWnd );
+        GetDXUTState().SetHWNDDeviceFullScreen( hWnd );
+        GetDXUTState().SetHWNDDeviceWindowed( hWnd );
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Sets a previously created window for the framework to use.  If DXUTInit() 
+// has not already been called, it will call it with the default parameters.  
+// Instead of calling this, you can call DXUTCreateWindow() to create a new window.  
+//--------------------------------------------------------------------------------------
+HRESULT DXUTSetWindow( HWND hWndFocus, HWND hWndDeviceFullScreen, HWND hWndDeviceWindowed, bool bHandleMessages )
+{
+    HRESULT hr;
+ 
+    // Not allowed to call this from inside the device callbacks
+    if( GetDXUTState().GetInsideDeviceCallback() )
+        return DXUT_ERR_MSGBOX( L"DXUTCreateWindow", E_FAIL );
+
+    GetDXUTState().SetWindowCreateCalled( true );
+
+    // To avoid confusion, we do not allow any HWND to be NULL here.  The
+    // caller must pass in valid HWND for all three parameters.  The same
+    // HWND may be used for more than one parameter.
+    if( hWndFocus == NULL || hWndDeviceFullScreen == NULL || hWndDeviceWindowed == NULL )
+        return DXUT_ERR_MSGBOX( L"DXUTSetWindow", E_INVALIDARG );
+
+    // If subclassing the window, set the pointer to the local window procedure
+    if( bHandleMessages )
+    {
+        // Switch window procedures
+#ifdef _WIN64
+        LONG_PTR nResult = SetWindowLongPtr( hWndFocus, GWLP_WNDPROC, (LONG_PTR)DXUTStaticWndProc );
+#else
+        LONG_PTR nResult = SetWindowLongPtr( hWndFocus, GWLP_WNDPROC, (LONG)(LONG_PTR)DXUTStaticWndProc );
+#endif 
+ 
+        DWORD dwError = GetLastError();
+        if( nResult == 0 )
+            return DXUT_ERR_MSGBOX( L"SetWindowLongPtr", HRESULT_FROM_WIN32(dwError) );
+    }
+ 
+    if( !GetDXUTState().GetDXUTInited() ) 
+    {
+        // If DXUTInit() was already called and failed, then fail.
+        // DXUTInit() must first succeed for this function to succeed
+        if( GetDXUTState().GetDXUTInitCalled() )
+            return E_FAIL; 
+ 
+        // If DXUTInit() hasn't been called, then automatically call it
+        // with default params
+        hr = DXUTInit();
+        if( FAILED(hr) )
+            return hr;
+    }
+ 
+    WCHAR* strCachedWindowTitle = GetDXUTState().GetWindowTitle();
+    GetWindowText( hWndFocus, strCachedWindowTitle, 255 );
+    strCachedWindowTitle[255] = 0;
+   
+    HINSTANCE hInstance = (HINSTANCE) (LONG_PTR) GetWindowLongPtr( hWndFocus, GWLP_HINSTANCE ); 
+    GetDXUTState().SetHInstance( hInstance );
+    GetDXUTState().SetWindowCreatedWithDefaultPositions( false );
+    GetDXUTState().SetWindowCreated( true );
+    GetDXUTState().SetHWNDFocus( hWndFocus );
+    GetDXUTState().SetHWNDDeviceFullScreen( hWndDeviceFullScreen );
+    GetDXUTState().SetHWNDDeviceWindowed( hWndDeviceWindowed );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Creates a Direct3D device. If DXUTCreateWindow() or DXUTSetWindow() has not already 
+// been called, it will call DXUTCreateWindow() with the default parameters.  
+// Instead of calling this, you can call DXUTSetDevice() or DXUTCreateDeviceFromSettings() 
+//--------------------------------------------------------------------------------------
+HRESULT DXUTCreateDevice( UINT AdapterOrdinal, bool bWindowed, 
+                          int nSuggestedWidth, int nSuggestedHeight,
+                          LPDXUTCALLBACKISDEVICEACCEPTABLE pCallbackIsDeviceAcceptable,
+                          LPDXUTCALLBACKMODIFYDEVICESETTINGS pCallbackModifyDeviceSettings,
+                          void* pUserContext )
+{
+    HRESULT hr;
+
+    // Not allowed to call this from inside the device callbacks
+    if( GetDXUTState().GetInsideDeviceCallback() )
+        return DXUT_ERR_MSGBOX( L"DXUTCreateWindow", E_FAIL );
+
+    // Record the function arguments in the global state 
+    GetDXUTState().SetIsDeviceAcceptableFunc( pCallbackIsDeviceAcceptable );
+    GetDXUTState().SetModifyDeviceSettingsFunc( pCallbackModifyDeviceSettings );
+    GetDXUTState().SetIsDeviceAcceptableFuncUserContext( pUserContext );
+    GetDXUTState().SetModifyDeviceSettingsFuncUserContext( pUserContext );
+
+    GetDXUTState().SetDeviceCreateCalled( true );
+
+    // If DXUTCreateWindow() or DXUTSetWindow() has not already been called, 
+    // then call DXUTCreateWindow() with the default parameters.         
+    if( !GetDXUTState().GetWindowCreated() ) 
+    {
+        // If DXUTCreateWindow() or DXUTSetWindow() was already called and failed, then fail.
+        // DXUTCreateWindow() or DXUTSetWindow() must first succeed for this function to succeed
+        if( GetDXUTState().GetWindowCreateCalled() )
+            return E_FAIL; 
+
+        // If DXUTCreateWindow() or DXUTSetWindow() hasn't been called, then 
+        // automatically call DXUTCreateWindow() with default params
+        hr = DXUTCreateWindow();
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    // Force an enumeration with the new IsDeviceAcceptable callback
+    DXUTPrepareEnumerationObject( true );
+
+    DXUTMatchOptions matchOptions;
+    matchOptions.eAdapterOrdinal     = DXUTMT_PRESERVE_INPUT;
+    matchOptions.eDeviceType         = DXUTMT_IGNORE_INPUT;
+    matchOptions.eWindowed           = DXUTMT_PRESERVE_INPUT;
+    matchOptions.eAdapterFormat      = DXUTMT_IGNORE_INPUT;
+    matchOptions.eVertexProcessing   = DXUTMT_IGNORE_INPUT;
+    if( bWindowed || (nSuggestedWidth != 0 && nSuggestedHeight != 0) )
+        matchOptions.eResolution     = DXUTMT_CLOSEST_TO_INPUT;
+    else
+        matchOptions.eResolution     = DXUTMT_IGNORE_INPUT;
+    matchOptions.eBackBufferFormat   = DXUTMT_IGNORE_INPUT;
+    matchOptions.eBackBufferCount    = DXUTMT_IGNORE_INPUT;
+    matchOptions.eMultiSample        = DXUTMT_IGNORE_INPUT;
+    matchOptions.eSwapEffect         = DXUTMT_IGNORE_INPUT;
+    matchOptions.eDepthFormat        = DXUTMT_IGNORE_INPUT;
+    matchOptions.eStencilFormat      = DXUTMT_IGNORE_INPUT;
+    matchOptions.ePresentFlags       = DXUTMT_IGNORE_INPUT;
+    matchOptions.eRefreshRate        = DXUTMT_IGNORE_INPUT;
+    matchOptions.ePresentInterval    = DXUTMT_IGNORE_INPUT;
+
+    DXUTDeviceSettings deviceSettings;
+    ZeroMemory( &deviceSettings, sizeof(DXUTDeviceSettings) );
+    deviceSettings.AdapterOrdinal      = AdapterOrdinal;
+    deviceSettings.pp.Windowed         = bWindowed;
+    deviceSettings.pp.BackBufferWidth  = nSuggestedWidth;
+    deviceSettings.pp.BackBufferHeight = nSuggestedHeight;
+
+    // Override with settings from the command line
+    if( GetDXUTState().GetOverrideWidth() != 0 )
+        deviceSettings.pp.BackBufferWidth = GetDXUTState().GetOverrideWidth();
+    if( GetDXUTState().GetOverrideHeight() != 0 )
+        deviceSettings.pp.BackBufferHeight = GetDXUTState().GetOverrideHeight();
+
+    if( GetDXUTState().GetOverrideAdapterOrdinal() != -1 )
+        deviceSettings.AdapterOrdinal = GetDXUTState().GetOverrideAdapterOrdinal();
+
+    if( GetDXUTState().GetOverrideFullScreen() )
+    {
+        deviceSettings.pp.Windowed = FALSE;
+        if( GetDXUTState().GetOverrideWidth() == 0 && GetDXUTState().GetOverrideHeight() == 0 )
+            matchOptions.eResolution = DXUTMT_IGNORE_INPUT;
+    }
+    if( GetDXUTState().GetOverrideWindowed() )
+        deviceSettings.pp.Windowed = TRUE;
+
+    if( GetDXUTState().GetOverrideForceHAL() )
+    {
+        deviceSettings.DeviceType = D3DDEVTYPE_HAL;
+        matchOptions.eDeviceType = DXUTMT_PRESERVE_INPUT;
+    }
+    if( GetDXUTState().GetOverrideForceREF() )
+    {
+        deviceSettings.DeviceType = D3DDEVTYPE_REF;
+        matchOptions.eDeviceType = DXUTMT_PRESERVE_INPUT;
+    }
+
+    if( GetDXUTState().GetOverrideForcePureHWVP() )
+    {
+        deviceSettings.BehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE;
+        matchOptions.eVertexProcessing = DXUTMT_PRESERVE_INPUT;
+    }
+    else if( GetDXUTState().GetOverrideForceHWVP() )
+    {
+        deviceSettings.BehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;
+        matchOptions.eVertexProcessing = DXUTMT_PRESERVE_INPUT;
+    }
+    else if( GetDXUTState().GetOverrideForceSWVP() )
+    {
+        deviceSettings.BehaviorFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+        matchOptions.eVertexProcessing = DXUTMT_PRESERVE_INPUT;
+    }
+
+    if( GetDXUTState().GetOverrideForceVsync() == 0 )
+    {
+        deviceSettings.pp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
+        matchOptions.ePresentInterval = DXUTMT_PRESERVE_INPUT;
+    }
+    else if( GetDXUTState().GetOverrideForceVsync() == 1 )
+    {
+        deviceSettings.pp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
+        matchOptions.ePresentInterval = DXUTMT_PRESERVE_INPUT;
+    }
+
+    hr = DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+    if( FAILED(hr) ) // the call will fail if no valid devices were found
+    {
+        DXUTDisplayErrorMessage( hr );
+        return DXUT_ERR( L"DXUTFindValidDeviceSettings", hr );
+    }
+
+    // Change to a Direct3D device created from the new device settings.  
+    // If there is an existing device, then either reset or recreated the scene
+    hr = DXUTChangeDevice( &deviceSettings, NULL, false, true );
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Passes a previously created Direct3D device for use by the framework.  
+// If DXUTCreateWindow() has not already been called, it will call it with the 
+// default parameters.  Instead of calling this, you can call DXUTCreateDevice() or 
+// DXUTCreateDeviceFromSettings() 
+//--------------------------------------------------------------------------------------
+HRESULT DXUTSetDevice( IDirect3DDevice9* pd3dDevice )
+{
+    HRESULT hr;
+
+    if( pd3dDevice == NULL )
+        return DXUT_ERR_MSGBOX( L"DXUTSetDevice", E_INVALIDARG );
+
+    // Not allowed to call this from inside the device callbacks
+    if( GetDXUTState().GetInsideDeviceCallback() )
+        return DXUT_ERR_MSGBOX( L"DXUTCreateWindow", E_FAIL );
+
+    GetDXUTState().SetDeviceCreateCalled( true );
+
+    // If DXUTCreateWindow() or DXUTSetWindow() has not already been called, 
+    // then call DXUTCreateWindow() with the default parameters.         
+    if( !GetDXUTState().GetWindowCreated() ) 
+    {
+        // If DXUTCreateWindow() or DXUTSetWindow() was already called and failed, then fail.
+        // DXUTCreateWindow() or DXUTSetWindow() must first succeed for this function to succeed
+        if( GetDXUTState().GetWindowCreateCalled() )
+            return E_FAIL; 
+
+        // If DXUTCreateWindow() or DXUTSetWindow() hasn't been called, then 
+        // automatically call DXUTCreateWindow() with default params
+        hr = DXUTCreateWindow();
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    DXUTDeviceSettings* pDeviceSettings = new DXUTDeviceSettings;
+    if( pDeviceSettings == NULL )
+        return E_OUTOFMEMORY;
+    ZeroMemory( pDeviceSettings, sizeof(DXUTDeviceSettings) );
+
+    // Get the present params from the swap chain
+    IDirect3DSurface9* pBackBuffer = NULL;
+    hr = pd3dDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer );
+    if( SUCCEEDED(hr) )
+    {
+        IDirect3DSwapChain9* pSwapChain = NULL;
+        hr = pBackBuffer->GetContainer( IID_IDirect3DSwapChain9, (void**) &pSwapChain );
+        if( SUCCEEDED(hr) )
+        {
+            pSwapChain->GetPresentParameters( &pDeviceSettings->pp );
+            SAFE_RELEASE( pSwapChain );
+        }
+
+        SAFE_RELEASE( pBackBuffer );
+    }
+
+    D3DDEVICE_CREATION_PARAMETERS d3dCreationParams;
+    pd3dDevice->GetCreationParameters( &d3dCreationParams );
+
+    // Fill out the rest of the device settings struct
+    pDeviceSettings->AdapterOrdinal = d3dCreationParams.AdapterOrdinal;
+    pDeviceSettings->DeviceType     = d3dCreationParams.DeviceType;
+    DXUTFindAdapterFormat( pDeviceSettings->AdapterOrdinal, pDeviceSettings->DeviceType, 
+                           pDeviceSettings->pp.BackBufferFormat, pDeviceSettings->pp.Windowed, 
+                           &pDeviceSettings->AdapterFormat );
+    pDeviceSettings->BehaviorFlags  = d3dCreationParams.BehaviorFlags;
+
+    // Change to the Direct3D device passed in
+    hr = DXUTChangeDevice( pDeviceSettings, pd3dDevice, false, false );
+
+    delete pDeviceSettings;
+
+    if( FAILED(hr) ) 
+        return hr;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Tells the framework to change to a device created from the passed in device settings
+// If DXUTCreateWindow() has not already been called, it will call it with the 
+// default parameters.  Instead of calling this, you can call DXUTCreateDevice() 
+// or DXUTSetDevice() 
+//--------------------------------------------------------------------------------------
+HRESULT DXUTCreateDeviceFromSettings( DXUTDeviceSettings* pDeviceSettings, bool bPreserveInput, bool bClipWindowToSingleAdapter )
+{
+    HRESULT hr;
+
+    GetDXUTState().SetDeviceCreateCalled( true );
+
+    // If DXUTCreateWindow() or DXUTSetWindow() has not already been called, 
+    // then call DXUTCreateWindow() with the default parameters.         
+    if( !GetDXUTState().GetWindowCreated() ) 
+    {
+        // If DXUTCreateWindow() or DXUTSetWindow() was already called and failed, then fail.
+        // DXUTCreateWindow() or DXUTSetWindow() must first succeed for this function to succeed
+        if( GetDXUTState().GetWindowCreateCalled() )
+            return E_FAIL; 
+
+        // If DXUTCreateWindow() or DXUTSetWindow() hasn't been called, then 
+        // automatically call DXUTCreateWindow() with default params
+        hr = DXUTCreateWindow();
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    if( !bPreserveInput )
+    {
+        // If not preserving the input, then find the closest valid to it
+        DXUTMatchOptions matchOptions;
+        matchOptions.eAdapterOrdinal     = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eDeviceType         = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eWindowed           = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eAdapterFormat      = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eVertexProcessing   = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eResolution         = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eBackBufferFormat   = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eBackBufferCount    = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eMultiSample        = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eSwapEffect         = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eDepthFormat        = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eStencilFormat      = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.ePresentFlags       = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.eRefreshRate        = DXUTMT_CLOSEST_TO_INPUT;
+        matchOptions.ePresentInterval    = DXUTMT_CLOSEST_TO_INPUT;
+
+        hr = DXUTFindValidDeviceSettings( pDeviceSettings, pDeviceSettings, &matchOptions );
+        if( FAILED(hr) ) // the call will fail if no valid devices were found
+        {
+            DXUTDisplayErrorMessage( hr );
+            return DXUT_ERR( L"DXUTFindValidDeviceSettings", hr );
+        }
+    }
+
+    // Change to a Direct3D device created from the new device settings.  
+    // If there is an existing device, then either reset or recreate the scene
+    hr = DXUTChangeDevice( pDeviceSettings, NULL, false, bClipWindowToSingleAdapter );
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Toggle between full screen and windowed
+//--------------------------------------------------------------------------------------
+HRESULT DXUTToggleFullScreen()
+{
+    HRESULT hr;
+
+    // Get the current device settings and flip the windowed state then
+    // find the closest valid device settings with this change
+    DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+    deviceSettings.pp.Windowed = !deviceSettings.pp.Windowed;
+
+    DXUTMatchOptions matchOptions;
+    matchOptions.eAdapterOrdinal     = DXUTMT_PRESERVE_INPUT;
+    matchOptions.eDeviceType         = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eWindowed           = DXUTMT_PRESERVE_INPUT;
+    matchOptions.eAdapterFormat      = DXUTMT_IGNORE_INPUT;
+    matchOptions.eVertexProcessing   = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eBackBufferFormat   = DXUTMT_IGNORE_INPUT;
+    matchOptions.eBackBufferCount    = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eMultiSample        = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eSwapEffect         = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eDepthFormat        = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eStencilFormat      = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.ePresentFlags       = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eRefreshRate        = DXUTMT_IGNORE_INPUT;
+    matchOptions.ePresentInterval    = DXUTMT_CLOSEST_TO_INPUT;
+
+    // Go back to previous state
+
+    UINT nWidth  = ( deviceSettings.pp.Windowed ) ? GetDXUTState().GetWindowBackBufferWidthAtModeChange() : GetDXUTState().GetFullScreenBackBufferWidthAtModeChange();
+    UINT nHeight = ( deviceSettings.pp.Windowed ) ? GetDXUTState().GetWindowBackBufferHeightAtModeChange() : GetDXUTState().GetFullScreenBackBufferHeightAtModeChange();
+    if( nWidth > 0 && nHeight > 0 )
+    {
+        matchOptions.eResolution = DXUTMT_CLOSEST_TO_INPUT;
+        deviceSettings.pp.BackBufferWidth = nWidth;
+        deviceSettings.pp.BackBufferHeight = nHeight;
+    }
+    else
+    {
+        // No previous data, so just switch to defaults
+        matchOptions.eResolution = DXUTMT_IGNORE_INPUT;
+    }
+    
+    hr = DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+    if( SUCCEEDED(hr) ) 
+    {
+        // Create a Direct3D device using the new device settings.  
+        // If there is an existing device, then it will either reset or recreate the scene.
+        hr = DXUTChangeDevice( &deviceSettings, NULL, false, false );
+
+        // If hr == E_ABORT, this means the app rejected the device settings in the ModifySettingsCallback so nothing changed
+        if( FAILED(hr) && (hr != E_ABORT) )
+        {
+            // Failed creating device, try to switch back.
+            deviceSettings.pp.Windowed = !deviceSettings.pp.Windowed;
+            UINT nWidth  = ( deviceSettings.pp.Windowed ) ? GetDXUTState().GetWindowBackBufferWidthAtModeChange() : GetDXUTState().GetFullScreenBackBufferWidthAtModeChange();
+            UINT nHeight = ( deviceSettings.pp.Windowed ) ? GetDXUTState().GetWindowBackBufferHeightAtModeChange() : GetDXUTState().GetFullScreenBackBufferHeightAtModeChange();
+            if( nWidth > 0 && nHeight > 0 )
+            {
+                matchOptions.eResolution = DXUTMT_CLOSEST_TO_INPUT;
+                deviceSettings.pp.BackBufferWidth = nWidth;
+                deviceSettings.pp.BackBufferHeight = nHeight;
+            }
+            else
+            {
+                matchOptions.eResolution = DXUTMT_IGNORE_INPUT;
+            }
+            
+            DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+
+            HRESULT hr2 = DXUTChangeDevice( &deviceSettings, NULL, false, false );
+            if( FAILED(hr2) )
+            {
+                // If this failed, then shutdown
+                DXUTShutdown();
+            }
+        }
+    }
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Toggle between HAL and REF
+//--------------------------------------------------------------------------------------
+HRESULT DXUTToggleREF()
+{
+    HRESULT hr;
+
+    DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+    if( deviceSettings.DeviceType == D3DDEVTYPE_HAL )
+        deviceSettings.DeviceType = D3DDEVTYPE_REF;
+    else if( deviceSettings.DeviceType == D3DDEVTYPE_REF )
+        deviceSettings.DeviceType = D3DDEVTYPE_HAL;
+
+    DXUTMatchOptions matchOptions;
+    matchOptions.eAdapterOrdinal     = DXUTMT_PRESERVE_INPUT;
+    matchOptions.eDeviceType         = DXUTMT_PRESERVE_INPUT;
+    matchOptions.eWindowed           = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eAdapterFormat      = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eVertexProcessing   = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eResolution         = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eBackBufferFormat   = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eBackBufferCount    = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eMultiSample        = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eSwapEffect         = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eDepthFormat        = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eStencilFormat      = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.ePresentFlags       = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.eRefreshRate        = DXUTMT_CLOSEST_TO_INPUT;
+    matchOptions.ePresentInterval    = DXUTMT_CLOSEST_TO_INPUT;
+    
+    hr = DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+    if( SUCCEEDED(hr) ) 
+    {
+        // Create a Direct3D device using the new device settings.  
+        // If there is an existing device, then it will either reset or recreate the scene.
+        hr = DXUTChangeDevice( &deviceSettings, NULL, false, false );
+
+        // If hr == E_ABORT, this means the app rejected the device settings in the ModifySettingsCallback so nothing changed
+        if( FAILED( hr ) && (hr != E_ABORT) )
+        {
+            // Failed creating device, try to switch back.
+            if( deviceSettings.DeviceType == D3DDEVTYPE_HAL )
+                deviceSettings.DeviceType = D3DDEVTYPE_REF;
+            else if( deviceSettings.DeviceType == D3DDEVTYPE_REF )
+                deviceSettings.DeviceType = D3DDEVTYPE_HAL;
+
+            DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+
+            HRESULT hr2 = DXUTChangeDevice( &deviceSettings, NULL, false, false );
+            if( FAILED(hr2) )
+            {
+                // If this failed, then shutdown
+                DXUTShutdown();
+            }
+        }
+    }
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal helper function to prepare the enumeration object by creating it if it 
+// didn't already exist and enumerating if desired.
+//--------------------------------------------------------------------------------------
+CD3DEnumeration* DXUTPrepareEnumerationObject( bool bEnumerate )
+{
+    // Create a new CD3DEnumeration object and enumerate all devices unless its already been done
+    CD3DEnumeration* pd3dEnum = GetDXUTState().GetD3DEnumeration();
+    if( pd3dEnum == NULL )
+    {
+        pd3dEnum = DXUTGetEnumeration(); 
+        GetDXUTState().SetD3DEnumeration( pd3dEnum );
+
+        bEnumerate = true;
+    }
+
+    if( bEnumerate )
+    {
+        // Enumerate for each adapter all of the supported display modes, 
+        // device types, adapter formats, back buffer formats, window/full screen support, 
+        // depth stencil formats, multisampling types/qualities, and presentations intervals.
+        //
+        // For each combination of device type (HAL/REF), adapter format, back buffer format, and
+        // IsWindowed it will call the app's ConfirmDevice callback.  This allows the app
+        // to reject or allow that combination based on its caps/etc.  It also allows the 
+        // app to change the BehaviorFlags.  The BehaviorFlags defaults non-pure HWVP 
+        // if supported otherwise it will default to SWVP, however the app can change this 
+        // through the ConfirmDevice callback.
+        IDirect3D9* pD3D = DXUTGetD3DObject();
+        pd3dEnum->Enumerate( pD3D, GetDXUTState().GetIsDeviceAcceptableFunc(), GetDXUTState().GetIsDeviceAcceptableFuncUserContext() );
+    }
+    
+    return pd3dEnum;
+}
+
+
+//--------------------------------------------------------------------------------------
+// This function tries to find valid device settings based upon the input device settings 
+// struct and the match options.  For each device setting a match option in the 
+// DXUTMatchOptions struct specifies how the function makes decisions.  For example, if 
+// the caller wants a HAL device with a back buffer format of D3DFMT_A2B10G10R10 but the 
+// HAL device on the system does not support D3DFMT_A2B10G10R10 however a REF device is 
+// installed that does, then the function has a choice to either use REF or to change to 
+// a back buffer format to compatible with the HAL device.  The match options lets the 
+// caller control how these choices are made.
+//
+// Each match option must be one of the following types: 
+//      DXUTMT_IGNORE_INPUT: Uses the closest valid value to a default 
+//      DXUTMT_PRESERVE_INPUT: Uses the input without change, but may cause no valid device to be found
+//      DXUTMT_CLOSEST_TO_INPUT: Uses the closest valid value to the input 
+//
+// If pMatchOptions is NULL then, all of the match options are assumed to be DXUTMT_IGNORE_INPUT.  
+// The function returns failure if no valid device settings can be found otherwise 
+// the function returns success and the valid device settings are written to pOut.
+//--------------------------------------------------------------------------------------
+HRESULT DXUTFindValidDeviceSettings( DXUTDeviceSettings* pOut, DXUTDeviceSettings* pIn, 
+                                     DXUTMatchOptions* pMatchOptions )
+{
+    if( pOut == NULL )
+        return DXUT_ERR_MSGBOX( L"DXUTFindValidDeviceSettings", E_INVALIDARG );
+
+    CD3DEnumeration* pd3dEnum = DXUTPrepareEnumerationObject( false );
+    IDirect3D9*      pD3D     = DXUTGetD3DObject();
+
+    // Default to DXUTMT_IGNORE_INPUT for everything unless pMatchOptions isn't NULL
+    DXUTMatchOptions defaultMatchOptions;
+    if( NULL == pMatchOptions )
+    {
+        ZeroMemory( &defaultMatchOptions, sizeof(DXUTMatchOptions) );
+        pMatchOptions = &defaultMatchOptions;
+    }
+
+    // Build an optimal device settings structure based upon the match 
+    // options.  If the match option is set to ignore, then a optimal default value is used.
+    // The default value may not exist on the system, but later this will be taken 
+    // into account.
+    DXUTDeviceSettings optimalDeviceSettings;
+    DXUTBuildOptimalDeviceSettings( &optimalDeviceSettings, pIn, pMatchOptions );
+
+    // Find the best combination of:
+    //      Adapter Ordinal
+    //      Device Type
+    //      Adapter Format
+    //      Back Buffer Format
+    //      Windowed
+    // given what's available on the system and the match options combined with the device settings input.
+    // This combination of settings is encapsulated by the CD3DEnumDeviceSettingsCombo class.
+    float fBestRanking = -1.0f;
+    CD3DEnumDeviceSettingsCombo* pBestDeviceSettingsCombo = NULL;
+    D3DDISPLAYMODE adapterDesktopDisplayMode;
+
+    CGrowableArray<CD3DEnumAdapterInfo*>* pAdapterList = pd3dEnum->GetAdapterInfoList();
+    for( int iAdapter=0; iAdapter<pAdapterList->GetSize(); iAdapter++ )
+    {
+        CD3DEnumAdapterInfo* pAdapterInfo = pAdapterList->GetAt(iAdapter);
+
+        // Get the desktop display mode of adapter 
+        pD3D->GetAdapterDisplayMode( pAdapterInfo->AdapterOrdinal, &adapterDesktopDisplayMode );
+
+        // Enum all the device types supported by this adapter to find the best device settings
+        for( int iDeviceInfo=0; iDeviceInfo<pAdapterInfo->deviceInfoList.GetSize(); iDeviceInfo++ )
+        {
+            CD3DEnumDeviceInfo* pDeviceInfo = pAdapterInfo->deviceInfoList.GetAt(iDeviceInfo);
+
+            // Enum all the device settings combinations.  A device settings combination is 
+            // a unique set of an adapter format, back buffer format, and IsWindowed.
+            for( int iDeviceCombo=0; iDeviceCombo<pDeviceInfo->deviceSettingsComboList.GetSize(); iDeviceCombo++ )
+            {
+                CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = pDeviceInfo->deviceSettingsComboList.GetAt(iDeviceCombo);
+
+                // If windowed mode the adapter format has to be the same as the desktop 
+                // display mode format so skip any that don't match
+                if (pDeviceSettingsCombo->Windowed && (pDeviceSettingsCombo->AdapterFormat != adapterDesktopDisplayMode.Format))
+                    continue;
+
+                // Skip any combo that doesn't meet the preserve match options
+                if( false == DXUTDoesDeviceComboMatchPreserveOptions( pDeviceSettingsCombo, pIn, pMatchOptions ) )
+                    continue;           
+
+                // Get a ranking number that describes how closely this device combo matches the optimal combo
+                float fCurRanking = DXUTRankDeviceCombo( pDeviceSettingsCombo, &optimalDeviceSettings, &adapterDesktopDisplayMode );
+
+                // If this combo better matches the input device settings then save it
+                if( fCurRanking > fBestRanking )
+                {
+                    pBestDeviceSettingsCombo = pDeviceSettingsCombo;
+                    fBestRanking = fCurRanking;
+                }                
+            }
+        }
+    }
+
+    // If no best device combination was found then fail
+    if( pBestDeviceSettingsCombo == NULL ) 
+        return DXUTERR_NOCOMPATIBLEDEVICES;
+
+    // Using the best device settings combo found, build valid device settings taking heed of 
+    // the match options and the input device settings
+    DXUTDeviceSettings validDeviceSettings;
+    DXUTBuildValidDeviceSettings( &validDeviceSettings, pBestDeviceSettingsCombo, pIn, pMatchOptions );
+    *pOut = validDeviceSettings;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal helper function to build a device settings structure based upon the match 
+// options.  If the match option is set to ignore, then a optimal default value is used.
+// The default value may not exist on the system, but later this will be taken 
+// into account.
+//--------------------------------------------------------------------------------------
+void DXUTBuildOptimalDeviceSettings( DXUTDeviceSettings* pOptimalDeviceSettings, 
+                                     DXUTDeviceSettings* pDeviceSettingsIn, 
+                                     DXUTMatchOptions* pMatchOptions )
+{
+    IDirect3D9* pD3D = DXUTGetD3DObject();
+    D3DDISPLAYMODE adapterDesktopDisplayMode;
+
+    ZeroMemory( pOptimalDeviceSettings, sizeof(DXUTDeviceSettings) ); 
+
+    //---------------------
+    // Adapter ordinal
+    //---------------------    
+    if( pMatchOptions->eAdapterOrdinal == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->AdapterOrdinal = D3DADAPTER_DEFAULT; 
+    else
+        pOptimalDeviceSettings->AdapterOrdinal = pDeviceSettingsIn->AdapterOrdinal;      
+
+    //---------------------
+    // Device type
+    //---------------------
+    if( pMatchOptions->eDeviceType == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->DeviceType = D3DDEVTYPE_HAL; 
+    else
+        pOptimalDeviceSettings->DeviceType = pDeviceSettingsIn->DeviceType;
+
+    //---------------------
+    // Windowed
+    //---------------------
+    if( pMatchOptions->eWindowed == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->pp.Windowed = TRUE; 
+    else
+        pOptimalDeviceSettings->pp.Windowed = pDeviceSettingsIn->pp.Windowed;
+
+    //---------------------
+    // Adapter format
+    //---------------------
+    if( pMatchOptions->eAdapterFormat == DXUTMT_IGNORE_INPUT )
+    {
+        // If windowed, default to the desktop display mode
+        // If fullscreen, default to the desktop display mode for quick mode change or 
+        // default to D3DFMT_X8R8G8B8 if the desktop display mode is < 32bit
+        pD3D->GetAdapterDisplayMode( pOptimalDeviceSettings->AdapterOrdinal, &adapterDesktopDisplayMode );
+        if( pOptimalDeviceSettings->pp.Windowed || DXUTColorChannelBits(adapterDesktopDisplayMode.Format) >= 8 )
+            pOptimalDeviceSettings->AdapterFormat = adapterDesktopDisplayMode.Format;
+        else
+            pOptimalDeviceSettings->AdapterFormat = D3DFMT_X8R8G8B8;
+    }
+    else
+    {
+        pOptimalDeviceSettings->AdapterFormat = pDeviceSettingsIn->AdapterFormat;
+    }
+
+    //---------------------
+    // Vertex processing
+    //---------------------
+    if( pMatchOptions->eVertexProcessing == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->BehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; 
+    else
+        pOptimalDeviceSettings->BehaviorFlags = pDeviceSettingsIn->BehaviorFlags;
+
+    //---------------------
+    // Resolution
+    //---------------------
+    if( pMatchOptions->eResolution == DXUTMT_IGNORE_INPUT )
+    {
+        // If windowed, default to 640x480
+        // If fullscreen, default to the desktop res for quick mode change
+        if( pOptimalDeviceSettings->pp.Windowed )
+        {
+            pOptimalDeviceSettings->pp.BackBufferWidth = 640;
+            pOptimalDeviceSettings->pp.BackBufferHeight = 480;
+        }
+        else
+        {
+            pD3D->GetAdapterDisplayMode( pOptimalDeviceSettings->AdapterOrdinal, &adapterDesktopDisplayMode );
+            pOptimalDeviceSettings->pp.BackBufferWidth = adapterDesktopDisplayMode.Width;
+            pOptimalDeviceSettings->pp.BackBufferHeight = adapterDesktopDisplayMode.Height;
+        }
+    }
+    else
+    {
+        pOptimalDeviceSettings->pp.BackBufferWidth = pDeviceSettingsIn->pp.BackBufferWidth;
+        pOptimalDeviceSettings->pp.BackBufferHeight = pDeviceSettingsIn->pp.BackBufferHeight;
+    }
+
+    //---------------------
+    // Back buffer format
+    //---------------------
+    if( pMatchOptions->eBackBufferFormat == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->pp.BackBufferFormat = pOptimalDeviceSettings->AdapterFormat; // Default to match the adapter format
+    else
+        pOptimalDeviceSettings->pp.BackBufferFormat = pDeviceSettingsIn->pp.BackBufferFormat;
+
+    //---------------------
+    // Back buffer count
+    //---------------------
+    if( pMatchOptions->eBackBufferCount == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->pp.BackBufferCount = 2; // Default to triple buffering for perf gain
+    else
+        pOptimalDeviceSettings->pp.BackBufferCount = pDeviceSettingsIn->pp.BackBufferCount;
+   
+    //---------------------
+    // Multisample
+    //---------------------
+    if( pMatchOptions->eMultiSample == DXUTMT_IGNORE_INPUT )
+    {
+        // Default to no multisampling 
+        pOptimalDeviceSettings->pp.MultiSampleType = D3DMULTISAMPLE_NONE;
+        pOptimalDeviceSettings->pp.MultiSampleQuality = 0; 
+    }
+    else
+    {
+        pOptimalDeviceSettings->pp.MultiSampleType = pDeviceSettingsIn->pp.MultiSampleType;
+        pOptimalDeviceSettings->pp.MultiSampleQuality = pDeviceSettingsIn->pp.MultiSampleQuality;
+    }
+
+    //---------------------
+    // Swap effect
+    //---------------------
+    if( pMatchOptions->eSwapEffect == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->pp.SwapEffect = D3DSWAPEFFECT_DISCARD; 
+    else
+        pOptimalDeviceSettings->pp.SwapEffect = pDeviceSettingsIn->pp.SwapEffect;
+
+    //---------------------
+    // Depth stencil 
+    //---------------------
+    if( pMatchOptions->eDepthFormat == DXUTMT_IGNORE_INPUT &&
+        pMatchOptions->eStencilFormat == DXUTMT_IGNORE_INPUT )
+    {
+        UINT nBackBufferBits = DXUTColorChannelBits( pOptimalDeviceSettings->pp.BackBufferFormat );
+        if( nBackBufferBits >= 8 )
+            pOptimalDeviceSettings->pp.AutoDepthStencilFormat = D3DFMT_D32; 
+        else
+            pOptimalDeviceSettings->pp.AutoDepthStencilFormat = D3DFMT_D16; 
+    }
+    else
+    {
+        pOptimalDeviceSettings->pp.AutoDepthStencilFormat = pDeviceSettingsIn->pp.AutoDepthStencilFormat;
+    }
+
+    //---------------------
+    // Present flags
+    //---------------------
+    if( pMatchOptions->ePresentFlags == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->pp.Flags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
+    else
+        pOptimalDeviceSettings->pp.Flags = pDeviceSettingsIn->pp.Flags;
+
+    //---------------------
+    // Refresh rate
+    //---------------------
+    if( pMatchOptions->eRefreshRate == DXUTMT_IGNORE_INPUT )
+        pOptimalDeviceSettings->pp.FullScreen_RefreshRateInHz = 0;
+    else
+        pOptimalDeviceSettings->pp.FullScreen_RefreshRateInHz = pDeviceSettingsIn->pp.FullScreen_RefreshRateInHz;
+
+    //---------------------
+    // Present interval
+    //---------------------
+    if( pMatchOptions->ePresentInterval == DXUTMT_IGNORE_INPUT )
+    {
+        // For windowed and fullscreen, default to D3DPRESENT_INTERVAL_DEFAULT
+        // which will wait for the vertical retrace period to prevent tearing.
+        // For benchmarking, use D3DPRESENT_INTERVAL_DEFAULT  which will
+        // will wait not for the vertical retrace period but may introduce tearing.
+        pOptimalDeviceSettings->pp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
+    }
+    else
+    {
+        pOptimalDeviceSettings->pp.PresentationInterval = pDeviceSettingsIn->pp.PresentationInterval;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns false for any CD3DEnumDeviceSettingsCombo that doesn't meet the preserve 
+// match options against the input pDeviceSettingsIn.
+//--------------------------------------------------------------------------------------
+bool DXUTDoesDeviceComboMatchPreserveOptions( CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo, 
+                                                 DXUTDeviceSettings* pDeviceSettingsIn, 
+                                                 DXUTMatchOptions* pMatchOptions )
+{
+    //---------------------
+    // Adapter ordinal
+    //---------------------
+    if( pMatchOptions->eAdapterOrdinal == DXUTMT_PRESERVE_INPUT && 
+        (pDeviceSettingsCombo->AdapterOrdinal != pDeviceSettingsIn->AdapterOrdinal) )
+        return false;
+
+    //---------------------
+    // Device type
+    //---------------------
+    if( pMatchOptions->eDeviceType == DXUTMT_PRESERVE_INPUT && 
+        (pDeviceSettingsCombo->DeviceType != pDeviceSettingsIn->DeviceType) )
+        return false;
+
+    //---------------------
+    // Windowed
+    //---------------------
+    if( pMatchOptions->eWindowed == DXUTMT_PRESERVE_INPUT && 
+        (pDeviceSettingsCombo->Windowed != pDeviceSettingsIn->pp.Windowed) )
+        return false;
+
+    //---------------------
+    // Adapter format
+    //---------------------
+    if( pMatchOptions->eAdapterFormat == DXUTMT_PRESERVE_INPUT && 
+        (pDeviceSettingsCombo->AdapterFormat != pDeviceSettingsIn->AdapterFormat) )
+        return false;
+
+    //---------------------
+    // Vertex processing
+    //---------------------
+    // If keep VP and input has HWVP, then skip if this combo doesn't have HWTL 
+    if( pMatchOptions->eVertexProcessing == DXUTMT_PRESERVE_INPUT && 
+        ((pDeviceSettingsIn->BehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) != 0) && 
+        ((pDeviceSettingsCombo->pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0) )
+        return false;
+
+    //---------------------
+    // Resolution
+    //---------------------
+    // If keep resolution then check that width and height supported by this combo
+    if( pMatchOptions->eResolution == DXUTMT_PRESERVE_INPUT )
+    {
+        bool bFound = false;
+        for( int i=0; i< pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetSize(); i++ )
+        {
+            D3DDISPLAYMODE displayMode = pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetAt( i );
+            if( displayMode.Format != pDeviceSettingsCombo->AdapterFormat )
+                continue; // Skip this display mode if it doesn't match the combo's adapter format
+
+            if( displayMode.Width == pDeviceSettingsIn->pp.BackBufferWidth &&
+                displayMode.Height == pDeviceSettingsIn->pp.BackBufferHeight )
+            {
+                bFound = true;
+                break;
+            }
+        }
+
+        // If the width and height are not supported by this combo, return false
+        if( !bFound )
+            return false;
+    }
+
+    //---------------------
+    // Back buffer format
+    //---------------------
+    if( pMatchOptions->eBackBufferFormat == DXUTMT_PRESERVE_INPUT && 
+        pDeviceSettingsCombo->BackBufferFormat != pDeviceSettingsIn->pp.BackBufferFormat )
+        return false;
+
+    //---------------------
+    // Back buffer count
+    //---------------------
+    // No caps for the back buffer count
+
+    //---------------------
+    // Multisample
+    //---------------------
+    if( pMatchOptions->eMultiSample == DXUTMT_PRESERVE_INPUT )
+    {
+        bool bFound = false;
+        for( int i=0; i<pDeviceSettingsCombo->multiSampleTypeList.GetSize(); i++ )
+        {
+            D3DMULTISAMPLE_TYPE msType = pDeviceSettingsCombo->multiSampleTypeList.GetAt(i);
+            DWORD msQuality  = pDeviceSettingsCombo->multiSampleQualityList.GetAt(i);
+
+            if( msType == pDeviceSettingsIn->pp.MultiSampleType &&
+                msQuality >= pDeviceSettingsIn->pp.MultiSampleQuality )
+            {
+                bFound = true;
+                break;
+            }
+        }
+
+        // If multisample type/quality not supported by this combo, then return false
+        if( !bFound )
+            return false;
+    }
+        
+    //---------------------
+    // Swap effect
+    //---------------------
+    // No caps for swap effects
+
+    //---------------------
+    // Depth stencil 
+    //---------------------
+    // If keep depth stencil format then check that the depth stencil format is supported by this combo
+    if( pMatchOptions->eDepthFormat == DXUTMT_PRESERVE_INPUT &&
+        pMatchOptions->eStencilFormat == DXUTMT_PRESERVE_INPUT )
+    {
+        if( pDeviceSettingsIn->pp.AutoDepthStencilFormat != D3DFMT_UNKNOWN &&
+            !pDeviceSettingsCombo->depthStencilFormatList.Contains( pDeviceSettingsIn->pp.AutoDepthStencilFormat ) )
+            return false;
+    }
+
+    // If keep depth format then check that the depth format is supported by this combo
+    if( pMatchOptions->eDepthFormat == DXUTMT_PRESERVE_INPUT &&
+        pDeviceSettingsIn->pp.AutoDepthStencilFormat != D3DFMT_UNKNOWN )
+    {
+        bool bFound = false;
+        UINT dwDepthBits = DXUTDepthBits( pDeviceSettingsIn->pp.AutoDepthStencilFormat );
+        for( int i=0; i<pDeviceSettingsCombo->depthStencilFormatList.GetSize(); i++ )
+        {
+            D3DFORMAT depthStencilFmt = pDeviceSettingsCombo->depthStencilFormatList.GetAt(i);
+            UINT dwCurDepthBits = DXUTDepthBits( depthStencilFmt );
+            if( dwCurDepthBits - dwDepthBits == 0)
+                bFound = true;
+        }
+
+        if( !bFound )
+            return false;
+    }
+
+    // If keep depth format then check that the depth format is supported by this combo
+    if( pMatchOptions->eStencilFormat == DXUTMT_PRESERVE_INPUT &&
+        pDeviceSettingsIn->pp.AutoDepthStencilFormat != D3DFMT_UNKNOWN )
+    {
+        bool bFound = false;
+        UINT dwStencilBits = DXUTStencilBits( pDeviceSettingsIn->pp.AutoDepthStencilFormat );
+        for( int i=0; i<pDeviceSettingsCombo->depthStencilFormatList.GetSize(); i++ )
+        {
+            D3DFORMAT depthStencilFmt = pDeviceSettingsCombo->depthStencilFormatList.GetAt(i);
+            UINT dwCurStencilBits = DXUTStencilBits( depthStencilFmt );
+            if( dwCurStencilBits - dwStencilBits == 0)
+                bFound = true;
+        }
+
+        if( !bFound )
+            return false;
+    }
+
+    //---------------------
+    // Present flags
+    //---------------------
+    // No caps for the present flags
+
+    //---------------------
+    // Refresh rate
+    //---------------------
+    // If keep refresh rate then check that the resolution is supported by this combo
+    if( pMatchOptions->eRefreshRate == DXUTMT_PRESERVE_INPUT )
+    {
+        bool bFound = false;
+        for( int i=0; i<pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetSize(); i++ )
+        {
+            D3DDISPLAYMODE displayMode = pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetAt( i );
+            if( displayMode.Format != pDeviceSettingsCombo->AdapterFormat )
+                continue;
+            if( displayMode.RefreshRate == pDeviceSettingsIn->pp.FullScreen_RefreshRateInHz )
+            {
+                bFound = true;
+                break;
+            }
+        }
+
+        // If refresh rate not supported by this combo, then return false
+        if( !bFound )
+            return false;
+    }
+
+    //---------------------
+    // Present interval
+    //---------------------
+    // If keep present interval then check that the present interval is supported by this combo
+    if( pMatchOptions->ePresentInterval == DXUTMT_PRESERVE_INPUT &&
+        !pDeviceSettingsCombo->presentIntervalList.Contains( pDeviceSettingsIn->pp.PresentationInterval ) )
+        return false;
+
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns a ranking number that describes how closely this device 
+// combo matches the optimal combo based on the match options and the optimal device settings
+//--------------------------------------------------------------------------------------
+float DXUTRankDeviceCombo( CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo, 
+                           DXUTDeviceSettings* pOptimalDeviceSettings,
+                           D3DDISPLAYMODE* pAdapterDesktopDisplayMode )
+{
+    float fCurRanking = 0.0f; 
+
+    // Arbitrary weights.  Gives preference to the ordinal, device type, and windowed
+    const float fAdapterOrdinalWeight   = 1000.0f;
+    const float fDeviceTypeWeight       = 100.0f;
+    const float fWindowWeight           = 10.0f;
+    const float fAdapterFormatWeight    = 1.0f;
+    const float fVertexProcessingWeight = 1.0f;
+    const float fResolutionWeight       = 1.0f;
+    const float fBackBufferFormatWeight = 1.0f;
+    const float fMultiSampleWeight      = 1.0f;
+    const float fDepthStencilWeight     = 1.0f;
+    const float fRefreshRateWeight      = 1.0f;
+    const float fPresentIntervalWeight  = 1.0f;
+
+    //---------------------
+    // Adapter ordinal
+    //---------------------
+    if( pDeviceSettingsCombo->AdapterOrdinal == pOptimalDeviceSettings->AdapterOrdinal )
+        fCurRanking += fAdapterOrdinalWeight;
+
+    //---------------------
+    // Device type
+    //---------------------
+    if( pDeviceSettingsCombo->DeviceType == pOptimalDeviceSettings->DeviceType )
+        fCurRanking += fDeviceTypeWeight;
+    // Slightly prefer HAL 
+    if( pDeviceSettingsCombo->DeviceType == D3DDEVTYPE_HAL )
+        fCurRanking += 0.1f; 
+
+    //---------------------
+    // Windowed
+    //---------------------
+    if( pDeviceSettingsCombo->Windowed == pOptimalDeviceSettings->pp.Windowed )
+        fCurRanking += fWindowWeight;
+
+    //---------------------
+    // Adapter format
+    //---------------------
+    if( pDeviceSettingsCombo->AdapterFormat == pOptimalDeviceSettings->AdapterFormat )
+    {
+        fCurRanking += fAdapterFormatWeight;
+    }
+    else
+    {
+        int nBitDepthDelta = abs( (long) DXUTColorChannelBits(pDeviceSettingsCombo->AdapterFormat) -
+                                  (long) DXUTColorChannelBits(pOptimalDeviceSettings->AdapterFormat) );
+        float fScale = __max(0.9f - (float)nBitDepthDelta*0.2f, 0.0f);
+        fCurRanking += fScale * fAdapterFormatWeight;
+    }
+
+    if( !pDeviceSettingsCombo->Windowed )
+    {
+        // Slightly prefer when it matches the desktop format or is D3DFMT_X8R8G8B8
+        bool bAdapterOptimalMatch;
+        if( DXUTColorChannelBits(pAdapterDesktopDisplayMode->Format) >= 8 )
+            bAdapterOptimalMatch = (pDeviceSettingsCombo->AdapterFormat == pAdapterDesktopDisplayMode->Format);
+        else
+            bAdapterOptimalMatch = (pDeviceSettingsCombo->AdapterFormat == D3DFMT_X8R8G8B8);
+
+        if( bAdapterOptimalMatch )
+            fCurRanking += 0.1f;
+    }
+
+    //---------------------
+    // Vertex processing
+    //---------------------
+    if( (pOptimalDeviceSettings->BehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) != 0 || 
+        (pOptimalDeviceSettings->BehaviorFlags & D3DCREATE_MIXED_VERTEXPROCESSING) != 0 )
+    {
+        if( (pDeviceSettingsCombo->pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) != 0 )
+            fCurRanking += fVertexProcessingWeight;
+    }
+    // Slightly prefer HW T&L
+    if( (pDeviceSettingsCombo->pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) != 0 )
+        fCurRanking += 0.1f;
+
+    //---------------------
+    // Resolution
+    //---------------------
+    bool bResolutionFound = false;
+    for( int idm = 0; idm < pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetSize(); idm++ )
+    {
+        D3DDISPLAYMODE displayMode = pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetAt( idm );
+        if( displayMode.Format != pDeviceSettingsCombo->AdapterFormat )
+            continue;
+        if( displayMode.Width == pOptimalDeviceSettings->pp.BackBufferWidth &&
+            displayMode.Height == pOptimalDeviceSettings->pp.BackBufferHeight )
+            bResolutionFound = true;
+    }
+    if( bResolutionFound )
+        fCurRanking += fResolutionWeight;
+
+    //---------------------
+    // Back buffer format
+    //---------------------
+    if( pDeviceSettingsCombo->BackBufferFormat == pOptimalDeviceSettings->pp.BackBufferFormat )
+    {
+        fCurRanking += fBackBufferFormatWeight;
+    }
+    else
+    {
+        int nBitDepthDelta = abs( (long) DXUTColorChannelBits(pDeviceSettingsCombo->BackBufferFormat) -
+                                  (long) DXUTColorChannelBits(pOptimalDeviceSettings->pp.BackBufferFormat) );
+        float fScale = __max(0.9f - (float)nBitDepthDelta*0.2f, 0.0f);
+        fCurRanking += fScale * fBackBufferFormatWeight;
+    }
+
+    // Check if this back buffer format is the same as 
+    // the adapter format since this is preferred.
+    bool bAdapterMatchesBB = (pDeviceSettingsCombo->BackBufferFormat == pDeviceSettingsCombo->AdapterFormat);
+    if( bAdapterMatchesBB )
+        fCurRanking += 0.1f;
+
+    //---------------------
+    // Back buffer count
+    //---------------------
+    // No caps for the back buffer count
+
+    //---------------------
+    // Multisample
+    //---------------------
+    bool bMultiSampleFound = false;
+    for( int i=0; i<pDeviceSettingsCombo->multiSampleTypeList.GetSize(); i++ )
+    {
+        D3DMULTISAMPLE_TYPE msType = pDeviceSettingsCombo->multiSampleTypeList.GetAt(i);
+        DWORD msQuality  = pDeviceSettingsCombo->multiSampleQualityList.GetAt(i);
+
+        if( msType == pOptimalDeviceSettings->pp.MultiSampleType &&
+            msQuality >= pOptimalDeviceSettings->pp.MultiSampleQuality )
+        {
+            bMultiSampleFound = true;
+            break;
+        }
+    }
+    if( bMultiSampleFound )
+        fCurRanking += fMultiSampleWeight;
+        
+    //---------------------
+    // Swap effect
+    //---------------------
+    // No caps for swap effects
+
+    //---------------------
+    // Depth stencil 
+    //---------------------
+    if( pDeviceSettingsCombo->depthStencilFormatList.Contains( pOptimalDeviceSettings->pp.AutoDepthStencilFormat ) )
+        fCurRanking += fDepthStencilWeight;
+
+    //---------------------
+    // Present flags
+    //---------------------
+    // No caps for the present flags
+
+    //---------------------
+    // Refresh rate
+    //---------------------
+    bool bRefreshFound = false;
+    for( int idm = 0; idm < pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetSize(); idm++ )
+    {
+        D3DDISPLAYMODE displayMode = pDeviceSettingsCombo->pAdapterInfo->displayModeList.GetAt( idm );
+        if( displayMode.Format != pDeviceSettingsCombo->AdapterFormat )
+            continue;
+        if( displayMode.RefreshRate == pOptimalDeviceSettings->pp.FullScreen_RefreshRateInHz )
+            bRefreshFound = true;
+    }
+    if( bRefreshFound )
+        fCurRanking += fRefreshRateWeight;
+
+    //---------------------
+    // Present interval
+    //---------------------
+    // If keep present interval then check that the present interval is supported by this combo
+    if( pDeviceSettingsCombo->presentIntervalList.Contains( pOptimalDeviceSettings->pp.PresentationInterval ) )
+        fCurRanking += fPresentIntervalWeight;
+
+    return fCurRanking;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Builds valid device settings using the match options, the input device settings, and the 
+// best device settings combo found.
+//--------------------------------------------------------------------------------------
+void DXUTBuildValidDeviceSettings( DXUTDeviceSettings* pValidDeviceSettings, 
+                                   CD3DEnumDeviceSettingsCombo* pBestDeviceSettingsCombo, 
+                                   DXUTDeviceSettings* pDeviceSettingsIn, 
+                                   DXUTMatchOptions* pMatchOptions )
+{
+    IDirect3D9* pD3D = DXUTGetD3DObject();
+    D3DDISPLAYMODE adapterDesktopDisplayMode;
+    pD3D->GetAdapterDisplayMode( pBestDeviceSettingsCombo->AdapterOrdinal, &adapterDesktopDisplayMode );
+
+    // For each setting pick the best, taking into account the match options and 
+    // what's supported by the device
+
+    //---------------------
+    // Adapter Ordinal
+    //---------------------
+    // Just using pBestDeviceSettingsCombo->AdapterOrdinal
+
+    //---------------------
+    // Device Type
+    //---------------------
+    // Just using pBestDeviceSettingsCombo->DeviceType
+
+    //---------------------
+    // Windowed 
+    //---------------------
+    // Just using pBestDeviceSettingsCombo->Windowed
+
+    //---------------------
+    // Adapter Format
+    //---------------------
+    // Just using pBestDeviceSettingsCombo->AdapterFormat
+
+    //---------------------
+    // Vertex processing
+    //---------------------
+    DWORD dwBestBehaviorFlags = 0;
+    if( pMatchOptions->eVertexProcessing == DXUTMT_PRESERVE_INPUT )   
+    {
+        dwBestBehaviorFlags = pDeviceSettingsIn->BehaviorFlags;
+    }
+    else if( pMatchOptions->eVertexProcessing == DXUTMT_IGNORE_INPUT )    
+    {
+        // The framework defaults to HWVP if available otherwise use SWVP
+        if ((pBestDeviceSettingsCombo->pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) != 0)
+            dwBestBehaviorFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
+        else
+            dwBestBehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+    }
+    else // if( pMatchOptions->eVertexProcessing == DXUTMT_CLOSEST_TO_INPUT )    
+    {
+        // Default to input, and fallback to SWVP if HWVP not available 
+        dwBestBehaviorFlags = pDeviceSettingsIn->BehaviorFlags;
+        if ((pBestDeviceSettingsCombo->pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0 && 
+            ( (dwBestBehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) != 0 || 
+              (dwBestBehaviorFlags & D3DCREATE_MIXED_VERTEXPROCESSING) != 0) )
+        {
+            dwBestBehaviorFlags &= ~D3DCREATE_HARDWARE_VERTEXPROCESSING;
+            dwBestBehaviorFlags &= ~D3DCREATE_MIXED_VERTEXPROCESSING;
+            dwBestBehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+        }
+
+        // One of these must be selected
+        if( (dwBestBehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) == 0 &&
+            (dwBestBehaviorFlags & D3DCREATE_MIXED_VERTEXPROCESSING) == 0 &&
+            (dwBestBehaviorFlags & D3DCREATE_SOFTWARE_VERTEXPROCESSING) == 0 )
+        {
+            if ((pBestDeviceSettingsCombo->pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) != 0)
+                dwBestBehaviorFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
+            else
+                dwBestBehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+        }
+    }
+
+    //---------------------
+    // Resolution
+    //---------------------
+    D3DDISPLAYMODE bestDisplayMode;  
+    if( pMatchOptions->eResolution == DXUTMT_PRESERVE_INPUT )   
+    {
+        bestDisplayMode.Width = pDeviceSettingsIn->pp.BackBufferWidth;
+        bestDisplayMode.Height = pDeviceSettingsIn->pp.BackBufferHeight;
+    }
+    else 
+    {
+        D3DDISPLAYMODE displayModeIn;  
+        if( pMatchOptions->eResolution == DXUTMT_CLOSEST_TO_INPUT &&
+            pDeviceSettingsIn )   
+        {
+            displayModeIn.Width = pDeviceSettingsIn->pp.BackBufferWidth;
+            displayModeIn.Height = pDeviceSettingsIn->pp.BackBufferHeight;
+        }
+        else // if( pMatchOptions->eResolution == DXUTMT_IGNORE_INPUT )   
+        {
+            if( pBestDeviceSettingsCombo->Windowed )
+            {
+                // The framework defaults to 640x480 for windowed
+                displayModeIn.Width = 640;
+                displayModeIn.Height = 480;
+            }
+            else
+            {
+                // The framework defaults to desktop resolution for fullscreen to try to avoid slow mode change
+                displayModeIn.Width = adapterDesktopDisplayMode.Width;
+                displayModeIn.Height = adapterDesktopDisplayMode.Height;
+            }
+        }
+
+        // Call a helper function to find the closest valid display mode to the optimal 
+        DXUTFindValidResolution( pBestDeviceSettingsCombo, displayModeIn, &bestDisplayMode );
+    }
+
+    //---------------------
+    // Back Buffer Format
+    //---------------------
+    // Just using pBestDeviceSettingsCombo->BackBufferFormat
+
+    //---------------------
+    // Back buffer count
+    //---------------------
+    UINT bestBackBufferCount;
+    if( pMatchOptions->eBackBufferCount == DXUTMT_PRESERVE_INPUT )   
+    {
+        bestBackBufferCount = pDeviceSettingsIn->pp.BackBufferCount;
+    }
+    else if( pMatchOptions->eBackBufferCount == DXUTMT_IGNORE_INPUT )   
+    {
+        // The framework defaults to triple buffering 
+        bestBackBufferCount = 2;
+    }
+    else // if( pMatchOptions->eBackBufferCount == DXUTMT_CLOSEST_TO_INPUT )   
+    {
+        bestBackBufferCount = pDeviceSettingsIn->pp.BackBufferCount;
+        if( bestBackBufferCount > 3 )
+            bestBackBufferCount = 3;
+        if( bestBackBufferCount < 1 )
+            bestBackBufferCount = 1;
+    }
+    
+    //---------------------
+    // Multisample
+    //---------------------
+    D3DMULTISAMPLE_TYPE bestMultiSampleType;
+    DWORD bestMultiSampleQuality;
+    if( pDeviceSettingsIn && pDeviceSettingsIn->pp.SwapEffect != D3DSWAPEFFECT_DISCARD )
+    {
+        // Swap effect is not set to discard so multisampling has to off
+        bestMultiSampleType = D3DMULTISAMPLE_NONE;
+        bestMultiSampleQuality = 0;
+    }
+    else
+    {
+        if( pMatchOptions->eMultiSample == DXUTMT_PRESERVE_INPUT )   
+        {
+            bestMultiSampleType    = pDeviceSettingsIn->pp.MultiSampleType;
+            bestMultiSampleQuality = pDeviceSettingsIn->pp.MultiSampleQuality;
+        }
+        else if( pMatchOptions->eMultiSample == DXUTMT_IGNORE_INPUT )   
+        {
+            // Default to no multisampling (always supported)
+            bestMultiSampleType = D3DMULTISAMPLE_NONE;
+            bestMultiSampleQuality = 0;
+        }
+        else if( pMatchOptions->eMultiSample == DXUTMT_CLOSEST_TO_INPUT )   
+        {
+            // Default to no multisampling (always supported)
+            bestMultiSampleType = D3DMULTISAMPLE_NONE;
+            bestMultiSampleQuality = 0;
+
+            for( int i=0; i < pBestDeviceSettingsCombo->multiSampleTypeList.GetSize(); i++ )
+            {
+                D3DMULTISAMPLE_TYPE type = pBestDeviceSettingsCombo->multiSampleTypeList.GetAt(i);
+                DWORD qualityLevels = pBestDeviceSettingsCombo->multiSampleQualityList.GetAt(i);
+                
+                // Check whether supported type is closer to the input than our current best
+                if( abs(type - pDeviceSettingsIn->pp.MultiSampleType) < abs(bestMultiSampleType - pDeviceSettingsIn->pp.MultiSampleType) )
+                {
+                    bestMultiSampleType = type; 
+                    bestMultiSampleQuality = __min( qualityLevels-1, pDeviceSettingsIn->pp.MultiSampleQuality );
+                }
+            }
+        }
+        else
+        {
+            // Error case
+            bestMultiSampleType = D3DMULTISAMPLE_NONE;
+            bestMultiSampleQuality = 0;
+        }
+    }
+
+    //---------------------
+    // Swap effect
+    //---------------------
+    D3DSWAPEFFECT bestSwapEffect;
+    if( pMatchOptions->eSwapEffect == DXUTMT_PRESERVE_INPUT )   
+    {
+        bestSwapEffect = pDeviceSettingsIn->pp.SwapEffect;
+    }
+    else if( pMatchOptions->eSwapEffect == DXUTMT_IGNORE_INPUT )   
+    {
+        bestSwapEffect = D3DSWAPEFFECT_DISCARD;
+    }
+    else // if( pMatchOptions->eSwapEffect == DXUTMT_CLOSEST_TO_INPUT )   
+    {
+        bestSwapEffect = pDeviceSettingsIn->pp.SwapEffect;
+
+        // Swap effect has to be one of these 3
+        if( bestSwapEffect != D3DSWAPEFFECT_DISCARD &&
+            bestSwapEffect != D3DSWAPEFFECT_FLIP &&
+            bestSwapEffect != D3DSWAPEFFECT_COPY )
+        {
+            bestSwapEffect = D3DSWAPEFFECT_DISCARD;
+        }
+    }
+
+    //---------------------
+    // Depth stencil 
+    //---------------------
+    D3DFORMAT bestDepthStencilFormat;
+    BOOL bestEnableAutoDepthStencil;
+
+    CGrowableArray< int > depthStencilRanking;
+    depthStencilRanking.SetSize( pBestDeviceSettingsCombo->depthStencilFormatList.GetSize() );
+
+    UINT dwBackBufferBitDepth = DXUTColorChannelBits( pBestDeviceSettingsCombo->BackBufferFormat );       
+    UINT dwInputDepthBitDepth = 0;
+    if( pDeviceSettingsIn )
+        dwInputDepthBitDepth = DXUTDepthBits( pDeviceSettingsIn->pp.AutoDepthStencilFormat );
+
+    for( int i=0; i<pBestDeviceSettingsCombo->depthStencilFormatList.GetSize(); i++ )
+    {
+        D3DFORMAT curDepthStencilFmt = pBestDeviceSettingsCombo->depthStencilFormatList.GetAt(i);
+        DWORD dwCurDepthBitDepth = DXUTDepthBits( curDepthStencilFmt );
+        int nRanking;
+
+        if( pMatchOptions->eDepthFormat == DXUTMT_PRESERVE_INPUT )
+        {                       
+            // Need to match bit depth of input
+            if(dwCurDepthBitDepth == dwInputDepthBitDepth)
+                nRanking = 0;
+            else
+                nRanking = 10000;
+        }
+        else if( pMatchOptions->eDepthFormat == DXUTMT_IGNORE_INPUT )
+        {
+            // Prefer match of backbuffer bit depth
+            nRanking = abs((int)dwCurDepthBitDepth - (int)dwBackBufferBitDepth*4);
+        }
+        else // if( pMatchOptions->eDepthFormat == DXUTMT_CLOSEST_TO_INPUT )
+        {
+            // Prefer match of input depth format bit depth
+            nRanking = abs((int)dwCurDepthBitDepth - (int)dwInputDepthBitDepth);
+        }
+
+        depthStencilRanking.Add( nRanking );
+    }
+
+    UINT dwInputStencilBitDepth = 0;
+    if( pDeviceSettingsIn )
+        dwInputStencilBitDepth = DXUTStencilBits( pDeviceSettingsIn->pp.AutoDepthStencilFormat );
+
+    for( int i=0; i<pBestDeviceSettingsCombo->depthStencilFormatList.GetSize(); i++ )
+    {
+        D3DFORMAT curDepthStencilFmt = pBestDeviceSettingsCombo->depthStencilFormatList.GetAt(i);
+        int nRanking = depthStencilRanking.GetAt(i);
+        DWORD dwCurStencilBitDepth = DXUTStencilBits( curDepthStencilFmt );
+
+        if( pMatchOptions->eStencilFormat == DXUTMT_PRESERVE_INPUT )
+        {                       
+            // Need to match bit depth of input
+            if(dwCurStencilBitDepth == dwInputStencilBitDepth)
+                nRanking += 0;
+            else
+                nRanking += 10000;
+        }
+        else if( pMatchOptions->eStencilFormat == DXUTMT_IGNORE_INPUT )
+        {
+            // Prefer 0 stencil bit depth
+            nRanking += dwCurStencilBitDepth;
+        }
+        else // if( pMatchOptions->eStencilFormat == DXUTMT_CLOSEST_TO_INPUT )
+        {
+            // Prefer match of input stencil format bit depth
+            nRanking += abs((int)dwCurStencilBitDepth - (int)dwInputStencilBitDepth);
+        }
+
+        depthStencilRanking.SetAt( i, nRanking );
+    }
+
+    int nBestRanking = 100000;
+    int nBestIndex = -1;
+    for( int i=0; i<pBestDeviceSettingsCombo->depthStencilFormatList.GetSize(); i++ )
+    {
+        int nRanking = depthStencilRanking.GetAt(i);
+        if( nRanking < nBestRanking )
+        {
+            nBestRanking = nRanking;
+            nBestIndex = i;
+        }
+    }
+
+    if( nBestIndex >= 0 )
+    {
+        bestDepthStencilFormat = pBestDeviceSettingsCombo->depthStencilFormatList.GetAt(nBestIndex);
+        bestEnableAutoDepthStencil = true;
+    }
+    else
+    {
+        bestDepthStencilFormat = D3DFMT_UNKNOWN;
+        bestEnableAutoDepthStencil = false;
+    }
+
+
+    //---------------------
+    // Present flags
+    //---------------------
+    DWORD dwBestFlags;
+    if( pMatchOptions->ePresentFlags == DXUTMT_PRESERVE_INPUT )   
+    {
+        dwBestFlags = pDeviceSettingsIn->pp.Flags;
+    }
+    else if( pMatchOptions->ePresentFlags == DXUTMT_IGNORE_INPUT )   
+    {
+        dwBestFlags = 0;
+        if( bestEnableAutoDepthStencil )
+            dwBestFlags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;            
+    }
+    else // if( pMatchOptions->ePresentFlags == DXUTMT_CLOSEST_TO_INPUT )   
+    {
+        dwBestFlags = pDeviceSettingsIn->pp.Flags;
+        if( bestEnableAutoDepthStencil )
+            dwBestFlags |= D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
+    }
+
+    //---------------------
+    // Refresh rate
+    //---------------------
+    if( pBestDeviceSettingsCombo->Windowed )
+    {
+        // Must be 0 for windowed
+        bestDisplayMode.RefreshRate = 0;
+    }
+    else
+    {
+        if( pMatchOptions->eRefreshRate == DXUTMT_PRESERVE_INPUT )   
+        {
+            bestDisplayMode.RefreshRate = pDeviceSettingsIn->pp.FullScreen_RefreshRateInHz;
+        }
+        else 
+        {
+            UINT refreshRateMatch;
+            if( pMatchOptions->eRefreshRate == DXUTMT_CLOSEST_TO_INPUT )   
+            {
+                refreshRateMatch = pDeviceSettingsIn->pp.FullScreen_RefreshRateInHz;
+            }
+            else // if( pMatchOptions->eRefreshRate == DXUTMT_IGNORE_INPUT )   
+            {
+                refreshRateMatch = adapterDesktopDisplayMode.RefreshRate;
+            }
+
+            bestDisplayMode.RefreshRate = 0;
+
+            if( refreshRateMatch != 0 )
+            {
+                int nBestRefreshRanking = 100000;
+                CGrowableArray<D3DDISPLAYMODE>* pDisplayModeList = &pBestDeviceSettingsCombo->pAdapterInfo->displayModeList;
+                for( int iDisplayMode=0; iDisplayMode<pDisplayModeList->GetSize(); iDisplayMode++ )
+                {
+                    D3DDISPLAYMODE displayMode = pDisplayModeList->GetAt(iDisplayMode);                
+                    if( displayMode.Format != pBestDeviceSettingsCombo->AdapterFormat || 
+                        displayMode.Height != bestDisplayMode.Height ||
+                        displayMode.Width != bestDisplayMode.Width )
+                        continue; // Skip display modes that don't match 
+
+                    // Find the delta between the current refresh rate and the optimal refresh rate 
+                    int nCurRanking = abs((int)displayMode.RefreshRate - (int)refreshRateMatch);
+                                        
+                    if( nCurRanking < nBestRefreshRanking )
+                    {
+                        bestDisplayMode.RefreshRate = displayMode.RefreshRate;
+                        nBestRefreshRanking = nCurRanking;
+
+                        // Stop if perfect match found
+                        if( nBestRefreshRanking == 0 )
+                            break;
+                    }
+                }
+            }
+        }
+    }
+
+    //---------------------
+    // Present interval
+    //---------------------
+    UINT bestPresentInterval;
+    if( pMatchOptions->ePresentInterval == DXUTMT_PRESERVE_INPUT )   
+    {
+        bestPresentInterval = pDeviceSettingsIn->pp.PresentationInterval;
+    }
+    else if( pMatchOptions->ePresentInterval == DXUTMT_IGNORE_INPUT )   
+    {
+        // For windowed and fullscreen, default to D3DPRESENT_INTERVAL_DEFAULT
+        // which will wait for the vertical retrace period to prevent tearing.
+        // For benchmarking, use D3DPRESENT_INTERVAL_DEFAULT  which will
+        // will wait not for the vertical retrace period but may introduce tearing.
+        bestPresentInterval = D3DPRESENT_INTERVAL_DEFAULT;
+    }
+    else // if( pMatchOptions->ePresentInterval == DXUTMT_CLOSEST_TO_INPUT )   
+    {
+        if( pBestDeviceSettingsCombo->presentIntervalList.Contains( pDeviceSettingsIn->pp.PresentationInterval ) )
+        {
+            bestPresentInterval = pDeviceSettingsIn->pp.PresentationInterval;
+        }
+        else
+        {
+            bestPresentInterval = D3DPRESENT_INTERVAL_DEFAULT;
+        }
+    }
+
+    // Fill the device settings struct
+    ZeroMemory( pValidDeviceSettings, sizeof(DXUTDeviceSettings) );
+    pValidDeviceSettings->AdapterOrdinal                 = pBestDeviceSettingsCombo->AdapterOrdinal;
+    pValidDeviceSettings->DeviceType                     = pBestDeviceSettingsCombo->DeviceType;
+    pValidDeviceSettings->AdapterFormat                  = pBestDeviceSettingsCombo->AdapterFormat;
+    pValidDeviceSettings->BehaviorFlags                  = dwBestBehaviorFlags;
+    pValidDeviceSettings->pp.BackBufferWidth             = bestDisplayMode.Width;
+    pValidDeviceSettings->pp.BackBufferHeight            = bestDisplayMode.Height;
+    pValidDeviceSettings->pp.BackBufferFormat            = pBestDeviceSettingsCombo->BackBufferFormat;
+    pValidDeviceSettings->pp.BackBufferCount             = bestBackBufferCount;
+    pValidDeviceSettings->pp.MultiSampleType             = bestMultiSampleType;  
+    pValidDeviceSettings->pp.MultiSampleQuality          = bestMultiSampleQuality;
+    pValidDeviceSettings->pp.SwapEffect                  = bestSwapEffect;
+    pValidDeviceSettings->pp.hDeviceWindow               = pBestDeviceSettingsCombo->Windowed ? DXUTGetHWNDDeviceWindowed() : DXUTGetHWNDDeviceFullScreen();
+    pValidDeviceSettings->pp.Windowed                    = pBestDeviceSettingsCombo->Windowed;
+    pValidDeviceSettings->pp.EnableAutoDepthStencil      = bestEnableAutoDepthStencil;  
+    pValidDeviceSettings->pp.AutoDepthStencilFormat      = bestDepthStencilFormat;
+    pValidDeviceSettings->pp.Flags                       = dwBestFlags;                   
+    pValidDeviceSettings->pp.FullScreen_RefreshRateInHz  = bestDisplayMode.RefreshRate;
+    pValidDeviceSettings->pp.PresentationInterval        = bestPresentInterval;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal helper function to find the closest allowed display mode to the optimal 
+//--------------------------------------------------------------------------------------
+HRESULT DXUTFindValidResolution( CD3DEnumDeviceSettingsCombo* pBestDeviceSettingsCombo, 
+                                D3DDISPLAYMODE displayModeIn, D3DDISPLAYMODE* pBestDisplayMode )
+{
+    D3DDISPLAYMODE bestDisplayMode;
+    ZeroMemory( &bestDisplayMode, sizeof(D3DDISPLAYMODE) );
+    
+    if( pBestDeviceSettingsCombo->Windowed )
+    {
+        // In windowed mode, all resolutions are valid but restritions still apply 
+        // on the size of the window.  See DXUTChangeDevice() for details
+        *pBestDisplayMode = displayModeIn;
+    }
+    else
+    {
+        int nBestRanking = 100000;
+        int nCurRanking;
+        CGrowableArray<D3DDISPLAYMODE>* pDisplayModeList = &pBestDeviceSettingsCombo->pAdapterInfo->displayModeList;
+        for( int iDisplayMode=0; iDisplayMode<pDisplayModeList->GetSize(); iDisplayMode++ )
+        {
+            D3DDISPLAYMODE displayMode = pDisplayModeList->GetAt(iDisplayMode);
+
+            // Skip display modes that don't match the combo's adapter format
+            if( displayMode.Format != pBestDeviceSettingsCombo->AdapterFormat )
+                continue;
+
+            // Find the delta between the current width/height and the optimal width/height
+            nCurRanking = abs((int)displayMode.Width - (int)displayModeIn.Width) + 
+                          abs((int)displayMode.Height- (int)displayModeIn.Height);
+
+            if( nCurRanking < nBestRanking )
+            {
+                bestDisplayMode = displayMode;
+                nBestRanking = nCurRanking;
+
+                // Stop if perfect match found
+                if( nBestRanking == 0 )
+                    break;
+            }
+        }
+
+        if( bestDisplayMode.Width == 0 )
+        {
+            *pBestDisplayMode = displayModeIn;
+            return E_FAIL; // No valid display modes found
+        }
+
+        *pBestDisplayMode = bestDisplayMode;
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal helper function to return the adapter format from the first device settings 
+// combo that matches the passed adapter ordinal, device type, backbuffer format, and windowed.  
+//--------------------------------------------------------------------------------------
+HRESULT DXUTFindAdapterFormat( UINT AdapterOrdinal, D3DDEVTYPE DeviceType, D3DFORMAT BackBufferFormat, 
+                               BOOL Windowed, D3DFORMAT* pAdapterFormat )
+{
+    CD3DEnumeration* pd3dEnum = DXUTPrepareEnumerationObject();
+    CD3DEnumDeviceInfo* pDeviceInfo = pd3dEnum->GetDeviceInfo( AdapterOrdinal, DeviceType );
+    if( pDeviceInfo )
+    {
+        for( int iDeviceCombo=0; iDeviceCombo<pDeviceInfo->deviceSettingsComboList.GetSize(); iDeviceCombo++ )
+        {
+            CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = pDeviceInfo->deviceSettingsComboList.GetAt(iDeviceCombo);
+            if( pDeviceSettingsCombo->BackBufferFormat == BackBufferFormat &&
+                pDeviceSettingsCombo->Windowed == Windowed )
+            {
+                // Return the adapter format from the first match
+                *pAdapterFormat = pDeviceSettingsCombo->AdapterFormat;
+                return S_OK;
+            }
+        }
+    }
+
+    *pAdapterFormat = BackBufferFormat;
+    return E_FAIL;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Change to a Direct3D device created from the device settings or passed in.
+// The framework will only reset if the device is similar to the previous device 
+// otherwise it will cleanup the previous device (if there is one) and recreate the 
+// scene using the app's device callbacks.
+//--------------------------------------------------------------------------------------
+HRESULT DXUTChangeDevice( DXUTDeviceSettings* pNewDeviceSettings, IDirect3DDevice9* pd3dDeviceFromApp, bool bForceRecreate, bool bClipWindowToSingleAdapter )
+{
+    HRESULT hr;
+    DXUTDeviceSettings* pOldDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+
+    if( DXUTGetD3DObject() == NULL )
+        return S_FALSE;
+
+    // Make a copy of the pNewDeviceSettings on the heap
+    DXUTDeviceSettings* pNewDeviceSettingsOnHeap = new DXUTDeviceSettings;
+    if( pNewDeviceSettingsOnHeap == NULL )
+        return E_OUTOFMEMORY;
+    memcpy( pNewDeviceSettingsOnHeap, pNewDeviceSettings, sizeof(DXUTDeviceSettings) );
+    pNewDeviceSettings = pNewDeviceSettingsOnHeap;
+
+    // If the ModifyDeviceSettings callback is non-NULL, then call it to let the app 
+    // change the settings or reject the device change by returning false.
+    LPDXUTCALLBACKMODIFYDEVICESETTINGS pCallbackModifyDeviceSettings = GetDXUTState().GetModifyDeviceSettingsFunc();
+    if( pCallbackModifyDeviceSettings )
+    {
+        D3DCAPS9 caps;
+        IDirect3D9* pD3D = DXUTGetD3DObject();
+        pD3D->GetDeviceCaps( pNewDeviceSettings->AdapterOrdinal, pNewDeviceSettings->DeviceType, &caps );
+
+        bool bContinue = pCallbackModifyDeviceSettings( pNewDeviceSettings, &caps, GetDXUTState().GetModifyDeviceSettingsFuncUserContext() );
+        if( !bContinue )
+        {
+            // The app rejected the device change by returning false, so just use the current device if there is one.
+            if( pOldDeviceSettings == NULL )
+                DXUTDisplayErrorMessage( DXUTERR_NOCOMPATIBLEDEVICES );
+            SAFE_DELETE( pNewDeviceSettings );
+            return E_ABORT;
+        }
+        if( GetDXUTState().GetD3D() == NULL )
+        {
+            SAFE_DELETE( pNewDeviceSettings );
+            return S_FALSE;
+        }
+    }
+
+    GetDXUTState().SetCurrentDeviceSettings( pNewDeviceSettings );
+
+    DXUTPause( true, true );
+
+    // When a WM_SIZE message is received, it calls DXUTCheckForWindowSizeChange().
+    // A WM_SIZE message might be sent when adjusting the window, so tell 
+    // DXUTCheckForWindowSizeChange() to ignore size changes temporarily
+    GetDXUTState().SetIgnoreSizeChange( true );
+
+    // Update thread safety on/off depending on Direct3D device's thread safety
+    g_bThreadSafe = ((pNewDeviceSettings->BehaviorFlags & D3DCREATE_MULTITHREADED) != 0 );
+
+    // Only apply the cmd line overrides if this is the first device created
+    // and DXUTSetDevice() isn't used
+    if( NULL == pd3dDeviceFromApp && NULL == pOldDeviceSettings )
+    {
+        // Updates the device settings struct based on the cmd line args.  
+        // Warning: if the device doesn't support these new settings then CreateDevice() will fail.
+        DXUTUpdateDeviceSettingsWithOverrides( pNewDeviceSettings );
+    }
+
+    // Take note if the backbuffer width & height are 0 now as they will change after pd3dDevice->Reset()
+    bool bKeepCurrentWindowSize = false;
+    if( pNewDeviceSettings->pp.BackBufferWidth == 0 && pNewDeviceSettings->pp.BackBufferHeight == 0 )
+        bKeepCurrentWindowSize = true;
+
+    //////////////////////////
+    // Before reset
+    /////////////////////////
+    if( pNewDeviceSettings->pp.Windowed )
+    {
+        // Going to windowed mode
+
+        if( pOldDeviceSettings && !pOldDeviceSettings->pp.Windowed )
+        {
+            // Going from fullscreen -> windowed
+            GetDXUTState().SetFullScreenBackBufferWidthAtModeChange( pOldDeviceSettings->pp.BackBufferWidth );
+            GetDXUTState().SetFullScreenBackBufferHeightAtModeChange( pOldDeviceSettings->pp.BackBufferHeight );
+
+            // Restore windowed mode style
+            SetWindowLong( DXUTGetHWNDDeviceWindowed(), GWL_STYLE, GetDXUTState().GetWindowedStyleAtModeChange() );
+        }
+
+        // If different device windows are used for windowed mode and fullscreen mode,
+        // hide the fullscreen window so that it doesn't obscure the screen.
+        if( DXUTGetHWNDDeviceFullScreen() != DXUTGetHWNDDeviceWindowed() )
+            ShowWindow( DXUTGetHWNDDeviceFullScreen(), SW_HIDE );
+
+        // If using the same window for windowed and fullscreen mode, reattach menu if one exists
+        if( DXUTGetHWNDDeviceFullScreen() == DXUTGetHWNDDeviceWindowed() )
+        {
+            if( GetDXUTState().GetMenu() != NULL )
+                SetMenu( DXUTGetHWNDDeviceWindowed(), GetDXUTState().GetMenu() );
+        }
+    }
+    else 
+    {
+        // Going to fullscreen mode
+
+        if( pOldDeviceSettings == NULL || (pOldDeviceSettings && pOldDeviceSettings->pp.Windowed) )
+        {
+            // Transistioning to full screen mode from a standard window so 
+            // save current window position/size/style now in case the user toggles to windowed mode later 
+            WINDOWPLACEMENT* pwp = GetDXUTState().GetWindowedPlacement();
+            ZeroMemory( pwp, sizeof(WINDOWPLACEMENT) );
+            pwp->length = sizeof(WINDOWPLACEMENT);
+            GetWindowPlacement( DXUTGetHWNDDeviceWindowed(), pwp );
+            bool bIsTopmost = ( (GetWindowLong(DXUTGetHWNDDeviceWindowed(),GWL_EXSTYLE) & WS_EX_TOPMOST) != 0); 
+            GetDXUTState().SetTopmostWhileWindowed( bIsTopmost );
+            DWORD dwStyle = GetWindowLong( DXUTGetHWNDDeviceWindowed(), GWL_STYLE );
+            dwStyle &= ~WS_MAXIMIZE & ~WS_MINIMIZE; // remove minimize/maximize style
+            GetDXUTState().SetWindowedStyleAtModeChange( dwStyle );
+            if( pOldDeviceSettings )
+            {
+                GetDXUTState().SetWindowBackBufferWidthAtModeChange( pOldDeviceSettings->pp.BackBufferWidth );
+                GetDXUTState().SetWindowBackBufferHeightAtModeChange( pOldDeviceSettings->pp.BackBufferHeight );
+            }
+        }
+
+        // Hide the window to avoid animation of blank windows
+        ShowWindow( DXUTGetHWNDDeviceFullScreen(), SW_HIDE );
+
+        // Set FS window style
+        SetWindowLong( DXUTGetHWNDDeviceFullScreen(), GWL_STYLE, WS_POPUP|WS_SYSMENU );
+
+        // If using the same window for windowed and fullscreen mode, save and remove menu 
+        if( DXUTGetHWNDDeviceFullScreen() == DXUTGetHWNDDeviceWindowed() )
+        {
+            HMENU hMenu = GetMenu( DXUTGetHWNDDeviceFullScreen() );
+            GetDXUTState().SetMenu( hMenu );
+            SetMenu( DXUTGetHWNDDeviceFullScreen(), NULL );
+        }
+      
+        WINDOWPLACEMENT wpFullscreen;
+        ZeroMemory( &wpFullscreen, sizeof(WINDOWPLACEMENT) );
+        wpFullscreen.length = sizeof(WINDOWPLACEMENT);
+        GetWindowPlacement( DXUTGetHWNDDeviceFullScreen(), &wpFullscreen );
+        if( (wpFullscreen.flags & WPF_RESTORETOMAXIMIZED) != 0 )
+        {
+            // Restore the window to normal if the window was maximized then minimized.  This causes the 
+            // WPF_RESTORETOMAXIMIZED flag to be set which will cause SW_RESTORE to restore the 
+            // window from minimized to maxmized which isn't what we want
+            wpFullscreen.flags &= ~WPF_RESTORETOMAXIMIZED;
+            wpFullscreen.showCmd = SW_RESTORE;
+            SetWindowPlacement( DXUTGetHWNDDeviceFullScreen(), &wpFullscreen );
+        }
+    }
+
+    // If AdapterOrdinal and DeviceType are the same, we can just do a Reset().
+    // If they've changed, we need to do a complete device tear down/rebuild.
+    // Also only allow a reset if pd3dDevice is the same as the current device 
+    if( !bForceRecreate && 
+        (pd3dDeviceFromApp == NULL || pd3dDeviceFromApp == DXUTGetD3DDevice()) && 
+        DXUTGetD3DDevice() &&
+        pOldDeviceSettings &&
+        pOldDeviceSettings->AdapterOrdinal == pNewDeviceSettings->AdapterOrdinal &&
+        pOldDeviceSettings->DeviceType == pNewDeviceSettings->DeviceType &&
+        pOldDeviceSettings->BehaviorFlags == pNewDeviceSettings->BehaviorFlags )
+    {
+        // Reset the Direct3D device and call the app's device callbacks
+        hr = DXUTReset3DEnvironment();
+        if( FAILED(hr) )
+        {
+            if( D3DERR_DEVICELOST == hr )
+            {
+                // The device is lost, just mark it as so and continue on with 
+                // capturing the state and resizing the window/etc.
+                GetDXUTState().SetDeviceLost( true );
+            }
+            else if( DXUTERR_RESETTINGDEVICEOBJECTS == hr || 
+                     DXUTERR_MEDIANOTFOUND == hr )
+            {
+                // Something bad happened in the app callbacks
+                SAFE_DELETE( pOldDeviceSettings );
+                DXUTDisplayErrorMessage( hr );
+                DXUTShutdown();
+                return hr;
+            }
+            else // DXUTERR_RESETTINGDEVICE
+            {
+                // Reset failed and the device wasn't lost and it wasn't the apps fault, 
+                // so recreate the device to try to recover
+                GetDXUTState().SetCurrentDeviceSettings( pOldDeviceSettings );
+                if( FAILED( DXUTChangeDevice( pNewDeviceSettings, pd3dDeviceFromApp, true, bClipWindowToSingleAdapter ) ) )
+                {
+                    // If that fails, then shutdown
+                    SAFE_DELETE( pOldDeviceSettings );
+                    DXUTShutdown();
+                    return DXUTERR_CREATINGDEVICE;
+                }
+                else
+                {
+                    SAFE_DELETE( pOldDeviceSettings );
+                    return S_OK;
+                }
+            }
+        }
+    }
+    else
+    {
+        // Cleanup if not first device created
+        if( pOldDeviceSettings )
+            DXUTCleanup3DEnvironment( false );
+
+        // Create the D3D device and call the app's device callbacks
+        hr = DXUTCreate3DEnvironment( pd3dDeviceFromApp );
+        if( FAILED(hr) )
+        {
+            SAFE_DELETE( pOldDeviceSettings );
+            DXUTCleanup3DEnvironment();
+            DXUTDisplayErrorMessage( hr );
+            DXUTPause( false, false );
+            GetDXUTState().SetIgnoreSizeChange( false );
+            return hr;
+        }
+    }
+
+    // Enable/disable StickKeys shortcut, ToggleKeys shortcut, FilterKeys shortcut, and Windows key 
+    // to prevent accidental task switching
+    DXUTAllowShortcutKeys( ( pNewDeviceSettings->pp.Windowed  ) ? GetDXUTState().GetAllowShortcutKeysWhenWindowed() : GetDXUTState().GetAllowShortcutKeysWhenFullscreen() );
+
+    IDirect3D9* pD3D = DXUTGetD3DObject();
+    HMONITOR hAdapterMonitor = pD3D->GetAdapterMonitor( pNewDeviceSettings->AdapterOrdinal );
+    GetDXUTState().SetAdapterMonitor( hAdapterMonitor );
+
+    // Update the device stats text
+    DXUTUpdateStaticFrameStats();
+
+    if( pOldDeviceSettings && !pOldDeviceSettings->pp.Windowed && pNewDeviceSettings->pp.Windowed )
+    {
+        // Going from fullscreen -> windowed
+
+        // Restore the show state, and positions/size of the window to what it was
+        // It is important to adjust the window size 
+        // after resetting the device rather than beforehand to ensure 
+        // that the monitor resolution is correct and does not limit the size of the new window.
+        WINDOWPLACEMENT* pwp = GetDXUTState().GetWindowedPlacement();
+        SetWindowPlacement( DXUTGetHWNDDeviceWindowed(), pwp );
+
+        // Also restore the z-order of window to previous state
+        HWND hWndInsertAfter = GetDXUTState().GetTopmostWhileWindowed() ? HWND_TOPMOST : HWND_NOTOPMOST;
+        SetWindowPos( DXUTGetHWNDDeviceWindowed(), hWndInsertAfter, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOREDRAW|SWP_NOSIZE );
+    }
+
+    // Check to see if the window needs to be resized.  
+    // Handle cases where the window is minimized and maxmimized as well.
+    bool bNeedToResize = false;
+    if( pNewDeviceSettings->pp.Windowed && // only resize if in windowed mode
+        !bKeepCurrentWindowSize )          // only resize if pp.BackbufferWidth/Height were not 0
+    {
+        UINT nClientWidth;
+        UINT nClientHeight;    
+        if( IsIconic(DXUTGetHWNDDeviceWindowed()) )
+        {
+            // Window is currently minimized. To tell if it needs to resize, 
+            // get the client rect of window when its restored the 
+            // hard way using GetWindowPlacement()
+            WINDOWPLACEMENT wp;
+            ZeroMemory( &wp, sizeof(WINDOWPLACEMENT) );
+            wp.length = sizeof(WINDOWPLACEMENT);
+            GetWindowPlacement( DXUTGetHWNDDeviceWindowed(), &wp );
+
+            if( (wp.flags & WPF_RESTORETOMAXIMIZED) != 0 && wp.showCmd == SW_SHOWMINIMIZED )
+            {
+                // WPF_RESTORETOMAXIMIZED means that when the window is restored it will
+                // be maximized.  So maximize the window temporarily to get the client rect 
+                // when the window is maximized.  GetSystemMetrics( SM_CXMAXIMIZED ) will give this 
+                // information if the window is on the primary but this will work on multimon.
+                ShowWindow( DXUTGetHWNDDeviceWindowed(), SW_RESTORE );
+                RECT rcClient;
+                GetClientRect( DXUTGetHWNDDeviceWindowed(), &rcClient );
+                nClientWidth  = (UINT)(rcClient.right - rcClient.left);
+                nClientHeight = (UINT)(rcClient.bottom - rcClient.top);
+                ShowWindow( DXUTGetHWNDDeviceWindowed(), SW_MINIMIZE );
+            }
+            else
+            {
+                // Use wp.rcNormalPosition to get the client rect, but wp.rcNormalPosition 
+                // includes the window frame so subtract it
+                RECT rcFrame = {0};
+                AdjustWindowRect( &rcFrame, GetDXUTState().GetWindowedStyleAtModeChange(), GetDXUTState().GetMenu() != NULL );
+                LONG nFrameWidth = rcFrame.right - rcFrame.left;
+                LONG nFrameHeight = rcFrame.bottom - rcFrame.top;
+                nClientWidth  = (UINT)(wp.rcNormalPosition.right - wp.rcNormalPosition.left - nFrameWidth);
+                nClientHeight = (UINT)(wp.rcNormalPosition.bottom - wp.rcNormalPosition.top - nFrameHeight);
+            }
+        }
+        else
+        {
+            // Window is restored or maximized so just get its client rect
+            RECT rcClient;
+            GetClientRect( DXUTGetHWNDDeviceWindowed(), &rcClient );
+            nClientWidth  = (UINT)(rcClient.right - rcClient.left);
+            nClientHeight = (UINT)(rcClient.bottom - rcClient.top);
+        }
+
+        // Now that we know the client rect, compare it against the back buffer size
+        // to see if the client rect is already the right size
+        if( nClientWidth  != pNewDeviceSettings->pp.BackBufferWidth ||
+            nClientHeight != pNewDeviceSettings->pp.BackBufferHeight )
+        {
+            bNeedToResize = true;
+        }       
+
+        if( bClipWindowToSingleAdapter && !IsIconic(DXUTGetHWNDDeviceWindowed()) )
+        {
+            // Get the rect of the monitor attached to the adapter
+            MONITORINFO miAdapter;
+            miAdapter.cbSize = sizeof(MONITORINFO);
+            HMONITOR hAdapterMonitor = DXUTGetD3DObject()->GetAdapterMonitor( pNewDeviceSettings->AdapterOrdinal );
+            DXUTGetMonitorInfo( hAdapterMonitor, &miAdapter );
+            HMONITOR hWindowMonitor = DXUTMonitorFromWindow( DXUTGetHWND(), MONITOR_DEFAULTTOPRIMARY );
+
+            // Get the rect of the window
+            RECT rcWindow;
+            GetWindowRect( DXUTGetHWNDDeviceWindowed(), &rcWindow );
+
+            // Check if the window rect is fully inside the adapter's vitural screen rect
+            if( (rcWindow.left   < miAdapter.rcWork.left  ||
+                 rcWindow.right  > miAdapter.rcWork.right ||
+                 rcWindow.top    < miAdapter.rcWork.top   ||
+                 rcWindow.bottom > miAdapter.rcWork.bottom) )
+            {
+                if( hWindowMonitor == hAdapterMonitor && IsZoomed(DXUTGetHWNDDeviceWindowed()) )
+                {
+                    // If the window is maximized and on the same monitor as the adapter, then 
+                    // no need to clip to single adapter as the window is already clipped 
+                    // even though the rcWindow rect is outside of the miAdapter.rcWork
+                }
+                else
+                {
+                    bNeedToResize = true;
+                }
+            }
+        }
+    }
+
+    // Only resize window if needed 
+    if( bNeedToResize ) 
+    {
+        // Need to resize, so if window is maximized or minimized then restore the window
+        if( IsIconic(DXUTGetHWNDDeviceWindowed()) ) 
+            ShowWindow( DXUTGetHWNDDeviceWindowed(), SW_RESTORE );
+        if( IsZoomed(DXUTGetHWNDDeviceWindowed()) ) // doing the IsIconic() check first also handles the WPF_RESTORETOMAXIMIZED case
+            ShowWindow( DXUTGetHWNDDeviceWindowed(), SW_RESTORE );
+
+        if( bClipWindowToSingleAdapter )
+        {
+            // Get the rect of the monitor attached to the adapter
+            MONITORINFO miAdapter;
+            miAdapter.cbSize = sizeof(MONITORINFO);
+            DXUTGetMonitorInfo( DXUTGetD3DObject()->GetAdapterMonitor( pNewDeviceSettings->AdapterOrdinal ), &miAdapter );
+
+            // Get the rect of the monitor attached to the window
+            MONITORINFO miWindow;
+            miWindow.cbSize = sizeof(MONITORINFO);
+            DXUTGetMonitorInfo( DXUTMonitorFromWindow( DXUTGetHWND(), MONITOR_DEFAULTTOPRIMARY ), &miWindow );
+
+            // Do something reasonable if the BackBuffer size is greater than the monitor size
+            int nAdapterMonitorWidth = miAdapter.rcWork.right - miAdapter.rcWork.left;
+            int nAdapterMonitorHeight = miAdapter.rcWork.bottom - miAdapter.rcWork.top;
+
+            int nClientWidth = pNewDeviceSettings->pp.BackBufferWidth;
+            int nClientHeight = pNewDeviceSettings->pp.BackBufferHeight;
+
+            // Get the rect of the window
+            RECT rcWindow;
+            GetWindowRect( DXUTGetHWNDDeviceWindowed(), &rcWindow );
+
+            // Make a window rect with a client rect that is the same size as the backbuffer
+            RECT rcResizedWindow;
+            rcResizedWindow.left = 0;
+            rcResizedWindow.right = nClientWidth;
+            rcResizedWindow.top = 0;
+            rcResizedWindow.bottom = nClientHeight;
+            AdjustWindowRect( &rcResizedWindow, GetWindowLong( DXUTGetHWNDDeviceWindowed(), GWL_STYLE ), GetDXUTState().GetMenu() != NULL );
+
+            int nWindowWidth = rcResizedWindow.right - rcResizedWindow.left;
+            int nWindowHeight = rcResizedWindow.bottom - rcResizedWindow.top;
+
+            if( nWindowWidth > nAdapterMonitorWidth )
+                nWindowWidth = (nAdapterMonitorWidth - 0);
+            if( nWindowHeight > nAdapterMonitorHeight )
+                nWindowHeight = (nAdapterMonitorHeight - 0);
+
+            if( rcResizedWindow.left < miAdapter.rcWork.left ||
+                rcResizedWindow.top < miAdapter.rcWork.top ||
+                rcResizedWindow.right > miAdapter.rcWork.right ||
+                rcResizedWindow.bottom > miAdapter.rcWork.bottom )
+            {
+                int nWindowOffsetX = (nAdapterMonitorWidth - nWindowWidth) / 2;
+                int nWindowOffsetY = (nAdapterMonitorHeight - nWindowHeight) / 2;
+
+                rcResizedWindow.left = miAdapter.rcWork.left + nWindowOffsetX;
+                rcResizedWindow.top = miAdapter.rcWork.top + nWindowOffsetY;
+                rcResizedWindow.right = miAdapter.rcWork.left + nWindowOffsetX + nWindowWidth;
+                rcResizedWindow.bottom = miAdapter.rcWork.top + nWindowOffsetY + nWindowHeight;
+            }
+
+            // Resize the window.  It is important to adjust the window size 
+            // after resetting the device rather than beforehand to ensure 
+            // that the monitor resolution is correct and does not limit the size of the new window.
+            SetWindowPos( DXUTGetHWNDDeviceWindowed(), 0, rcResizedWindow.left, rcResizedWindow.top, nWindowWidth, nWindowHeight, SWP_NOZORDER );
+        }        
+        else
+        {      
+            // Make a window rect with a client rect that is the same size as the backbuffer
+            RECT rcWindow = {0};
+            rcWindow.right = (long)(pNewDeviceSettings->pp.BackBufferWidth);
+            rcWindow.bottom = (long)(pNewDeviceSettings->pp.BackBufferHeight);
+            AdjustWindowRect( &rcWindow, GetWindowLong( DXUTGetHWNDDeviceWindowed(), GWL_STYLE ), GetDXUTState().GetMenu() != NULL );
+
+            // Resize the window.  It is important to adjust the window size 
+            // after resetting the device rather than beforehand to ensure 
+            // that the monitor resolution is correct and does not limit the size of the new window.
+            int cx = (int)(rcWindow.right - rcWindow.left);
+            int cy = (int)(rcWindow.bottom - rcWindow.top);
+            SetWindowPos( DXUTGetHWNDDeviceWindowed(), 0, 0, 0, cx, cy, SWP_NOZORDER|SWP_NOMOVE );
+        }
+
+        // Its possible that the new window size is not what we asked for.  
+        // No window can be sized larger than the desktop, so see see if the Windows OS resized the 
+        // window to something smaller to fit on the desktop.  Also if WM_GETMINMAXINFO
+        // will put a limit on the smallest/largest window size.
+        RECT rcClient;
+        GetClientRect( DXUTGetHWNDDeviceWindowed(), &rcClient );
+        UINT nClientWidth  = (UINT)(rcClient.right - rcClient.left);
+        UINT nClientHeight = (UINT)(rcClient.bottom - rcClient.top);
+        if( nClientWidth  != pNewDeviceSettings->pp.BackBufferWidth ||
+            nClientHeight != pNewDeviceSettings->pp.BackBufferHeight )
+        {
+            // If its different, then resize the backbuffer again.  This time create a backbuffer that matches the 
+            // client rect of the current window w/o resizing the window.
+            DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+            deviceSettings.pp.BackBufferWidth  = 0; 
+            deviceSettings.pp.BackBufferHeight = 0;
+            hr = DXUTChangeDevice( &deviceSettings, NULL, false, bClipWindowToSingleAdapter );
+            if( FAILED( hr ) )
+            {
+                SAFE_DELETE( pOldDeviceSettings );
+                DXUTCleanup3DEnvironment();
+                DXUTPause( false, false );
+                GetDXUTState().SetIgnoreSizeChange( false );
+                return hr;
+            }
+        }
+    }
+
+    // Make the window visible
+    if( !IsWindowVisible( DXUTGetHWND() ) )
+        ShowWindow( DXUTGetHWND(), SW_SHOW );
+
+    SAFE_DELETE( pOldDeviceSettings );
+    GetDXUTState().SetIgnoreSizeChange( false );
+    DXUTPause( false, false );
+    GetDXUTState().SetDeviceCreated( true );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Low level keyboard hook to disable Windows key to prevent accidental task switching.  
+//--------------------------------------------------------------------------------------
+LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam )
+{
+    if (nCode < 0 || nCode != HC_ACTION)  // do not process message 
+        return CallNextHookEx( GetDXUTState().GetKeyboardHook(), nCode, wParam, lParam); 
+
+    bool bEatKeystroke = false;
+    KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*)lParam;
+    switch (wParam) 
+    {
+        case WM_KEYDOWN:  
+        case WM_KEYUP:    
+        {
+            bEatKeystroke = ( !GetDXUTState().GetAllowShortcutKeys() && 
+                            (p->vkCode == VK_LWIN || p->vkCode == VK_RWIN) );
+            break;
+        }
+    }
+
+    if( bEatKeystroke )
+        return 1;
+    else
+        return CallNextHookEx( GetDXUTState().GetKeyboardHook(), nCode, wParam, lParam );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// Controls how DXUT behaves when fullscreen and windowed mode with regard to 
+// shortcut keys (Windows keys, StickyKeys shortcut, ToggleKeys shortcut, FilterKeys shortcut) 
+//--------------------------------------------------------------------------------------
+void DXUTSetShortcutKeySettings( bool bAllowWhenFullscreen, bool bAllowWhenWindowed )
+{
+    GetDXUTState().SetAllowShortcutKeysWhenWindowed( bAllowWhenWindowed );
+    GetDXUTState().SetAllowShortcutKeysWhenFullscreen( bAllowWhenFullscreen );
+
+    // DXUTInit() records initial accessibility states so don't change them until then
+    if( GetDXUTState().GetDXUTInited() )
+    {
+        if( DXUTIsWindowed() )
+            DXUTAllowShortcutKeys( GetDXUTState().GetAllowShortcutKeysWhenWindowed() );
+        else
+            DXUTAllowShortcutKeys( GetDXUTState().GetAllowShortcutKeysWhenFullscreen() );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Enables/disables Windows keys, and disables or restores the StickyKeys/ToggleKeys/FilterKeys 
+// shortcut to help prevent accidental task switching
+//--------------------------------------------------------------------------------------
+void DXUTAllowShortcutKeys( bool bAllowKeys )
+{
+    GetDXUTState().SetAllowShortcutKeys( bAllowKeys );
+
+    if( bAllowKeys )
+    {
+        // Restore StickyKeys/etc to original state and enable Windows key      
+        STICKYKEYS sk = GetDXUTState().GetStartupStickyKeys();
+        TOGGLEKEYS tk = GetDXUTState().GetStartupToggleKeys();
+        FILTERKEYS fk = GetDXUTState().GetStartupFilterKeys();
+        
+        SystemParametersInfo(SPI_SETSTICKYKEYS, sizeof(STICKYKEYS), &sk, 0);
+        SystemParametersInfo(SPI_SETTOGGLEKEYS, sizeof(TOGGLEKEYS), &tk, 0);
+        SystemParametersInfo(SPI_SETFILTERKEYS, sizeof(FILTERKEYS), &fk, 0);
+
+        // Remove the keyboard hoook when it isn't needed to prevent any slow down of other apps
+        if( GetDXUTState().GetKeyboardHook() )
+        {
+            UnhookWindowsHookEx( GetDXUTState().GetKeyboardHook() );
+            GetDXUTState().SetKeyboardHook( NULL );
+        }                
+    }
+    else
+    {
+        // Set low level keyboard hook if haven't already
+        if( GetDXUTState().GetKeyboardHook() == NULL )
+        {
+            // Set the low-level hook procedure.  Only works on Windows 2000 and above
+            OSVERSIONINFO OSVersionInfo;
+            OSVersionInfo.dwOSVersionInfoSize = sizeof(OSVersionInfo);
+            GetVersionEx(&OSVersionInfo);
+            if( OSVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT && OSVersionInfo.dwMajorVersion > 4 )
+            {
+                HHOOK hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(NULL), 0 );
+                GetDXUTState().SetKeyboardHook( hKeyboardHook );
+            }
+        }
+
+        // Disable StickyKeys/etc shortcuts but if the accessibility feature is on, 
+        // then leave the settings alone as its probably being usefully used
+
+        STICKYKEYS skOff = GetDXUTState().GetStartupStickyKeys();
+        if( (skOff.dwFlags & SKF_STICKYKEYSON) == 0 )
+        {
+            // Disable the hotkey and the confirmation
+            skOff.dwFlags &= ~SKF_HOTKEYACTIVE;
+            skOff.dwFlags &= ~SKF_CONFIRMHOTKEY;
+
+            SystemParametersInfo(SPI_SETSTICKYKEYS, sizeof(STICKYKEYS), &skOff, 0);
+        }
+
+        TOGGLEKEYS tkOff = GetDXUTState().GetStartupToggleKeys();
+        if( (tkOff.dwFlags & TKF_TOGGLEKEYSON) == 0 )
+        {
+            // Disable the hotkey and the confirmation
+            tkOff.dwFlags &= ~TKF_HOTKEYACTIVE;
+            tkOff.dwFlags &= ~TKF_CONFIRMHOTKEY;
+
+            SystemParametersInfo(SPI_SETTOGGLEKEYS, sizeof(TOGGLEKEYS), &tkOff, 0);
+        }
+
+        FILTERKEYS fkOff = GetDXUTState().GetStartupFilterKeys();
+        if( (fkOff.dwFlags & FKF_FILTERKEYSON) == 0 )
+        {
+            // Disable the hotkey and the confirmation
+            fkOff.dwFlags &= ~FKF_HOTKEYACTIVE;
+            fkOff.dwFlags &= ~FKF_CONFIRMHOTKEY;
+
+            SystemParametersInfo(SPI_SETFILTERKEYS, sizeof(FILTERKEYS), &fkOff, 0);
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Updates the device settings struct based on the cmd line args.  
+//--------------------------------------------------------------------------------------
+void DXUTUpdateDeviceSettingsWithOverrides( DXUTDeviceSettings* pDeviceSettings )
+{
+    if( GetDXUTState().GetOverrideAdapterOrdinal() != -1 )
+        pDeviceSettings->AdapterOrdinal = GetDXUTState().GetOverrideAdapterOrdinal();
+
+    if( GetDXUTState().GetOverrideFullScreen() )
+        pDeviceSettings->pp.Windowed = false;
+    if( GetDXUTState().GetOverrideWindowed() )
+        pDeviceSettings->pp.Windowed = true;
+
+    if( GetDXUTState().GetOverrideForceREF() )
+        pDeviceSettings->DeviceType = D3DDEVTYPE_REF;
+    else if( GetDXUTState().GetOverrideForceHAL() )
+        pDeviceSettings->DeviceType = D3DDEVTYPE_HAL;
+
+    if( GetDXUTState().GetOverrideWidth() != 0 )
+        pDeviceSettings->pp.BackBufferWidth = GetDXUTState().GetOverrideWidth();
+    if( GetDXUTState().GetOverrideHeight() != 0 )
+        pDeviceSettings->pp.BackBufferHeight = GetDXUTState().GetOverrideHeight();
+
+    if( GetDXUTState().GetOverrideForcePureHWVP() )
+    {
+        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+        pDeviceSettings->BehaviorFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
+        pDeviceSettings->BehaviorFlags |= D3DCREATE_PUREDEVICE;
+    }
+    else if( GetDXUTState().GetOverrideForceHWVP() )
+    {
+        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_PUREDEVICE;
+        pDeviceSettings->BehaviorFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
+    }
+    else if( GetDXUTState().GetOverrideForceSWVP() )
+    {
+        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_HARDWARE_VERTEXPROCESSING;
+        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_PUREDEVICE;
+        pDeviceSettings->BehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Creates the 3D environment
+//--------------------------------------------------------------------------------------
+HRESULT DXUTCreate3DEnvironment( IDirect3DDevice9* pd3dDeviceFromApp )
+{
+    HRESULT hr = S_OK;
+
+    IDirect3DDevice9* pd3dDevice = NULL;
+    DXUTDeviceSettings* pNewDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+
+    // Only create a Direct3D device if one hasn't been supplied by the app
+    if( pd3dDeviceFromApp == NULL )
+    {
+        // Try to create the device with the chosen settings
+        IDirect3D9* pD3D = DXUTGetD3DObject();
+        hr = pD3D->CreateDevice( pNewDeviceSettings->AdapterOrdinal, pNewDeviceSettings->DeviceType, 
+                                 DXUTGetHWNDFocus(), pNewDeviceSettings->BehaviorFlags,
+                                 &pNewDeviceSettings->pp, &pd3dDevice );
+        if( hr == D3DERR_DEVICELOST ) 
+        {
+            GetDXUTState().SetDeviceLost( true );
+            return S_OK;
+        }
+        else if( FAILED(hr) )
+        {
+            DXUT_ERR( L"CreateDevice", hr );
+            return DXUTERR_CREATINGDEVICE;
+        }
+    }
+    else
+    {
+        pd3dDeviceFromApp->AddRef();
+        pd3dDevice = pd3dDeviceFromApp;
+    }
+
+    GetDXUTState().SetD3DDevice( pd3dDevice );
+
+    // If switching to REF, set the exit code to 11.  If switching to HAL and exit code was 11, then set it back to 0.
+    if( pNewDeviceSettings->DeviceType == D3DDEVTYPE_REF && GetDXUTState().GetExitCode() == 0 )
+        GetDXUTState().SetExitCode(11);
+    else if( pNewDeviceSettings->DeviceType == D3DDEVTYPE_HAL && GetDXUTState().GetExitCode() == 11 )
+        GetDXUTState().SetExitCode(0);
+
+    // Update back buffer desc before calling app's device callbacks
+    DXUTUpdateBackBufferDesc();
+
+    // Setup cursor based on current settings (window/fullscreen mode, show cursor state, clip cursor state)
+    DXUTSetupCursor();
+
+    // Update GetDXUTState()'s copy of D3D caps 
+    D3DCAPS9* pd3dCaps = GetDXUTState().GetCaps();
+    DXUTGetD3DDevice()->GetDeviceCaps( pd3dCaps );
+
+    // Update the device stats text
+    CD3DEnumeration* pd3dEnum = DXUTPrepareEnumerationObject();
+    CD3DEnumAdapterInfo* pAdapterInfo = pd3dEnum->GetAdapterInfo( pNewDeviceSettings->AdapterOrdinal );
+    DXUTUpdateDeviceStats( pNewDeviceSettings->DeviceType, 
+                        pNewDeviceSettings->BehaviorFlags, 
+                        &pAdapterInfo->AdapterIdentifier );
+
+    // Call the resource cache created function
+    hr = DXUTGetGlobalResourceCache().OnCreateDevice( pd3dDevice );
+    if( FAILED(hr) )
+        return DXUT_ERR( L"OnCreateDevice", ( hr == DXUTERR_MEDIANOTFOUND ) ? DXUTERR_MEDIANOTFOUND : DXUTERR_CREATINGDEVICEOBJECTS );
+
+    // Call the app's device created callback if non-NULL
+    const D3DSURFACE_DESC* pbackBufferSurfaceDesc = DXUTGetBackBufferSurfaceDesc();
+    GetDXUTState().SetInsideDeviceCallback( true );
+    LPDXUTCALLBACKDEVICECREATED pCallbackDeviceCreated = GetDXUTState().GetDeviceCreatedFunc();
+    hr = S_OK;
+    if( pCallbackDeviceCreated != NULL )
+        hr = pCallbackDeviceCreated( DXUTGetD3DDevice(), pbackBufferSurfaceDesc, GetDXUTState().GetDeviceCreatedFuncUserContext() );
+    GetDXUTState().SetInsideDeviceCallback( false );
+    if( DXUTGetD3DDevice() == NULL ) // Handle DXUTShutdown from inside callback
+        return E_FAIL;
+    if( FAILED(hr) )  
+    {
+        DXUT_ERR( L"DeviceCreated callback", hr );        
+        return ( hr == DXUTERR_MEDIANOTFOUND ) ? DXUTERR_MEDIANOTFOUND : DXUTERR_CREATINGDEVICEOBJECTS;
+    }
+    GetDXUTState().SetDeviceObjectsCreated( true );
+
+    // Call the resource cache device reset function
+    hr = DXUTGetGlobalResourceCache().OnResetDevice( pd3dDevice );
+    if( FAILED(hr) )
+        return DXUT_ERR( L"OnResetDevice", DXUTERR_RESETTINGDEVICEOBJECTS );
+
+    // Call the app's device reset callback if non-NULL
+    GetDXUTState().SetInsideDeviceCallback( true );
+    LPDXUTCALLBACKDEVICERESET pCallbackDeviceReset = GetDXUTState().GetDeviceResetFunc();
+    hr = S_OK;
+    if( pCallbackDeviceReset != NULL )
+        hr = pCallbackDeviceReset( DXUTGetD3DDevice(), pbackBufferSurfaceDesc, GetDXUTState().GetDeviceResetFuncUserContext() );
+    GetDXUTState().SetInsideDeviceCallback( false );
+    if( DXUTGetD3DDevice() == NULL ) // Handle DXUTShutdown from inside callback
+        return E_FAIL;
+    if( FAILED(hr) )
+    {
+        DXUT_ERR( L"DeviceReset callback", hr );
+        return ( hr == DXUTERR_MEDIANOTFOUND ) ? DXUTERR_MEDIANOTFOUND : DXUTERR_RESETTINGDEVICEOBJECTS;
+    }
+    GetDXUTState().SetDeviceObjectsReset( true );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Resets the 3D environment by:
+//      - Calls the device lost callback 
+//      - Resets the device
+//      - Stores the back buffer description
+//      - Sets up the full screen Direct3D cursor if requested
+//      - Calls the device reset callback 
+//--------------------------------------------------------------------------------------
+HRESULT DXUTReset3DEnvironment()
+{
+    HRESULT hr;
+
+    IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+    assert( pd3dDevice != NULL );
+
+    // Call the app's device lost callback
+    if( GetDXUTState().GetDeviceObjectsReset() == true )
+    {
+        GetDXUTState().SetInsideDeviceCallback( true );
+        LPDXUTCALLBACKDEVICELOST pCallbackDeviceLost = GetDXUTState().GetDeviceLostFunc();
+        if( pCallbackDeviceLost != NULL )
+            pCallbackDeviceLost( GetDXUTState().GetDeviceLostFuncUserContext() );
+        GetDXUTState().SetDeviceObjectsReset( false );
+        GetDXUTState().SetInsideDeviceCallback( false );
+
+        // Call the resource cache device lost function
+        DXUTGetGlobalResourceCache().OnLostDevice();
+    }
+
+    // Reset the device
+    DXUTDeviceSettings* pDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+    hr = pd3dDevice->Reset( &pDeviceSettings->pp );
+    if( FAILED(hr) )  
+    {
+        if( hr == D3DERR_DEVICELOST )
+            return D3DERR_DEVICELOST; // Reset could legitimately fail if the device is lost
+        else
+            return DXUT_ERR( L"Reset", DXUTERR_RESETTINGDEVICE );
+    }
+
+    // Update back buffer desc before calling app's device callbacks
+    DXUTUpdateBackBufferDesc();
+
+    // Setup cursor based on current settings (window/fullscreen mode, show cursor state, clip cursor state)
+    DXUTSetupCursor();
+
+    hr = DXUTGetGlobalResourceCache().OnResetDevice( pd3dDevice );
+    if( FAILED(hr) )
+        return DXUT_ERR( L"OnResetDevice", DXUTERR_RESETTINGDEVICEOBJECTS );
+
+    // Call the app's OnDeviceReset callback
+    GetDXUTState().SetInsideDeviceCallback( true );
+    const D3DSURFACE_DESC* pbackBufferSurfaceDesc = DXUTGetBackBufferSurfaceDesc();
+    LPDXUTCALLBACKDEVICERESET pCallbackDeviceReset = GetDXUTState().GetDeviceResetFunc();
+    hr = S_OK;
+    if( pCallbackDeviceReset != NULL )
+        hr = pCallbackDeviceReset( pd3dDevice, pbackBufferSurfaceDesc, GetDXUTState().GetDeviceResetFuncUserContext() );
+    GetDXUTState().SetInsideDeviceCallback( false );
+    if( FAILED(hr) )
+    {
+        // If callback failed, cleanup
+        DXUT_ERR( L"DeviceResetCallback", hr );
+        if( hr != DXUTERR_MEDIANOTFOUND )
+            hr = DXUTERR_RESETTINGDEVICEOBJECTS;
+
+        GetDXUTState().SetInsideDeviceCallback( true );
+        LPDXUTCALLBACKDEVICELOST pCallbackDeviceLost = GetDXUTState().GetDeviceLostFunc();
+        if( pCallbackDeviceLost != NULL )
+            pCallbackDeviceLost( GetDXUTState().GetDeviceLostFuncUserContext() );
+        GetDXUTState().SetInsideDeviceCallback( false );
+
+        DXUTGetGlobalResourceCache().OnLostDevice();       
+        return hr;
+    }
+
+    // Success
+    GetDXUTState().SetDeviceObjectsReset( true );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Pauses time or rendering.  Keeps a ref count so pausing can be layered
+//--------------------------------------------------------------------------------------
+void DXUTPause( bool bPauseTime, bool bPauseRendering )
+{
+    int nPauseTimeCount = GetDXUTState().GetPauseTimeCount();
+    nPauseTimeCount += ( bPauseTime ? +1 : -1 );
+    if( nPauseTimeCount < 0 )
+        nPauseTimeCount = 0;
+    GetDXUTState().SetPauseTimeCount( nPauseTimeCount );
+
+    int nPauseRenderingCount = GetDXUTState().GetPauseRenderingCount();
+    nPauseRenderingCount += ( bPauseRendering ? +1 : -1 );
+    if( nPauseRenderingCount < 0 )
+        nPauseRenderingCount = 0;
+    GetDXUTState().SetPauseRenderingCount( nPauseRenderingCount );
+
+    if( nPauseTimeCount > 0 )
+    {
+        // Stop the scene from animating
+        DXUTGetGlobalTimer()->Stop();
+    }
+    else
+    {
+        // Restart the timer
+        DXUTGetGlobalTimer()->Start();
+    }
+
+    GetDXUTState().SetRenderingPaused( nPauseRenderingCount > 0 );
+    GetDXUTState().SetTimePaused( nPauseTimeCount > 0 );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Checks if the window client rect has changed and if it has, then reset the device
+//--------------------------------------------------------------------------------------
+void DXUTCheckForWindowSizeChange()
+{
+    // Skip the check for various reasons
+    if( GetDXUTState().GetIgnoreSizeChange() || 
+        !GetDXUTState().GetDeviceCreated() || 
+        !GetDXUTState().GetCurrentDeviceSettings()->pp.Windowed )
+        return;
+
+    RECT rcCurrentClient;
+    GetClientRect( DXUTGetHWND(), &rcCurrentClient );
+    
+    if( (UINT)rcCurrentClient.right != GetDXUTState().GetCurrentDeviceSettings()->pp.BackBufferWidth ||
+        (UINT)rcCurrentClient.bottom != GetDXUTState().GetCurrentDeviceSettings()->pp.BackBufferHeight )
+    {
+        // A new window size will require a new backbuffer size
+        // size, so the device must be reset and the D3D structures updated accordingly.
+
+        // Tell DXUTChangeDevice and D3D to size according to the HWND's client rect
+        DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+        deviceSettings.pp.BackBufferWidth  = 0; 
+        deviceSettings.pp.BackBufferHeight = 0;
+        DXUTChangeDevice( &deviceSettings, NULL, false, false );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Handles app's message loop and rendering when idle.  If DXUTCreateDevice*() or DXUTSetDevice() 
+// has not already been called, it will call DXUTCreateWindow() with the default parameters.  
+//--------------------------------------------------------------------------------------
+HRESULT DXUTMainLoop( HACCEL hAccel )
+{
+    HRESULT hr;
+
+    // Not allowed to call this from inside the device callbacks or reenter
+    if( GetDXUTState().GetInsideDeviceCallback() || GetDXUTState().GetInsideMainloop() )
+    {
+        if( (GetDXUTState().GetExitCode() == 0) || (GetDXUTState().GetExitCode() == 11) )
+            GetDXUTState().SetExitCode(1);
+        return DXUT_ERR_MSGBOX( L"DXUTMainLoop", E_FAIL );
+    }
+
+    GetDXUTState().SetInsideMainloop( true );
+
+    // If DXUTCreateDevice*() or DXUTSetDevice() has not already been called, 
+    // then call DXUTCreateDevice() with the default parameters.         
+    if( !GetDXUTState().GetDeviceCreated() ) 
+    {
+        if( GetDXUTState().GetDeviceCreateCalled() )
+        {
+            if( (GetDXUTState().GetExitCode() == 0) || (GetDXUTState().GetExitCode() == 11) )
+                GetDXUTState().SetExitCode(1);
+            return E_FAIL; // DXUTCreateDevice() must first succeed for this function to succeed
+        }
+
+        hr = DXUTCreateDevice();
+        if( FAILED(hr) )
+        {
+            if( (GetDXUTState().GetExitCode() == 0) || (GetDXUTState().GetExitCode() == 11) )
+                GetDXUTState().SetExitCode(1);
+            return hr;
+        }
+    }
+
+    HWND hWnd = DXUTGetHWND();
+
+    // DXUTInit() must have been called and succeeded for this function to proceed
+    // DXUTCreateWindow() or DXUTSetWindow() must have been called and succeeded for this function to proceed
+    // DXUTCreateDevice() or DXUTCreateDeviceFromSettings() or DXUTSetDevice() must have been called and succeeded for this function to proceed
+    if( !GetDXUTState().GetDXUTInited() || !GetDXUTState().GetWindowCreated() || !GetDXUTState().GetDeviceCreated() )
+    {
+        if( (GetDXUTState().GetExitCode() == 0) || (GetDXUTState().GetExitCode() == 11) )
+            GetDXUTState().SetExitCode(1);
+        return DXUT_ERR_MSGBOX( L"DXUTMainLoop", E_FAIL );
+    }
+
+    // Now we're ready to receive and process Windows messages.
+    bool bGotMsg;
+    MSG  msg;
+    msg.message = WM_NULL;
+    PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE );
+
+    while( WM_QUIT != msg.message  )
+    {
+        // Use PeekMessage() so we can use idle time to render the scene. 
+        bGotMsg = ( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) != 0 );
+
+        if( bGotMsg )
+        {
+            // Translate and dispatch the message
+            if( hAccel == NULL || hWnd == NULL || 
+                0 == TranslateAccelerator( hWnd, hAccel, &msg ) )
+            {
+                TranslateMessage( &msg );
+                DispatchMessage( &msg );
+            }
+        }
+        else
+        {
+            // Render a frame during idle time (no messages are waiting)
+            DXUTRender3DEnvironment();
+        }
+    }
+
+    // Cleanup the accelerator table
+    if( hAccel != NULL )
+        DestroyAcceleratorTable( hAccel );
+
+    GetDXUTState().SetInsideMainloop( false );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Render the 3D environment by:
+//      - Checking if the device is lost and trying to reset it if it is
+//      - Get the elapsed time since the last frame
+//      - Calling the app's framemove and render callback
+//      - Calling Present()
+//--------------------------------------------------------------------------------------
+void DXUTRender3DEnvironment()
+{
+    HRESULT hr;
+   
+    if( GetDXUTState().GetDeviceLost() || DXUTIsRenderingPaused() || !DXUTIsActive() )
+    {
+        // Window is minimized or paused so yield CPU time to other processes
+        Sleep( 50 ); 
+    }
+
+    IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+    if( NULL == pd3dDevice )
+    {
+        if( GetDXUTState().GetDeviceLost() )
+        {
+            DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+            DXUTChangeDevice( &deviceSettings, NULL, false, true );
+        }
+
+        return;
+    }
+ 
+    if( GetDXUTState().GetDeviceLost() && !GetDXUTState().GetRenderingPaused() )
+    {
+        // Test the cooperative level to see if it's okay to render
+        if( FAILED( hr = pd3dDevice->TestCooperativeLevel() ) )
+        {
+            if( D3DERR_DEVICELOST == hr )
+            {
+                // The device has been lost but cannot be reset at this time.  
+				// So wait until it can be reset.
+                return;
+            }
+
+            // If we are windowed, read the desktop format and 
+            // ensure that the Direct3D device is using the same format 
+            // since the user could have changed the desktop bitdepth 
+            if( DXUTIsWindowed() )
+            {
+                D3DDISPLAYMODE adapterDesktopDisplayMode;
+                IDirect3D9* pD3D = DXUTGetD3DObject();
+                DXUTDeviceSettings* pDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+                pD3D->GetAdapterDisplayMode( pDeviceSettings->AdapterOrdinal, &adapterDesktopDisplayMode );
+                if( pDeviceSettings->AdapterFormat != adapterDesktopDisplayMode.Format )
+                {
+                    DXUTMatchOptions matchOptions;
+                    matchOptions.eAdapterOrdinal     = DXUTMT_PRESERVE_INPUT;
+                    matchOptions.eDeviceType         = DXUTMT_PRESERVE_INPUT;
+                    matchOptions.eWindowed           = DXUTMT_PRESERVE_INPUT;
+                    matchOptions.eAdapterFormat      = DXUTMT_PRESERVE_INPUT;
+                    matchOptions.eVertexProcessing   = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eResolution         = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eBackBufferFormat   = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eBackBufferCount    = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eMultiSample        = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eSwapEffect         = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eDepthFormat        = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eStencilFormat      = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.ePresentFlags       = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.eRefreshRate        = DXUTMT_CLOSEST_TO_INPUT;
+                    matchOptions.ePresentInterval    = DXUTMT_CLOSEST_TO_INPUT;
+
+                    DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+                    deviceSettings.AdapterFormat = adapterDesktopDisplayMode.Format;
+
+                    hr = DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+                    if( FAILED(hr) ) // the call will fail if no valid devices were found
+                    {
+                        DXUTDisplayErrorMessage( DXUTERR_NOCOMPATIBLEDEVICES );
+                        DXUTShutdown();
+                    }
+
+                    // Change to a Direct3D device created from the new device settings.  
+                    // If there is an existing device, then either reset or recreate the scene
+                    hr = DXUTChangeDevice( &deviceSettings, NULL, false, false );
+                    if( FAILED(hr) )  
+                    {
+                        // If this fails, try to go fullscreen and if this fails also shutdown.
+                        if( FAILED(DXUTToggleFullScreen()) )
+                            DXUTShutdown();
+                    }
+
+                    return;
+                }
+            }
+
+            // Try to reset the device
+            if( FAILED( hr = DXUTReset3DEnvironment() ) )
+            {
+                if( D3DERR_DEVICELOST == hr )
+                {
+                    // The device was lost again, so continue waiting until it can be reset.
+                    return;
+                }
+                else if( DXUTERR_RESETTINGDEVICEOBJECTS == hr || 
+                         DXUTERR_MEDIANOTFOUND == hr )
+                {
+                    DXUTDisplayErrorMessage( hr );
+                    DXUTShutdown();
+                    return;
+                }
+                else
+                {
+                    // Reset failed, but the device wasn't lost so something bad happened, 
+                    // so recreate the device to try to recover
+                    DXUTDeviceSettings* pDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+                    if( FAILED( DXUTChangeDevice( pDeviceSettings, NULL, true, false ) ) )
+                    {
+                        DXUTShutdown();
+                        return;
+                    }
+                }
+            }
+        }
+
+        GetDXUTState().SetDeviceLost( false );
+    }
+
+    // Get the app's time, in seconds. Skip rendering if no time elapsed
+    double fTime        = DXUTGetGlobalTimer()->GetTime();
+    float fElapsedTime  = (float) DXUTGetGlobalTimer()->GetElapsedTime();
+
+    // Store the time for the app
+    if( GetDXUTState().GetConstantFrameTime() )
+    {        
+        fElapsedTime = GetDXUTState().GetTimePerFrame();
+        fTime     = DXUTGetTime() + fElapsedTime;
+    }
+
+    GetDXUTState().SetTime( fTime );
+    GetDXUTState().SetElapsedTime( fElapsedTime );
+
+    // Update the FPS stats
+    DXUTUpdateFrameStats();
+
+    DXUTHandleTimers();
+
+    // Animate the scene by calling the app's frame move callback
+    LPDXUTCALLBACKFRAMEMOVE pCallbackFrameMove = GetDXUTState().GetFrameMoveFunc();
+    if( pCallbackFrameMove != NULL )
+    {
+        pCallbackFrameMove( pd3dDevice, fTime, fElapsedTime, GetDXUTState().GetFrameMoveFuncUserContext() );
+        pd3dDevice = DXUTGetD3DDevice();
+        if( NULL == pd3dDevice ) // Handle DXUTShutdown from inside callback
+            return;
+    }
+
+    if( !GetDXUTState().GetRenderingPaused() )
+    {
+        // Render the scene by calling the app's render callback
+        LPDXUTCALLBACKFRAMERENDER pCallbackFrameRender = GetDXUTState().GetFrameRenderFunc();
+        if( pCallbackFrameRender != NULL )
+        {
+            pCallbackFrameRender( pd3dDevice, fTime, fElapsedTime, GetDXUTState().GetFrameRenderFuncUserContext() );
+            pd3dDevice = DXUTGetD3DDevice();
+            if( NULL == pd3dDevice ) // Handle DXUTShutdown from inside callback
+                return;
+        }
+
+#if defined(DEBUG) || defined(_DEBUG)
+        // The back buffer should always match the client rect 
+        // if the Direct3D backbuffer covers the entire window
+        RECT rcClient;
+        GetClientRect( DXUTGetHWND(), &rcClient );
+        if( !IsIconic( DXUTGetHWND() ) )
+        {
+            GetClientRect( DXUTGetHWND(), &rcClient );
+            assert( DXUTGetBackBufferSurfaceDesc()->Width == (UINT)rcClient.right );
+            assert( DXUTGetBackBufferSurfaceDesc()->Height == (UINT)rcClient.bottom );
+        }        
+#endif
+
+        // Show the frame on the primary surface.
+        hr = pd3dDevice->Present( NULL, NULL, NULL, NULL );
+        if( FAILED(hr) )
+        {
+            if( D3DERR_DEVICELOST == hr )
+            {
+                GetDXUTState().SetDeviceLost( true );
+            }
+            else if( D3DERR_DRIVERINTERNALERROR == hr )
+            {
+                // When D3DERR_DRIVERINTERNALERROR is returned from Present(),
+                // the application can do one of the following:
+                // 
+                // - End, with the pop-up window saying that the application cannot continue 
+                //   because of problems in the display adapter and that the user should 
+                //   contact the adapter manufacturer.
+                //
+                // - Attempt to restart by calling IDirect3DDevice9::Reset, which is essentially the same 
+                //   path as recovering from a lost device. If IDirect3DDevice9::Reset fails with 
+                //   D3DERR_DRIVERINTERNALERROR, the application should end immediately with the message 
+                //   that the user should contact the adapter manufacturer.
+                // 
+                // The framework attempts the path of resetting the device
+                // 
+                GetDXUTState().SetDeviceLost( true );
+            }
+        }
+    }
+
+    // Update current frame #
+    int nFrame = GetDXUTState().GetCurrentFrameNumber();
+    nFrame++;
+    GetDXUTState().SetCurrentFrameNumber( nFrame );
+
+    // Check to see if the app should shutdown due to cmdline
+    if( GetDXUTState().GetOverrideQuitAfterFrame() != 0 )
+    {
+        if( nFrame > GetDXUTState().GetOverrideQuitAfterFrame() )
+            DXUTShutdown();
+    }
+
+    return;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Updates the string which describes the device 
+//--------------------------------------------------------------------------------------
+void DXUTUpdateDeviceStats( D3DDEVTYPE DeviceType, DWORD BehaviorFlags, D3DADAPTER_IDENTIFIER9* pAdapterIdentifier )
+{
+    if( GetDXUTState().GetNoStats() )
+        return;
+
+    // Store device description
+    WCHAR* pstrDeviceStats = GetDXUTState().GetDeviceStats();
+    if( DeviceType == D3DDEVTYPE_REF )
+        StringCchCopy( pstrDeviceStats, 256, L"REF" );
+    else if( DeviceType == D3DDEVTYPE_HAL )
+        StringCchCopy( pstrDeviceStats, 256, L"HAL" );
+    else if( DeviceType == D3DDEVTYPE_SW )
+        StringCchCopy( pstrDeviceStats, 256, L"SW" );
+
+    if( BehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING &&
+        BehaviorFlags & D3DCREATE_PUREDEVICE )
+    {
+        if( DeviceType == D3DDEVTYPE_HAL )
+            StringCchCat( pstrDeviceStats, 256, L" (pure hw vp)" );
+        else
+            StringCchCat( pstrDeviceStats, 256, L" (simulated pure hw vp)" );
+    }
+    else if( BehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING )
+    {
+        if( DeviceType == D3DDEVTYPE_HAL )
+            StringCchCat( pstrDeviceStats, 256, L" (hw vp)" );
+        else
+            StringCchCat( pstrDeviceStats, 256, L" (simulated hw vp)" );
+    }
+    else if( BehaviorFlags & D3DCREATE_MIXED_VERTEXPROCESSING )
+    {
+        if( DeviceType == D3DDEVTYPE_HAL )
+            StringCchCat( pstrDeviceStats, 256, L" (mixed vp)" );
+        else
+            StringCchCat( pstrDeviceStats, 256, L" (simulated mixed vp)" );
+    }
+    else if( BehaviorFlags & D3DCREATE_SOFTWARE_VERTEXPROCESSING )
+    {
+        StringCchCat( pstrDeviceStats, 256, L" (sw vp)" );
+    }
+
+    if( DeviceType == D3DDEVTYPE_HAL )
+    {
+        // Be sure not to overflow m_strDeviceStats when appending the adapter 
+        // description, since it can be long.  
+        StringCchCat( pstrDeviceStats, 256, L": " );
+
+        // Try to get a unique description from the CD3DEnumDeviceSettingsCombo
+        DXUTDeviceSettings* pDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+        CD3DEnumeration* pd3dEnum = DXUTPrepareEnumerationObject();
+        CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = pd3dEnum->GetDeviceSettingsCombo( pDeviceSettings->AdapterOrdinal, pDeviceSettings->DeviceType, pDeviceSettings->AdapterFormat, pDeviceSettings->pp.BackBufferFormat, pDeviceSettings->pp.Windowed );
+        if( pDeviceSettingsCombo )
+        {
+            StringCchCat( pstrDeviceStats, 256, pDeviceSettingsCombo->pAdapterInfo->szUniqueDescription );
+        }
+        else
+        {
+            const int cchDesc = sizeof(pAdapterIdentifier->Description);
+            WCHAR szDescription[cchDesc];
+            MultiByteToWideChar( CP_ACP, 0, pAdapterIdentifier->Description, -1, szDescription, cchDesc );
+            szDescription[cchDesc-1] = 0;
+            StringCchCat( pstrDeviceStats, 256, szDescription );
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Updates the frames/sec stat once per second
+//--------------------------------------------------------------------------------------
+void DXUTUpdateFrameStats()
+{
+    if( GetDXUTState().GetNoStats() )
+        return;
+
+    // Keep track of the frame count
+    double fLastTime = GetDXUTState().GetLastStatsUpdateTime();
+    DWORD dwFrames  = GetDXUTState().GetLastStatsUpdateFrames();
+    double fTime = DXUTGetGlobalTimer()->GetAbsoluteTime();
+    dwFrames++;
+    GetDXUTState().SetLastStatsUpdateFrames( dwFrames );
+
+    // Update the scene stats once per second
+    if( fTime - fLastTime > 1.0f )
+    {
+        float fFPS = (float) (dwFrames / (fTime - fLastTime));
+        GetDXUTState().SetFPS( fFPS );
+        GetDXUTState().SetLastStatsUpdateTime( fTime );
+        GetDXUTState().SetLastStatsUpdateFrames( 0 );
+
+        WCHAR* pstrFPS = GetDXUTState().GetFPSStats();
+        StringCchPrintf( pstrFPS, 64, L"%0.2f fps ", fFPS );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Updates the static part of the frame stats so it doesn't have be generated every frame
+//--------------------------------------------------------------------------------------
+void DXUTUpdateStaticFrameStats()
+{
+    if( GetDXUTState().GetNoStats() )
+        return;
+
+    DXUTDeviceSettings* pDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+    if( NULL == pDeviceSettings )
+        return;
+    CD3DEnumeration* pd3dEnum = DXUTPrepareEnumerationObject();
+    if( NULL == pd3dEnum )
+        return;
+
+    CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = pd3dEnum->GetDeviceSettingsCombo( pDeviceSettings->AdapterOrdinal, pDeviceSettings->DeviceType, pDeviceSettings->AdapterFormat, pDeviceSettings->pp.BackBufferFormat, pDeviceSettings->pp.Windowed );
+    if( NULL == pDeviceSettingsCombo )
+        return;
+
+    WCHAR strFmt[100];
+    D3DPRESENT_PARAMETERS* pPP = &pDeviceSettings->pp;
+
+    if( pDeviceSettingsCombo->AdapterFormat == pDeviceSettingsCombo->BackBufferFormat )
+    {
+        StringCchCopy( strFmt, 100, DXUTD3DFormatToString( pDeviceSettingsCombo->AdapterFormat, false ) );
+    }
+    else
+    {
+        StringCchPrintf( strFmt, 100, L"backbuf %s, adapter %s", 
+            DXUTD3DFormatToString( pDeviceSettingsCombo->BackBufferFormat, false ), 
+            DXUTD3DFormatToString( pDeviceSettingsCombo->AdapterFormat, false ) );
+    }
+
+    WCHAR strDepthFmt[100];
+    if( pPP->EnableAutoDepthStencil )
+    {
+        StringCchPrintf( strDepthFmt, 100, L" (%s)", DXUTD3DFormatToString( pPP->AutoDepthStencilFormat, false ) );
+    }
+    else
+    {
+        // No depth buffer
+        strDepthFmt[0] = 0;
+    }
+
+    WCHAR strMultiSample[100];
+    switch( pPP->MultiSampleType )
+    {
+        case D3DMULTISAMPLE_NONMASKABLE: StringCchCopy( strMultiSample, 100, L" (Nonmaskable Multisample)" ); break;
+        case D3DMULTISAMPLE_NONE:        StringCchCopy( strMultiSample, 100, L"" ); break;
+        default:                         StringCchPrintf( strMultiSample, 100, L" (%dx Multisample)", pPP->MultiSampleType ); break;
+    }
+
+    WCHAR* pstrStaticFrameStats = GetDXUTState().GetStaticFrameStats();
+    StringCchPrintf( pstrStaticFrameStats, 256, L"%%sVsync %s (%dx%d), %s%s%s", 
+                ( pPP->PresentationInterval == D3DPRESENT_INTERVAL_IMMEDIATE ) ? L"off" : L"on", 
+                pPP->BackBufferWidth, pPP->BackBufferHeight,
+                strFmt, strDepthFmt, strMultiSample );
+}
+
+
+//--------------------------------------------------------------------------------------
+LPCWSTR DXUTGetFrameStats( bool bShowFPS )                         
+{ 
+    WCHAR* pstrFrameStats = GetDXUTState().GetFrameStats();
+    WCHAR* pstrFPS = ( bShowFPS ) ? GetDXUTState().GetFPSStats() : L"";
+    StringCchPrintf( pstrFrameStats, 256, GetDXUTState().GetStaticFrameStats(), pstrFPS );
+    return pstrFrameStats;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Handles window messages 
+//--------------------------------------------------------------------------------------
+LRESULT CALLBACK DXUTStaticWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    // Consolidate the keyboard messages and pass them to the app's keyboard callback
+    if( uMsg == WM_KEYDOWN ||
+        uMsg == WM_SYSKEYDOWN || 
+        uMsg == WM_KEYUP ||
+        uMsg == WM_SYSKEYUP )
+    {
+        bool bKeyDown = (uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN);
+        DWORD dwMask = (1 << 29);
+        bool bAltDown = ( (lParam & dwMask) != 0 );
+
+        bool* bKeys = GetDXUTState().GetKeys();
+        bKeys[ (BYTE) (wParam & 0xFF) ] = bKeyDown;
+
+        LPDXUTCALLBACKKEYBOARD pCallbackKeyboard = GetDXUTState().GetKeyboardFunc();
+        if( pCallbackKeyboard )
+            pCallbackKeyboard( (UINT)wParam, bKeyDown, bAltDown, GetDXUTState().GetKeyboardFuncUserContext() );           
+    }
+
+    // Consolidate the mouse button messages and pass them to the app's mouse callback
+    if( uMsg == WM_LBUTTONDOWN ||
+        uMsg == WM_LBUTTONUP ||
+        uMsg == WM_LBUTTONDBLCLK ||
+        uMsg == WM_MBUTTONDOWN ||
+        uMsg == WM_MBUTTONUP ||
+        uMsg == WM_MBUTTONDBLCLK ||
+        uMsg == WM_RBUTTONDOWN ||
+        uMsg == WM_RBUTTONUP ||
+        uMsg == WM_RBUTTONDBLCLK ||
+        uMsg == WM_XBUTTONDOWN ||
+        uMsg == WM_XBUTTONUP ||
+        uMsg == WM_XBUTTONDBLCLK ||
+        uMsg == WM_MOUSEWHEEL || 
+        (GetDXUTState().GetNotifyOnMouseMove() && uMsg == WM_MOUSEMOVE) )
+    {
+        int xPos = (short)LOWORD(lParam);
+        int yPos = (short)HIWORD(lParam);
+
+        if( uMsg == WM_MOUSEWHEEL )
+        {
+            // WM_MOUSEWHEEL passes screen mouse coords
+            // so convert them to client coords
+            POINT pt;
+            pt.x = xPos; pt.y = yPos;
+            ScreenToClient( hWnd, &pt );
+            xPos = pt.x; yPos = pt.y;
+        }
+
+        int nMouseWheelDelta = 0;
+        if( uMsg == WM_MOUSEWHEEL ) 
+            nMouseWheelDelta = (short) HIWORD(wParam);
+
+        int nMouseButtonState = LOWORD(wParam);
+        bool bLeftButton  = ((nMouseButtonState & MK_LBUTTON) != 0);
+        bool bRightButton = ((nMouseButtonState & MK_RBUTTON) != 0);
+        bool bMiddleButton = ((nMouseButtonState & MK_MBUTTON) != 0);
+        bool bSideButton1 = ((nMouseButtonState & MK_XBUTTON1) != 0);
+        bool bSideButton2 = ((nMouseButtonState & MK_XBUTTON2) != 0);
+
+        bool* bMouseButtons = GetDXUTState().GetMouseButtons();
+        bMouseButtons[0] = bLeftButton;
+        bMouseButtons[1] = bMiddleButton;
+        bMouseButtons[2] = bRightButton;
+        bMouseButtons[3] = bSideButton1;
+        bMouseButtons[4] = bSideButton2;
+
+        LPDXUTCALLBACKMOUSE pCallbackMouse = GetDXUTState().GetMouseFunc();
+        if( pCallbackMouse )
+            pCallbackMouse( bLeftButton, bRightButton, bMiddleButton, bSideButton1, bSideButton2, nMouseWheelDelta, xPos, yPos, GetDXUTState().GetMouseFuncUserContext() );
+    }
+
+    // Pass all messages to the app's MsgProc callback, and don't 
+    // process further messages if the apps says not to.
+    LPDXUTCALLBACKMSGPROC pCallbackMsgProc = GetDXUTState().GetWindowMsgFunc();
+    if( pCallbackMsgProc )
+    {
+        bool bNoFurtherProcessing = false;
+        LRESULT nResult = pCallbackMsgProc( hWnd, uMsg, wParam, lParam, &bNoFurtherProcessing, GetDXUTState().GetWindowMsgFuncUserContext() );
+        if( bNoFurtherProcessing )
+            return nResult;
+    }
+
+    switch( uMsg )
+    {
+        case WM_PAINT:
+        {
+            IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+
+            // Handle paint messages when the app is paused
+            if( pd3dDevice && DXUTIsRenderingPaused() && 
+                GetDXUTState().GetDeviceObjectsCreated() && GetDXUTState().GetDeviceObjectsReset() )
+            {
+                HRESULT hr;
+                double fTime = DXUTGetTime();
+                float fElapsedTime = DXUTGetElapsedTime();
+
+                LPDXUTCALLBACKFRAMERENDER pCallbackFrameRender = GetDXUTState().GetFrameRenderFunc();
+                if( pCallbackFrameRender != NULL )
+                    pCallbackFrameRender( pd3dDevice, fTime, fElapsedTime, GetDXUTState().GetFrameRenderFuncUserContext() );
+
+                hr = pd3dDevice->Present( NULL, NULL, NULL, NULL );
+                if( D3DERR_DEVICELOST == hr )
+                {
+                    GetDXUTState().SetDeviceLost( true );
+                }
+                else if( D3DERR_DRIVERINTERNALERROR == hr )
+                {
+                    // When D3DERR_DRIVERINTERNALERROR is returned from Present(),
+                    // the application can do one of the following:
+                    // 
+                    // - End, with the pop-up window saying that the application cannot continue 
+                    //   because of problems in the display adapter and that the user should 
+                    //   contact the adapter manufacturer.
+                    //
+                    // - Attempt to restart by calling IDirect3DDevice9::Reset, which is essentially the same 
+                    //   path as recovering from a lost device. If IDirect3DDevice9::Reset fails with 
+                    //   D3DERR_DRIVERINTERNALERROR, the application should end immediately with the message 
+                    //   that the user should contact the adapter manufacturer.
+                    // 
+                    // The framework attempts the path of resetting the device
+                    // 
+                    GetDXUTState().SetDeviceLost( true );
+                }
+            }
+            break;
+        }
+
+        case WM_SIZE:
+            if( SIZE_MINIMIZED == wParam )
+            {
+                DXUTPause( true, true ); // Pause while we're minimized
+
+                GetDXUTState().SetMinimized( true );
+                GetDXUTState().SetMaximized( false );
+            }
+            else
+            {
+                RECT rcCurrentClient;
+                GetClientRect( DXUTGetHWND(), &rcCurrentClient );
+                if( rcCurrentClient.top == 0 && rcCurrentClient.bottom == 0 )
+                {
+                    // Rapidly clicking the task bar to minimize and restore a window
+                    // can cause a WM_SIZE message with SIZE_RESTORED when 
+                    // the window has actually become minimized due to rapid change
+                    // so just ignore this message
+                }
+                else if( SIZE_MAXIMIZED == wParam )
+                {
+                    if( GetDXUTState().GetMinimized() )
+                        DXUTPause( false, false ); // Unpause since we're no longer minimized
+                    GetDXUTState().SetMinimized( false );
+                    GetDXUTState().SetMaximized( true );
+                    DXUTCheckForWindowSizeChange();
+                    DXUTCheckForWindowChangingMonitors();
+                }
+                else if( SIZE_RESTORED == wParam )
+                {      
+                    if( GetDXUTState().GetMaximized() )
+                    {
+                        GetDXUTState().SetMaximized( false );
+                        DXUTCheckForWindowSizeChange();
+                        DXUTCheckForWindowChangingMonitors();
+                    }
+                    else if( GetDXUTState().GetMinimized() )
+                    {
+                        DXUTPause( false, false ); // Unpause since we're no longer minimized
+                        GetDXUTState().SetMinimized( false );
+                        DXUTCheckForWindowSizeChange();
+                        DXUTCheckForWindowChangingMonitors();
+                    }
+                    else if( GetDXUTState().GetInSizeMove() )
+                    {
+                        // If we're neither maximized nor minimized, the window size 
+                        // is changing by the user dragging the window edges.  In this 
+                        // case, we don't reset the device yet -- we wait until the 
+                        // user stops dragging, and a WM_EXITSIZEMOVE message comes.
+                    }
+                    else
+                    {
+                        // This WM_SIZE come from resizing the window via an API like SetWindowPos() so 
+                        // resize and reset the device now.
+                        DXUTCheckForWindowSizeChange();
+                        DXUTCheckForWindowChangingMonitors();
+                    }
+                }
+            }
+            break;
+
+        case WM_GETMINMAXINFO:
+            ((MINMAXINFO*)lParam)->ptMinTrackSize.x = DXUT_MIN_WINDOW_SIZE_X;
+            ((MINMAXINFO*)lParam)->ptMinTrackSize.y = DXUT_MIN_WINDOW_SIZE_Y;
+            break;
+
+        case WM_ENTERSIZEMOVE:
+            // Halt frame movement while the app is sizing or moving
+            DXUTPause( true, true );
+            GetDXUTState().SetInSizeMove( true );
+            break;
+
+        case WM_EXITSIZEMOVE:
+            DXUTPause( false, false );
+            DXUTCheckForWindowSizeChange();
+            DXUTCheckForWindowChangingMonitors();
+            GetDXUTState().SetInSizeMove( false );
+            break;
+
+         case WM_MOUSEMOVE:
+            if( DXUTIsActive() && !DXUTIsWindowed() )
+            {
+                IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+                if( pd3dDevice )
+                {
+                    POINT ptCursor;
+                    GetCursorPos( &ptCursor );
+                    pd3dDevice->SetCursorPosition( ptCursor.x, ptCursor.y, 0 );
+                }
+            }
+            break;
+
+        case WM_SETCURSOR:
+            if( DXUTIsActive() && !DXUTIsWindowed() )
+            {
+                IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+                if( pd3dDevice && GetDXUTState().GetShowCursorWhenFullScreen() )
+                    pd3dDevice->ShowCursor( true );
+                return true; // prevent Windows from setting cursor to window class cursor
+            }
+            break;
+
+       case WM_ACTIVATEAPP:
+            if( wParam == TRUE && !DXUTIsActive() ) // Handle only if previously not active 
+            {
+                GetDXUTState().SetActive( true );
+
+                // The GetMinimizedWhileFullscreen() varible is used instead of !DXUTIsWindowed()
+                // to handle the rare case toggling to windowed mode while the fullscreen application 
+                // is minimized and thus making the pause count wrong
+                if( GetDXUTState().GetMinimizedWhileFullscreen() ) 
+                {
+                    DXUTPause( false, false ); // Unpause since we're no longer minimized
+                    GetDXUTState().SetMinimizedWhileFullscreen( false );
+                }
+
+                // Upon returning to this app, potentially disable shortcut keys 
+                // (Windows key, accessibility shortcuts) 
+                DXUTAllowShortcutKeys( ( DXUTIsWindowed() ) ? GetDXUTState().GetAllowShortcutKeysWhenWindowed() : 
+                                                              GetDXUTState().GetAllowShortcutKeysWhenFullscreen() );
+
+            }
+            else if( wParam == FALSE && DXUTIsActive() ) // Handle only if previously active 
+            {               
+                GetDXUTState().SetActive( false );
+
+                // Disable any controller rumble when de-activating app
+                DXUTStopRumbleOnAllControllers();
+
+                if( !DXUTIsWindowed() )
+                {
+                    // Going from full screen to a minimized state 
+                    ClipCursor( NULL );      // don't limit the cursor anymore
+                    DXUTPause( true, true ); // Pause while we're minimized (take care not to pause twice by handling this message twice)
+                    GetDXUTState().SetMinimizedWhileFullscreen( true ); 
+                }
+
+                // Restore shortcut keys (Windows key, accessibility shortcuts) to original state
+                //
+                // This is important to call here if the shortcuts are disabled, 
+                // because if this is not done then the Windows key will continue to 
+                // be disabled while this app is running which is very bad.
+                // If the app crashes, the Windows key will return to normal.
+                DXUTAllowShortcutKeys( true );
+            }
+            break;
+
+       case WM_ENTERMENULOOP:
+            // Pause the app when menus are displayed
+            DXUTPause( true, true );
+            break;
+
+        case WM_EXITMENULOOP:
+            DXUTPause( false, false );
+            break;
+
+        case WM_MENUCHAR:
+            // A menu is active and the user presses a key that does not correspond to any mnemonic or accelerator key
+            // So just ignore and don't beep
+            return MAKELRESULT(0,MNC_CLOSE);
+            break;
+
+        case WM_NCHITTEST:
+            // Prevent the user from selecting the menu in full screen mode
+            if( !DXUTIsWindowed() )
+                return HTCLIENT;
+            break;
+
+        case WM_POWERBROADCAST:
+            switch( wParam )
+            {
+                #ifndef PBT_APMQUERYSUSPEND
+                    #define PBT_APMQUERYSUSPEND 0x0000
+                #endif
+                case PBT_APMQUERYSUSPEND:
+                    // At this point, the app should save any data for open
+                    // network connections, files, etc., and prepare to go into
+                    // a suspended mode.  The app can use the MsgProc callback
+                    // to handle this if desired.
+                    return true;
+
+                #ifndef PBT_APMRESUMESUSPEND
+                    #define PBT_APMRESUMESUSPEND 0x0007
+                #endif
+                case PBT_APMRESUMESUSPEND:
+                    // At this point, the app should recover any data, network
+                    // connections, files, etc., and resume running from when
+                    // the app was suspended. The app can use the MsgProc callback
+                    // to handle this if desired.
+                   
+                   // QPC may lose consistency when suspending, so reset the timer
+                   // upon resume.
+                   DXUTGetGlobalTimer()->Reset();                   
+                   GetDXUTState().SetLastStatsUpdateTime( 0 );
+                   return true;
+            }
+            break;
+
+        case WM_SYSCOMMAND:
+            // Prevent moving/sizing and power loss in full screen mode
+            switch( wParam )
+            {
+                case SC_MOVE:
+                case SC_SIZE:
+                case SC_MAXIMIZE:
+                case SC_KEYMENU:
+                case SC_MONITORPOWER:
+                    if( !DXUTIsWindowed() )
+                        return 0;
+                    break;
+            }
+            break;
+
+        case WM_SYSKEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_RETURN:
+                {
+                    if( GetDXUTState().GetHandleAltEnter() )
+                    {
+                        // Toggle full screen upon alt-enter 
+                        DWORD dwMask = (1 << 29);
+                        if( (lParam & dwMask) != 0 ) // Alt is down also
+                        {
+                            // Toggle the full screen/window mode
+                            DXUTPause( true, true );
+                            DXUTToggleFullScreen();
+                            DXUTPause( false, false );                        
+                            return 0;
+                        }
+                    }
+                }
+            }
+            break;
+        }
+
+        case WM_KEYDOWN:
+        {
+            if( GetDXUTState().GetHandleDefaultHotkeys() )
+            {
+                switch( wParam )
+                {
+                    case VK_F3:
+                    {
+                        DXUTPause( true, true );
+                        DXUTToggleREF();
+                        DXUTPause( false, false );                        
+                        break;
+                    }
+
+                    case VK_F8:
+                    {
+                        bool bWireFrame = GetDXUTState().GetWireframeMode();
+                        bWireFrame = !bWireFrame; 
+                        GetDXUTState().SetWireframeMode( bWireFrame );
+
+                        IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+                        if( pd3dDevice )
+                            pd3dDevice->SetRenderState( D3DRS_FILLMODE, (bWireFrame) ? D3DFILL_WIREFRAME : D3DFILL_SOLID ); 
+                        break;
+                    }
+
+                    case VK_ESCAPE:
+                    {
+                        // Received key to exit app
+                        SendMessage( hWnd, WM_CLOSE, 0, 0 );
+                    }
+
+                    case VK_PAUSE: 
+                    {
+                        bool bTimePaused = DXUTIsTimePaused();
+                        bTimePaused = !bTimePaused;
+                        if( bTimePaused ) 
+                            DXUTPause( true, false ); 
+                        else
+                            DXUTPause( false, false ); 
+                        break; 
+                    }
+                }
+            }
+            break;
+        }
+
+        case WM_CLOSE:
+        {
+            HMENU hMenu;
+            hMenu = GetMenu(hWnd);
+            if( hMenu != NULL )
+                DestroyMenu( hMenu );
+            DestroyWindow( hWnd );
+            UnregisterClass( L"Direct3DWindowClass", NULL );
+            GetDXUTState().SetHWNDFocus( NULL );
+            GetDXUTState().SetHWNDDeviceFullScreen( NULL );
+            GetDXUTState().SetHWNDDeviceWindowed( NULL );
+            return 0;
+        }
+
+        case WM_DESTROY:
+            PostQuitMessage(0);
+            break;
+    }
+
+    // Don't allow the F10 key to act as a shortcut to the menu bar
+    // by not passing these messages to the DefWindowProc only when
+    // there's no menu present
+    if( !GetDXUTState().GetCallDefWindowProc() || GetDXUTState().GetMenu() == NULL && (uMsg == WM_SYSKEYDOWN || uMsg == WM_SYSKEYUP) && wParam == VK_F10 )
+        return 0;
+    else
+        return DefWindowProc( hWnd, uMsg, wParam, lParam );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Resets the state associated with DXUT 
+//--------------------------------------------------------------------------------------
+void DXUTResetFrameworkState()
+{
+    GetDXUTState().Destroy();
+    GetDXUTState().Create();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Closes down the window.  When the window closes, it will cleanup everything
+//--------------------------------------------------------------------------------------
+void DXUTShutdown( int nExitCode )
+{
+    HWND hWnd = DXUTGetHWND();
+    if( hWnd != NULL )
+        SendMessage( hWnd, WM_CLOSE, 0, 0 );
+
+    GetDXUTState().SetExitCode(nExitCode);
+
+    DXUTCleanup3DEnvironment( true );
+
+    // Restore shortcut keys (Windows key, accessibility shortcuts) to original state
+    // This is important to call here if the shortcuts are disabled, 
+    // because accessibility setting changes are permanent.
+    // This means that if this is not done then the accessibility settings 
+    // might not be the same as when the app was started. 
+    // If the app crashes without restoring the settings, this is also true so it
+    // would be wise to backup/restore the settings from a file so they can be 
+    // restored when the crashed app is run again.
+    DXUTAllowShortcutKeys( true );
+    
+    GetDXUTState().SetD3DEnumeration( NULL );
+    
+    IDirect3D9* pD3D = DXUTGetD3DObject();
+    SAFE_RELEASE( pD3D );
+    GetDXUTState().SetD3D( NULL );
+
+    if( GetDXUTState().GetOverrideRelaunchMCE() )
+        DXUTReLaunchMediaCenter();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Cleans up the 3D environment by:
+//      - Calls the device lost callback 
+//      - Calls the device destroyed callback 
+//      - Releases the D3D device
+//--------------------------------------------------------------------------------------
+void DXUTCleanup3DEnvironment( bool bReleaseSettings )
+{
+    IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+    if( pd3dDevice != NULL )
+    {
+        GetDXUTState().SetInsideDeviceCallback( true );
+
+        // Call the app's device lost callback
+        if( GetDXUTState().GetDeviceObjectsReset() == true )
+        {
+            LPDXUTCALLBACKDEVICELOST pCallbackDeviceLost = GetDXUTState().GetDeviceLostFunc();
+            if( pCallbackDeviceLost != NULL )
+                pCallbackDeviceLost( GetDXUTState().GetDeviceLostFuncUserContext() );
+            GetDXUTState().SetDeviceObjectsReset( false );
+
+            // Call the resource cache device lost function
+            DXUTGetGlobalResourceCache().OnLostDevice();
+        }
+
+        // Call the app's device destroyed callback
+        if( GetDXUTState().GetDeviceObjectsCreated() == true )
+        {
+            LPDXUTCALLBACKDEVICEDESTROYED pCallbackDeviceDestroyed = GetDXUTState().GetDeviceDestroyedFunc();
+            if( pCallbackDeviceDestroyed != NULL )
+                pCallbackDeviceDestroyed( GetDXUTState().GetDeviceDestroyedFuncUserContext() );
+            GetDXUTState().SetDeviceObjectsCreated( false );
+
+            // Call the resource cache device destory function
+            DXUTGetGlobalResourceCache().OnDestroyDevice();
+        }
+
+        GetDXUTState().SetInsideDeviceCallback( false );
+
+        // Release the D3D device and in debug configs, displays a message box if there 
+        // are unrelease objects.
+        if( pd3dDevice )
+        {
+            if( pd3dDevice->Release() > 0 )  
+            {
+                DXUTDisplayErrorMessage( DXUTERR_NONZEROREFCOUNT );
+                DXUT_ERR( L"DXUTCleanup3DEnvironment", DXUTERR_NONZEROREFCOUNT );
+            }
+        }
+        GetDXUTState().SetD3DDevice( NULL );
+
+        if( bReleaseSettings )
+        {
+            DXUTDeviceSettings* pOldDeviceSettings = GetDXUTState().GetCurrentDeviceSettings();
+            SAFE_DELETE(pOldDeviceSettings);  
+            GetDXUTState().SetCurrentDeviceSettings( NULL );
+        }
+
+        D3DSURFACE_DESC* pbackBufferSurfaceDesc = GetDXUTState().GetBackBufferSurfaceDesc();
+        ZeroMemory( pbackBufferSurfaceDesc, sizeof(D3DSURFACE_DESC) );
+
+        D3DCAPS9* pd3dCaps = GetDXUTState().GetCaps();
+        ZeroMemory( pd3dCaps, sizeof(D3DCAPS9) );
+
+        GetDXUTState().SetDeviceCreated( false );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Stores back buffer surface desc in GetDXUTState().GetBackBufferSurfaceDesc()
+//--------------------------------------------------------------------------------------
+void DXUTUpdateBackBufferDesc()
+{
+    HRESULT hr;
+    IDirect3DSurface9* pBackBuffer;
+    hr = GetDXUTState().GetD3DDevice()->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer );
+    D3DSURFACE_DESC* pBBufferSurfaceDesc = GetDXUTState().GetBackBufferSurfaceDesc();
+    ZeroMemory( pBBufferSurfaceDesc, sizeof(D3DSURFACE_DESC) );
+    if( SUCCEEDED(hr) )
+    {
+        pBackBuffer->GetDesc( pBBufferSurfaceDesc );
+        SAFE_RELEASE( pBackBuffer );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Starts a user defined timer callback
+//--------------------------------------------------------------------------------------
+HRESULT DXUTSetTimer( LPDXUTCALLBACKTIMER pCallbackTimer, float fTimeoutInSecs, UINT* pnIDEvent, void* pCallbackUserContext ) 
+{ 
+    if( pCallbackTimer == NULL )
+        return DXUT_ERR_MSGBOX( L"DXUTSetTimer", E_INVALIDARG ); 
+
+    HRESULT hr;
+    DXUT_TIMER DXUTTimer;
+    DXUTTimer.pCallbackTimer = pCallbackTimer;
+    DXUTTimer.pCallbackUserContext = pCallbackUserContext;
+    DXUTTimer.fTimeoutInSecs = fTimeoutInSecs;
+    DXUTTimer.fCountdown = fTimeoutInSecs;
+    DXUTTimer.bEnabled = true;
+
+    CGrowableArray<DXUT_TIMER>* pTimerList = GetDXUTState().GetTimerList();
+    if( pTimerList == NULL )
+    {
+        pTimerList = new CGrowableArray<DXUT_TIMER>;
+        if( pTimerList == NULL )
+            return E_OUTOFMEMORY; 
+        GetDXUTState().SetTimerList( pTimerList );
+    }
+
+    if( FAILED( hr = pTimerList->Add( DXUTTimer ) ) )
+        return hr;
+
+    if( pnIDEvent )
+        *pnIDEvent = pTimerList->GetSize();
+
+    return S_OK; 
+}
+
+
+//--------------------------------------------------------------------------------------
+// Stops a user defined timer callback
+//--------------------------------------------------------------------------------------
+HRESULT DXUTKillTimer( UINT nIDEvent ) 
+{ 
+    CGrowableArray<DXUT_TIMER>* pTimerList = GetDXUTState().GetTimerList();
+    if( pTimerList == NULL )
+        return S_FALSE;
+
+    if( nIDEvent < (UINT)pTimerList->GetSize() )
+    {
+        DXUT_TIMER DXUTTimer = pTimerList->GetAt(nIDEvent);
+        DXUTTimer.bEnabled = false;
+        pTimerList->SetAt(nIDEvent, DXUTTimer);
+    }
+    else
+    {
+        return DXUT_ERR_MSGBOX( L"DXUTKillTimer", E_INVALIDARG );
+    }
+
+    return S_OK; 
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal helper function to handle calling the user defined timer callbacks
+//--------------------------------------------------------------------------------------
+void DXUTHandleTimers()
+{
+    float fElapsedTime = DXUTGetElapsedTime();
+
+    CGrowableArray<DXUT_TIMER>* pTimerList = GetDXUTState().GetTimerList();
+    if( pTimerList == NULL )
+        return;
+
+    // Walk through the list of timer callbacks
+    for( int i=0; i<pTimerList->GetSize(); i++ )
+    {
+        DXUT_TIMER DXUTTimer = pTimerList->GetAt(i);
+        if( DXUTTimer.bEnabled )
+        {
+            DXUTTimer.fCountdown -= fElapsedTime;
+
+            // Call the callback if count down expired
+            if( DXUTTimer.fCountdown < 0 )
+            {
+                DXUTTimer.pCallbackTimer( i, DXUTTimer.pCallbackUserContext );
+                DXUTTimer.fCountdown = DXUTTimer.fTimeoutInSecs;
+            }
+            pTimerList->SetAt(i, DXUTTimer);
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// External state access functions
+//--------------------------------------------------------------------------------------
+IDirect3D9* DXUTGetD3DObject()                      { return GetDXUTState().GetD3D(); }        
+IDirect3DDevice9* DXUTGetD3DDevice()                { return GetDXUTState().GetD3DDevice(); }  
+const D3DSURFACE_DESC* DXUTGetBackBufferSurfaceDesc() { return GetDXUTState().GetBackBufferSurfaceDesc(); }
+const D3DCAPS9* DXUTGetDeviceCaps()                 { return GetDXUTState().GetCaps(); }
+HINSTANCE DXUTGetHINSTANCE()                        { return GetDXUTState().GetHInstance(); }
+HWND DXUTGetHWND()                                  { return DXUTIsWindowed() ? GetDXUTState().GetHWNDDeviceWindowed() : GetDXUTState().GetHWNDDeviceFullScreen(); }
+HWND DXUTGetHWNDFocus()                             { return GetDXUTState().GetHWNDFocus(); }
+HWND DXUTGetHWNDDeviceFullScreen()                  { return GetDXUTState().GetHWNDDeviceFullScreen(); }
+HWND DXUTGetHWNDDeviceWindowed()                    { return GetDXUTState().GetHWNDDeviceWindowed(); }
+RECT DXUTGetWindowClientRect()                      { RECT rc; GetClientRect( DXUTGetHWND(), &rc ); return rc; }
+RECT DXUTGetWindowClientRectAtModeChange()          { RECT rc = { 0, 0, GetDXUTState().GetWindowBackBufferWidthAtModeChange(), GetDXUTState().GetWindowBackBufferHeightAtModeChange() }; return rc; }
+RECT DXUTGetFullsceenClientRectAtModeChange()       { RECT rc = { 0, 0, GetDXUTState().GetFullScreenBackBufferWidthAtModeChange(), GetDXUTState().GetFullScreenBackBufferHeightAtModeChange() }; return rc; }
+double DXUTGetTime()                                { return GetDXUTState().GetTime(); }
+float DXUTGetElapsedTime()                          { return GetDXUTState().GetElapsedTime(); }
+float DXUTGetFPS()                                  { return GetDXUTState().GetFPS(); }
+LPCWSTR DXUTGetWindowTitle()                        { return GetDXUTState().GetWindowTitle(); }
+LPCWSTR DXUTGetDeviceStats()                        { return GetDXUTState().GetDeviceStats(); }
+bool DXUTIsRenderingPaused()                        { return GetDXUTState().GetPauseRenderingCount() > 0; }
+bool DXUTIsTimePaused()                             { return GetDXUTState().GetPauseTimeCount() > 0; }
+bool DXUTIsActive()									{ return GetDXUTState().GetActive(); }
+int DXUTGetExitCode()                               { return GetDXUTState().GetExitCode(); }
+bool DXUTGetShowMsgBoxOnError()                     { return GetDXUTState().GetShowMsgBoxOnError(); }
+bool DXUTGetAutomation()                            { return GetDXUTState().GetAutomation(); }
+bool DXUTGetHandleDefaultHotkeys()                  { return GetDXUTState().GetHandleDefaultHotkeys(); }
+bool DXUTIsKeyDown( BYTE vKey )
+{ 
+    bool* bKeys = GetDXUTState().GetKeys(); 
+    if( vKey >= 0xA0 && vKey <= 0xA5 )  // VK_LSHIFT, VK_RSHIFT, VK_LCONTROL, VK_RCONTROL, VK_LMENU, VK_RMENU
+        return GetAsyncKeyState( vKey ) != 0; // these keys only are tracked via GetAsyncKeyState()
+    else if( vKey >= 0x01 && vKey <= 0x06 && vKey != 0x03 ) // mouse buttons (VK_*BUTTON)
+        return DXUTIsMouseButtonDown(vKey);
+    else
+        return bKeys[vKey];
+}
+bool DXUTIsMouseButtonDown( BYTE vButton )          
+{ 
+    bool* bMouseButtons = GetDXUTState().GetMouseButtons(); 
+    int nIndex = DXUTMapButtonToArrayIndex(vButton); 
+    return bMouseButtons[nIndex]; 
+}
+void DXUTSetMultimonSettings( bool bAutoChangeAdapter )
+{
+    GetDXUTState().SetAutoChangeAdapter( bAutoChangeAdapter );
+}
+void DXUTSetCursorSettings( bool bShowCursorWhenFullScreen, bool bClipCursorWhenFullScreen ) 
+{ 
+    GetDXUTState().SetClipCursorWhenFullScreen(bClipCursorWhenFullScreen); 
+    GetDXUTState().SetShowCursorWhenFullScreen(bShowCursorWhenFullScreen); 
+    DXUTSetupCursor();
+}
+void DXUTSetWindowSettings( bool bCallDefWindowProc )
+{
+    GetDXUTState().SetCallDefWindowProc( bCallDefWindowProc );
+}
+void DXUTSetConstantFrameTime( bool bEnabled, float fTimePerFrame ) 
+{ 
+    if( GetDXUTState().GetOverrideConstantFrameTime() ) 
+    { 
+        bEnabled = GetDXUTState().GetOverrideConstantFrameTime(); 
+        fTimePerFrame = GetDXUTState().GetOverrideConstantTimePerFrame(); 
+    } 
+    GetDXUTState().SetConstantFrameTime(bEnabled); 
+    GetDXUTState().SetTimePerFrame(fTimePerFrame); 
+}
+
+
+//--------------------------------------------------------------------------------------
+// Return if windowed in the current device.  If no device exists yet, then returns false
+//--------------------------------------------------------------------------------------
+bool DXUTIsWindowed()                               
+{ 
+    DXUTDeviceSettings* pDeviceSettings = GetDXUTState().GetCurrentDeviceSettings(); 
+    if(pDeviceSettings) 
+        return (pDeviceSettings->pp.Windowed != 0); 
+    else 
+        return false; 
+}
+
+
+//--------------------------------------------------------------------------------------
+// Return the present params of the current device.  If no device exists yet, then
+// return blank present params
+//--------------------------------------------------------------------------------------
+D3DPRESENT_PARAMETERS DXUTGetPresentParameters()    
+{ 
+    DXUTDeviceSettings* pDS = GetDXUTState().GetCurrentDeviceSettings(); 
+    if( pDS ) 
+    {
+        return pDS->pp; 
+    }
+    else 
+    {
+        D3DPRESENT_PARAMETERS pp;
+        ZeroMemory( &pp, sizeof(D3DPRESENT_PARAMETERS) );
+        return pp; 
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Return the device settings of the current device.  If no device exists yet, then
+// return blank device settings 
+//--------------------------------------------------------------------------------------
+DXUTDeviceSettings DXUTGetDeviceSettings()   
+{ 
+    DXUTDeviceSettings* pDS = GetDXUTState().GetCurrentDeviceSettings();
+    if( pDS )
+    {
+        return *pDS;
+    }
+    else
+    {
+        DXUTDeviceSettings ds;
+        ZeroMemory( &ds, sizeof(DXUTDeviceSettings) );
+        return ds;
+    }
+} 
+
+#ifndef SM_REMOTESESSION  // needs WINVER >= 0x0500
+#define SM_REMOTESESSION  0x1000
+#endif
+
+
+//--------------------------------------------------------------------------------------
+// Display an custom error msg box 
+//--------------------------------------------------------------------------------------
+void DXUTDisplayErrorMessage( HRESULT hr )
+{
+    WCHAR strBuffer[512];
+
+    int nExitCode;
+    bool bFound = true; 
+    switch( hr )
+    {
+        case DXUTERR_NODIRECT3D:             nExitCode = 2; StringCchCopy( strBuffer, 512, L"Could not initialize Direct3D. You may want to check that the latest version of DirectX is correctly installed on your system.  Also make sure that this program was compiled with header files that match the installed DirectX DLLs." ); break;
+        case DXUTERR_INCORRECTVERSION:       nExitCode = 10; StringCchCopy( strBuffer, 512, L"Incorrect version of Direct3D and/or D3DX." ); break;
+        case DXUTERR_MEDIANOTFOUND:          nExitCode = 4; StringCchCopy( strBuffer, 512, L"Could not find required media. Ensure that the DirectX SDK is correctly installed." ); break;
+        case DXUTERR_NONZEROREFCOUNT:        nExitCode = 5; StringCchCopy( strBuffer, 512, L"The D3D device has a non-zero reference count, meaning some objects were not released." ); break;
+        case DXUTERR_CREATINGDEVICE:         nExitCode = 6; StringCchCopy( strBuffer, 512, L"Failed creating the Direct3D device." ); break;
+        case DXUTERR_RESETTINGDEVICE:        nExitCode = 7; StringCchCopy( strBuffer, 512, L"Failed resetting the Direct3D device." ); break;
+        case DXUTERR_CREATINGDEVICEOBJECTS:  nExitCode = 8; StringCchCopy( strBuffer, 512, L"Failed creating Direct3D device objects." ); break;
+        case DXUTERR_RESETTINGDEVICEOBJECTS: nExitCode = 9; StringCchCopy( strBuffer, 512, L"Failed resetting Direct3D device objects." ); break;
+        case DXUTERR_NOCOMPATIBLEDEVICES:    
+            nExitCode = 3; 
+            if( GetSystemMetrics(SM_REMOTESESSION) != 0 )
+                StringCchCopy( strBuffer, 512, L"Direct3D does not work over a remote session." ); 
+            else
+                StringCchCopy( strBuffer, 512, L"Could not find any compatible Direct3D devices." ); 
+            break;
+        default: bFound = false; nExitCode = 1;break;
+    }   
+
+    GetDXUTState().SetExitCode(nExitCode);
+
+    bool bShowMsgBoxOnError = GetDXUTState().GetShowMsgBoxOnError();
+    if( bFound && bShowMsgBoxOnError )
+    {
+        if( DXUTGetWindowTitle()[0] == 0 )
+            MessageBox( DXUTGetHWND(), strBuffer, L"DirectX Application", MB_ICONERROR|MB_OK );
+        else
+            MessageBox( DXUTGetHWND(), strBuffer, DXUTGetWindowTitle(), MB_ICONERROR|MB_OK );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Display error msg box to help debug 
+//--------------------------------------------------------------------------------------
+HRESULT WINAPI DXUTTrace( const CHAR* strFile, DWORD dwLine, HRESULT hr,
+                          const WCHAR* strMsg, bool bPopMsgBox )
+{
+    bool bShowMsgBoxOnError = GetDXUTState().GetShowMsgBoxOnError();
+    if( bPopMsgBox && bShowMsgBoxOnError == false )
+        bPopMsgBox = false;
+
+    return DXTrace( strFile, dwLine, hr, strMsg, bPopMsgBox );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Checks to see if the HWND changed monitors, and if it did it creates a device 
+// from the monitor's adapter and recreates the scene.
+//--------------------------------------------------------------------------------------
+void DXUTCheckForWindowChangingMonitors()
+{
+    // Skip this check for various reasons
+    if( !GetDXUTState().GetAutoChangeAdapter() || 
+         GetDXUTState().GetIgnoreSizeChange() ||
+        !GetDXUTState().GetDeviceCreated() ||
+        !GetDXUTState().GetCurrentDeviceSettings()->pp.Windowed )
+    {
+        return;
+    }
+
+    HRESULT hr;
+    HMONITOR hWindowMonitor = DXUTMonitorFromWindow( DXUTGetHWND(), MONITOR_DEFAULTTOPRIMARY );
+    HMONITOR hAdapterMonitor = GetDXUTState().GetAdapterMonitor();
+    if( hWindowMonitor != hAdapterMonitor )
+    {
+        UINT newOrdinal;
+        if( SUCCEEDED( DXUTGetAdapterOrdinalFromMonitor( hWindowMonitor, &newOrdinal ) ) )
+        {
+            // Find the closest valid device settings with the new ordinal
+            DXUTDeviceSettings deviceSettings = DXUTGetDeviceSettings();
+            deviceSettings.AdapterOrdinal = newOrdinal;
+            
+            DXUTMatchOptions matchOptions;
+            matchOptions.eAdapterOrdinal     = DXUTMT_PRESERVE_INPUT;
+            matchOptions.eDeviceType         = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eWindowed           = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eAdapterFormat      = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eVertexProcessing   = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eResolution         = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eBackBufferFormat   = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eBackBufferCount    = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eMultiSample        = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eSwapEffect         = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eDepthFormat        = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eStencilFormat      = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.ePresentFlags       = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.eRefreshRate        = DXUTMT_CLOSEST_TO_INPUT;
+            matchOptions.ePresentInterval    = DXUTMT_CLOSEST_TO_INPUT;
+
+            hr = DXUTFindValidDeviceSettings( &deviceSettings, &deviceSettings, &matchOptions );
+            if( SUCCEEDED(hr) ) 
+            {
+                // Create a Direct3D device using the new device settings.  
+                // If there is an existing device, then it will either reset or recreate the scene.
+                hr = DXUTChangeDevice( &deviceSettings, NULL, false, false );
+
+                // If hr == E_ABORT, this means the app rejected the device settings in the ModifySettingsCallback
+                if( hr == E_ABORT )
+                {
+                    // so nothing changed and keep from attempting to switch adapters next time
+                    GetDXUTState().SetAutoChangeAdapter( false );
+                }
+                else if( FAILED(hr) )
+                {
+                    DXUTShutdown();
+                    DXUTPause( false, false );
+                    return;
+                }
+            }
+        }
+    }    
+}
+
+
+//--------------------------------------------------------------------------------------
+// Look for an adapter ordinal that is tied to a HMONITOR
+//--------------------------------------------------------------------------------------
+HRESULT DXUTGetAdapterOrdinalFromMonitor( HMONITOR hMonitor, UINT* pAdapterOrdinal )
+{
+    *pAdapterOrdinal = 0;
+
+    CD3DEnumeration* pd3dEnum = DXUTPrepareEnumerationObject();
+    IDirect3D9*      pD3D     = DXUTGetD3DObject();
+
+    CGrowableArray<CD3DEnumAdapterInfo*>* pAdapterList = pd3dEnum->GetAdapterInfoList();
+    for( int iAdapter=0; iAdapter<pAdapterList->GetSize(); iAdapter++ )
+    {
+        CD3DEnumAdapterInfo* pAdapterInfo = pAdapterList->GetAt(iAdapter);
+        HMONITOR hAdapterMonitor = pD3D->GetAdapterMonitor( pAdapterInfo->AdapterOrdinal );
+        if( hAdapterMonitor == hMonitor )
+        {
+            *pAdapterOrdinal = pAdapterInfo->AdapterOrdinal;
+            return S_OK;
+        }
+    }
+
+    return E_FAIL;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Internal function to map MK_* to an array index
+//--------------------------------------------------------------------------------------
+int DXUTMapButtonToArrayIndex( BYTE vButton )
+{
+    switch( vButton )
+    {
+        case MK_LBUTTON: return 0;
+        case VK_MBUTTON: 
+        case MK_MBUTTON: return 1;
+        case MK_RBUTTON: return 2;
+        case VK_XBUTTON1:
+        case MK_XBUTTON1: return 3;
+        case VK_XBUTTON2:
+        case MK_XBUTTON2: return 4;
+    }
+
+    return 0;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Setup cursor based on current settings (window/fullscreen mode, show cursor state, clip cursor state)
+//--------------------------------------------------------------------------------------
+void DXUTSetupCursor()
+{
+	// Show the cursor again if returning to fullscreen 
+	IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+	if( !DXUTIsWindowed() && pd3dDevice )
+    {
+        if( GetDXUTState().GetShowCursorWhenFullScreen() )
+	    {
+            SetCursor( NULL ); // Turn off Windows cursor in full screen mode
+		    HCURSOR hCursor = (HCURSOR)(ULONG_PTR)GetClassLongPtr( DXUTGetHWNDDeviceFullScreen(), GCLP_HCURSOR );
+		    DXUTSetDeviceCursor( pd3dDevice, hCursor, false );
+            DXUTGetD3DDevice()->ShowCursor( true );
+	    }
+        else
+        {
+            SetCursor( NULL ); // Turn off Windows cursor in full screen mode
+            DXUTGetD3DDevice()->ShowCursor( false );
+        }
+    }
+
+	// Clip cursor if requested
+	if( !DXUTIsWindowed() && GetDXUTState().GetClipCursorWhenFullScreen() )
+	{
+		// Confine cursor to full screen window
+		RECT rcWindow;
+		GetWindowRect( DXUTGetHWNDDeviceFullScreen(), &rcWindow );
+		ClipCursor( &rcWindow );
+	}
+	else
+	{
+		ClipCursor( NULL );
+	}
+}
+
+//--------------------------------------------------------------------------------------
+// Gives the D3D device a cursor with image and hotspot from hCursor.
+//--------------------------------------------------------------------------------------
+HRESULT DXUTSetDeviceCursor( IDirect3DDevice9* pd3dDevice, HCURSOR hCursor, bool bAddWatermark )
+{
+    HRESULT hr = E_FAIL;
+    ICONINFO iconinfo;
+    bool bBWCursor;
+    LPDIRECT3DSURFACE9 pCursorSurface = NULL;
+    HDC hdcColor = NULL;
+    HDC hdcMask = NULL;
+    HDC hdcScreen = NULL;
+    BITMAP bm;
+    DWORD dwWidth;
+    DWORD dwHeightSrc;
+    DWORD dwHeightDest;
+    COLORREF crColor;
+    COLORREF crMask;
+    UINT x;
+    UINT y;
+    BITMAPINFO bmi;
+    COLORREF* pcrArrayColor = NULL;
+    COLORREF* pcrArrayMask = NULL;
+    DWORD* pBitmap;
+    HGDIOBJ hgdiobjOld;
+
+    ZeroMemory( &iconinfo, sizeof(iconinfo) );
+    if( !GetIconInfo( hCursor, &iconinfo ) )
+        goto End;
+
+    if (0 == GetObject((HGDIOBJ)iconinfo.hbmMask, sizeof(BITMAP), (LPVOID)&bm))
+        goto End;
+    dwWidth = bm.bmWidth;
+    dwHeightSrc = bm.bmHeight;
+
+    if( iconinfo.hbmColor == NULL )
+    {
+        bBWCursor = TRUE;
+        dwHeightDest = dwHeightSrc / 2;
+    }
+    else 
+    {
+        bBWCursor = FALSE;
+        dwHeightDest = dwHeightSrc;
+    }
+
+    // Create a surface for the fullscreen cursor
+    if( FAILED( hr = pd3dDevice->CreateOffscreenPlainSurface( dwWidth, dwHeightDest, 
+        D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &pCursorSurface, NULL ) ) )
+    {
+        goto End;
+    }
+
+    pcrArrayMask = new DWORD[dwWidth * dwHeightSrc];
+
+    ZeroMemory(&bmi, sizeof(bmi));
+    bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
+    bmi.bmiHeader.biWidth = dwWidth;
+    bmi.bmiHeader.biHeight = dwHeightSrc;
+    bmi.bmiHeader.biPlanes = 1;
+    bmi.bmiHeader.biBitCount = 32;
+    bmi.bmiHeader.biCompression = BI_RGB;
+
+    hdcScreen = GetDC( NULL );
+    hdcMask = CreateCompatibleDC( hdcScreen );
+    if( hdcMask == NULL )
+    {
+        hr = E_FAIL;
+        goto End;
+    }
+    hgdiobjOld = SelectObject(hdcMask, iconinfo.hbmMask);
+    GetDIBits(hdcMask, iconinfo.hbmMask, 0, dwHeightSrc, 
+        pcrArrayMask, &bmi, DIB_RGB_COLORS);
+    SelectObject(hdcMask, hgdiobjOld);
+
+    if (!bBWCursor)
+    {
+        pcrArrayColor = new DWORD[dwWidth * dwHeightDest];
+        hdcColor = CreateCompatibleDC( hdcScreen );
+        if( hdcColor == NULL )
+        {
+            hr = E_FAIL;
+            goto End;
+        }
+        SelectObject(hdcColor, iconinfo.hbmColor);
+        GetDIBits(hdcColor, iconinfo.hbmColor, 0, dwHeightDest, 
+            pcrArrayColor, &bmi, DIB_RGB_COLORS);
+    }
+
+    // Transfer cursor image into the surface
+    D3DLOCKED_RECT lr;
+    pCursorSurface->LockRect( &lr, NULL, 0 );
+    pBitmap = (DWORD*)lr.pBits;
+    for( y = 0; y < dwHeightDest; y++ )
+    {
+        for( x = 0; x < dwWidth; x++ )
+        {
+            if (bBWCursor)
+            {
+                crColor = pcrArrayMask[dwWidth*(dwHeightDest-1-y) + x];
+                crMask = pcrArrayMask[dwWidth*(dwHeightSrc-1-y) + x];
+            }
+            else
+            {
+                crColor = pcrArrayColor[dwWidth*(dwHeightDest-1-y) + x];
+                crMask = pcrArrayMask[dwWidth*(dwHeightDest-1-y) + x];
+            }
+            if (crMask == 0)
+                pBitmap[dwWidth*y + x] = 0xff000000 | crColor;
+            else
+                pBitmap[dwWidth*y + x] = 0x00000000;
+
+            // It may be helpful to make the D3D cursor look slightly 
+            // different from the Windows cursor so you can distinguish 
+            // between the two when developing/testing code.  When
+            // bAddWatermark is TRUE, the following code adds some
+            // small grey "D3D" characters to the upper-left corner of
+            // the D3D cursor image.
+            if( bAddWatermark && x < 12 && y < 5 )
+            {
+                // 11.. 11.. 11.. .... CCC0
+                // 1.1. ..1. 1.1. .... A2A0
+                // 1.1. .1.. 1.1. .... A4A0
+                // 1.1. ..1. 1.1. .... A2A0
+                // 11.. 11.. 11.. .... CCC0
+
+                const WORD wMask[5] = { 0xccc0, 0xa2a0, 0xa4a0, 0xa2a0, 0xccc0 };
+                if( wMask[y] & (1 << (15 - x)) )
+                {
+                    pBitmap[dwWidth*y + x] |= 0xff808080;
+                }
+            }
+        }
+    }
+    pCursorSurface->UnlockRect();
+
+    // Set the device cursor
+    if( FAILED( hr = pd3dDevice->SetCursorProperties( iconinfo.xHotspot, 
+        iconinfo.yHotspot, pCursorSurface ) ) )
+    {
+        goto End;
+    }
+
+    hr = S_OK;
+
+End:
+    if( iconinfo.hbmMask != NULL )
+        DeleteObject( iconinfo.hbmMask );
+    if( iconinfo.hbmColor != NULL )
+        DeleteObject( iconinfo.hbmColor );
+    if( hdcScreen != NULL )
+        ReleaseDC( NULL, hdcScreen );
+    if( hdcColor != NULL )
+        DeleteDC( hdcColor );
+    if( hdcMask != NULL )
+        DeleteDC( hdcMask );
+    SAFE_DELETE_ARRAY( pcrArrayColor );
+    SAFE_DELETE_ARRAY( pcrArrayMask );
+    SAFE_RELEASE( pCursorSurface );
+    return hr;
+}
+
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/dxstdafx.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/dxstdafx.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/dxstdafx.cpp	(revision 1481)
@@ -0,0 +1,11 @@
+//--------------------------------------------------------------------------------------
+// File: DxStdAfx.cpp
+//
+// Desc: Precompiled headers for DXUT and DirectX SDK samples
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUT.h	(revision 1481)
@@ -0,0 +1,206 @@
+//--------------------------------------------------------------------------------------
+// File: DXUT.h
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#pragma once
+#ifndef DXUT_H
+#define DXUT_H
+
+#ifndef UNICODE
+#error "DXUT requires a Unicode build. See the nearby comments for details"
+//
+// If you are using Microsoft Visual C++ .NET, under the General tab of the project 
+// properties change the Character Set to 'Use Unicode Character Set'.  
+//
+// Windows XP and later are native Unicode so Unicode applications will perform better.  
+// For Windows 98 and Windows Me support, consider using the Microsoft Layer for Unicode (MSLU).  
+//
+// To use MSLU, link against a set of libraries similar to this
+//      /nod:kernel32.lib /nod:advapi32.lib /nod:user32.lib /nod:gdi32.lib /nod:shell32.lib /nod:comdlg32.lib /nod:version.lib /nod:mpr.lib /nod:rasapi32.lib /nod:winmm.lib /nod:winspool.lib /nod:vfw32.lib /nod:secur32.lib /nod:oleacc.lib /nod:oledlg.lib /nod:sensapi.lib UnicoWS.lib kernel32.lib advapi32.lib user32.lib gdi32.lib shell32.lib comdlg32.lib version.lib mpr.lib rasapi32.lib winmm.lib winspool.lib vfw32.lib secur32.lib oleacc.lib oledlg.lib sensapi.lib dxerr9.lib dxguid.lib d3dx9d.lib d3d9.lib comctl32.lib
+// and put the unicows.dll (available for download from msdn.microsoft.com) in the exe's folder.
+// 
+// For more details see the MSDN article titled:
+// "MSLU: Develop Unicode Applications for Windows 9x Platforms with the Microsoft Layer for Unicode"
+// at http://msdn.microsoft.com/msdnmag/issues/01/10/MSLU/default.aspx 
+//
+#endif
+
+//--------------------------------------------------------------------------------------
+// Structs
+//--------------------------------------------------------------------------------------
+class CD3DEnumeration;
+
+struct DXUTDeviceSettings
+{
+    UINT AdapterOrdinal;
+    D3DDEVTYPE DeviceType;
+    D3DFORMAT AdapterFormat;
+    DWORD BehaviorFlags;
+    D3DPRESENT_PARAMETERS pp;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Error codes
+//--------------------------------------------------------------------------------------
+#define DXUTERR_NODIRECT3D              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0901)
+#define DXUTERR_NOCOMPATIBLEDEVICES     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0902)
+#define DXUTERR_MEDIANOTFOUND           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0903)
+#define DXUTERR_NONZEROREFCOUNT         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0904)
+#define DXUTERR_CREATINGDEVICE          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0905)
+#define DXUTERR_RESETTINGDEVICE         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0906)
+#define DXUTERR_CREATINGDEVICEOBJECTS   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0907)
+#define DXUTERR_RESETTINGDEVICEOBJECTS  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0908)
+#define DXUTERR_INCORRECTVERSION        MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0909)
+
+
+//--------------------------------------------------------------------------------------
+// Callback registration 
+//--------------------------------------------------------------------------------------
+typedef bool    (CALLBACK *LPDXUTCALLBACKISDEVICEACCEPTABLE)( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext );
+typedef bool    (CALLBACK *LPDXUTCALLBACKMODIFYDEVICESETTINGS)( DXUTDeviceSettings* pDeviceSettings, const D3DCAPS9* pCaps, void* pUserContext );
+typedef HRESULT (CALLBACK *LPDXUTCALLBACKDEVICECREATED)( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext );
+typedef HRESULT (CALLBACK *LPDXUTCALLBACKDEVICERESET)( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKDEVICEDESTROYED)( void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKDEVICELOST)( void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKFRAMEMOVE)( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKFRAMERENDER)( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKKEYBOARD)( UINT nChar, bool bKeyDown, bool bAltDown, void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKMOUSE)( bool bLeftButtonDown, bool bRightButtonDown, bool bMiddleButtonDown, bool bSideButton1Down, bool bSideButton2Down, int nMouseWheelDelta, int xPos, int yPos, void* pUserContext );
+typedef LRESULT (CALLBACK *LPDXUTCALLBACKMSGPROC)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing, void* pUserContext );
+typedef void    (CALLBACK *LPDXUTCALLBACKTIMER)( UINT idEvent, void* pUserContext );
+
+// Device callbacks
+void DXUTSetCallbackDeviceCreated( LPDXUTCALLBACKDEVICECREATED pCallbackDeviceCreated, void* pUserContext = NULL );
+void DXUTSetCallbackDeviceReset( LPDXUTCALLBACKDEVICERESET pCallbackDeviceReset, void* pUserContext = NULL );
+void DXUTSetCallbackDeviceLost( LPDXUTCALLBACKDEVICELOST pCallbackDeviceLost, void* pUserContext = NULL );
+void DXUTSetCallbackDeviceDestroyed( LPDXUTCALLBACKDEVICEDESTROYED pCallbackDeviceDestroyed, void* pUserContext = NULL );
+void DXUTSetCallbackDeviceChanging( LPDXUTCALLBACKMODIFYDEVICESETTINGS pCallbackModifyDeviceSettings, void* pUserContext = NULL );
+
+// Frame callbacks
+void DXUTSetCallbackFrameMove( LPDXUTCALLBACKFRAMEMOVE pCallbackFrameMove, void* pUserContext = NULL );
+void DXUTSetCallbackFrameRender( LPDXUTCALLBACKFRAMERENDER pCallbackFrameRender, void* pUserContext = NULL );
+
+// Message callbacks
+void DXUTSetCallbackKeyboard( LPDXUTCALLBACKKEYBOARD pCallbackKeyboard, void* pUserContext = NULL );
+void DXUTSetCallbackMouse( LPDXUTCALLBACKMOUSE pCallbackMouse, bool bIncludeMouseMove = false, void* pUserContext = NULL );
+void DXUTSetCallbackMsgProc( LPDXUTCALLBACKMSGPROC pCallbackMsgProc, void* pUserContext = NULL );
+
+
+//--------------------------------------------------------------------------------------
+// Initialization
+//--------------------------------------------------------------------------------------
+HRESULT DXUTInit( bool bParseCommandLine = true, bool bHandleDefaultHotkeys = true, bool bShowMsgBoxOnError = true, bool bHandleAltEnter = true );
+
+// Choose either DXUTCreateWindow or DXUTSetWindow.  If using DXUTSetWindow, consider using DXUTStaticWndProc
+HRESULT DXUTCreateWindow( const WCHAR* strWindowTitle = L"Direct3D Window", 
+                          HINSTANCE hInstance = NULL, HICON hIcon = NULL, HMENU hMenu = NULL,
+                          int x = CW_USEDEFAULT, int y = CW_USEDEFAULT );
+HRESULT DXUTSetWindow( HWND hWndFocus, HWND hWndDeviceFullScreen, HWND hWndDeviceWindowed, bool bHandleMessages = true );
+LRESULT CALLBACK DXUTStaticWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
+
+// Choose either DXUTCreateDevice or DXUTSetDevice or DXUTCreateDeviceFromSettings
+HRESULT DXUTCreateDevice( UINT AdapterOrdinal = D3DADAPTER_DEFAULT, bool bWindowed = true, 
+                          int nSuggestedWidth = 0, int nSuggestedHeight = 0,
+                          LPDXUTCALLBACKISDEVICEACCEPTABLE pCallbackIsDeviceAcceptable = NULL,
+                          LPDXUTCALLBACKMODIFYDEVICESETTINGS pCallbackModifyDeviceSettings = NULL, 
+                          void* pUserContext = NULL );
+HRESULT DXUTCreateDeviceFromSettings( DXUTDeviceSettings* pDeviceSettings, bool bPreserveInput = false, bool bClipWindowToSingleAdapter = true );
+HRESULT DXUTSetDevice( IDirect3DDevice9* pd3dDevice );
+
+// Choose either DXUTMainLoop or implement your own main loop 
+HRESULT DXUTMainLoop( HACCEL hAccel = NULL );
+
+// If not using DXUTMainLoop consider using DXUTRender3DEnvironment
+void DXUTRender3DEnvironment(); 
+
+
+//--------------------------------------------------------------------------------------
+// Finding valid device settings
+//--------------------------------------------------------------------------------------
+enum DXUT_MATCH_TYPE
+{
+    DXUTMT_IGNORE_INPUT = 0,  // Use the closest valid value to a default 
+    DXUTMT_PRESERVE_INPUT,    // Use input without change, but may cause no valid device to be found
+    DXUTMT_CLOSEST_TO_INPUT   // Use the closest valid value to the input 
+};
+
+struct DXUTMatchOptions
+{
+    DXUT_MATCH_TYPE eAdapterOrdinal;
+    DXUT_MATCH_TYPE eDeviceType;
+    DXUT_MATCH_TYPE eWindowed;
+    DXUT_MATCH_TYPE eAdapterFormat;
+    DXUT_MATCH_TYPE eVertexProcessing;
+    DXUT_MATCH_TYPE eResolution;
+    DXUT_MATCH_TYPE eBackBufferFormat;
+    DXUT_MATCH_TYPE eBackBufferCount;
+    DXUT_MATCH_TYPE eMultiSample;
+    DXUT_MATCH_TYPE eSwapEffect;
+    DXUT_MATCH_TYPE eDepthFormat;
+    DXUT_MATCH_TYPE eStencilFormat;
+    DXUT_MATCH_TYPE ePresentFlags;
+    DXUT_MATCH_TYPE eRefreshRate;
+    DXUT_MATCH_TYPE ePresentInterval;
+};
+
+HRESULT DXUTFindValidDeviceSettings( DXUTDeviceSettings* pOut, DXUTDeviceSettings* pIn = NULL, DXUTMatchOptions* pMatchOptions = NULL );
+
+
+//--------------------------------------------------------------------------------------
+// Common Tasks 
+//--------------------------------------------------------------------------------------
+void    DXUTSetCursorSettings( bool bShowCursorWhenFullScreen, bool bClipCursorWhenFullScreen );
+void    DXUTSetMultimonSettings( bool bAutoChangeAdapter );
+void    DXUTSetShortcutKeySettings( bool bAllowWhenFullscreen = false, bool bAllowWhenWindowed = true ); // Controls the Windows key, and accessibility shortcut keys
+void    DXUTSetWindowSettings( bool bCallDefWindowProc = true );
+void    DXUTSetConstantFrameTime( bool bConstantFrameTime, float fTimePerFrame = 0.0333f );
+HRESULT DXUTSetTimer( LPDXUTCALLBACKTIMER pCallbackTimer, float fTimeoutInSecs = 1.0f, UINT* pnIDEvent = NULL, void* pCallbackUserContext = NULL );
+HRESULT DXUTKillTimer( UINT nIDEvent );
+HRESULT DXUTToggleFullScreen();
+HRESULT DXUTToggleREF();
+void    DXUTPause( bool bPauseTime, bool bPauseRendering );
+void    DXUTResetFrameworkState();
+void    DXUTShutdown( int nExitCode = 0 );
+
+
+//--------------------------------------------------------------------------------------
+// State Retrieval  
+//--------------------------------------------------------------------------------------
+IDirect3D9*             DXUTGetD3DObject(); // Does not addref unlike typical Get* APIs
+IDirect3DDevice9*       DXUTGetD3DDevice(); // Does not addref unlike typical Get* APIs
+DXUTDeviceSettings      DXUTGetDeviceSettings(); 
+D3DPRESENT_PARAMETERS   DXUTGetPresentParameters();
+const D3DSURFACE_DESC*  DXUTGetBackBufferSurfaceDesc();
+const D3DCAPS9*         DXUTGetDeviceCaps();
+HINSTANCE               DXUTGetHINSTANCE();
+HWND                    DXUTGetHWND();
+HWND                    DXUTGetHWNDFocus();
+HWND                    DXUTGetHWNDDeviceFullScreen();
+HWND                    DXUTGetHWNDDeviceWindowed();
+RECT                    DXUTGetWindowClientRect();
+RECT                    DXUTGetWindowClientRectAtModeChange(); // Useful for returning to windowed mode with the same resolution as before toggle to full screen mode
+RECT                    DXUTGetFullsceenClientRectAtModeChange(); // Useful for returning to full screen mode with the same resolution as before toggle to windowed mode
+double                  DXUTGetTime();
+float                   DXUTGetElapsedTime();
+bool                    DXUTIsWindowed();
+float                   DXUTGetFPS();
+LPCWSTR                 DXUTGetWindowTitle();
+LPCWSTR                 DXUTGetFrameStats( bool bIncludeFPS = false );
+LPCWSTR                 DXUTGetDeviceStats();
+bool                    DXUTIsRenderingPaused();
+bool                    DXUTIsTimePaused();
+bool                    DXUTIsActive();
+int                     DXUTGetExitCode();
+bool                    DXUTGetShowMsgBoxOnError();
+bool                    DXUTGetHandleDefaultHotkeys();
+bool                    DXUTIsKeyDown( BYTE vKey ); // Pass a virtual-key code, ex. VK_F1, 'A', VK_RETURN, VK_LSHIFT, etc
+bool                    DXUTIsMouseButtonDown( BYTE vButton ); // Pass a virtual-key code: VK_LBUTTON, VK_RBUTTON, VK_MBUTTON, VK_XBUTTON1, VK_XBUTTON2
+bool                    DXUTGetAutomation();  // Returns true if -automation parameter is used to launch the app
+
+#endif
+
+
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTgui.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTgui.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTgui.cpp	(revision 1481)
@@ -0,0 +1,8275 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTgui.cpp
+//
+// Desc: 
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+#include "DXUTgui.h"
+#include "DXUTsettingsDlg.h"
+#undef min // use __min instead
+#undef max // use __max instead
+
+#ifndef WM_XBUTTONDOWN
+#define WM_XBUTTONDOWN 0x020B // (not always defined)
+#endif
+#ifndef WM_XBUTTONUP
+#define WM_XBUTTONUP 0x020C // (not always defined)
+#endif
+#ifndef WM_MOUSEWHEEL
+#define WM_MOUSEWHEEL 0x020A // (not always defined)
+#endif
+#ifndef WHEEL_DELTA
+#define WHEEL_DELTA 120 // (not always defined)
+#endif
+
+// Minimum scroll bar thumb size
+#define SCROLLBAR_MINTHUMBSIZE 8
+
+// Delay and repeat period when clicking on the scroll bar arrows
+#define SCROLLBAR_ARROWCLICK_DELAY  0.33
+#define SCROLLBAR_ARROWCLICK_REPEAT 0.05
+
+#define UNISCRIBE_DLLNAME L"\\usp10.dll"
+
+#define GETPROCADDRESS( Module, APIName, Temp ) \
+    Temp = GetProcAddress( Module, #APIName ); \
+    if( Temp ) \
+        *(FARPROC*)&_##APIName = Temp
+
+#define PLACEHOLDERPROC( APIName ) \
+    _##APIName = Dummy_##APIName
+
+#define IMM32_DLLNAME L"\\imm32.dll"
+#define VER_DLLNAME L"\\version.dll"
+
+
+// DXUT_MAX_EDITBOXLENGTH is the maximum string length allowed in edit boxes,
+// including the NULL terminator.
+// 
+// Uniscribe does not support strings having bigger-than-16-bits length.
+// This means that the string must be less than 65536 characters long,
+// including the NULL terminator.
+#define DXUT_MAX_EDITBOXLENGTH 0xFFFF
+
+
+double        CDXUTDialog::s_fTimeRefresh = 0.0f;
+CDXUTControl* CDXUTDialog::s_pControlFocus = NULL;        // The control which has focus
+CDXUTControl* CDXUTDialog::s_pControlPressed = NULL;      // The control currently pressed
+
+
+struct DXUT_SCREEN_VERTEX
+{
+    float x, y, z, h;
+    D3DCOLOR color;
+    float tu, tv;
+
+    static DWORD FVF;
+};
+DWORD DXUT_SCREEN_VERTEX::FVF = D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1;
+
+
+struct DXUT_SCREEN_VERTEX_UNTEX
+{
+    float x, y, z, h;
+    D3DCOLOR color;
+
+    static DWORD FVF;
+};
+DWORD DXUT_SCREEN_VERTEX_UNTEX::FVF = D3DFVF_XYZRHW | D3DFVF_DIFFUSE;
+
+
+inline int RectWidth( RECT &rc ) { return ( (rc).right - (rc).left ); }
+inline int RectHeight( RECT &rc ) { return ( (rc).bottom - (rc).top ); }
+
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTDialog class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTDialog::CDXUTDialog()
+{
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+
+    m_pManager = NULL;
+    m_bVisible = true;
+    m_bCaption = false;
+    m_bMinimized = false;
+    m_bDrag = false;
+    m_wszCaption[0] = L'\0';
+    m_nCaptionHeight = 18;
+
+    m_colorTopLeft = 0;
+    m_colorTopRight = 0;
+    m_colorBottomLeft = 0;
+    m_colorBottomRight = 0;
+
+    m_pCallbackEvent = NULL;
+    m_pCallbackEventUserContext = NULL;
+
+    m_fTimeLastRefresh = 0;
+
+    m_pControlMouseOver = NULL;
+
+    m_pNextDialog = this;
+    m_pPrevDialog = this;
+
+    m_nDefaultControlID = 0xffff;
+    m_bNonUserEvents = false;
+    m_bKeyboardInput = false;
+    m_bMouseInput = true;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTDialog::~CDXUTDialog()
+{
+    int i=0;
+
+    RemoveAllControls();
+
+    m_Fonts.RemoveAll();
+    m_Textures.RemoveAll();
+
+    for( i=0; i < m_DefaultElements.GetSize(); i++ )
+    {
+        DXUTElementHolder* pElementHolder = m_DefaultElements.GetAt( i );
+        SAFE_DELETE( pElementHolder );
+    }
+
+    m_DefaultElements.RemoveAll();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog )
+{
+    m_pManager = pManager;
+    if( bRegisterDialog )
+        pManager->RegisterDialog( this );
+
+    SetTexture( 0, MAKEINTRESOURCE(0xFFFF), (HMODULE)0xFFFF );
+    InitDefaultElements();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog, LPCWSTR pszControlTextureFilename )
+{
+    m_pManager = pManager;
+    if( bRegisterDialog )
+        pManager->RegisterDialog( this );
+    SetTexture( 0, pszControlTextureFilename );
+    InitDefaultElements();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog, LPCWSTR szControlTextureResourceName, HMODULE hControlTextureResourceModule )
+{
+    m_pManager = pManager;
+    if( bRegisterDialog )
+        pManager->RegisterDialog( this );
+    
+    SetTexture( 0, szControlTextureResourceName, hControlTextureResourceModule );
+    InitDefaultElements();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::SetCallback( PCALLBACKDXUTGUIEVENT pCallback, void* pUserContext )
+{
+    // If this assert triggers, you need to call CDXUTDialog::Init() first.  This change
+    // was made so that the DXUT's GUI could become seperate and optional from DXUT's core.  The 
+    // creation and interfacing with CDXUTDialogResourceManager is now the responsibility 
+    // of the application if it wishes to use DXUT's GUI.
+    assert( m_pManager != NULL && L"To fix call CDXUTDialog::Init() first.  See comments for details." ); 
+
+    m_pCallbackEvent = pCallback; 
+    m_pCallbackEventUserContext = pUserContext; 
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::RemoveControl( int ID )
+{
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt( i );
+        if( pControl->GetID() == ID )
+        {
+            // Clean focus first
+            ClearFocus();
+
+            // Clear references to this control
+            if( s_pControlFocus == pControl )
+                s_pControlFocus = NULL;
+            if( s_pControlPressed == pControl )
+                s_pControlPressed = NULL;
+            if( m_pControlMouseOver == pControl )
+                m_pControlMouseOver = NULL;
+
+            SAFE_DELETE( pControl );
+            m_Controls.Remove( i );
+
+            return;
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::RemoveAllControls()
+{
+    if( s_pControlFocus && s_pControlFocus->m_pDialog == this )
+        s_pControlFocus = NULL;
+    if( s_pControlPressed && s_pControlPressed->m_pDialog == this )
+        s_pControlPressed = NULL;
+    m_pControlMouseOver = NULL;
+
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt( i );
+        SAFE_DELETE( pControl );
+    }
+
+    m_Controls.RemoveAll();
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTDialogResourceManager::CDXUTDialogResourceManager()
+{
+    m_pd3dDevice = NULL;
+    m_pStateBlock = NULL;
+    m_pSprite = NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTDialogResourceManager::~CDXUTDialogResourceManager()
+{
+    int i;
+    for( i=0; i < m_FontCache.GetSize(); i++ )
+    {
+        DXUTFontNode* pFontNode = m_FontCache.GetAt( i );
+        SAFE_DELETE( pFontNode );
+    }
+    m_FontCache.RemoveAll();   
+
+    for( i=0; i < m_TextureCache.GetSize(); i++ )
+    {
+        DXUTTextureNode* pTextureNode = m_TextureCache.GetAt( i );
+        SAFE_DELETE( pTextureNode );
+    }
+    m_TextureCache.RemoveAll();   
+
+    CUniBuffer::Uninitialize();
+    CDXUTIMEEditBox::Uninitialize();
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialogResourceManager::OnCreateDevice( LPDIRECT3DDEVICE9 pd3dDevice )
+{
+    HRESULT hr = S_OK;
+    int i=0;
+
+    m_pd3dDevice = pd3dDevice;
+    
+    for( i=0; i < m_FontCache.GetSize(); i++ )
+    {
+        hr = CreateFont( i );
+        if( FAILED(hr) )
+            return hr;
+    }
+    
+    for( i=0; i < m_TextureCache.GetSize(); i++ )
+    {
+        hr = CreateTexture( i );
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    hr = D3DXCreateSprite( pd3dDevice, &m_pSprite );
+    if( FAILED(hr) )
+        return DXUT_ERR( L"D3DXCreateSprite", hr );
+
+    // Call CDXUTIMEEditBox's StaticOnCreateDevice()
+    // to initialize certain window-dependent data.
+    CDXUTIMEEditBox::StaticOnCreateDevice();
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialogResourceManager::OnResetDevice()
+{
+    HRESULT hr = S_OK;
+
+    for( int i=0; i < m_FontCache.GetSize(); i++ )
+    {
+        DXUTFontNode* pFontNode = m_FontCache.GetAt( i );
+
+        if( pFontNode->pFont )
+            pFontNode->pFont->OnResetDevice();
+    }
+
+    if( m_pSprite )
+        m_pSprite->OnResetDevice();
+
+    IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+
+    V_RETURN( pd3dDevice->CreateStateBlock( D3DSBT_ALL, &m_pStateBlock ) );
+
+    return S_OK;
+}
+
+//--------------------------------------------------------------------------------------
+bool CDXUTDialogResourceManager::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    // Let the CDXUTIMEEditBox's static message proc handle the msg.
+    // This is because some IME messages must be handled to ensure
+    // proper functionalities and the static msg proc ensures that
+    // this happens even if no control has the input focus.
+    if( CDXUTIMEEditBox::StaticMsgProc( uMsg, wParam, lParam ) )
+        return true;
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialogResourceManager::OnLostDevice()
+{
+    for( int i=0; i < m_FontCache.GetSize(); i++ )
+    {
+        DXUTFontNode* pFontNode = m_FontCache.GetAt( i );
+
+        if( pFontNode->pFont )
+            pFontNode->pFont->OnLostDevice();
+    }
+
+    if( m_pSprite )
+        m_pSprite->OnLostDevice();
+
+    SAFE_RELEASE( m_pStateBlock  );
+}
+
+    
+//--------------------------------------------------------------------------------------
+void CDXUTDialogResourceManager::OnDestroyDevice()
+{
+    int i=0; 
+
+    m_pd3dDevice = NULL;
+
+    // Release the resources but don't clear the cache, as these will need to be
+    // recreated if the device is recreated
+    for( i=0; i < m_FontCache.GetSize(); i++ )
+    {
+        DXUTFontNode* pFontNode = m_FontCache.GetAt( i );
+        SAFE_RELEASE( pFontNode->pFont );
+    }
+    
+    for( i=0; i < m_TextureCache.GetSize(); i++ )
+    {
+        DXUTTextureNode* pTextureNode = m_TextureCache.GetAt( i );
+        SAFE_RELEASE( pTextureNode->pTexture );
+    }
+
+    SAFE_RELEASE( m_pSprite );
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTDialogResourceManager::RegisterDialog( CDXUTDialog *pDialog )
+{
+    // Check that the dialog isn't already registered.
+    for( int i = 0; i < m_Dialogs.GetSize(); ++i )
+        if( m_Dialogs.GetAt( i ) == pDialog )
+            return true;
+
+    // Add to the list.
+    if( FAILED( m_Dialogs.Add( pDialog ) ) )
+        return false;
+
+    // Set up next and prev pointers.
+    if( m_Dialogs.GetSize() > 1 )
+        m_Dialogs[m_Dialogs.GetSize() - 2]->SetNextDialog( pDialog );
+    m_Dialogs[m_Dialogs.GetSize() - 1]->SetNextDialog( m_Dialogs[0] );
+
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialogResourceManager::UnregisterDialog( CDXUTDialog *pDialog )
+{
+    // Search for the dialog in the list.
+    for( int i = 0; i < m_Dialogs.GetSize(); ++i )
+        if( m_Dialogs.GetAt( i ) == pDialog )
+        {
+            m_Dialogs.Remove( i );
+            if( m_Dialogs.GetSize() > 0 )
+            {
+                int l, r;
+
+                if( 0 == i )
+                    l = m_Dialogs.GetSize() - 1;
+                else
+                    l = i - 1;
+
+                if( m_Dialogs.GetSize() == i )
+                    r = 0;
+                else
+                    r = i;
+
+                m_Dialogs[l]->SetNextDialog( m_Dialogs[r] );
+            }
+            return;
+        }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialogResourceManager::EnableKeyboardInputForAllDialogs()
+{
+    // Enable keyboard input for all registered dialogs
+    for( int i = 0; i < m_Dialogs.GetSize(); ++i )
+        m_Dialogs[i]->EnableKeyboardInput( true );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::Refresh()
+{
+    if( s_pControlFocus )
+        s_pControlFocus->OnFocusOut();
+
+    if( m_pControlMouseOver )
+        m_pControlMouseOver->OnMouseLeave();
+
+    s_pControlFocus = NULL;
+    s_pControlPressed = NULL;
+    m_pControlMouseOver = NULL;
+
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt(i);
+        pControl->Refresh();
+    }
+
+    if( m_bKeyboardInput )
+        FocusDefaultControl();
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::OnRender( float fElapsedTime )
+{   
+    // If this assert triggers, you need to call CDXUTDialogResourceManager::On*Device() from inside
+    // the application's device callbacks.  See the SDK samples for an example of how to do this.
+    assert( m_pManager->GetD3DDevice() && m_pManager->m_pStateBlock && L"To fix hook up CDXUTDialogResourceManager to device callbacks.  See comments for details" );
+
+    // See if the dialog needs to be refreshed
+    if( m_fTimeLastRefresh < s_fTimeRefresh )
+    {
+        m_fTimeLastRefresh = DXUTGetTime();
+        Refresh();
+    }
+
+    // For invisible dialog, out now.
+    if( !m_bVisible ||
+        ( m_bMinimized && !m_bCaption ) )
+        return S_OK;
+
+    IDirect3DDevice9* pd3dDevice = m_pManager->GetD3DDevice();
+
+    // Set up a state block here and restore it when finished drawing all the controls
+    m_pManager->m_pStateBlock->Capture();
+
+    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
+    pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
+    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
+    pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, FALSE );
+    pd3dDevice->SetRenderState( D3DRS_SEPARATEALPHABLENDENABLE, FALSE );
+    pd3dDevice->SetRenderState( D3DRS_BLENDOP, D3DBLENDOP_ADD );
+    pd3dDevice->SetRenderState( D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA|D3DCOLORWRITEENABLE_BLUE|D3DCOLORWRITEENABLE_GREEN|D3DCOLORWRITEENABLE_RED );
+    pd3dDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD );
+    pd3dDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
+    pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
+    pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
+    pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
+
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_RESULTARG, D3DTA_CURRENT );
+    pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE );
+    pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
+
+    BOOL bBackgroundIsVisible = ( m_colorTopLeft | m_colorTopRight | m_colorBottomRight | m_colorBottomLeft ) & 0xff000000;
+    if( !m_bMinimized && bBackgroundIsVisible )
+    {
+        DXUT_SCREEN_VERTEX_UNTEX vertices[4] =
+        {
+            (float)m_x,           (float)m_y,            0.5f, 1.0f, m_colorTopLeft,
+            (float)m_x + m_width, (float)m_y,            0.5f, 1.0f, m_colorTopRight,
+            (float)m_x + m_width, (float)m_y + m_height, 0.5f, 1.0f, m_colorBottomRight,
+            (float)m_x,           (float)m_y + m_height, 0.5f, 1.0f, m_colorBottomLeft,
+        };
+
+        pd3dDevice->SetVertexShader( NULL );
+        pd3dDevice->SetPixelShader( NULL );
+
+        pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
+
+        pd3dDevice->SetFVF( DXUT_SCREEN_VERTEX_UNTEX::FVF );
+        pd3dDevice->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vertices, sizeof(DXUT_SCREEN_VERTEX_UNTEX) );
+    }
+
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
+    
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
+
+    pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
+
+    DXUTTextureNode* pTextureNode = GetTexture( 0 );
+    pd3dDevice->SetTexture( 0, pTextureNode->pTexture );
+
+    m_pManager->m_pSprite->Begin( D3DXSPRITE_DONOTSAVESTATE );
+
+    // Render the caption if it's enabled.
+    if( m_bCaption )
+    {
+        // DrawSprite will offset the rect down by
+        // m_nCaptionHeight, so adjust the rect higher
+        // here to negate the effect.
+        RECT rc = { 0, -m_nCaptionHeight, m_width, 0 };
+        DrawSprite( &m_CapElement, &rc );
+        rc.left += 5; // Make a left margin
+        WCHAR wszOutput[256];
+        StringCchCopy( wszOutput, 256, m_wszCaption );
+        if( m_bMinimized )
+            StringCchCat( wszOutput, 256, L" (Minimized)" );
+        DrawText( wszOutput, &m_CapElement, &rc, true );
+    }
+
+    // If the dialog is minimized, skip rendering
+    // its controls.
+    if( !m_bMinimized )
+    {
+        for( int i=0; i < m_Controls.GetSize(); i++ )
+        {
+            CDXUTControl* pControl = m_Controls.GetAt(i);   
+
+            // Focused control is drawn last
+            if( pControl == s_pControlFocus )
+                continue;
+
+            pControl->Render( pd3dDevice, fElapsedTime );
+        }
+
+        if( s_pControlFocus != NULL && s_pControlFocus->m_pDialog == this )
+            s_pControlFocus->Render( pd3dDevice, fElapsedTime );
+    }
+
+    m_pManager->m_pSprite->End();
+
+    m_pManager->m_pStateBlock->Apply();
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+VOID CDXUTDialog::SendEvent( UINT nEvent, bool bTriggeredByUser, CDXUTControl* pControl )
+{
+    // If no callback has been registered there's nowhere to send the event to
+    if( m_pCallbackEvent == NULL )
+        return;
+
+    // Discard events triggered programatically if these types of events haven't been
+    // enabled
+    if( !bTriggeredByUser && !m_bNonUserEvents )
+        return;
+
+    m_pCallbackEvent( nEvent, pControl->GetID(), pControl, m_pCallbackEventUserContext );
+}
+
+
+//--------------------------------------------------------------------------------------
+int CDXUTDialogResourceManager::AddFont( LPCWSTR strFaceName, LONG height, LONG weight )
+{
+    // See if this font already exists
+    for( int i=0; i < m_FontCache.GetSize(); i++ )
+    {
+        DXUTFontNode* pFontNode = m_FontCache.GetAt(i);
+        size_t nLen = 0;
+        StringCchLength( strFaceName, MAX_PATH, &nLen );        
+        if( 0 == _wcsnicmp( pFontNode->strFace, strFaceName, nLen ) &&
+            pFontNode->nHeight == height &&
+            pFontNode->nWeight == weight )
+        {
+            return i;
+        }
+    }
+
+    // Add a new font and try to create it
+    DXUTFontNode* pNewFontNode = new DXUTFontNode();
+    if( pNewFontNode == NULL )
+        return -1;
+
+    ZeroMemory( pNewFontNode, sizeof(DXUTFontNode) );
+    StringCchCopy( pNewFontNode->strFace, MAX_PATH, strFaceName );
+    pNewFontNode->nHeight = height;
+    pNewFontNode->nWeight = weight;
+    m_FontCache.Add( pNewFontNode );
+    
+    int iFont = m_FontCache.GetSize()-1;
+
+    // If a device is available, try to create immediately
+    if( m_pd3dDevice )
+        CreateFont( iFont );
+
+    return iFont;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::SetFont( UINT index, LPCWSTR strFaceName, LONG height, LONG weight )
+{
+    // If this assert triggers, you need to call CDXUTDialog::Init() first.  This change
+    // was made so that the DXUT's GUI could become seperate and optional from DXUT's core.  The 
+    // creation and interfacing with CDXUTDialogResourceManager is now the responsibility 
+    // of the application if it wishes to use DXUT's GUI.
+    assert( m_pManager != NULL && L"To fix call CDXUTDialog::Init() first.  See comments for details." ); 
+
+    // Make sure the list is at least as large as the index being set
+    UINT i;
+    for( i=m_Fonts.GetSize(); i <= index; i++ )
+    {
+        m_Fonts.Add( -1 );
+    }
+
+    int iFont = m_pManager->AddFont( strFaceName, height, weight );
+    m_Fonts.SetAt( index, iFont );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+DXUTFontNode* CDXUTDialog::GetFont( UINT index )
+{
+    if( NULL == m_pManager )
+        return NULL;
+    return m_pManager->GetFontNode( m_Fonts.GetAt( index ) );
+}
+
+
+//--------------------------------------------------------------------------------------
+int CDXUTDialogResourceManager::AddTexture( LPCWSTR strFilename )
+{
+    // See if this texture already exists
+    for( int i=0; i < m_TextureCache.GetSize(); i++ )
+    {
+        DXUTTextureNode* pTextureNode = m_TextureCache.GetAt(i);
+        size_t nLen = 0;
+        StringCchLength( strFilename, MAX_PATH, &nLen );        
+        if( pTextureNode->bFileSource &&  // Sources must match
+            0 == _wcsnicmp( pTextureNode->strFilename, strFilename, nLen ) )
+            return i;
+    }
+
+    // Add a new texture and try to create it
+    DXUTTextureNode* pNewTextureNode = new DXUTTextureNode();
+    if( pNewTextureNode == NULL )
+        return -1;
+
+    ZeroMemory( pNewTextureNode, sizeof(DXUTTextureNode) );
+    pNewTextureNode->bFileSource = true;
+    StringCchCopy( pNewTextureNode->strFilename, MAX_PATH, strFilename );
+
+    m_TextureCache.Add( pNewTextureNode );
+    
+    int iTexture = m_TextureCache.GetSize()-1;
+
+    // If a device is available, try to create immediately
+    if( m_pd3dDevice )
+        CreateTexture( iTexture );
+
+    return iTexture;
+}
+
+
+//--------------------------------------------------------------------------------------
+int CDXUTDialogResourceManager::AddTexture( LPCWSTR strResourceName, HMODULE hResourceModule )
+{
+    // See if this texture already exists
+    for( int i=0; i < m_TextureCache.GetSize(); i++ )
+    {
+        DXUTTextureNode* pTextureNode = m_TextureCache.GetAt(i);
+        if( !pTextureNode->bFileSource &&      // Sources must match
+            pTextureNode->hResourceModule == hResourceModule ) // Module handles must match
+        {
+            if( IS_INTRESOURCE( strResourceName ) )
+            {
+                // Integer-based ID
+                if( (INT_PTR)strResourceName == pTextureNode->nResourceID )
+                    return i;
+            }
+            else
+            {
+                // String-based ID
+                size_t nLen = 0;
+                StringCchLength( strResourceName, MAX_PATH, &nLen );        
+                if( 0 == _wcsnicmp( pTextureNode->strFilename, strResourceName, nLen ) )
+                    return i;
+            }
+        }
+    }
+
+    // Add a new texture and try to create it
+    DXUTTextureNode* pNewTextureNode = new DXUTTextureNode();
+    if( pNewTextureNode == NULL )
+        return -1;
+
+    ZeroMemory( pNewTextureNode, sizeof(DXUTTextureNode) );
+    pNewTextureNode->hResourceModule = hResourceModule;
+    if( IS_INTRESOURCE( strResourceName ) )
+    {
+        pNewTextureNode->nResourceID = (int)(size_t)strResourceName;
+    }
+    else
+    {
+        pNewTextureNode->nResourceID = 0;
+        StringCchCopy( pNewTextureNode->strFilename, MAX_PATH, strResourceName );
+    }
+
+    m_TextureCache.Add( pNewTextureNode );
+    
+    int iTexture = m_TextureCache.GetSize()-1;
+
+    // If a device is available, try to create immediately
+    if( m_pd3dDevice )
+        CreateTexture( iTexture );
+
+    return iTexture;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::SetTexture( UINT index, LPCWSTR strFilename )
+{
+    // If this assert triggers, you need to call CDXUTDialog::Init() first.  This change
+    // was made so that the DXUT's GUI could become seperate and optional from DXUT's core.  The 
+    // creation and interfacing with CDXUTDialogResourceManager is now the responsibility 
+    // of the application if it wishes to use DXUT's GUI.
+    assert( m_pManager != NULL && L"To fix this, call CDXUTDialog::Init() first.  See comments for details." ); 
+
+    // Make sure the list is at least as large as the index being set
+    for( UINT i=m_Textures.GetSize(); i <= index; i++ )
+    {
+        m_Textures.Add( -1 );
+    }
+
+    int iTexture = m_pManager->AddTexture( strFilename );
+
+    m_Textures.SetAt( index, iTexture );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::SetTexture( UINT index, LPCWSTR strResourceName, HMODULE hResourceModule )
+{
+    // If this assert triggers, you need to call CDXUTDialog::Init() first.  This change
+    // was made so that the DXUT's GUI could become seperate and optional from DXUT's core.  The 
+    // creation and interfacing with CDXUTDialogResourceManager is now the responsibility 
+    // of the application if it wishes to use DXUT's GUI.
+    assert( m_pManager != NULL && L"To fix this, call CDXUTDialog::Init() first.  See comments for details." ); 
+
+    // Make sure the list is at least as large as the index being set
+    for( UINT i=m_Textures.GetSize(); i <= index; i++ )
+    {
+        m_Textures.Add( -1 );
+    }
+
+    int iTexture = m_pManager->AddTexture( strResourceName, hResourceModule );
+
+    m_Textures.SetAt( index, iTexture );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+DXUTTextureNode* CDXUTDialog::GetTexture( UINT index )
+{
+    if( NULL == m_pManager )
+        return NULL;
+    return m_pManager->GetTextureNode( m_Textures.GetAt( index ) );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTDialog::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    bool bHandled = false;
+
+    // For invisible dialog, do not handle anything.
+    if( !m_bVisible )
+        return false;
+
+    // If automation command-line switch is on, enable this dialog's keyboard input
+    // upon any key press or mouse click.
+    if( DXUTGetAutomation() &&
+        ( WM_LBUTTONDOWN == uMsg || WM_LBUTTONDBLCLK == uMsg || WM_KEYDOWN == uMsg ) )
+    {
+        m_pManager->EnableKeyboardInputForAllDialogs();
+    }
+
+    // If caption is enable, check for clicks in the caption area.
+    if( m_bCaption )
+    {
+        if( uMsg == WM_LBUTTONDOWN || uMsg == WM_LBUTTONDBLCLK )
+        {
+            POINT mousePoint = { short(LOWORD(lParam)), short(HIWORD(lParam)) };
+
+            if( mousePoint.x >= m_x && mousePoint.x < m_x + m_width &&
+                mousePoint.y >= m_y && mousePoint.y < m_y + m_nCaptionHeight )
+            {
+                m_bDrag = true;
+                SetCapture( DXUTGetHWND() );
+                return true;
+            }
+        } else
+        if( uMsg == WM_LBUTTONUP && m_bDrag )
+        {
+            POINT mousePoint = { short(LOWORD(lParam)), short(HIWORD(lParam)) };
+
+            if( mousePoint.x >= m_x && mousePoint.x < m_x + m_width &&
+                mousePoint.y >= m_y && mousePoint.y < m_y + m_nCaptionHeight )
+            {
+                ReleaseCapture();
+                m_bDrag = false;
+                m_bMinimized = !m_bMinimized;
+                return true;
+            }
+        }
+    }
+
+    // If the dialog is minimized, don't send any messages to controls.
+    if( m_bMinimized )
+        return false;
+
+    // If a control is in focus, it belongs to this dialog, and it's enabled, then give
+    // it the first chance at handling the message.
+    if( s_pControlFocus && 
+        s_pControlFocus->m_pDialog == this && 
+        s_pControlFocus->GetEnabled() )
+    {
+        // If the control MsgProc handles it, then we don't.
+        if( s_pControlFocus->MsgProc( uMsg, wParam, lParam ) )
+            return true;
+    }
+
+    switch( uMsg )
+    {
+        case WM_SIZE:
+        case WM_MOVE:
+        {
+            // Handle sizing and moving messages so that in case the mouse cursor is moved out
+            // of an UI control because of the window adjustment, we can properly
+            // unhighlight the highlighted control.
+            POINT pt = { -1, -1 };
+            OnMouseMove( pt );
+            break;
+        }
+
+        case WM_ACTIVATEAPP:
+            // Call OnFocusIn()/OnFocusOut() of the control that currently has the focus
+            // as the application is activated/deactivated.  This matches the Windows
+            // behavior.
+            if( s_pControlFocus && 
+                s_pControlFocus->m_pDialog == this && 
+                s_pControlFocus->GetEnabled() )
+            {
+                if( wParam )
+                    s_pControlFocus->OnFocusIn();
+                else
+                    s_pControlFocus->OnFocusOut();
+            }
+            break;
+
+        // Keyboard messages
+        case WM_KEYDOWN:
+        case WM_SYSKEYDOWN:
+        case WM_KEYUP:
+        case WM_SYSKEYUP:
+        {
+            // If a control is in focus, it belongs to this dialog, and it's enabled, then give
+            // it the first chance at handling the message.
+            if( s_pControlFocus && 
+                s_pControlFocus->m_pDialog == this && 
+                s_pControlFocus->GetEnabled() )
+            {
+                if( s_pControlFocus->HandleKeyboard( uMsg, wParam, lParam ) )
+                    return true;
+            }
+
+            // Not yet handled, see if this matches a control's hotkey
+            // Activate the hotkey if the focus doesn't belong to an
+            // edit box.
+            if( uMsg == WM_KEYDOWN && ( !s_pControlFocus ||
+                                      ( s_pControlFocus->GetType() != DXUT_CONTROL_EDITBOX
+                                     && s_pControlFocus->GetType() != DXUT_CONTROL_IMEEDITBOX ) ) )
+            {
+                for( int i=0; i < m_Controls.GetSize(); i++ )
+                {
+                    CDXUTControl* pControl = m_Controls.GetAt( i );
+                    if( pControl->GetHotkey() == wParam )
+                    {
+                        pControl->OnHotkey();
+                        return true;
+                    }
+                }
+            }
+
+            // Not yet handled, check for focus messages
+            if( uMsg == WM_KEYDOWN )
+            {
+                // If keyboard input is not enabled, this message should be ignored
+                if( !m_bKeyboardInput )
+                    return false;
+
+                switch( wParam )
+                {
+                    case VK_RIGHT:
+                    case VK_DOWN:
+                        if( s_pControlFocus != NULL )
+                        {
+                            return OnCycleFocus( true );
+                        }
+                        break;
+
+                    case VK_LEFT:
+                    case VK_UP:
+                        if( s_pControlFocus != NULL )
+                        {
+                            return OnCycleFocus( false );
+                        }
+                        break;
+
+                    case VK_TAB: 
+                    {
+                        bool bShiftDown = ((GetKeyState( VK_SHIFT ) & 0x8000) != 0);
+                        return OnCycleFocus( !bShiftDown );
+                    }
+                }
+            }
+
+            break;
+        }
+
+
+        // Mouse messages
+        case WM_MOUSEMOVE:
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONUP:
+        case WM_MBUTTONDOWN:
+        case WM_MBUTTONUP:
+        case WM_RBUTTONDOWN:
+        case WM_RBUTTONUP:
+        case WM_XBUTTONDOWN:
+        case WM_XBUTTONUP:
+        case WM_LBUTTONDBLCLK:
+        case WM_MBUTTONDBLCLK:
+        case WM_RBUTTONDBLCLK:
+        case WM_XBUTTONDBLCLK:
+        case WM_MOUSEWHEEL:
+        {
+            // If not accepting mouse input, return false to indicate the message should still 
+            // be handled by the application (usually to move the camera).
+            if( !m_bMouseInput )
+                return false;
+
+            POINT mousePoint = { short(LOWORD(lParam)), short(HIWORD(lParam)) };
+            mousePoint.x -= m_x;
+            mousePoint.y -= m_y;
+
+            // If caption is enabled, offset the Y coordinate by the negative of its height.
+            if( m_bCaption )
+                mousePoint.y -= m_nCaptionHeight;
+
+            // If a control is in focus, it belongs to this dialog, and it's enabled, then give
+            // it the first chance at handling the message.
+            if( s_pControlFocus && 
+                s_pControlFocus->m_pDialog == this && 
+                s_pControlFocus->GetEnabled() )
+            {
+                if( s_pControlFocus->HandleMouse( uMsg, mousePoint, wParam, lParam ) )
+                    return true;
+            }
+
+            // Not yet handled, see if the mouse is over any controls
+            CDXUTControl* pControl = GetControlAtPoint( mousePoint );
+            if( pControl != NULL && pControl->GetEnabled() )
+            {
+                bHandled = pControl->HandleMouse( uMsg, mousePoint, wParam, lParam );
+                if( bHandled )
+                    return true;
+            }
+            else
+            {
+                // Mouse not over any controls in this dialog, if there was a control
+                // which had focus it just lost it
+                if( uMsg == WM_LBUTTONDOWN && 
+                    s_pControlFocus && 
+                    s_pControlFocus->m_pDialog == this )
+                {
+                    s_pControlFocus->OnFocusOut();
+                    s_pControlFocus = NULL;
+                }
+            }
+
+            // Still not handled, hand this off to the dialog. Return false to indicate the
+            // message should still be handled by the application (usually to move the camera).
+            switch( uMsg )
+            {
+                case WM_MOUSEMOVE:
+                    OnMouseMove( mousePoint );
+                    return false;
+            }
+
+            break;
+        }
+
+        case WM_CAPTURECHANGED:
+        {
+            // The application has lost mouse capture.
+            // The dialog object may not have received
+            // a WM_MOUSEUP when capture changed. Reset
+            // m_bDrag so that the dialog does not mistakenly
+            // think the mouse button is still held down.
+            m_bDrag = false;
+        }
+    }
+
+    return false;
+}
+
+//--------------------------------------------------------------------------------------
+CDXUTControl* CDXUTDialog::GetControlAtPoint( POINT pt )
+{
+    // Search through all child controls for the first one which
+    // contains the mouse point
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt(i);
+
+        if( pControl == NULL )
+        {
+            continue;
+        }
+
+        // We only return the current control if it is visible
+        // and enabled.  Because GetControlAtPoint() is used to do mouse
+        // hittest, it makes sense to perform this filtering.
+        if( pControl->ContainsPoint( pt ) && pControl->GetEnabled() && pControl->GetVisible() )
+        {
+            return pControl;
+        }
+    }
+
+    return NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTDialog::GetControlEnabled( int ID )
+{
+    CDXUTControl* pControl = GetControl( ID );
+    if( pControl == NULL )
+        return false;
+
+    return pControl->GetEnabled();
+}
+
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::SetControlEnabled( int ID, bool bEnabled )
+{
+    CDXUTControl* pControl = GetControl( ID );
+    if( pControl == NULL )
+        return;
+
+    pControl->SetEnabled( bEnabled );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::OnMouseUp( POINT pt )
+{
+    s_pControlPressed = NULL;
+    m_pControlMouseOver = NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::OnMouseMove( POINT pt )
+{
+    // Figure out which control the mouse is over now
+    CDXUTControl* pControl = GetControlAtPoint( pt );
+
+    // If the mouse is still over the same control, nothing needs to be done
+    if( pControl == m_pControlMouseOver )
+        return;
+
+    // Handle mouse leaving the old control
+    if( m_pControlMouseOver )
+        m_pControlMouseOver->OnMouseLeave();
+
+    // Handle mouse entering the new control
+    m_pControlMouseOver = pControl;
+    if( pControl != NULL )
+        m_pControlMouseOver->OnMouseEnter();
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::SetDefaultElement( UINT nControlType, UINT iElement, CDXUTElement* pElement )
+{
+    // If this Element type already exist in the list, simply update the stored Element
+    for( int i=0; i < m_DefaultElements.GetSize(); i++ )
+    {
+        DXUTElementHolder* pElementHolder = m_DefaultElements.GetAt( i );
+        
+        if( pElementHolder->nControlType == nControlType &&
+            pElementHolder->iElement == iElement )
+        {
+            pElementHolder->Element = *pElement;
+            return S_OK;
+        }
+    }
+
+    // Otherwise, add a new entry
+    DXUTElementHolder* pNewHolder;
+    pNewHolder = new DXUTElementHolder;
+    if( pNewHolder == NULL )
+        return E_OUTOFMEMORY;
+
+    pNewHolder->nControlType = nControlType;
+    pNewHolder->iElement = iElement;
+    pNewHolder->Element = *pElement;
+
+    m_DefaultElements.Add( pNewHolder );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTElement* CDXUTDialog::GetDefaultElement( UINT nControlType, UINT iElement )
+{
+    for( int i=0; i < m_DefaultElements.GetSize(); i++ )
+    {
+        DXUTElementHolder* pElementHolder = m_DefaultElements.GetAt( i );
+        
+        if( pElementHolder->nControlType == nControlType &&
+            pElementHolder->iElement == iElement )
+        {
+            return &pElementHolder->Element;
+        }
+    }
+    
+    return NULL;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddStatic( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault, CDXUTStatic** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTStatic* pStatic = new CDXUTStatic( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pStatic;
+
+    if( pStatic == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pStatic );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and list index
+    pStatic->SetID( ID ); 
+    pStatic->SetText( strText );
+    pStatic->SetLocation( x, y );
+    pStatic->SetSize( width, height );
+    pStatic->m_bIsDefault = bIsDefault;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddButton( int ID, LPCWSTR strText, int x, int y, int width, int height, UINT nHotkey, bool bIsDefault, CDXUTButton** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTButton* pButton = new CDXUTButton( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pButton;
+
+    if( pButton == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pButton );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and list index
+    pButton->SetID( ID ); 
+    pButton->SetText( strText );
+    pButton->SetLocation( x, y );
+    pButton->SetSize( width, height );
+    pButton->SetHotkey( nHotkey );
+    pButton->m_bIsDefault = bIsDefault;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddCheckBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bChecked, UINT nHotkey, bool bIsDefault, CDXUTCheckBox** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTCheckBox* pCheckBox = new CDXUTCheckBox( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pCheckBox;
+
+    if( pCheckBox == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pCheckBox );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and list index
+    pCheckBox->SetID( ID ); 
+    pCheckBox->SetText( strText );
+    pCheckBox->SetLocation( x, y );
+    pCheckBox->SetSize( width, height );
+    pCheckBox->SetHotkey( nHotkey );
+    pCheckBox->m_bIsDefault = bIsDefault;
+    pCheckBox->SetChecked( bChecked );
+    
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddRadioButton( int ID, UINT nButtonGroup, LPCWSTR strText, int x, int y, int width, int height, bool bChecked, UINT nHotkey, bool bIsDefault, CDXUTRadioButton** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTRadioButton* pRadioButton = new CDXUTRadioButton( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pRadioButton;
+
+    if( pRadioButton == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pRadioButton );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and list index
+    pRadioButton->SetID( ID ); 
+    pRadioButton->SetText( strText );
+    pRadioButton->SetButtonGroup( nButtonGroup );
+    pRadioButton->SetLocation( x, y );
+    pRadioButton->SetSize( width, height );
+    pRadioButton->SetHotkey( nHotkey );
+    pRadioButton->SetChecked( bChecked );
+    pRadioButton->m_bIsDefault = bIsDefault;
+    pRadioButton->SetChecked( bChecked );
+
+    return S_OK;
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddComboBox( int ID, int x, int y, int width, int height, UINT nHotkey, bool bIsDefault, CDXUTComboBox** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTComboBox* pComboBox = new CDXUTComboBox( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pComboBox;
+
+    if( pComboBox == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pComboBox );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and list index
+    pComboBox->SetID( ID ); 
+    pComboBox->SetLocation( x, y );
+    pComboBox->SetSize( width, height );
+    pComboBox->SetHotkey( nHotkey );
+    pComboBox->m_bIsDefault = bIsDefault;
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddSlider( int ID, int x, int y, int width, int height, int min, int max, int value, bool bIsDefault, CDXUTSlider** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTSlider* pSlider = new CDXUTSlider( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pSlider;
+
+    if( pSlider == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pSlider );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and list index
+    pSlider->SetID( ID ); 
+    pSlider->SetLocation( x, y );
+    pSlider->SetSize( width, height );
+    pSlider->m_bIsDefault = bIsDefault;
+    pSlider->SetRange( min, max );
+    pSlider->SetValue( value );
+    pSlider->UpdateRects();
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddEditBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault, CDXUTEditBox** ppCreated )
+{
+    HRESULT hr = S_OK;
+
+    CDXUTEditBox *pEditBox = new CDXUTEditBox( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pEditBox;
+
+    if( pEditBox == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pEditBox );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and position
+    pEditBox->SetID( ID ); 
+    pEditBox->SetLocation( x, y );
+    pEditBox->SetSize( width, height );
+    pEditBox->m_bIsDefault = bIsDefault;
+
+    if( strText )
+        pEditBox->SetText( strText );
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddIMEEditBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault, CDXUTIMEEditBox** ppCreated )
+{
+    HRESULT hr = S_OK;
+    CDXUTIMEEditBox *pEditBox = new CDXUTIMEEditBox( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pEditBox;
+
+    if( pEditBox == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pEditBox );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and position
+    pEditBox->SetID( ID ); 
+    pEditBox->SetLocation( x, y );
+    pEditBox->SetSize( width, height );
+    pEditBox->m_bIsDefault = bIsDefault;
+
+    if( strText )
+        pEditBox->SetText( strText );
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddListBox( int ID, int x, int y, int width, int height, DWORD dwStyle, CDXUTListBox** ppCreated )
+{
+    HRESULT hr = S_OK;
+    CDXUTListBox *pListBox = new CDXUTListBox( this );
+
+    if( ppCreated != NULL )
+        *ppCreated = pListBox;
+
+    if( pListBox == NULL )
+        return E_OUTOFMEMORY;
+
+    hr = AddControl( pListBox );
+    if( FAILED(hr) )
+        return hr;
+
+    // Set the ID and position
+    pListBox->SetID( ID );
+    pListBox->SetLocation( x, y );
+    pListBox->SetSize( width, height );
+    pListBox->SetStyle( dwStyle );
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::InitControl( CDXUTControl* pControl )
+{
+    HRESULT hr;
+
+    if( pControl == NULL )
+        return E_INVALIDARG;
+
+    pControl->m_Index = m_Controls.GetSize();
+    
+    // Look for a default Element entries
+    for( int i=0; i < m_DefaultElements.GetSize(); i++ )
+    {
+        DXUTElementHolder* pElementHolder = m_DefaultElements.GetAt( i );
+        if( pElementHolder->nControlType == pControl->GetType() )
+            pControl->SetElement( pElementHolder->iElement, &pElementHolder->Element );
+    }
+
+    V_RETURN( pControl->OnInit() );
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::AddControl( CDXUTControl* pControl )
+{
+    HRESULT hr = S_OK;
+
+    hr = InitControl( pControl );
+    if( FAILED(hr) )
+        return DXTRACE_ERR( L"CDXUTDialog::InitControl", hr );
+
+    // Add to the list
+    hr = m_Controls.Add( pControl );
+    if( FAILED(hr) )
+    {
+        return DXTRACE_ERR( L"CGrowableArray::Add", hr );
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTControl* CDXUTDialog::GetControl( int ID )
+{
+    // Try to find the control with the given ID
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt( i );
+
+        if( pControl->GetID() == ID )
+        {
+            return pControl;
+        }
+    }
+
+    // Not found
+    return NULL;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+CDXUTControl* CDXUTDialog::GetControl( int ID, UINT nControlType )
+{
+    // Try to find the control with the given ID
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt( i );
+
+        if( pControl->GetID() == ID && pControl->GetType() == nControlType )
+        {
+            return pControl;
+        }
+    }
+
+    // Not found
+    return NULL;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+CDXUTControl* CDXUTDialog::GetNextControl( CDXUTControl* pControl )
+{
+    int index = pControl->m_Index + 1;
+
+    CDXUTDialog* pDialog = pControl->m_pDialog;
+
+    // Cycle through dialogs in the loop to find the next control. Note
+    // that if only one control exists in all looped dialogs it will
+    // be the returned 'next' control.
+    while( index >= (int) pDialog->m_Controls.GetSize() )
+    {
+        pDialog = pDialog->m_pNextDialog;
+        index = 0;
+    }
+
+    return pDialog->m_Controls.GetAt( index );
+}
+
+//--------------------------------------------------------------------------------------
+CDXUTControl* CDXUTDialog::GetPrevControl( CDXUTControl* pControl )
+{
+    int index = pControl->m_Index - 1;
+
+    CDXUTDialog* pDialog = pControl->m_pDialog;
+    
+    // Cycle through dialogs in the loop to find the next control. Note
+    // that if only one control exists in all looped dialogs it will
+    // be the returned 'previous' control.
+    while( index < 0 )
+    {
+        pDialog = pDialog->m_pPrevDialog;
+        if( pDialog == NULL )
+            pDialog = pControl->m_pDialog;
+
+        index = pDialog->m_Controls.GetSize() - 1;
+    }
+    
+    return pDialog->m_Controls.GetAt( index );    
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::ClearRadioButtonGroup( UINT nButtonGroup )
+{
+    // Find all radio buttons with the given group number
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt( i );
+
+        if( pControl->GetType() == DXUT_CONTROL_RADIOBUTTON )
+        {
+            CDXUTRadioButton* pRadioButton = (CDXUTRadioButton*) pControl;
+
+            if( pRadioButton->GetButtonGroup() == nButtonGroup )
+                pRadioButton->SetChecked( false, false );
+        }
+    }
+}
+
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::ClearComboBox( int ID )
+{
+    CDXUTComboBox* pComboBox = GetComboBox( ID );
+    if( pComboBox == NULL )
+        return;
+
+    pComboBox->RemoveAllItems();
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::RequestFocus( CDXUTControl* pControl )
+{
+    if( s_pControlFocus == pControl )
+        return;
+
+    if( !pControl->CanHaveFocus() )
+        return;
+
+    if( s_pControlFocus )
+        s_pControlFocus->OnFocusOut();
+
+    pControl->OnFocusIn();
+    s_pControlFocus = pControl;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::DrawRect( RECT* pRect, D3DCOLOR color )
+{
+    RECT rcScreen = *pRect;
+    OffsetRect( &rcScreen, m_x, m_y );
+
+    // If caption is enabled, offset the Y position by its height.
+    if( m_bCaption )
+        OffsetRect( &rcScreen, 0, m_nCaptionHeight );
+
+    DXUT_SCREEN_VERTEX vertices[4] =
+    {
+        (float) rcScreen.left -0.5f,  (float) rcScreen.top -0.5f,    0.5f, 1.0f, color, 0, 0,
+        (float) rcScreen.right -0.5f, (float) rcScreen.top -0.5f,    0.5f, 1.0f, color, 0, 0, 
+        (float) rcScreen.right -0.5f, (float) rcScreen.bottom -0.5f, 0.5f, 1.0f, color, 0, 0, 
+        (float) rcScreen.left -0.5f,  (float) rcScreen.bottom -0.5f, 0.5f, 1.0f, color, 0, 0,
+    };
+
+    IDirect3DDevice9* pd3dDevice = m_pManager->GetD3DDevice();
+
+    // Since we're doing our own drawing here we need to flush the sprites
+    m_pManager->m_pSprite->Flush();
+    IDirect3DVertexDeclaration9 *pDecl = NULL;
+    pd3dDevice->GetVertexDeclaration( &pDecl );  // Preserve the sprite's current vertex decl
+    pd3dDevice->SetFVF( DXUT_SCREEN_VERTEX::FVF );
+
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2 );
+
+    pd3dDevice->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vertices, sizeof(DXUT_SCREEN_VERTEX) );
+
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
+
+    // Restore the vertex decl
+    pd3dDevice->SetVertexDeclaration( pDecl );
+    pDecl->Release();
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::DrawPolyLine( POINT* apPoints, UINT nNumPoints, D3DCOLOR color )
+{
+    DXUT_SCREEN_VERTEX* vertices = new DXUT_SCREEN_VERTEX[ nNumPoints ];
+    if( vertices == NULL )
+        return E_OUTOFMEMORY;
+
+    DXUT_SCREEN_VERTEX* pVertex = vertices;
+    POINT* pt = apPoints;
+    for( UINT i=0; i < nNumPoints; i++ )
+    {
+        pVertex->x = m_x + (float) pt->x;
+        pVertex->y = m_y + (float) pt->y;
+        pVertex->z = 0.5f;
+        pVertex->h = 1.0f;
+        pVertex->color = color;
+        pVertex->tu = 0.0f;
+        pVertex->tv = 0.0f;
+
+        pVertex++;
+        pt++;
+    }
+
+    IDirect3DDevice9* pd3dDevice = m_pManager->GetD3DDevice();
+
+    // Since we're doing our own drawing here we need to flush the sprites
+    m_pManager->m_pSprite->Flush();
+    IDirect3DVertexDeclaration9 *pDecl = NULL;
+    pd3dDevice->GetVertexDeclaration( &pDecl );  // Preserve the sprite's current vertex decl
+    pd3dDevice->SetFVF( DXUT_SCREEN_VERTEX::FVF );
+
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2 );
+
+    pd3dDevice->DrawPrimitiveUP( D3DPT_LINESTRIP, nNumPoints - 1, vertices, sizeof(DXUT_SCREEN_VERTEX) );
+
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
+    pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
+
+    // Restore the vertex decl
+    pd3dDevice->SetVertexDeclaration( pDecl );
+    pDecl->Release();
+
+    SAFE_DELETE_ARRAY( vertices );
+    return S_OK;
+}
+ 
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::DrawSprite( CDXUTElement* pElement, RECT* prcDest )
+{
+    // No need to draw fully transparent layers
+    if( pElement->TextureColor.Current.a == 0 )
+        return S_OK;
+
+    RECT rcTexture = pElement->rcTexture;
+    
+    RECT rcScreen = *prcDest;
+    OffsetRect( &rcScreen, m_x, m_y );
+
+    // If caption is enabled, offset the Y position by its height.
+    if( m_bCaption )
+        OffsetRect( &rcScreen, 0, m_nCaptionHeight );
+
+    DXUTTextureNode* pTextureNode = GetTexture( pElement->iTexture );
+    if( pTextureNode == NULL )
+        return E_FAIL;
+    
+    float fScaleX = (float) RectWidth( rcScreen ) / RectWidth( rcTexture );
+    float fScaleY = (float) RectHeight( rcScreen ) / RectHeight( rcTexture );
+
+    D3DXMATRIXA16 matTransform;
+    D3DXMatrixScaling( &matTransform, fScaleX, fScaleY, 1.0f );
+
+    m_pManager->m_pSprite->SetTransform( &matTransform );
+    
+    D3DXVECTOR3 vPos( (float)rcScreen.left, (float)rcScreen.top, 0.0f );
+
+    vPos.x /= fScaleX;
+    vPos.y /= fScaleY;
+
+    return m_pManager->m_pSprite->Draw( pTextureNode->pTexture, &rcTexture, NULL, &vPos, pElement->TextureColor.Current );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::CalcTextRect( LPCWSTR strText, CDXUTElement* pElement, RECT* prcDest, int nCount )
+{
+    HRESULT hr = S_OK;
+
+    DXUTFontNode* pFontNode = GetFont( pElement->iFont );
+    if( pFontNode == NULL )
+        return E_FAIL;
+
+    DWORD dwTextFormat = pElement->dwTextFormat | DT_CALCRECT;
+    // Since we are only computing the rectangle, we don't need a sprite.
+    hr = pFontNode->pFont->DrawText( NULL, strText, nCount, prcDest, dwTextFormat, pElement->FontColor.Current );
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialog::DrawText( LPCWSTR strText, CDXUTElement* pElement, RECT* prcDest, bool bShadow, int nCount )
+{
+    HRESULT hr = S_OK;
+
+    // No need to draw fully transparent layers
+    if( pElement->FontColor.Current.a == 0 )
+        return S_OK;
+
+    RECT rcScreen = *prcDest;
+    OffsetRect( &rcScreen, m_x, m_y );
+
+    // If caption is enabled, offset the Y position by its height.
+    if( m_bCaption )
+        OffsetRect( &rcScreen, 0, m_nCaptionHeight );
+
+    //debug
+    //DrawRect( &rcScreen, D3DCOLOR_ARGB(100, 255, 0, 0) );
+
+    D3DXMATRIXA16 matTransform;
+    D3DXMatrixIdentity( &matTransform );
+    m_pManager->m_pSprite->SetTransform( &matTransform );
+
+    DXUTFontNode* pFontNode = GetFont( pElement->iFont );
+    
+    if( bShadow )
+    {
+        RECT rcShadow = rcScreen;
+        OffsetRect( &rcShadow, 1, 1 );
+        hr = pFontNode->pFont->DrawText( m_pManager->m_pSprite, strText, nCount, &rcShadow, pElement->dwTextFormat, D3DCOLOR_ARGB(DWORD(pElement->FontColor.Current.a * 255), 0, 0, 0) );
+        if( FAILED(hr) )
+            return hr;
+    }
+
+    hr = pFontNode->pFont->DrawText( m_pManager->m_pSprite, strText, nCount, &rcScreen, pElement->dwTextFormat, pElement->FontColor.Current );
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::SetBackgroundColors( D3DCOLOR colorTopLeft, D3DCOLOR colorTopRight, D3DCOLOR colorBottomLeft, D3DCOLOR colorBottomRight )
+{
+    m_colorTopLeft = colorTopLeft;
+    m_colorTopRight = colorTopRight;
+    m_colorBottomLeft = colorBottomLeft;
+    m_colorBottomRight = colorBottomRight;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::SetNextDialog( CDXUTDialog* pNextDialog )
+{ 
+    if( pNextDialog == NULL )
+        pNextDialog = this;
+    
+    m_pNextDialog = pNextDialog;
+    if( pNextDialog )
+        m_pNextDialog->m_pPrevDialog = this;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::ClearFocus()
+{
+    if( s_pControlFocus )
+    {
+        s_pControlFocus->OnFocusOut();
+        s_pControlFocus = NULL;
+    }
+
+    ReleaseCapture();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::FocusDefaultControl()
+{
+    // Check for default control in this dialog
+    for( int i=0; i < m_Controls.GetSize(); i++ )
+    {
+        CDXUTControl* pControl = m_Controls.GetAt( i );
+        if( pControl->m_bIsDefault )
+        {
+            // Remove focus from the current control
+            ClearFocus();
+
+            // Give focus to the default control
+            s_pControlFocus = pControl;
+            s_pControlFocus->OnFocusIn();
+            return;
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTDialog::OnCycleFocus( bool bForward )
+{
+    CDXUTControl *pControl = NULL;
+    CDXUTDialog *pDialog = NULL; // pDialog and pLastDialog are used to track wrapping of
+    CDXUTDialog *pLastDialog;    // focus from first control to last or vice versa.
+
+    if( s_pControlFocus == NULL )
+    {
+        // If s_pControlFocus is NULL, we focus the first control of first dialog in
+        // the case that bForward is true, and focus the last control of last dialog when
+        // bForward is false.
+        //
+        if( bForward )
+        {
+            // Search for the first control from the start of the dialog
+            // array.
+            for( int d = 0; d < m_pManager->m_Dialogs.GetSize(); ++d )
+            {
+                pDialog = pLastDialog = m_pManager->m_Dialogs.GetAt(d);
+                if( pDialog && pDialog->m_Controls.GetSize() > 0 )
+                {
+                    pControl = pDialog->m_Controls.GetAt(0);
+                    break;
+                }
+            }
+
+            if( !pDialog || !pControl )
+            {
+                // No dialog has been registered yet or no controls have been
+                // added to the dialogs. Cannot proceed.
+                return true;
+            }
+        }
+        else
+        {
+            // Search for the first control from the end of the dialog
+            // array.
+            for( int d = m_pManager->m_Dialogs.GetSize() - 1; d >= 0; --d )
+            {
+                pDialog = pLastDialog = m_pManager->m_Dialogs.GetAt(d);
+                if( pDialog && pDialog->m_Controls.GetSize() > 0 )
+                {
+                    pControl = pDialog->m_Controls.GetAt( pDialog->m_Controls.GetSize() - 1 );
+                    break;
+                }
+            }
+
+            if( !pDialog || !pControl )
+            {
+                // No dialog has been registered yet or no controls have been
+                // added to the dialogs. Cannot proceed.
+                return true;
+            }
+        }
+    }
+    else
+    if( s_pControlFocus->m_pDialog != this )
+    {
+        // If a control belonging to another dialog has focus, let that other
+        // dialog handle this event by returning false.
+        //
+        return false;
+    }
+    else
+    {
+        // Focused control belongs to this dialog. Cycle to the
+        // next/previous control.
+        pLastDialog = s_pControlFocus->m_pDialog;
+        pControl = (bForward) ? GetNextControl( s_pControlFocus ) : GetPrevControl( s_pControlFocus );
+        pDialog = pControl->m_pDialog;
+    }
+
+    for( int i=0; i < 0xffff; i++ )
+    {
+        // If we just wrapped from last control to first or vice versa,
+        // set the focused control to NULL. This state, where no control
+        // has focus, allows the camera to work.
+        int nLastDialogIndex = m_pManager->m_Dialogs.IndexOf( pLastDialog );
+        int nDialogIndex = m_pManager->m_Dialogs.IndexOf( pDialog );
+        if( ( !bForward && nLastDialogIndex < nDialogIndex ) ||
+            ( bForward && nDialogIndex < nLastDialogIndex ) )
+        {
+            if( s_pControlFocus )
+                s_pControlFocus->OnFocusOut();
+            s_pControlFocus = NULL;
+            return true;
+        }
+
+        // If we've gone in a full circle then focus doesn't change
+        if( pControl == s_pControlFocus )
+            return true;
+
+        // If the dialog accepts keybord input and the control can have focus then
+        // move focus
+        if( pControl->m_pDialog->m_bKeyboardInput && pControl->CanHaveFocus() )
+        {
+            if( s_pControlFocus )
+                s_pControlFocus->OnFocusOut();
+            s_pControlFocus = pControl;
+            s_pControlFocus->OnFocusIn();
+            return true;
+        }
+
+        pLastDialog = pDialog;
+        pControl = (bForward) ? GetNextControl( pControl ) : GetPrevControl( pControl );
+        pDialog = pControl->m_pDialog;
+    }
+
+    // If we reached this point, the chain of dialogs didn't form a complete loop
+    DXTRACE_ERR( L"CDXUTDialog: Multiple dialogs are improperly chained together", E_FAIL );
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialogResourceManager::CreateFont( UINT iFont )
+{
+    HRESULT hr = S_OK;
+
+    DXUTFontNode* pFontNode = m_FontCache.GetAt( iFont );
+
+    SAFE_RELEASE( pFontNode->pFont );
+    
+    V_RETURN( D3DXCreateFont( m_pd3dDevice, pFontNode->nHeight, 0, pFontNode->nWeight, 1, FALSE, DEFAULT_CHARSET, 
+                              OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, 
+                              pFontNode->strFace, &pFontNode->pFont ) );
+
+    return S_OK;
+}
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTDialogResourceManager::CreateTexture( UINT iTexture )
+{
+    HRESULT hr = S_OK;
+
+    DXUTTextureNode* pTextureNode = m_TextureCache.GetAt( iTexture );
+
+    
+	D3DXIMAGE_INFO info;
+
+    if( !pTextureNode->bFileSource )
+    {
+        if( pTextureNode->nResourceID == 0xFFFF && pTextureNode->hResourceModule == (HMODULE) 0xFFFF )
+        {
+            hr = DXUTCreateGUITextureFromInternalArray( m_pd3dDevice, &pTextureNode->pTexture, &info );
+            if( FAILED(hr) )
+                return DXTRACE_ERR( L"D3DXCreateTextureFromFileInMemoryEx", hr );
+        }
+        else
+        {
+            LPCWSTR pID = pTextureNode->nResourceID ? (LPCWSTR)(size_t)pTextureNode->nResourceID : pTextureNode->strFilename;
+
+            // Create texture from resource
+            hr =  D3DXCreateTextureFromResourceEx( m_pd3dDevice, pTextureNode->hResourceModule, pID, D3DX_DEFAULT, D3DX_DEFAULT, 
+                                                1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, 
+                                                D3DX_DEFAULT, D3DX_DEFAULT, 0, 
+                                                &info, NULL, &pTextureNode->pTexture );
+            if( FAILED(hr) )
+                return DXTRACE_ERR( L"D3DXCreateTextureFromResourceEx", hr );
+        }
+    }
+    else
+    {
+		// Make sure there's a texture to create
+		if( pTextureNode->strFilename[0] == 0 )
+			return S_OK;
+
+        // Find the texture on the hard drive
+        WCHAR strPath[MAX_PATH];
+        hr = DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH, pTextureNode->strFilename );
+        if( FAILED(hr) )
+        {
+            return DXTRACE_ERR( L"DXUTFindDXSDKMediaFileCch", hr );
+        }
+
+        // Create texture from file
+        hr =  D3DXCreateTextureFromFileEx( m_pd3dDevice, strPath, D3DX_DEFAULT, D3DX_DEFAULT, 
+                                           1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, 
+                                           D3DX_DEFAULT, D3DX_DEFAULT, 0, 
+                                           &info, NULL, &pTextureNode->pTexture );
+        if( FAILED(hr) )
+        {
+            return DXTRACE_ERR( L"D3DXCreateTextureFromFileEx", hr );
+        }
+	}
+
+    // Store dimensions
+    pTextureNode->dwWidth = info.Width;
+    pTextureNode->dwHeight = info.Height;
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTDialog::InitDefaultElements()
+{
+    SetFont( 0, L"Arial", 14, FW_NORMAL );
+
+    CDXUTElement Element;
+    RECT rcTexture;
+
+    //-------------------------------------
+    // Element for the caption
+    //-------------------------------------
+    m_CapElement.SetFont( 0 );
+    SetRect( &rcTexture, 17, 269, 241, 287 );
+    m_CapElement.SetTexture( 0, &rcTexture );
+    m_CapElement.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(255, 255, 255, 255);
+    m_CapElement.FontColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(255, 255, 255, 255);
+    m_CapElement.SetFont( 0, D3DCOLOR_ARGB(255, 255, 255, 255), DT_LEFT | DT_VCENTER );
+    // Pre-blend as we don't need to transition the state
+    m_CapElement.TextureColor.Blend( DXUT_STATE_NORMAL, 10.0f );
+    m_CapElement.FontColor.Blend( DXUT_STATE_NORMAL, 10.0f );
+
+    //-------------------------------------
+    // CDXUTStatic
+    //-------------------------------------
+    Element.SetFont( 0 );
+    Element.FontColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB( 200, 200, 200, 200 );
+
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_STATIC, 0, &Element );
+    
+
+    //-------------------------------------
+    // CDXUTButton - Button
+    //-------------------------------------
+    SetRect( &rcTexture, 0, 0, 136, 54 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0 );
+    Element.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(150, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_PRESSED ] = D3DCOLOR_ARGB(200, 255, 255, 255);
+    Element.FontColor.States[ DXUT_STATE_MOUSEOVER ] = D3DCOLOR_ARGB(255, 0, 0, 0);
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_BUTTON, 0, &Element );
+    
+
+    //-------------------------------------
+    // CDXUTButton - Fill layer
+    //-------------------------------------
+    SetRect( &rcTexture, 136, 0, 252, 54 );
+    Element.SetTexture( 0, &rcTexture, D3DCOLOR_ARGB(0, 255, 255, 255) );
+    Element.TextureColor.States[ DXUT_STATE_MOUSEOVER ] = D3DCOLOR_ARGB(160, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_PRESSED ] = D3DCOLOR_ARGB(60, 0, 0, 0);
+    Element.TextureColor.States[ DXUT_STATE_FOCUS ] = D3DCOLOR_ARGB(30, 255, 255, 255);
+    
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_BUTTON, 1, &Element );
+
+
+    //-------------------------------------
+    // CDXUTCheckBox - Box
+    //-------------------------------------
+    SetRect( &rcTexture, 0, 54, 27, 81 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB(255, 255, 255, 255), DT_LEFT | DT_VCENTER );
+    Element.FontColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB( 200, 200, 200, 200 );
+    Element.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(150, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_FOCUS ] = D3DCOLOR_ARGB(200, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_PRESSED ] = D3DCOLOR_ARGB(255, 255, 255, 255);
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_CHECKBOX, 0, &Element );
+
+
+    //-------------------------------------
+    // CDXUTCheckBox - Check
+    //-------------------------------------
+    SetRect( &rcTexture, 27, 54, 54, 81 );
+    Element.SetTexture( 0, &rcTexture );
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_CHECKBOX, 1, &Element );
+
+
+    //-------------------------------------
+    // CDXUTRadioButton - Box
+    //-------------------------------------
+    SetRect( &rcTexture, 54, 54, 81, 81 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB(255, 255, 255, 255), DT_LEFT | DT_VCENTER );
+    Element.FontColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB( 200, 200, 200, 200 );
+    Element.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(150, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_FOCUS ] = D3DCOLOR_ARGB(200, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_PRESSED ] = D3DCOLOR_ARGB(255, 255, 255, 255);
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_RADIOBUTTON, 0, &Element );
+
+
+    //-------------------------------------
+    // CDXUTRadioButton - Check
+    //-------------------------------------
+    SetRect( &rcTexture, 81, 54, 108, 81 );
+    Element.SetTexture( 0, &rcTexture );
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_RADIOBUTTON, 1, &Element );
+
+
+    //-------------------------------------
+    // CDXUTComboBox - Main
+    //-------------------------------------
+    SetRect( &rcTexture, 7, 81, 247, 123 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0 );
+    Element.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(150, 200, 200, 200);
+    Element.TextureColor.States[ DXUT_STATE_FOCUS ] = D3DCOLOR_ARGB(170, 230, 230, 230);
+    Element.TextureColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(70, 200, 200, 200);
+    Element.FontColor.States[ DXUT_STATE_MOUSEOVER ] = D3DCOLOR_ARGB(255, 0, 0, 0);
+    Element.FontColor.States[ DXUT_STATE_PRESSED ] = D3DCOLOR_ARGB(255, 0, 0, 0);
+    Element.FontColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(200, 200, 200, 200);
+    
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_COMBOBOX, 0, &Element );
+
+
+    //-------------------------------------
+    // CDXUTComboBox - Button
+    //-------------------------------------
+    SetRect( &rcTexture, 98, 189, 151, 238 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(150, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_PRESSED ] = D3DCOLOR_ARGB(255, 150, 150, 150);
+    Element.TextureColor.States[ DXUT_STATE_FOCUS ] = D3DCOLOR_ARGB(200, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(70, 255, 255, 255);
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_COMBOBOX, 1, &Element );
+
+
+    //-------------------------------------
+    // CDXUTComboBox - Dropdown
+    //-------------------------------------
+    SetRect( &rcTexture, 13, 123, 241, 160 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB(255, 0, 0, 0), DT_LEFT | DT_TOP );
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_COMBOBOX, 2, &Element );
+
+
+    //-------------------------------------
+    // CDXUTComboBox - Selection
+    //-------------------------------------
+    SetRect( &rcTexture, 12, 163, 239, 183 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB(255, 255, 255, 255), DT_LEFT | DT_TOP );
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_COMBOBOX, 3, &Element );
+
+
+    //-------------------------------------
+    // CDXUTSlider - Track
+    //-------------------------------------
+    SetRect( &rcTexture, 1, 187, 93, 228 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.TextureColor.States[ DXUT_STATE_NORMAL ] = D3DCOLOR_ARGB(150, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_FOCUS ] = D3DCOLOR_ARGB(200, 255, 255, 255);
+    Element.TextureColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(70, 255, 255, 255);
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_SLIDER, 0, &Element );
+
+    //-------------------------------------
+    // CDXUTSlider - Button
+    //-------------------------------------
+    SetRect( &rcTexture, 151, 193, 192, 234 );
+    Element.SetTexture( 0, &rcTexture );
+
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_SLIDER, 1, &Element );
+
+    //-------------------------------------
+    // CDXUTScrollBar - Track
+    //-------------------------------------
+    int nScrollBarStartX = 196;
+    int nScrollBarStartY = 191;
+    SetRect( &rcTexture, nScrollBarStartX + 0, nScrollBarStartY + 21, nScrollBarStartX + 22, nScrollBarStartY + 32 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.TextureColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(255, 200, 200, 200);
+        
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_SCROLLBAR, 0, &Element );
+
+    //-------------------------------------
+    // CDXUTScrollBar - Up Arrow
+    //-------------------------------------
+    SetRect( &rcTexture, nScrollBarStartX + 0, nScrollBarStartY + 1, nScrollBarStartX + 22, nScrollBarStartY + 21 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.TextureColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(255, 200, 200, 200);
+    
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_SCROLLBAR, 1, &Element );
+
+    //-------------------------------------
+    // CDXUTScrollBar - Down Arrow
+    //-------------------------------------
+    SetRect( &rcTexture, nScrollBarStartX + 0, nScrollBarStartY + 32, nScrollBarStartX + 22, nScrollBarStartY + 53 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.TextureColor.States[ DXUT_STATE_DISABLED ] = D3DCOLOR_ARGB(255, 200, 200, 200);
+    
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_SCROLLBAR, 2, &Element );
+
+    //-------------------------------------
+    // CDXUTScrollBar - Button
+    //-------------------------------------
+    SetRect( &rcTexture, 220, 192, 238, 234 );
+    Element.SetTexture( 0, &rcTexture );
+    
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_SCROLLBAR, 3, &Element );
+
+
+    //-------------------------------------
+    // CDXUTEditBox
+    //-------------------------------------
+    // Element assignment:
+    //   0 - text area
+    //   1 - top left border
+    //   2 - top border
+    //   3 - top right border
+    //   4 - left border
+    //   5 - right border
+    //   6 - lower left border
+    //   7 - lower border
+    //   8 - lower right border
+
+    Element.SetFont( 0, D3DCOLOR_ARGB( 255, 0, 0, 0 ), DT_LEFT | DT_TOP );
+
+    // Assign the style
+    SetRect( &rcTexture, 14, 90, 241, 113 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 0, &Element );
+    SetRect( &rcTexture, 8, 82, 14, 90 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 1, &Element );
+    SetRect( &rcTexture, 14, 82, 241, 90 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 2, &Element );
+    SetRect( &rcTexture, 241, 82, 246, 90 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 3, &Element );
+    SetRect( &rcTexture, 8, 90, 14, 113 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 4, &Element );
+    SetRect( &rcTexture, 241, 90, 246, 113 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 5, &Element );
+    SetRect( &rcTexture, 8, 113, 14, 121 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 6, &Element );
+    SetRect( &rcTexture, 14, 113, 241, 121 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 7, &Element );
+    SetRect( &rcTexture, 241, 113, 246, 121 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_EDITBOX, 8, &Element );
+
+
+    //-------------------------------------
+    // CDXUTIMEEditBox
+    //-------------------------------------
+
+    Element.SetFont( 0, D3DCOLOR_ARGB( 255, 0, 0, 0 ), DT_LEFT | DT_TOP );
+
+    // Assign the style
+    SetRect( &rcTexture, 14, 90, 241, 113 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 0, &Element );
+    SetRect( &rcTexture, 8, 82, 14, 90 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 1, &Element );
+    SetRect( &rcTexture, 14, 82, 241, 90 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 2, &Element );
+    SetRect( &rcTexture, 241, 82, 246, 90 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 3, &Element );
+    SetRect( &rcTexture, 8, 90, 14, 113 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 4, &Element );
+    SetRect( &rcTexture, 241, 90, 246, 113 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 5, &Element );
+    SetRect( &rcTexture, 8, 113, 14, 121 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 6, &Element );
+    SetRect( &rcTexture, 14, 113, 241, 121 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 7, &Element );
+    SetRect( &rcTexture, 241, 113, 246, 121 );
+    Element.SetTexture( 0, &rcTexture );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 8, &Element );
+    // Element 9 for IME text, and indicator button
+    SetRect( &rcTexture, 0, 0, 136, 54 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB( 255, 0, 0, 0 ), DT_CENTER | DT_VCENTER );
+    SetDefaultElement( DXUT_CONTROL_IMEEDITBOX, 9, &Element );
+
+    //-------------------------------------
+    // CDXUTListBox - Main
+    //-------------------------------------
+    SetRect( &rcTexture, 13, 123, 241, 160 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB(255, 0, 0, 0), DT_LEFT | DT_TOP );
+
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_LISTBOX, 0, &Element );
+
+    //-------------------------------------
+    // CDXUTListBox - Selection
+    //-------------------------------------
+
+    SetRect( &rcTexture, 16, 166, 240, 183 );
+    Element.SetTexture( 0, &rcTexture );
+    Element.SetFont( 0, D3DCOLOR_ARGB(255, 255, 255, 255), DT_LEFT | DT_TOP );
+
+    // Assign the Element
+    SetDefaultElement( DXUT_CONTROL_LISTBOX, 1, &Element );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTControl class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTControl::CDXUTControl( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_BUTTON;
+    m_pDialog = pDialog;
+    m_ID = 0;
+    m_Index = 0;
+    m_pUserData = NULL;
+
+    m_bEnabled = true;
+    m_bVisible = true;
+    m_bMouseOver = false;
+    m_bHasFocus = false;
+    m_bIsDefault = false;
+
+    m_pDialog = NULL;
+
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+
+   ZeroMemory( &m_rcBoundingBox, sizeof( m_rcBoundingBox ) );
+}
+
+
+CDXUTControl::~CDXUTControl()
+{
+    for( int i = 0; i < m_Elements.GetSize(); ++i )
+    {
+        delete m_Elements[i];
+    }
+    m_Elements.RemoveAll();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTControl::SetTextColor( D3DCOLOR Color )
+{
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+
+    if( pElement )
+        pElement->FontColor.States[DXUT_STATE_NORMAL] = Color;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTControl::SetElement( UINT iElement, CDXUTElement* pElement )
+{
+    HRESULT hr = S_OK;
+
+    if( pElement == NULL )
+        return E_INVALIDARG;
+
+    // Make certain the array is this large
+    for( UINT i=m_Elements.GetSize(); i <= iElement; i++ )
+    {
+        CDXUTElement* pNewElement = new CDXUTElement();
+        if( pNewElement == NULL )
+            return E_OUTOFMEMORY;
+
+        hr = m_Elements.Add( pNewElement );
+        if( FAILED(hr) )
+        {
+            SAFE_DELETE( pNewElement );
+            return hr;
+        }
+    }
+
+    // Update the data
+    CDXUTElement* pCurElement = m_Elements.GetAt( iElement );
+    *pCurElement = *pElement;
+    
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTControl::Refresh()
+{
+    m_bMouseOver = false;
+    m_bHasFocus = false;
+
+    for( int i=0; i < m_Elements.GetSize(); i++ )
+    {
+        CDXUTElement* pElement = m_Elements.GetAt( i );
+        pElement->Refresh();
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTControl::UpdateRects()
+{
+    SetRect( &m_rcBoundingBox, m_x, m_y, m_x + m_width, m_y + m_height );
+}
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTStatic class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTStatic::CDXUTStatic( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_STATIC;
+    m_pDialog = pDialog;
+
+    ZeroMemory( &m_strText, sizeof(m_strText) );  
+
+    for( int i=0; i < m_Elements.GetSize(); i++ )
+    {
+        CDXUTElement* pElement = m_Elements.GetAt( i );
+        SAFE_DELETE( pElement );
+    }
+
+    m_Elements.RemoveAll();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTStatic::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{    
+    if( m_bVisible == false )
+        return;
+
+    DXUT_CONTROL_STATE iState = DXUT_STATE_NORMAL;
+
+    if( m_bEnabled == false )
+        iState = DXUT_STATE_DISABLED;
+        
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+
+    pElement->FontColor.Blend( iState, fElapsedTime );
+    
+    m_pDialog->DrawText( m_strText, pElement, &m_rcBoundingBox, true );
+}
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTStatic::GetTextCopy( LPWSTR strDest, UINT bufferCount )
+{
+    // Validate incoming parameters
+    if( strDest == NULL || bufferCount == 0 )
+    {
+        return E_INVALIDARG;
+    }
+
+    // Copy the window text
+    StringCchCopy( strDest, bufferCount, m_strText );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTStatic::SetText( LPCWSTR strText )
+{
+    if( strText == NULL )
+    {
+        m_strText[0] = 0;
+        return S_OK;
+    }
+    
+    StringCchCopy( m_strText, MAX_PATH, strText); 
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTButton class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTButton::CDXUTButton( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_BUTTON;
+    m_pDialog = pDialog;
+
+    m_bPressed = false;
+    m_nHotkey = 0;
+}
+
+//--------------------------------------------------------------------------------------
+bool CDXUTButton::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_SPACE:
+                    m_bPressed = true;
+                    return true;
+            }
+        }
+
+        case WM_KEYUP:
+        {
+            switch( wParam )
+            {
+                case VK_SPACE:
+                    if( m_bPressed == true )
+                    {
+                        m_bPressed = false;
+                        m_pDialog->SendEvent( EVENT_BUTTON_CLICKED, true, this );
+                    }
+                    return true;
+            }
+        }
+    }
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTButton::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            if( ContainsPoint( pt ) )
+            {
+                // Pressed while inside the control
+                m_bPressed = true;
+                SetCapture( DXUTGetHWND() );
+
+                if( !m_bHasFocus )
+                    m_pDialog->RequestFocus( this );
+
+                return true;
+            }
+
+            break;
+        }
+
+        case WM_LBUTTONUP:
+        {
+            if( m_bPressed )
+            {
+                m_bPressed = false;
+                ReleaseCapture();
+
+                if( !m_pDialog->m_bKeyboardInput )
+                    m_pDialog->ClearFocus();
+
+                // Button click
+                if( ContainsPoint( pt ) )
+                    m_pDialog->SendEvent( EVENT_BUTTON_CLICKED, true, this );
+
+                return true;
+            }
+
+            break;
+        }
+    };
+    
+    return false;
+}
+
+//--------------------------------------------------------------------------------------
+void CDXUTButton::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    int nOffsetX = 0;
+    int nOffsetY = 0;
+
+    DXUT_CONTROL_STATE iState = DXUT_STATE_NORMAL;
+
+    if( m_bVisible == false )
+    {
+        iState = DXUT_STATE_HIDDEN;
+    }
+    else if( m_bEnabled == false )
+    {
+        iState = DXUT_STATE_DISABLED;
+    }
+    else if( m_bPressed )
+    {
+        iState = DXUT_STATE_PRESSED;
+
+        nOffsetX = 1;
+        nOffsetY = 2;
+    }
+    else if( m_bMouseOver )
+    {
+        iState = DXUT_STATE_MOUSEOVER;
+
+        nOffsetX = -1;
+        nOffsetY = -2;
+    }
+    else if( m_bHasFocus )
+    {
+        iState = DXUT_STATE_FOCUS;
+    }
+    
+    // Background fill layer
+    //TODO: remove magic numbers
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+    
+    float fBlendRate = ( iState == DXUT_STATE_PRESSED ) ? 0.0f : 0.8f;
+
+    RECT rcWindow = m_rcBoundingBox;
+    OffsetRect( &rcWindow, nOffsetX, nOffsetY );
+
+ 
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    pElement->FontColor.Blend( iState, fElapsedTime, fBlendRate );
+
+    m_pDialog->DrawSprite( pElement, &rcWindow );
+    m_pDialog->DrawText( m_strText, pElement, &rcWindow );
+
+    // Main button
+    pElement = m_Elements.GetAt( 1 );
+
+
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    pElement->FontColor.Blend( iState, fElapsedTime, fBlendRate );
+
+    m_pDialog->DrawSprite( pElement, &rcWindow );
+    m_pDialog->DrawText( m_strText, pElement, &rcWindow );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTCheckBox class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTCheckBox::CDXUTCheckBox( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_CHECKBOX;
+    m_pDialog = pDialog;
+
+    m_bChecked = false;
+}
+    
+
+//--------------------------------------------------------------------------------------
+bool CDXUTCheckBox::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_SPACE:
+                    m_bPressed = true;
+                    return true;
+            }
+        }
+
+        case WM_KEYUP:
+        {
+            switch( wParam )
+            {
+                case VK_SPACE:
+                    if( m_bPressed == true )
+                    {
+                        m_bPressed = false;
+                        SetCheckedInternal( !m_bChecked, true );
+                    }
+                    return true;
+            }
+        }
+    }
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTCheckBox::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            if( ContainsPoint( pt ) )
+            {
+                // Pressed while inside the control
+                m_bPressed = true;
+                SetCapture( DXUTGetHWND() );
+
+                if( !m_bHasFocus )
+                    m_pDialog->RequestFocus( this );
+
+                return true;
+            }
+
+            break;
+        }
+
+        case WM_LBUTTONUP:
+        {
+            if( m_bPressed )
+            {
+                m_bPressed = false;
+                ReleaseCapture();
+
+                // Button click
+                if( ContainsPoint( pt ) )
+                    SetCheckedInternal( !m_bChecked, true );
+                
+                return true;
+            }
+
+            break;
+        }
+    };
+    
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTCheckBox::SetCheckedInternal( bool bChecked, bool bFromInput ) 
+{ 
+    m_bChecked = bChecked; 
+
+    m_pDialog->SendEvent( EVENT_CHECKBOX_CHANGED, bFromInput, this ); 
+}
+
+
+//--------------------------------------------------------------------------------------
+BOOL CDXUTCheckBox::ContainsPoint( POINT pt ) 
+{ 
+    return ( PtInRect( &m_rcBoundingBox, pt ) || 
+             PtInRect( &m_rcButton, pt ) ); 
+}
+
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTCheckBox::UpdateRects()
+{
+    CDXUTButton::UpdateRects();
+
+    m_rcButton = m_rcBoundingBox;
+    m_rcButton.right = m_rcButton.left + RectHeight( m_rcButton );
+
+    m_rcText = m_rcBoundingBox;
+    m_rcText.left += (int) ( 1.25f * RectWidth( m_rcButton ) );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTCheckBox::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    DXUT_CONTROL_STATE iState = DXUT_STATE_NORMAL;
+
+    if( m_bVisible == false )
+        iState = DXUT_STATE_HIDDEN;
+    else if( m_bEnabled == false )
+        iState = DXUT_STATE_DISABLED;
+    else if( m_bPressed )
+        iState = DXUT_STATE_PRESSED;
+    else if( m_bMouseOver )
+        iState = DXUT_STATE_MOUSEOVER;
+    else if( m_bHasFocus )
+        iState = DXUT_STATE_FOCUS;
+
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+
+    float fBlendRate = ( iState == DXUT_STATE_PRESSED ) ? 0.0f : 0.8f;
+
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    pElement->FontColor.Blend( iState, fElapsedTime, fBlendRate );
+
+    m_pDialog->DrawSprite( pElement, &m_rcButton );
+    m_pDialog->DrawText( m_strText, pElement, &m_rcText, true );
+
+    if( !m_bChecked )
+        iState = DXUT_STATE_HIDDEN;
+
+    pElement = m_Elements.GetAt( 1 );
+
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    m_pDialog->DrawSprite( pElement, &m_rcButton );
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTRadioButton class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTRadioButton::CDXUTRadioButton( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_RADIOBUTTON;
+    m_pDialog = pDialog;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTRadioButton::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_SPACE:
+                    m_bPressed = true;
+                    return true;
+            }
+        }
+
+        case WM_KEYUP:
+        {
+            switch( wParam )
+            {
+                case VK_SPACE:
+                    if( m_bPressed == true )
+                    {
+                        m_bPressed = false;
+                        
+                        m_pDialog->ClearRadioButtonGroup( m_nButtonGroup );
+                        m_bChecked = !m_bChecked;
+
+                        m_pDialog->SendEvent( EVENT_RADIOBUTTON_CHANGED, true, this );
+                    }
+                    return true;
+            }
+        }
+    }
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTRadioButton::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            if( ContainsPoint( pt ) )
+            {
+                // Pressed while inside the control
+                m_bPressed = true;
+                SetCapture( DXUTGetHWND() );
+
+                if( !m_bHasFocus )
+                    m_pDialog->RequestFocus( this );
+
+                return true;
+            }
+
+            break;
+        }
+
+        case WM_LBUTTONUP:
+        {
+            if( m_bPressed )
+            {
+                m_bPressed = false;
+                ReleaseCapture();
+
+                // Button click
+                if( ContainsPoint( pt ) )
+                {
+                    m_pDialog->ClearRadioButtonGroup( m_nButtonGroup );
+                    m_bChecked = !m_bChecked;
+
+                    m_pDialog->SendEvent( EVENT_RADIOBUTTON_CHANGED, true, this );
+                }
+
+                return true;
+            }
+
+            break;
+        }
+    };
+    
+    return false;
+}
+
+//--------------------------------------------------------------------------------------
+void CDXUTRadioButton::SetCheckedInternal( bool bChecked, bool bClearGroup, bool bFromInput )
+{
+    if( bChecked && bClearGroup )
+        m_pDialog->ClearRadioButtonGroup( m_nButtonGroup );
+
+    m_bChecked = bChecked;
+    m_pDialog->SendEvent( EVENT_RADIOBUTTON_CHANGED, bFromInput, this );
+}
+
+
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTComboBox class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTComboBox::CDXUTComboBox( CDXUTDialog *pDialog ) :
+    m_ScrollBar( pDialog )
+{
+    m_Type = DXUT_CONTROL_COMBOBOX;
+    m_pDialog = pDialog;
+
+    m_nDropHeight = 100;
+
+    m_nSBWidth = 16;
+    m_bOpened = false;
+    m_iSelected = -1;
+    m_iFocused = -1;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTComboBox::~CDXUTComboBox()
+{
+    RemoveAllItems();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::SetTextColor( D3DCOLOR Color )
+{
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+
+    if( pElement )
+        pElement->FontColor.States[DXUT_STATE_NORMAL] = Color;
+
+    pElement = m_Elements.GetAt( 2 );
+
+    if( pElement )
+        pElement->FontColor.States[DXUT_STATE_NORMAL] = Color;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::UpdateRects()
+{
+    
+    CDXUTButton::UpdateRects();
+
+    m_rcButton = m_rcBoundingBox;
+    m_rcButton.left = m_rcButton.right - RectHeight( m_rcButton );
+
+    m_rcText = m_rcBoundingBox;
+    m_rcText.right = m_rcButton.left;
+
+    m_rcDropdown = m_rcText;
+    OffsetRect( &m_rcDropdown, 0, (int) (0.90f * RectHeight( m_rcText )) );
+    m_rcDropdown.bottom += m_nDropHeight;
+    m_rcDropdown.right -= m_nSBWidth;
+
+    m_rcDropdownText = m_rcDropdown;
+    m_rcDropdownText.left += (int) (0.1f * RectWidth( m_rcDropdown ));
+    m_rcDropdownText.right -= (int) (0.1f * RectWidth( m_rcDropdown ));
+    m_rcDropdownText.top += (int) (0.1f * RectHeight( m_rcDropdown ));
+    m_rcDropdownText.bottom -= (int) (0.1f * RectHeight( m_rcDropdown ));
+
+    // Update the scrollbar's rects
+    m_ScrollBar.SetLocation( m_rcDropdown.right, m_rcDropdown.top+2 );
+    m_ScrollBar.SetSize( m_nSBWidth, RectHeight( m_rcDropdown )-2 );
+    DXUTFontNode* pFontNode = m_pDialog->GetManager()->GetFontNode( m_Elements.GetAt( 2 )->iFont );
+    if( pFontNode && pFontNode->nHeight )
+    {
+        m_ScrollBar.SetPageSize( RectHeight( m_rcDropdownText ) / pFontNode->nHeight );
+
+        // The selected item may have been scrolled off the page.
+        // Ensure that it is in page again.
+        m_ScrollBar.ShowItem( m_iSelected );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::OnFocusOut()
+{
+    CDXUTButton::OnFocusOut();
+
+    m_bOpened = false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTComboBox::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    const DWORD REPEAT_MASK = (0x40000000);
+
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    // Let the scroll bar have a chance to handle it first
+    if( m_ScrollBar.HandleKeyboard( uMsg, wParam, lParam ) )
+        return true;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_RETURN:
+                    if( m_bOpened )
+                    {
+                        if( m_iSelected != m_iFocused )
+                        {
+                            m_iSelected = m_iFocused;
+                            m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                        }
+                        m_bOpened = false;
+                        
+                        if( !m_pDialog->m_bKeyboardInput )
+                            m_pDialog->ClearFocus();
+
+                        return true;
+                    }
+                    break;
+
+                case VK_F4:
+                    // Filter out auto-repeats
+                    if( lParam & REPEAT_MASK )
+                        return true;
+
+                    m_bOpened = !m_bOpened;
+
+                    if( !m_bOpened )
+                    {
+                        m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+
+                        if( !m_pDialog->m_bKeyboardInput )
+                            m_pDialog->ClearFocus();
+                    }
+
+                    return true;
+
+                case VK_LEFT:
+                case VK_UP:
+                    if( m_iFocused > 0 )
+                    {
+                        m_iFocused--;
+                        m_iSelected = m_iFocused;
+
+                        if( !m_bOpened )
+                            m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                    }
+                    
+                    return true;
+
+                case VK_RIGHT:
+                case VK_DOWN:
+                    if( m_iFocused+1 < (int)GetNumItems() )
+                    {
+                        m_iFocused++;
+                        m_iSelected = m_iFocused;
+
+                        if( !m_bOpened )
+                            m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                    }
+
+                    return true;
+            }
+            break;
+        }
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTComboBox::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    // Let the scroll bar handle it first.
+    if( m_ScrollBar.HandleMouse( uMsg, pt, wParam, lParam ) )
+        return true;
+
+    switch( uMsg )
+    {
+        case WM_MOUSEMOVE:
+        {
+            if( m_bOpened && PtInRect( &m_rcDropdown, pt ) )
+            {
+                // Determine which item has been selected
+                for( int i=0; i < m_Items.GetSize(); i++ )
+                {
+                    DXUTComboBoxItem* pItem = m_Items.GetAt( i );
+                    if( pItem -> bVisible &&
+                        PtInRect( &pItem->rcActive, pt ) )
+                    {
+                        m_iFocused = i;
+                    }
+                }
+                return true;
+            }
+            break;
+        }
+
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            if( ContainsPoint( pt ) )
+            {
+                // Pressed while inside the control
+                m_bPressed = true;
+                SetCapture( DXUTGetHWND() );
+
+                if( !m_bHasFocus )
+                    m_pDialog->RequestFocus( this );
+
+                // Toggle dropdown
+                if( m_bHasFocus )
+                {
+                    m_bOpened = !m_bOpened;
+                
+                    if( !m_bOpened )
+                    {
+                        if( !m_pDialog->m_bKeyboardInput )
+                            m_pDialog->ClearFocus();
+                    }
+                }
+
+                return true;
+            }
+
+            // Perhaps this click is within the dropdown
+            if( m_bOpened && PtInRect( &m_rcDropdown, pt ) )
+            {
+                // Determine which item has been selected
+                for( int i=m_ScrollBar.GetTrackPos(); i < m_Items.GetSize(); i++ )
+                {
+                    DXUTComboBoxItem* pItem = m_Items.GetAt( i );
+                    if( pItem -> bVisible &&
+                        PtInRect( &pItem->rcActive, pt ) )
+                    {
+                        m_iFocused = m_iSelected = i;
+                        m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                        m_bOpened = false;
+                        
+                        if( !m_pDialog->m_bKeyboardInput )
+                            m_pDialog->ClearFocus();
+
+                        break;
+                    }
+                }
+
+                return true;
+            }
+
+            // Mouse click not on main control or in dropdown, fire an event if needed
+            if( m_bOpened )
+            {
+                m_iFocused = m_iSelected;
+
+                m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                m_bOpened = false;
+            }
+
+            // Make sure the control is no longer in a pressed state
+            m_bPressed = false;
+
+            // Release focus if appropriate
+            if( !m_pDialog->m_bKeyboardInput )
+            {
+                m_pDialog->ClearFocus();
+            }
+
+            break;
+        }
+
+        case WM_LBUTTONUP:
+        {
+            if( m_bPressed && ContainsPoint( pt ) )
+            {
+                // Button click
+                m_bPressed = false;
+                ReleaseCapture();
+                return true;
+            }
+
+            break;
+        }
+
+        case WM_MOUSEWHEEL:
+        {
+            int zDelta = (short) HIWORD(wParam) / WHEEL_DELTA;
+            if( m_bOpened )
+            {
+                UINT uLines;
+                SystemParametersInfo( SPI_GETWHEELSCROLLLINES, 0, &uLines, 0 );
+                m_ScrollBar.Scroll( -zDelta * uLines );
+            } else
+            {
+                if( zDelta > 0 )
+                {
+                    if( m_iFocused > 0 )
+                    {
+                        m_iFocused--;
+                        m_iSelected = m_iFocused;     
+                        
+                        if( !m_bOpened )
+                            m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                    }          
+                }
+                else
+                {
+                    if( m_iFocused+1 < (int)GetNumItems() )
+                    {
+                        m_iFocused++;
+                        m_iSelected = m_iFocused;   
+
+                        if( !m_bOpened )
+                            m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+                    }
+                }
+            }
+            return true;
+        }
+    };
+    
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::OnHotkey()
+{
+    if( m_bOpened )
+        return;
+
+    if( m_iSelected == -1 )
+        return;
+
+    if( m_pDialog->IsKeyboardInputEnabled() )
+        m_pDialog->RequestFocus( this );
+
+    m_iSelected++;
+    
+    if( m_iSelected >= (int) m_Items.GetSize() )
+        m_iSelected = 0;
+
+    m_iFocused = m_iSelected;
+    m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, true, this );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    DXUT_CONTROL_STATE iState = DXUT_STATE_NORMAL;
+    
+    if( !m_bOpened )
+        iState = DXUT_STATE_HIDDEN;
+
+    // Dropdown box
+    CDXUTElement* pElement = m_Elements.GetAt( 2 );
+
+    // If we have not initialized the scroll bar page size,
+    // do that now.
+    static bool bSBInit;
+    if( !bSBInit )
+    {
+        // Update the page size of the scroll bar
+        if( m_pDialog->GetManager()->GetFontNode( pElement->iFont )->nHeight )
+            m_ScrollBar.SetPageSize( RectHeight( m_rcDropdownText ) / m_pDialog->GetManager()->GetFontNode( pElement->iFont )->nHeight );
+        else
+            m_ScrollBar.SetPageSize( RectHeight( m_rcDropdownText ) );
+        bSBInit = true;
+    }
+
+    // Scroll bar
+    if( m_bOpened )
+        m_ScrollBar.Render( pd3dDevice, fElapsedTime );
+
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime );
+    pElement->FontColor.Blend( iState, fElapsedTime );
+
+    m_pDialog->DrawSprite( pElement, &m_rcDropdown );
+
+    // Selection outline
+    CDXUTElement* pSelectionElement = m_Elements.GetAt( 3 );
+    pSelectionElement->TextureColor.Current = pElement->TextureColor.Current;
+    pSelectionElement->FontColor.Current = pSelectionElement->FontColor.States[ DXUT_STATE_NORMAL ];
+
+    DXUTFontNode* pFont = m_pDialog->GetFont( pElement->iFont );
+    if( pFont )
+    {
+        int curY = m_rcDropdownText.top;
+        int nRemainingHeight = RectHeight( m_rcDropdownText );
+        //WCHAR strDropdown[4096] = {0};
+
+        for( int i = m_ScrollBar.GetTrackPos(); i < m_Items.GetSize(); i++ )
+        {
+            DXUTComboBoxItem* pItem = m_Items.GetAt( i );
+
+            // Make sure there's room left in the dropdown
+            nRemainingHeight -= pFont->nHeight;
+            if( nRemainingHeight < 0 )
+            {
+                pItem->bVisible = false;
+                continue;
+            }
+
+            SetRect( &pItem->rcActive, m_rcDropdownText.left, curY, m_rcDropdownText.right, curY + pFont->nHeight );
+            curY += pFont->nHeight;
+            
+            //debug
+            //int blue = 50 * i;
+            //m_pDialog->DrawRect( &pItem->rcActive, 0xFFFF0000 | blue );
+
+            pItem->bVisible = true;
+
+            if( m_bOpened )
+            {
+                if( (int)i == m_iFocused )
+                {
+                    RECT rc;
+                    SetRect( &rc, m_rcDropdown.left, pItem->rcActive.top-2, m_rcDropdown.right, pItem->rcActive.bottom+2 );
+                    m_pDialog->DrawSprite( pSelectionElement, &rc );
+                    m_pDialog->DrawText( pItem->strText, pSelectionElement, &pItem->rcActive );
+                }
+                else
+                {
+                    m_pDialog->DrawText( pItem->strText, pElement, &pItem->rcActive );
+                }
+            }
+        }
+    }
+
+    int nOffsetX = 0;
+    int nOffsetY = 0;
+
+    iState = DXUT_STATE_NORMAL;
+    
+    if( m_bVisible == false )
+        iState = DXUT_STATE_HIDDEN;
+    else if( m_bEnabled == false )
+        iState = DXUT_STATE_DISABLED;
+    else if( m_bPressed )
+    {
+        iState = DXUT_STATE_PRESSED;
+
+        nOffsetX = 1;
+        nOffsetY = 2;
+    }
+    else if( m_bMouseOver )
+    {
+        iState = DXUT_STATE_MOUSEOVER;
+
+        nOffsetX = -1;
+        nOffsetY = -2;
+    }
+    else if( m_bHasFocus )
+        iState = DXUT_STATE_FOCUS;
+
+    float fBlendRate = ( iState == DXUT_STATE_PRESSED ) ? 0.0f : 0.8f;
+    
+    // Button
+    pElement = m_Elements.GetAt( 1 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    
+    RECT rcWindow = m_rcButton;
+    OffsetRect( &rcWindow, nOffsetX, nOffsetY );
+    m_pDialog->DrawSprite( pElement, &rcWindow );
+
+    if( m_bOpened )
+        iState = DXUT_STATE_PRESSED;
+
+    // Main text box
+    //TODO: remove magic numbers
+    pElement = m_Elements.GetAt( 0 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    pElement->FontColor.Blend( iState, fElapsedTime, fBlendRate );
+
+    m_pDialog->DrawSprite( pElement, &m_rcText);
+    
+    if( m_iSelected >= 0 && m_iSelected < (int) m_Items.GetSize() )
+    {
+        DXUTComboBoxItem* pItem = m_Items.GetAt( m_iSelected );
+        if( pItem != NULL )
+        {
+            m_pDialog->DrawText( pItem->strText, pElement, &m_rcText );
+        
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTComboBox::AddItem( const WCHAR* strText, void* pData )
+{
+    // Validate parameters
+    if( strText== NULL )
+    {
+        return E_INVALIDARG;
+    }
+    
+    // Create a new item and set the data
+    DXUTComboBoxItem* pItem = new DXUTComboBoxItem;
+    if( pItem == NULL )
+    {
+        return DXTRACE_ERR_MSGBOX( L"new", E_OUTOFMEMORY );
+    }
+    
+    ZeroMemory( pItem, sizeof(DXUTComboBoxItem) );
+    StringCchCopy( pItem->strText, 256, strText );
+    pItem->pData = pData;
+
+    m_Items.Add( pItem );
+
+    // Update the scroll bar with new range
+    m_ScrollBar.SetTrackRange( 0, m_Items.GetSize() );
+
+    // If this is the only item in the list, it's selected
+    if( GetNumItems() == 1 )
+    {
+        m_iSelected = 0;
+        m_iFocused = 0;
+        m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, false, this );
+    }
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::RemoveItem( UINT index )
+{
+    DXUTComboBoxItem* pItem = m_Items.GetAt( index );
+    SAFE_DELETE( pItem );
+    m_Items.Remove( index );
+    m_ScrollBar.SetTrackRange( 0, m_Items.GetSize() );
+    if( m_iSelected >= m_Items.GetSize() )
+        m_iSelected = m_Items.GetSize() - 1;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTComboBox::RemoveAllItems()
+{
+    for( int i=0; i < m_Items.GetSize(); i++ )
+    {
+        DXUTComboBoxItem* pItem = m_Items.GetAt( i );
+        SAFE_DELETE( pItem );
+    }
+
+    m_Items.RemoveAll();
+    m_ScrollBar.SetTrackRange( 0, 1 );
+    m_iFocused = m_iSelected = -1;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTComboBox::ContainsItem( const WCHAR* strText, UINT iStart )
+{
+    return ( -1 != FindItem( strText, iStart ) );
+}
+
+
+//--------------------------------------------------------------------------------------
+int CDXUTComboBox::FindItem( const WCHAR* strText, UINT iStart )
+{
+    if( strText == NULL )
+        return -1;
+
+    for( int i = iStart; i < m_Items.GetSize(); i++ )
+    {
+        DXUTComboBoxItem* pItem = m_Items.GetAt(i);
+
+        if( 0 == wcscmp( pItem->strText, strText ) )
+        {
+            return i;
+        }
+    }
+
+    return -1;
+}
+
+
+//--------------------------------------------------------------------------------------
+void* CDXUTComboBox::GetSelectedData()
+{
+    if( m_iSelected < 0 )
+        return NULL;
+
+    DXUTComboBoxItem* pItem = m_Items.GetAt( m_iSelected );
+    return pItem->pData;
+}
+
+
+//--------------------------------------------------------------------------------------
+DXUTComboBoxItem* CDXUTComboBox::GetSelectedItem()
+{
+    if( m_iSelected < 0 )
+        return NULL;
+
+    return m_Items.GetAt( m_iSelected );
+}
+
+
+//--------------------------------------------------------------------------------------
+void* CDXUTComboBox::GetItemData( const WCHAR* strText )
+{
+    int index = FindItem( strText );
+    if( index == -1 )
+    {
+        return NULL;
+    }
+
+    DXUTComboBoxItem* pItem = m_Items.GetAt(index);
+    if( pItem == NULL )
+    {
+        DXTRACE_ERR( L"CGrowableArray::GetAt", E_FAIL );
+        return NULL;
+    }
+
+    return pItem->pData;
+}
+
+
+//--------------------------------------------------------------------------------------
+void* CDXUTComboBox::GetItemData( int nIndex )
+{
+    if( nIndex < 0 || nIndex >= m_Items.GetSize() )
+        return NULL;
+
+    return m_Items.GetAt( nIndex )->pData;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTComboBox::SetSelectedByIndex( UINT index )
+{
+    if( index >= GetNumItems() )
+        return E_INVALIDARG;
+
+    m_iFocused = m_iSelected = index;
+    m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, false, this );
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTComboBox::SetSelectedByText( const WCHAR* strText )
+{
+    if( strText == NULL )
+        return E_INVALIDARG;
+
+    int index = FindItem( strText );
+    if( index == -1 )
+        return E_FAIL;
+
+    m_iFocused = m_iSelected = index;
+    m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, false, this );
+
+    return S_OK;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTComboBox::SetSelectedByData( void* pData )
+{
+    for( int i=0; i < m_Items.GetSize(); i++ )
+    {
+        DXUTComboBoxItem* pItem = m_Items.GetAt(i);
+
+        if( pItem->pData == pData )
+        {
+            m_iFocused = m_iSelected = i;
+            m_pDialog->SendEvent( EVENT_COMBOBOX_SELECTION_CHANGED, false, this );
+            return S_OK;
+        }
+    }
+
+    return E_FAIL;
+}
+
+
+
+//--------------------------------------------------------------------------------------
+CDXUTSlider::CDXUTSlider( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_SLIDER;
+    m_pDialog = pDialog;
+
+    m_nMin = 0;
+    m_nMax = 100;
+    m_nValue = 50;
+
+    m_bPressed = false;
+}
+
+
+//--------------------------------------------------------------------------------------
+BOOL CDXUTSlider::ContainsPoint( POINT pt ) 
+{ 
+    return ( PtInRect( &m_rcBoundingBox, pt ) || 
+             PtInRect( &m_rcButton, pt ) ); 
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTSlider::UpdateRects()
+{
+    CDXUTControl::UpdateRects();
+
+    m_rcButton = m_rcBoundingBox;
+    m_rcButton.right = m_rcButton.left + RectHeight( m_rcButton );
+    OffsetRect( &m_rcButton, -RectWidth( m_rcButton )/2, 0 );
+
+    m_nButtonX = (int) ( (m_nValue - m_nMin) * (float)RectWidth( m_rcBoundingBox ) / (m_nMax - m_nMin) );
+    OffsetRect( &m_rcButton, m_nButtonX, 0 );
+}
+
+int CDXUTSlider::ValueFromPos( int x )
+{ 
+    float fValuePerPixel = (float)(m_nMax - m_nMin) / RectWidth( m_rcBoundingBox );
+    return (int) (0.5f + m_nMin + fValuePerPixel * (x - m_rcBoundingBox.left)) ; 
+}
+
+//--------------------------------------------------------------------------------------
+bool CDXUTSlider::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_HOME:
+                    SetValueInternal( m_nMin, true );
+                    return true;
+
+                case VK_END:
+                    SetValueInternal( m_nMax, true );
+                    return true;
+
+                case VK_LEFT:
+                case VK_DOWN:
+                    SetValueInternal( m_nValue - 1, true );
+                    return true;
+
+                case VK_RIGHT:
+                case VK_UP:
+                    SetValueInternal( m_nValue + 1, true );
+                    return true;
+
+                case VK_NEXT:
+                    SetValueInternal( m_nValue - ( 10 > (m_nMax - m_nMin) / 10 ? 10 : (m_nMax - m_nMin) / 10 ), true );
+                    return true;
+
+                case VK_PRIOR:
+                    SetValueInternal( m_nValue + ( 10 > (m_nMax - m_nMin) / 10 ? 10 : (m_nMax - m_nMin) / 10 ), true );
+                    return true;
+            }
+            break;
+        }
+    }
+    
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTSlider::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            if( PtInRect( &m_rcButton, pt ) )
+            {
+                // Pressed while inside the control
+                m_bPressed = true;
+                SetCapture( DXUTGetHWND() );
+
+                m_nDragX = pt.x;
+                //m_nDragY = pt.y;
+                m_nDragOffset = m_nButtonX - m_nDragX;
+
+                //m_nDragValue = m_nValue;
+
+                if( !m_bHasFocus )
+                    m_pDialog->RequestFocus( this );
+
+                return true;
+            }
+
+            if( PtInRect( &m_rcBoundingBox, pt ) )
+            {
+                m_nDragX = pt.x;
+                m_nDragOffset = 0;               
+                m_bPressed = true;
+                
+                if( !m_bHasFocus )
+                    m_pDialog->RequestFocus( this );
+
+                if( pt.x > m_nButtonX + m_x )
+                {
+                    SetValueInternal( m_nValue + 1, true );
+                    return true;
+                }
+
+                if( pt.x < m_nButtonX + m_x )
+                {
+                    SetValueInternal( m_nValue - 1, true );
+                    return true;
+                }
+            }
+
+            break;
+        }
+
+        case WM_LBUTTONUP:
+        {
+            if( m_bPressed )
+            {
+                m_bPressed = false;
+                ReleaseCapture();
+                m_pDialog->SendEvent( EVENT_SLIDER_VALUE_CHANGED, true, this );
+
+                return true;
+            }
+
+            break;
+        }
+
+        case WM_MOUSEMOVE:
+        {
+            if( m_bPressed )
+            {
+                SetValueInternal( ValueFromPos( m_x + pt.x + m_nDragOffset ), true );
+                return true;
+            }
+
+            break;
+        }
+
+	    case WM_MOUSEWHEEL:
+	    {
+	        int nScrollAmount = int((short)HIWORD(wParam)) / WHEEL_DELTA;
+            SetValueInternal( m_nValue - nScrollAmount, true );
+	        return true;
+	    }
+    };
+    
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTSlider::SetRange( int nMin, int nMax ) 
+{
+    m_nMin = nMin;
+    m_nMax = nMax;
+
+    SetValueInternal( m_nValue, false );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTSlider::SetValueInternal( int nValue, bool bFromInput )
+{
+    // Clamp to range
+    nValue = __max( m_nMin, nValue );
+    nValue = __min( m_nMax, nValue );
+    
+    if( nValue == m_nValue )
+        return;
+
+    m_nValue = nValue;
+    UpdateRects();
+
+    m_pDialog->SendEvent( EVENT_SLIDER_VALUE_CHANGED, bFromInput, this );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTSlider::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    int nOffsetX = 0;
+    int nOffsetY = 0;
+
+    DXUT_CONTROL_STATE iState = DXUT_STATE_NORMAL;
+
+    if( m_bVisible == false )
+    {
+        iState = DXUT_STATE_HIDDEN;
+    }
+    else if( m_bEnabled == false )
+    {
+        iState = DXUT_STATE_DISABLED;
+    }
+    else if( m_bPressed )
+    {
+        iState = DXUT_STATE_PRESSED;
+
+        nOffsetX = 1;
+        nOffsetY = 2;
+    }
+    else if( m_bMouseOver )
+    {
+        iState = DXUT_STATE_MOUSEOVER;
+        
+        nOffsetX = -1;
+        nOffsetY = -2;
+    }
+    else if( m_bHasFocus )
+    {
+        iState = DXUT_STATE_FOCUS;
+    }
+
+    float fBlendRate = ( iState == DXUT_STATE_PRESSED ) ? 0.0f : 0.8f;
+
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate ); 
+    m_pDialog->DrawSprite( pElement, &m_rcBoundingBox );
+
+    //TODO: remove magic numbers
+    pElement = m_Elements.GetAt( 1 );
+       
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    m_pDialog->DrawSprite( pElement, &m_rcButton );
+}
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTScrollBar class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTScrollBar::CDXUTScrollBar( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_SCROLLBAR;
+    m_pDialog = pDialog;
+
+    m_bShowThumb = true;
+    m_bDrag = false;
+
+    SetRect( &m_rcUpButton, 0, 0, 0, 0 );
+    SetRect( &m_rcDownButton, 0, 0, 0, 0 );
+    SetRect( &m_rcTrack, 0, 0, 0, 0 );
+    SetRect( &m_rcThumb, 0, 0, 0, 0 );
+    m_nPosition = 0;
+    m_nPageSize = 1;
+    m_nStart = 0;
+    m_nEnd = 1;
+    m_Arrow = CLEAR;
+    m_dArrowTS = 0.0;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTScrollBar::~CDXUTScrollBar()
+{
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTScrollBar::UpdateRects()
+{
+    CDXUTControl::UpdateRects();
+
+    // Make the buttons square
+
+    SetRect( &m_rcUpButton, m_rcBoundingBox.left, m_rcBoundingBox.top,
+                            m_rcBoundingBox.right, m_rcBoundingBox.top + RectWidth( m_rcBoundingBox ) );
+    SetRect( &m_rcDownButton, m_rcBoundingBox.left, m_rcBoundingBox.bottom - RectWidth( m_rcBoundingBox ),
+                              m_rcBoundingBox.right, m_rcBoundingBox.bottom );
+    SetRect( &m_rcTrack, m_rcUpButton.left, m_rcUpButton.bottom,
+                         m_rcDownButton.right, m_rcDownButton.top );
+    m_rcThumb.left = m_rcUpButton.left;
+    m_rcThumb.right = m_rcUpButton.right;
+
+    UpdateThumbRect();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Compute the dimension of the scroll thumb
+void CDXUTScrollBar::UpdateThumbRect()
+{
+    if( m_nEnd - m_nStart > m_nPageSize )
+    {
+        int nThumbHeight = __max( RectHeight( m_rcTrack ) * m_nPageSize / ( m_nEnd - m_nStart ), SCROLLBAR_MINTHUMBSIZE );
+        int nMaxPosition = m_nEnd - m_nStart - m_nPageSize;
+        m_rcThumb.top = m_rcTrack.top + ( m_nPosition - m_nStart ) * ( RectHeight( m_rcTrack ) - nThumbHeight )
+                        / nMaxPosition;
+        m_rcThumb.bottom = m_rcThumb.top + nThumbHeight;
+        m_bShowThumb = true;
+
+    } 
+    else
+    {
+        // No content to scroll
+        m_rcThumb.bottom = m_rcThumb.top;
+        m_bShowThumb = false;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Scroll() scrolls by nDelta items.  A positive value scrolls down, while a negative
+// value scrolls up.
+void CDXUTScrollBar::Scroll( int nDelta )
+{
+    // Perform scroll
+    m_nPosition += nDelta;
+
+    // Cap position
+    Cap();
+
+    // Update thumb position
+    UpdateThumbRect();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTScrollBar::ShowItem( int nIndex )
+{
+    // Cap the index
+
+    if( nIndex < 0 )
+        nIndex = 0;
+
+    if( nIndex >= m_nEnd )
+        nIndex = m_nEnd - 1;
+
+    // Adjust position
+
+    if( m_nPosition > nIndex )
+        m_nPosition = nIndex;
+    else
+    if( m_nPosition + m_nPageSize <= nIndex )
+        m_nPosition = nIndex - m_nPageSize + 1;
+
+    UpdateThumbRect();
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTScrollBar::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTScrollBar::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    static int ThumbOffsetY;
+
+    m_LastMouse = pt;
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            // Check for click on up button
+
+            if( PtInRect( &m_rcUpButton, pt ) )
+            {
+                SetCapture( DXUTGetHWND() );
+                if( m_nPosition > m_nStart )
+                    --m_nPosition;
+                UpdateThumbRect();
+                m_Arrow = CLICKED_UP;
+                m_dArrowTS = DXUTGetTime();
+                return true;
+            }
+
+            // Check for click on down button
+
+            if( PtInRect( &m_rcDownButton, pt ) )
+            {
+                SetCapture( DXUTGetHWND() );
+                if( m_nPosition + m_nPageSize < m_nEnd )
+                    ++m_nPosition;
+                UpdateThumbRect();
+                m_Arrow = CLICKED_DOWN;
+                m_dArrowTS = DXUTGetTime();
+                return true;
+            }
+
+            // Check for click on thumb
+
+            if( PtInRect( &m_rcThumb, pt ) )
+            {
+                SetCapture( DXUTGetHWND() );
+                m_bDrag = true;
+                ThumbOffsetY = pt.y - m_rcThumb.top;
+                return true;
+            }
+
+            // Check for click on track
+
+            if( m_rcThumb.left <= pt.x &&
+                m_rcThumb.right > pt.x )
+            {
+                SetCapture( DXUTGetHWND() );
+                if( m_rcThumb.top > pt.y &&
+                    m_rcTrack.top <= pt.y )
+                {
+                    Scroll( -( m_nPageSize - 1 ) );
+                    return true;
+                } else
+                if( m_rcThumb.bottom <= pt.y &&
+                    m_rcTrack.bottom > pt.y )
+                {
+                    Scroll( m_nPageSize - 1 );
+                    return true;
+                }
+            }
+
+            break;
+        }
+
+        case WM_LBUTTONUP:
+        {
+            m_bDrag = false;
+            ReleaseCapture();
+            UpdateThumbRect();
+            m_Arrow = CLEAR;
+            break;
+        }
+
+        case WM_MOUSEMOVE:
+        {
+            if( m_bDrag )
+            {
+                m_rcThumb.bottom += pt.y - ThumbOffsetY - m_rcThumb.top;
+                m_rcThumb.top = pt.y - ThumbOffsetY;
+                if( m_rcThumb.top < m_rcTrack.top )
+                    OffsetRect( &m_rcThumb, 0, m_rcTrack.top - m_rcThumb.top );
+                else
+                if( m_rcThumb.bottom > m_rcTrack.bottom )
+                    OffsetRect( &m_rcThumb, 0, m_rcTrack.bottom - m_rcThumb.bottom );
+
+                // Compute first item index based on thumb position
+
+                int nMaxFirstItem = m_nEnd - m_nStart - m_nPageSize;  // Largest possible index for first item
+                int nMaxThumb = RectHeight( m_rcTrack ) - RectHeight( m_rcThumb );  // Largest possible thumb position from the top
+
+                m_nPosition = m_nStart +
+                              ( m_rcThumb.top - m_rcTrack.top +
+                                nMaxThumb / ( nMaxFirstItem * 2 ) ) * // Shift by half a row to avoid last row covered by only one pixel
+                              nMaxFirstItem  / nMaxThumb;
+
+                return true;
+            }
+
+            break;
+        }
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTScrollBar::MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( WM_CAPTURECHANGED == uMsg )
+    {
+        // The application just lost mouse capture. We may not have gotten
+        // the WM_MOUSEUP message, so reset m_bDrag here.
+        m_bDrag = false;
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTScrollBar::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    // Check if the arrow button has been held for a while.
+    // If so, update the thumb position to simulate repeated
+    // scroll.
+    if( m_Arrow != CLEAR )
+    {
+        double dCurrTime = DXUTGetTime();
+        if( PtInRect( &m_rcUpButton, m_LastMouse ) )
+        {
+            switch( m_Arrow )
+            {
+                case CLICKED_UP:
+                    if( SCROLLBAR_ARROWCLICK_DELAY < dCurrTime - m_dArrowTS )
+                    {
+                        Scroll( -1 );
+                        m_Arrow = HELD_UP;
+                        m_dArrowTS = dCurrTime;
+                    }
+                    break;
+                case HELD_UP:
+                    if( SCROLLBAR_ARROWCLICK_REPEAT < dCurrTime - m_dArrowTS )
+                    {
+                        Scroll( -1 );
+                        m_dArrowTS = dCurrTime;
+                    }
+                    break;
+            }
+        } else
+        if( PtInRect( &m_rcDownButton, m_LastMouse ) )
+        {
+            switch( m_Arrow )
+            {
+                case CLICKED_DOWN:
+                    if( SCROLLBAR_ARROWCLICK_DELAY < dCurrTime - m_dArrowTS )
+                    {
+                        Scroll( 1 );
+                        m_Arrow = HELD_DOWN;
+                        m_dArrowTS = dCurrTime;
+                    }
+                    break;
+                case HELD_DOWN:
+                    if( SCROLLBAR_ARROWCLICK_REPEAT < dCurrTime - m_dArrowTS )
+                    {
+                        Scroll( 1 );
+                        m_dArrowTS = dCurrTime;
+                    }
+                    break;
+            }
+        }
+    }
+
+    DXUT_CONTROL_STATE iState = DXUT_STATE_NORMAL;
+
+    if( m_bVisible == false )
+        iState = DXUT_STATE_HIDDEN;
+    else if( m_bEnabled == false || m_bShowThumb == false )
+        iState = DXUT_STATE_DISABLED;
+    else if( m_bMouseOver )
+        iState = DXUT_STATE_MOUSEOVER;
+    else if( m_bHasFocus )
+        iState = DXUT_STATE_FOCUS;
+
+
+    float fBlendRate = ( iState == DXUT_STATE_PRESSED ) ? 0.0f : 0.8f;
+
+    // Background track layer
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    m_pDialog->DrawSprite( pElement, &m_rcTrack );
+
+    // Up Arrow
+    pElement = m_Elements.GetAt( 1 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    m_pDialog->DrawSprite( pElement, &m_rcUpButton );
+
+    // Down Arrow
+    pElement = m_Elements.GetAt( 2 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    m_pDialog->DrawSprite( pElement, &m_rcDownButton );
+
+    // Thumb button
+    pElement = m_Elements.GetAt( 3 );
+    
+    // Blend current color
+    pElement->TextureColor.Blend( iState, fElapsedTime, fBlendRate );
+    m_pDialog->DrawSprite( pElement, &m_rcThumb );
+ 
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTScrollBar::SetTrackRange( int nStart, int nEnd )
+{
+    m_nStart = nStart; m_nEnd = nEnd;
+    Cap();
+    UpdateThumbRect();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTScrollBar::Cap()  // Clips position at boundaries. Ensures it stays within legal range.
+{
+    if( m_nPosition < m_nStart ||
+        m_nEnd - m_nStart <= m_nPageSize )
+    {
+        m_nPosition = m_nStart;
+    }
+    else
+    if( m_nPosition + m_nPageSize > m_nEnd )
+        m_nPosition = m_nEnd - m_nPageSize;
+}
+
+//--------------------------------------------------------------------------------------
+// CDXUTListBox class
+//--------------------------------------------------------------------------------------
+
+//--------------------------------------------------------------------------------------
+CDXUTListBox::CDXUTListBox( CDXUTDialog *pDialog ) :
+    m_ScrollBar( pDialog )
+{
+    m_Type = DXUT_CONTROL_LISTBOX;
+    m_pDialog = pDialog;
+
+    m_dwStyle = 0;
+    m_nSBWidth = 16;
+    m_nSelected = -1;
+    m_nSelStart = 0;
+    m_bDrag = false;
+    m_nBorder = 6;
+    m_nMargin = 5;
+    m_nTextHeight = 0;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTListBox::~CDXUTListBox()
+{
+    RemoveAllItems();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::UpdateRects()
+{
+    CDXUTControl::UpdateRects();
+
+    m_rcSelection = m_rcBoundingBox;
+    m_rcSelection.right -= m_nSBWidth;
+    InflateRect( &m_rcSelection, -m_nBorder, -m_nBorder );
+    m_rcText = m_rcSelection;
+    InflateRect( &m_rcText, -m_nMargin, 0 );
+
+    // Update the scrollbar's rects
+    m_ScrollBar.SetLocation( m_rcBoundingBox.right - m_nSBWidth, m_rcBoundingBox.top );
+    m_ScrollBar.SetSize( m_nSBWidth, m_height );
+    DXUTFontNode* pFontNode = m_pDialog->GetManager()->GetFontNode( m_Elements.GetAt( 0 )->iFont );
+    if( pFontNode && pFontNode->nHeight )
+    {
+        m_ScrollBar.SetPageSize( RectHeight( m_rcText ) / pFontNode->nHeight );
+
+        // The selected item may have been scrolled off the page.
+        // Ensure that it is in page again.
+        m_ScrollBar.ShowItem( m_nSelected );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTListBox::AddItem( const WCHAR *wszText, void *pData )
+{
+    DXUTListBoxItem *pNewItem = new DXUTListBoxItem;
+    if( !pNewItem )
+        return E_OUTOFMEMORY;
+
+    StringCchCopy( pNewItem->strText, 256, wszText );
+    pNewItem->pData = pData;
+    SetRect( &pNewItem->rcActive, 0, 0, 0, 0 );
+    pNewItem->bSelected = false;
+
+    HRESULT hr = m_Items.Add( pNewItem );
+    if( FAILED(hr) )
+    {
+        SAFE_DELETE( pNewItem );
+    }
+    else
+    {
+        m_ScrollBar.SetTrackRange( 0, m_Items.GetSize() );
+    }
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTListBox::InsertItem( int nIndex, const WCHAR *wszText, void *pData )
+{
+    DXUTListBoxItem *pNewItem = new DXUTListBoxItem;
+    if( !pNewItem )
+        return E_OUTOFMEMORY;
+
+    StringCchCopy( pNewItem->strText, 256, wszText );
+    pNewItem->pData = pData;
+    SetRect( &pNewItem->rcActive, 0, 0, 0, 0 );
+    pNewItem->bSelected = false;
+
+    HRESULT hr = m_Items.Insert( nIndex, pNewItem );
+    if( SUCCEEDED( hr ) )
+        m_ScrollBar.SetTrackRange( 0, m_Items.GetSize() );
+    else
+        SAFE_DELETE( pNewItem );
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::RemoveItem( int nIndex )
+{
+    if( nIndex < 0 || nIndex >= (int)m_Items.GetSize() )
+        return;
+
+    DXUTListBoxItem *pItem = m_Items.GetAt( nIndex );
+
+    delete pItem;
+    m_Items.Remove( nIndex );
+    m_ScrollBar.SetTrackRange( 0, m_Items.GetSize() );
+    if( m_nSelected >= (int)m_Items.GetSize() )
+        m_nSelected = m_Items.GetSize() - 1;
+
+    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::RemoveItemByText( WCHAR *wszText )
+{
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::RemoveItemByData( void *pData )
+{
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::RemoveAllItems()
+{
+    for( int i = 0; i < m_Items.GetSize(); ++i )
+    {
+        DXUTListBoxItem *pItem = m_Items.GetAt( i );
+        delete pItem;
+    }
+
+    m_Items.RemoveAll();
+    m_ScrollBar.SetTrackRange( 0, 1 );
+}
+
+
+//--------------------------------------------------------------------------------------
+DXUTListBoxItem *CDXUTListBox::GetItem( int nIndex )
+{
+    if( nIndex < 0 || nIndex >= (int)m_Items.GetSize() )
+        return NULL;
+
+    return m_Items[nIndex];
+}
+
+
+//--------------------------------------------------------------------------------------
+// For single-selection listbox, returns the index of the selected item.
+// For multi-selection, returns the first selected item after the nPreviousSelected position.
+// To search for the first selected item, the app passes -1 for nPreviousSelected.  For
+// subsequent searches, the app passes the returned index back to GetSelectedIndex as.
+// nPreviousSelected.
+// Returns -1 on error or if no item is selected.
+int CDXUTListBox::GetSelectedIndex( int nPreviousSelected )
+{
+    if( nPreviousSelected < -1 )
+        return -1;
+
+    if( m_dwStyle & MULTISELECTION )
+    {
+        // Multiple selection enabled. Search for the next item with the selected flag.
+        for( int i = nPreviousSelected + 1; i < (int)m_Items.GetSize(); ++i )
+        {
+            DXUTListBoxItem *pItem = m_Items.GetAt( i );
+
+            if( pItem->bSelected )
+                return i;
+        }
+
+        return -1;
+    }
+    else
+    {
+        // Single selection
+        return m_nSelected;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::SelectItem( int nNewIndex )
+{
+    // If no item exists, do nothing.
+    if( m_Items.GetSize() == 0 )
+        return;
+
+    int nOldSelected = m_nSelected;
+
+    // Adjust m_nSelected
+    m_nSelected = nNewIndex;
+
+    // Perform capping
+    if( m_nSelected < 0 )
+        m_nSelected = 0;
+    if( m_nSelected >= (int)m_Items.GetSize() )
+        m_nSelected = m_Items.GetSize() - 1;
+
+    if( nOldSelected != m_nSelected )
+    {
+        if( m_dwStyle & MULTISELECTION )
+        {
+            m_Items[m_nSelected]->bSelected = true;
+        }
+
+        // Update selection start
+        m_nSelStart = m_nSelected;
+
+        // Adjust scroll bar
+        m_ScrollBar.ShowItem( m_nSelected );
+    }
+
+    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTListBox::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    // Let the scroll bar have a chance to handle it first
+    if( m_ScrollBar.HandleKeyboard( uMsg, wParam, lParam ) )
+        return true;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+            switch( wParam )
+            {
+                case VK_UP:
+                case VK_DOWN:
+                case VK_NEXT:
+                case VK_PRIOR:
+                case VK_HOME:
+                case VK_END:
+                {
+                    // If no item exists, do nothing.
+                    if( m_Items.GetSize() == 0 )
+                        return true;
+
+                    int nOldSelected = m_nSelected;
+
+                    // Adjust m_nSelected
+                    switch( wParam )
+                    {
+                        case VK_UP: --m_nSelected; break;
+                        case VK_DOWN: ++m_nSelected; break;
+                        case VK_NEXT: m_nSelected += m_ScrollBar.GetPageSize() - 1; break;
+                        case VK_PRIOR: m_nSelected -= m_ScrollBar.GetPageSize() - 1; break;
+                        case VK_HOME: m_nSelected = 0; break;
+                        case VK_END: m_nSelected = m_Items.GetSize() - 1; break;
+                    }
+
+                    // Perform capping
+                    if( m_nSelected < 0 )
+                        m_nSelected = 0;
+                    if( m_nSelected >= (int)m_Items.GetSize() )
+                        m_nSelected = m_Items.GetSize() - 1;
+
+                    if( nOldSelected != m_nSelected )
+                    {
+                        if( m_dwStyle & MULTISELECTION )
+                        {
+                            // Multiple selection
+
+                            // Clear all selection
+                            for( int i = 0; i < (int)m_Items.GetSize(); ++i )
+                            {
+                                DXUTListBoxItem *pItem = m_Items[i];
+                                pItem->bSelected = false;
+                            }
+
+                            if( GetKeyState( VK_SHIFT ) < 0 )
+                            {
+                                // Select all items from m_nSelStart to
+                                // m_nSelected
+                                int nEnd = __max( m_nSelStart, m_nSelected );
+
+                                for( int n = __min( m_nSelStart, m_nSelected ); n <= nEnd; ++n )
+                                    m_Items[n]->bSelected = true;
+                            }
+                            else
+                            {
+                                m_Items[m_nSelected]->bSelected = true;
+
+                                // Update selection start
+                                m_nSelStart = m_nSelected;
+                            }
+                        } else
+                            m_nSelStart = m_nSelected;
+
+                        // Adjust scroll bar
+
+                        m_ScrollBar.ShowItem( m_nSelected );
+
+                        // Send notification
+
+                        m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+                    }
+                    return true;
+                }
+
+                // Space is the hotkey for double-clicking an item.
+                //
+                case VK_SPACE:
+                    m_pDialog->SendEvent( EVENT_LISTBOX_ITEM_DBLCLK, true, this );
+                    return true;
+            }
+            break;
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTListBox::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    // First acquire focus
+    if( WM_LBUTTONDOWN == uMsg )
+        if( !m_bHasFocus )
+            m_pDialog->RequestFocus( this );
+
+    // Let the scroll bar handle it first.
+    if( m_ScrollBar.HandleMouse( uMsg, pt, wParam, lParam ) )
+        return true;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+            // Check for clicks in the text area
+            if( m_Items.GetSize() > 0 && PtInRect( &m_rcSelection, pt ) )
+            {
+                // Compute the index of the clicked item
+
+                int nClicked;
+                if( m_nTextHeight )
+                    nClicked = m_ScrollBar.GetTrackPos() + ( pt.y - m_rcText.top ) / m_nTextHeight;
+                else
+                    nClicked = -1;
+
+                // Only proceed if the click falls on top of an item.
+
+                if( nClicked >= m_ScrollBar.GetTrackPos() &&
+                    nClicked < (int)m_Items.GetSize() &&
+                    nClicked < m_ScrollBar.GetTrackPos() + m_ScrollBar.GetPageSize() )
+                {
+                    SetCapture( DXUTGetHWND() );
+                    m_bDrag = true;
+
+                    // If this is a double click, fire off an event and exit
+                    // since the first click would have taken care of the selection
+                    // updating.
+                    if( uMsg == WM_LBUTTONDBLCLK )
+                    {
+                        m_pDialog->SendEvent( EVENT_LISTBOX_ITEM_DBLCLK, true, this );
+                        return true;
+                    }
+
+                    m_nSelected = nClicked;
+                    if( !( wParam & MK_SHIFT ) )
+                        m_nSelStart = m_nSelected;
+
+                    // If this is a multi-selection listbox, update per-item
+                    // selection data.
+
+                    if( m_dwStyle & MULTISELECTION )
+                    {
+                        // Determine behavior based on the state of Shift and Ctrl
+
+                        DXUTListBoxItem *pSelItem = m_Items.GetAt( m_nSelected );
+                        if( ( wParam & (MK_SHIFT|MK_CONTROL) ) == MK_CONTROL )
+                        {
+                            // Control click. Reverse the selection of this item.
+
+                            pSelItem->bSelected = !pSelItem->bSelected;
+                        } else
+                        if( ( wParam & (MK_SHIFT|MK_CONTROL) ) == MK_SHIFT )
+                        {
+                            // Shift click. Set the selection for all items
+                            // from last selected item to the current item.
+                            // Clear everything else.
+
+                            int nBegin = __min( m_nSelStart, m_nSelected );
+                            int nEnd = __max( m_nSelStart, m_nSelected );
+
+                            for( int i = 0; i < nBegin; ++i )
+                            {
+                                DXUTListBoxItem *pItem = m_Items.GetAt( i );
+                                pItem->bSelected = false;
+                            }
+
+                            for( int i = nEnd + 1; i < (int)m_Items.GetSize(); ++i )
+                            {
+                                DXUTListBoxItem *pItem = m_Items.GetAt( i );
+                                pItem->bSelected = false;
+                            }
+
+                            for( int i = nBegin; i <= nEnd; ++i )
+                            {
+                                DXUTListBoxItem *pItem = m_Items.GetAt( i );
+                                pItem->bSelected = true;
+                            }
+                        } else
+                        if( ( wParam & (MK_SHIFT|MK_CONTROL) ) == ( MK_SHIFT|MK_CONTROL ) )
+                        {
+                            // Control-Shift-click.
+
+                            // The behavior is:
+                            //   Set all items from m_nSelStart to m_nSelected to
+                            //     the same state as m_nSelStart, not including m_nSelected.
+                            //   Set m_nSelected to selected.
+
+                            int nBegin = __min( m_nSelStart, m_nSelected );
+                            int nEnd = __max( m_nSelStart, m_nSelected );
+
+                            // The two ends do not need to be set here.
+
+                            bool bLastSelected = m_Items.GetAt( m_nSelStart )->bSelected;
+                            for( int i = nBegin + 1; i < nEnd; ++i )
+                            {
+                                DXUTListBoxItem *pItem = m_Items.GetAt( i );
+                                pItem->bSelected = bLastSelected;
+                            }
+
+                            pSelItem->bSelected = true;
+
+                            // Restore m_nSelected to the previous value
+                            // This matches the Windows behavior
+
+                            m_nSelected = m_nSelStart;
+                        } else
+                        {
+                            // Simple click.  Clear all items and select the clicked
+                            // item.
+
+
+                            for( int i = 0; i < (int)m_Items.GetSize(); ++i )
+                            {
+                                DXUTListBoxItem *pItem = m_Items.GetAt( i );
+                                pItem->bSelected = false;
+                            }
+
+                            pSelItem->bSelected = true;
+                        }
+                    }  // End of multi-selection case
+
+                    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+                }
+
+                return true;
+            }
+            break;
+
+        case WM_LBUTTONUP:
+        {
+            ReleaseCapture();
+            m_bDrag = false;
+
+            if( m_nSelected != -1 )
+            {
+                // Set all items between m_nSelStart and m_nSelected to
+                // the same state as m_nSelStart
+                int nEnd = __max( m_nSelStart, m_nSelected );
+
+                for( int n = __min( m_nSelStart, m_nSelected ) + 1; n < nEnd; ++n )
+                    m_Items[n]->bSelected = m_Items[m_nSelStart]->bSelected;
+                m_Items[m_nSelected]->bSelected = m_Items[m_nSelStart]->bSelected;
+
+                // If m_nSelStart and m_nSelected are not the same,
+                // the user has dragged the mouse to make a selection.
+                // Notify the application of this.
+                if( m_nSelStart != m_nSelected )
+                    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+
+                m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION_END, true, this );
+            }
+            return false;
+        }
+
+        case WM_MOUSEMOVE:
+            if( m_bDrag )
+            {
+                // Compute the index of the item below cursor
+
+                int nItem;
+                if( m_nTextHeight )
+                    nItem = m_ScrollBar.GetTrackPos() + ( pt.y - m_rcText.top ) / m_nTextHeight;
+                else
+                    nItem = -1;
+
+                // Only proceed if the cursor is on top of an item.
+
+                if( nItem >= (int)m_ScrollBar.GetTrackPos() &&
+                    nItem < (int)m_Items.GetSize() &&
+                    nItem < m_ScrollBar.GetTrackPos() + m_ScrollBar.GetPageSize() )
+                {
+                    m_nSelected = nItem;
+                    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+                } else
+                if( nItem < (int)m_ScrollBar.GetTrackPos() )
+                {
+                    // User drags the mouse above window top
+                    m_ScrollBar.Scroll( -1 );
+                    m_nSelected = m_ScrollBar.GetTrackPos();
+                    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+                } else
+                if( nItem >= m_ScrollBar.GetTrackPos() + m_ScrollBar.GetPageSize() )
+                {
+                    // User drags the mouse below window bottom
+                    m_ScrollBar.Scroll( 1 );
+                    m_nSelected = __min( (int)m_Items.GetSize(), m_ScrollBar.GetTrackPos() + m_ScrollBar.GetPageSize() ) - 1;
+                    m_pDialog->SendEvent( EVENT_LISTBOX_SELECTION, true, this );
+                }
+            }
+            break;
+
+        case WM_MOUSEWHEEL:
+        {
+            UINT uLines;
+            SystemParametersInfo( SPI_GETWHEELSCROLLLINES, 0, &uLines, 0 );
+            int nScrollAmount = int((short)HIWORD(wParam)) / WHEEL_DELTA * uLines;
+            m_ScrollBar.Scroll( -nScrollAmount );
+            return true;
+        }
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTListBox::MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( WM_CAPTURECHANGED == uMsg )
+    {
+        // The application just lost mouse capture. We may not have gotten
+        // the WM_MOUSEUP message, so reset m_bDrag here.
+        m_bDrag = false;
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTListBox::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    if( m_bVisible == false )
+        return;
+
+    CDXUTElement* pElement = m_Elements.GetAt( 0 );
+    pElement->TextureColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );
+    pElement->FontColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );
+
+    CDXUTElement* pSelElement = m_Elements.GetAt( 1 );
+    pSelElement->TextureColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );
+    pSelElement->FontColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );
+
+    m_pDialog->DrawSprite( pElement, &m_rcBoundingBox );
+
+    // Render the text
+    if( m_Items.GetSize() > 0 )
+    {
+        // Find out the height of a single line of text
+        RECT rc = m_rcText;
+        RECT rcSel = m_rcSelection;
+        rc.bottom = rc.top + m_pDialog->GetManager()->GetFontNode( pElement->iFont )->nHeight;
+
+        // Update the line height formation
+        m_nTextHeight = rc.bottom - rc.top;
+
+        static bool bSBInit;
+        if( !bSBInit )
+        {
+            // Update the page size of the scroll bar
+            if( m_nTextHeight )
+                m_ScrollBar.SetPageSize( RectHeight( m_rcText ) / m_nTextHeight );
+            else
+                m_ScrollBar.SetPageSize( RectHeight( m_rcText ) );
+            bSBInit = true;
+        }
+
+        rc.right = m_rcText.right;
+        for( int i = m_ScrollBar.GetTrackPos(); i < (int)m_Items.GetSize(); ++i )
+        {
+            if( rc.bottom > m_rcText.bottom )
+                break;
+
+            DXUTListBoxItem *pItem = m_Items.GetAt( i );
+
+            // Determine if we need to render this item with the
+            // selected element.
+            bool bSelectedStyle = false;
+
+            if( !( m_dwStyle & MULTISELECTION ) && i == m_nSelected )
+                bSelectedStyle = true;
+            else
+            if( m_dwStyle & MULTISELECTION )
+            {
+                if( m_bDrag &&
+                    ( ( i >= m_nSelected && i < m_nSelStart ) ||
+                      ( i <= m_nSelected && i > m_nSelStart ) ) )
+                    bSelectedStyle = m_Items[m_nSelStart]->bSelected;
+                else
+                if( pItem->bSelected )
+                    bSelectedStyle = true;
+            }
+
+            if( bSelectedStyle )
+            {
+                rcSel.top = rc.top; rcSel.bottom = rc.bottom;
+                m_pDialog->DrawSprite( pSelElement, &rcSel );
+                m_pDialog->DrawText( pItem->strText, pSelElement, &rc );
+            }
+            else
+                m_pDialog->DrawText( pItem->strText, pElement, &rc );
+
+            OffsetRect( &rc, 0, m_nTextHeight );
+        }
+    }
+
+    // Render the scroll bar
+
+    m_ScrollBar.Render( pd3dDevice, fElapsedTime );
+}
+
+
+// Static member initialization
+HINSTANCE CUniBuffer::s_hDll = NULL;
+HRESULT (WINAPI *CUniBuffer::_ScriptApplyDigitSubstitution)( const SCRIPT_DIGITSUBSTITUTE*, SCRIPT_CONTROL*, SCRIPT_STATE* ) = Dummy_ScriptApplyDigitSubstitution;
+HRESULT (WINAPI *CUniBuffer::_ScriptStringAnalyse)( HDC, const void *, int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, const int*, SCRIPT_TABDEF*, const BYTE*, SCRIPT_STRING_ANALYSIS* ) = Dummy_ScriptStringAnalyse;
+HRESULT (WINAPI *CUniBuffer::_ScriptStringCPtoX)( SCRIPT_STRING_ANALYSIS, int, BOOL, int* ) = Dummy_ScriptStringCPtoX;
+HRESULT (WINAPI *CUniBuffer::_ScriptStringXtoCP)( SCRIPT_STRING_ANALYSIS, int, int*, int* ) = Dummy_ScriptStringXtoCP;
+HRESULT (WINAPI *CUniBuffer::_ScriptStringFree)( SCRIPT_STRING_ANALYSIS* ) = Dummy_ScriptStringFree;
+const SCRIPT_LOGATTR* (WINAPI *CUniBuffer::_ScriptString_pLogAttr)( SCRIPT_STRING_ANALYSIS ) = Dummy_ScriptString_pLogAttr;
+const int* (WINAPI *CUniBuffer::_ScriptString_pcOutChars)( SCRIPT_STRING_ANALYSIS ) = Dummy_ScriptString_pcOutChars;
+bool CDXUTEditBox::s_bHideCaret;   // If true, we don't render the caret.
+
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTEditBox class
+//--------------------------------------------------------------------------------------
+
+// When scrolling, EDITBOX_SCROLLEXTENT is reciprocal of the amount to scroll.
+// If EDITBOX_SCROLLEXTENT = 4, then we scroll 1/4 of the control each time.
+#define EDITBOX_SCROLLEXTENT 4
+
+//--------------------------------------------------------------------------------------
+CDXUTEditBox::CDXUTEditBox( CDXUTDialog *pDialog )
+{
+    m_Type = DXUT_CONTROL_EDITBOX;
+    m_pDialog = pDialog;
+
+    m_nBorder = 5;  // Default border width
+    m_nSpacing = 4;  // Default spacing
+
+    m_bCaretOn = true;
+    m_dfBlink = GetCaretBlinkTime() * 0.001f;
+    m_dfLastBlink = DXUTGetGlobalTimer()->GetAbsoluteTime();
+    s_bHideCaret = false;
+    m_nFirstVisible = 0;
+    m_TextColor = D3DCOLOR_ARGB( 255, 16, 16, 16 );
+    m_SelTextColor = D3DCOLOR_ARGB( 255, 255, 255, 255 );
+    m_SelBkColor = D3DCOLOR_ARGB( 255, 40, 50, 92 );
+    m_CaretColor = D3DCOLOR_ARGB( 255, 0, 0, 0 );
+    m_nCaret = m_nSelStart = 0;
+    m_bInsertMode = true;
+
+    m_bMouseDrag = false;
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTEditBox::~CDXUTEditBox()
+{
+}
+
+
+//--------------------------------------------------------------------------------------
+// PlaceCaret: Set the caret to a character position, and adjust the scrolling if
+//             necessary.
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::PlaceCaret( int nCP )
+{
+    assert( nCP >= 0 && nCP <= m_Buffer.GetTextSize() );
+    m_nCaret = nCP;
+
+    // Obtain the X offset of the character.
+    int nX1st, nX, nX2;
+    m_Buffer.CPtoX( m_nFirstVisible, FALSE, &nX1st );  // 1st visible char
+    m_Buffer.CPtoX( nCP, FALSE, &nX );  // LEAD
+    // If nCP is the NULL terminator, get the leading edge instead of trailing.
+    if( nCP == m_Buffer.GetTextSize() )
+        nX2 = nX;
+    else
+        m_Buffer.CPtoX( nCP, TRUE, &nX2 );  // TRAIL
+
+    // If the left edge of the char is smaller than the left edge of the 1st visible char,
+    // we need to scroll left until this char is visible.
+    if( nX < nX1st )
+    {
+        // Simply make the first visible character the char at the new caret position.
+        m_nFirstVisible = nCP;
+    }
+    else
+    // If the right of the character is bigger than the offset of the control's
+    // right edge, we need to scroll right to this character.
+    if( nX2 > nX1st + RectWidth( m_rcText ) )
+    {
+        // Compute the X of the new left-most pixel
+        int nXNewLeft = nX2 - RectWidth( m_rcText );
+
+        // Compute the char position of this character
+        int nCPNew1st, nNewTrail;
+        m_Buffer.XtoCP( nXNewLeft, &nCPNew1st, &nNewTrail );
+
+        // If this coordinate is not on a character border,
+        // start from the next character so that the caret
+        // position does not fall outside the text rectangle.
+        int nXNew1st;
+        m_Buffer.CPtoX( nCPNew1st, FALSE, &nXNew1st );
+        if( nXNew1st < nXNewLeft )
+            ++nCPNew1st;
+
+        m_nFirstVisible = nCPNew1st;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::ClearText()
+{
+    m_Buffer.Clear();
+    m_nFirstVisible = 0;
+    PlaceCaret( 0 );
+    m_nSelStart = 0;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::SetText( LPCWSTR wszText, bool bSelected )
+{
+    assert( wszText != NULL );
+
+    m_Buffer.SetText( wszText );
+    m_nFirstVisible = 0;
+    // Move the caret to the end of the text
+    PlaceCaret( m_Buffer.GetTextSize() );
+    m_nSelStart = bSelected ? 0 : m_nCaret;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CDXUTEditBox::GetTextCopy( LPWSTR strDest, UINT bufferCount )
+{
+    assert( strDest );
+
+    StringCchCopy( strDest, bufferCount, m_Buffer.GetBuffer() );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::DeleteSelectionText()
+{
+    int nFirst = __min( m_nCaret, m_nSelStart );
+    int nLast = __max( m_nCaret, m_nSelStart );
+    // Update caret and selection
+    PlaceCaret( nFirst );
+    m_nSelStart = m_nCaret;
+    // Remove the characters
+    for( int i = nFirst; i < nLast; ++i )
+        m_Buffer.RemoveChar( nFirst );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::UpdateRects()
+{
+    CDXUTControl::UpdateRects();
+
+    // Update the text rectangle
+    m_rcText = m_rcBoundingBox;
+    // First inflate by m_nBorder to compute render rects
+    InflateRect( &m_rcText, -m_nBorder, -m_nBorder );
+
+    // Update the render rectangles
+    m_rcRender[0] = m_rcText;
+    SetRect( &m_rcRender[1], m_rcBoundingBox.left, m_rcBoundingBox.top, m_rcText.left, m_rcText.top );
+    SetRect( &m_rcRender[2], m_rcText.left, m_rcBoundingBox.top, m_rcText.right, m_rcText.top );
+    SetRect( &m_rcRender[3], m_rcText.right, m_rcBoundingBox.top, m_rcBoundingBox.right, m_rcText.top );
+    SetRect( &m_rcRender[4], m_rcBoundingBox.left, m_rcText.top, m_rcText.left, m_rcText.bottom );
+    SetRect( &m_rcRender[5], m_rcText.right, m_rcText.top, m_rcBoundingBox.right, m_rcText.bottom );
+    SetRect( &m_rcRender[6], m_rcBoundingBox.left, m_rcText.bottom, m_rcText.left, m_rcBoundingBox.bottom );
+    SetRect( &m_rcRender[7], m_rcText.left, m_rcText.bottom, m_rcText.right, m_rcBoundingBox.bottom );
+    SetRect( &m_rcRender[8], m_rcText.right, m_rcText.bottom, m_rcBoundingBox.right, m_rcBoundingBox.bottom );
+
+    // Inflate further by m_nSpacing
+    InflateRect( &m_rcText, -m_nSpacing, -m_nSpacing );
+}
+
+
+void CDXUTEditBox::CopyToClipboard()
+{
+    // Copy the selection text to the clipboard
+    if( m_nCaret != m_nSelStart && OpenClipboard( NULL ) )
+    {
+        EmptyClipboard();
+
+        HGLOBAL hBlock = GlobalAlloc( GMEM_MOVEABLE, sizeof(WCHAR) * ( m_Buffer.GetTextSize() + 1 ) );
+        if( hBlock )
+        {
+            WCHAR *pwszText = (WCHAR*)GlobalLock( hBlock );
+            if( pwszText )
+            {
+                int nFirst = __min( m_nCaret, m_nSelStart );
+                int nLast = __max( m_nCaret, m_nSelStart );
+                if( nLast - nFirst > 0 )
+                    CopyMemory( pwszText, m_Buffer.GetBuffer() + nFirst, (nLast - nFirst) * sizeof(WCHAR) );
+                pwszText[nLast - nFirst] = L'\0';  // Terminate it
+                GlobalUnlock( hBlock );
+            }
+            SetClipboardData( CF_UNICODETEXT, hBlock );
+        }
+        CloseClipboard();
+        // We must not free the object until CloseClipboard is called.
+        if( hBlock )
+            GlobalFree( hBlock );
+    }
+}
+
+
+void CDXUTEditBox::PasteFromClipboard()
+{
+    DeleteSelectionText();
+
+    if( OpenClipboard( NULL ) )
+    {
+        HANDLE handle = GetClipboardData( CF_UNICODETEXT );
+        if( handle )
+        {
+            // Convert the ANSI string to Unicode, then
+            // insert to our buffer.
+            WCHAR *pwszText = (WCHAR*)GlobalLock( handle );
+            if( pwszText )
+            {
+                // Copy all characters up to null.
+                if( m_Buffer.InsertString( m_nCaret, pwszText ) )
+                    PlaceCaret( m_nCaret + lstrlenW( pwszText ) );
+                m_nSelStart = m_nCaret;
+                GlobalUnlock( handle );
+            }
+        }
+        CloseClipboard();
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTEditBox::HandleKeyboard( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    bool bHandled = false;
+
+    switch( uMsg )
+    {
+        case WM_KEYDOWN:
+        {
+            switch( wParam )
+            {
+                case VK_TAB:
+                    // We don't process Tab in case keyboard input is enabled and the user
+                    // wishes to Tab to other controls.
+                    break;
+
+                case VK_HOME:
+                    PlaceCaret( 0 );
+                    if( GetKeyState( VK_SHIFT ) >= 0 )
+                        // Shift is not down. Update selection
+                        // start along with the caret.
+                        m_nSelStart = m_nCaret;
+                    ResetCaretBlink();
+                    bHandled = true;
+                    break;
+
+                case VK_END:
+                    PlaceCaret( m_Buffer.GetTextSize() );
+                    if( GetKeyState( VK_SHIFT ) >= 0 )
+                        // Shift is not down. Update selection
+                        // start along with the caret.
+                        m_nSelStart = m_nCaret;
+                    ResetCaretBlink();
+                    bHandled = true;
+                    break;
+
+                case VK_INSERT:
+                    if( GetKeyState( VK_CONTROL ) < 0 )
+                    {
+                        // Control Insert. Copy to clipboard
+                        CopyToClipboard();
+                    } else
+                    if( GetKeyState( VK_SHIFT ) < 0 )
+                    {
+                        // Shift Insert. Paste from clipboard
+                        PasteFromClipboard();
+                    } else
+                    {
+                        // Toggle caret insert mode
+                        m_bInsertMode = !m_bInsertMode;
+                    }
+                    break;
+
+                case VK_DELETE:
+                    // Check if there is a text selection.
+                    if( m_nCaret != m_nSelStart )
+                    {
+                        DeleteSelectionText();
+                        m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                    }
+                    else
+                    {
+                        // Deleting one character
+                        if( m_Buffer.RemoveChar( m_nCaret ) )
+                            m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                    }
+                    ResetCaretBlink();
+                    bHandled = true;
+                    break;
+
+                case VK_LEFT:
+                    if( GetKeyState( VK_CONTROL ) < 0 )
+                    {
+                        // Control is down. Move the caret to a new item
+                        // instead of a character.
+                        m_Buffer.GetPriorItemPos( m_nCaret, &m_nCaret );
+                        PlaceCaret( m_nCaret );
+                    }
+                    else
+                    if( m_nCaret > 0 )
+                        PlaceCaret( m_nCaret - 1 );
+                    if( GetKeyState( VK_SHIFT ) >= 0 )
+                        // Shift is not down. Update selection
+                        // start along with the caret.
+                        m_nSelStart = m_nCaret;
+                    ResetCaretBlink();
+                    bHandled = true;
+                    break;
+
+                case VK_RIGHT:
+                    if( GetKeyState( VK_CONTROL ) < 0 )
+                    {
+                        // Control is down. Move the caret to a new item
+                        // instead of a character.
+                        m_Buffer.GetNextItemPos( m_nCaret, &m_nCaret );
+                        PlaceCaret( m_nCaret );
+                    }
+                    else
+                    if( m_nCaret < m_Buffer.GetTextSize() )
+                        PlaceCaret( m_nCaret + 1 );
+                    if( GetKeyState( VK_SHIFT ) >= 0 )
+                        // Shift is not down. Update selection
+                        // start along with the caret.
+                        m_nSelStart = m_nCaret;
+                    ResetCaretBlink();
+                    bHandled = true;
+                    break;
+
+                case VK_UP:
+                case VK_DOWN:
+                    // Trap up and down arrows so that the dialog
+                    // does not switch focus to another control.
+                    bHandled = true;
+                    break;
+
+                default:
+                    bHandled = wParam != VK_ESCAPE;  // Let the application handle Esc.
+            }
+        }
+    }
+    return bHandled;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTEditBox::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            if( !m_bHasFocus )
+                m_pDialog->RequestFocus( this );
+
+            if( !ContainsPoint( pt ) )
+                return false;
+
+            m_bMouseDrag = true;
+            SetCapture( DXUTGetHWND() );
+            // Determine the character corresponding to the coordinates.
+            int nCP, nTrail, nX1st;
+            m_Buffer.CPtoX( m_nFirstVisible, FALSE, &nX1st );  // X offset of the 1st visible char
+            if( SUCCEEDED( m_Buffer.XtoCP( pt.x - m_rcText.left + nX1st, &nCP, &nTrail ) ) )
+            {
+                // Cap at the NULL character.
+                if( nTrail && nCP < m_Buffer.GetTextSize() )
+                    PlaceCaret( nCP + 1 );
+                else
+                    PlaceCaret( nCP );
+                m_nSelStart = m_nCaret;
+                ResetCaretBlink();
+            }
+            return true;
+        }
+
+        case WM_LBUTTONUP:
+            ReleaseCapture();
+            m_bMouseDrag = false;
+            break;
+
+        case WM_MOUSEMOVE:
+            if( m_bMouseDrag )
+            {
+                // Determine the character corresponding to the coordinates.
+                int nCP, nTrail, nX1st;
+                m_Buffer.CPtoX( m_nFirstVisible, FALSE, &nX1st );  // X offset of the 1st visible char
+                if( SUCCEEDED( m_Buffer.XtoCP( pt.x - m_rcText.left + nX1st, &nCP, &nTrail ) ) )
+                {
+                    // Cap at the NULL character.
+                    if( nTrail && nCP < m_Buffer.GetTextSize() )
+                        PlaceCaret( nCP + 1 );
+                    else
+                        PlaceCaret( nCP );
+                }
+            }
+            break;
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::OnFocusIn()
+{
+    CDXUTControl::OnFocusIn();
+
+    ResetCaretBlink();
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTEditBox::MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_CHAR:
+        {
+            switch( (WCHAR)wParam )
+            {
+                // Backspace
+                case VK_BACK:
+                {
+                    // If there's a selection, treat this
+                    // like a delete key.
+                    if( m_nCaret != m_nSelStart )
+                    {
+                        DeleteSelectionText();
+                        m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                    }
+                    else
+                    if( m_nCaret > 0 )
+                    {
+                        // Move the caret, then delete the char.
+                        PlaceCaret( m_nCaret - 1 );
+                        m_nSelStart = m_nCaret;
+                        m_Buffer.RemoveChar( m_nCaret );
+                        m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                    }
+                    ResetCaretBlink();
+                    break;
+                }
+
+                case 24:        // Ctrl-X Cut
+                case VK_CANCEL: // Ctrl-C Copy
+                {
+                    CopyToClipboard();
+
+                    // If the key is Ctrl-X, delete the selection too.
+                    if( (WCHAR)wParam == 24 )
+                    {
+                        DeleteSelectionText();
+                        m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                    }
+
+                    break;
+                }
+
+                // Ctrl-V Paste
+                case 22:
+                {
+                    PasteFromClipboard();
+                    m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                    break;
+                }
+
+                // Ctrl-A Select All
+                case 1:
+                    if( m_nSelStart == m_nCaret )
+                    {
+                        m_nSelStart = 0;
+                        PlaceCaret( m_Buffer.GetTextSize() );
+                    }
+                    break;
+
+                case VK_RETURN:
+                    // Invoke the callback when the user presses Enter.
+                    m_pDialog->SendEvent( EVENT_EDITBOX_STRING, true, this );
+                    break;
+
+                // Junk characters we don't want in the string
+                case 26:  // Ctrl Z
+                case 2:   // Ctrl B
+                case 14:  // Ctrl N
+                case 19:  // Ctrl S
+                case 4:   // Ctrl D
+                case 6:   // Ctrl F
+                case 7:   // Ctrl G
+                case 10:  // Ctrl J
+                case 11:  // Ctrl K
+                case 12:  // Ctrl L
+                case 17:  // Ctrl Q
+                case 23:  // Ctrl W
+                case 5:   // Ctrl E
+                case 18:  // Ctrl R
+                case 20:  // Ctrl T
+                case 25:  // Ctrl Y
+                case 21:  // Ctrl U
+                case 9:   // Ctrl I
+                case 15:  // Ctrl O
+                case 16:  // Ctrl P
+                case 27:  // Ctrl [
+                case 29:  // Ctrl ]
+                case 28:  // Ctrl \ 
+                    break;
+
+                default:
+                {
+                    // If there's a selection and the user
+                    // starts to type, the selection should
+                    // be deleted.
+                    if( m_nCaret != m_nSelStart )
+                        DeleteSelectionText();
+
+                    // If we are in overwrite mode and there is already
+                    // a char at the caret's position, simply replace it.
+                    // Otherwise, we insert the char as normal.
+                    if( !m_bInsertMode && m_nCaret < m_Buffer.GetTextSize() )
+                    {
+                        m_Buffer[m_nCaret] = (WCHAR)wParam;
+                        PlaceCaret( m_nCaret + 1 );
+                        m_nSelStart = m_nCaret;
+                    } else
+                    {
+                        // Insert the char
+                        if( m_Buffer.InsertChar( m_nCaret, (WCHAR)wParam ) )
+                        {
+                            PlaceCaret( m_nCaret + 1 );
+                            m_nSelStart = m_nCaret;
+                        }
+                    }
+                    ResetCaretBlink();
+                    m_pDialog->SendEvent( EVENT_EDITBOX_CHANGE, true, this );
+                }
+            }
+            return true;
+        }
+    }
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    if( m_bVisible == false )
+        return;
+
+    HRESULT hr;
+    int nSelStartX = 0, nCaretX = 0;  // Left and right X cordinates of the selection region
+
+    CDXUTElement* pElement = GetElement( 0 );
+    if( pElement )
+    {
+        m_Buffer.SetFontNode( m_pDialog->GetFont( pElement->iFont ) );
+        PlaceCaret( m_nCaret );  // Call PlaceCaret now that we have the font info (node),
+                                 // so that scrolling can be handled.
+    }
+
+    // Render the control graphics
+    for( int e = 0; e < 9; ++e )
+    {
+        pElement = m_Elements.GetAt( e );
+        pElement->TextureColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );
+
+        m_pDialog->DrawSprite( pElement, &m_rcRender[e] );
+    }
+
+    //
+    // Compute the X coordinates of the first visible character.
+    //
+    int nXFirst;
+    m_Buffer.CPtoX( m_nFirstVisible, FALSE, &nXFirst );
+
+    //
+    // Compute the X coordinates of the selection rectangle
+    //
+    hr = m_Buffer.CPtoX( m_nCaret, FALSE, &nCaretX );
+    if( m_nCaret != m_nSelStart )
+        hr = m_Buffer.CPtoX( m_nSelStart, FALSE, &nSelStartX );
+    else
+        nSelStartX = nCaretX;
+
+    //
+    // Render the selection rectangle
+    //
+    RECT rcSelection;  // Make this available for rendering selected text
+    if( m_nCaret != m_nSelStart )
+    {
+        int nSelLeftX = nCaretX, nSelRightX = nSelStartX;
+        // Swap if left is bigger than right
+        if( nSelLeftX > nSelRightX )
+            { int nTemp = nSelLeftX; nSelLeftX = nSelRightX; nSelRightX = nTemp; }
+
+        SetRect( &rcSelection, nSelLeftX, m_rcText.top, nSelRightX, m_rcText.bottom );
+        OffsetRect( &rcSelection, m_rcText.left - nXFirst, 0 );
+        IntersectRect( &rcSelection, &m_rcText, &rcSelection );
+        m_pDialog->DrawRect( &rcSelection, m_SelBkColor );
+    }
+
+    //
+    // Render the text
+    //
+    // Element 0 for text
+    m_Elements.GetAt( 0 )->FontColor.Current = m_TextColor;
+    m_pDialog->DrawText( m_Buffer.GetBuffer() + m_nFirstVisible, m_Elements.GetAt( 0 ), &m_rcText );
+
+    // Render the selected text
+    if( m_nCaret != m_nSelStart )
+    {
+        int nFirstToRender = __max( m_nFirstVisible, __min( m_nSelStart, m_nCaret ) );
+        int nNumChatToRender = __max( m_nSelStart, m_nCaret ) - nFirstToRender;
+        m_Elements.GetAt( 0 )->FontColor.Current = m_SelTextColor;
+        m_pDialog->DrawText( m_Buffer.GetBuffer() + nFirstToRender,
+                             m_Elements.GetAt( 0 ), &rcSelection, false, nNumChatToRender );
+    }
+
+    //
+    // Blink the caret
+    //
+    if( DXUTGetGlobalTimer()->GetAbsoluteTime() - m_dfLastBlink >= m_dfBlink )
+    {
+        m_bCaretOn = !m_bCaretOn;
+        m_dfLastBlink = DXUTGetGlobalTimer()->GetAbsoluteTime();
+    }
+
+    //
+    // Render the caret if this control has the focus
+    //
+    if( m_bHasFocus && m_bCaretOn && !s_bHideCaret )
+    {
+        // Start the rectangle with insert mode caret
+        RECT rcCaret = { m_rcText.left - nXFirst + nCaretX - 1, m_rcText.top,
+                         m_rcText.left - nXFirst + nCaretX + 1, m_rcText.bottom };
+
+        // If we are in overwrite mode, adjust the caret rectangle
+        // to fill the entire character.
+        if( !m_bInsertMode )
+        {
+            // Obtain the right edge X coord of the current character
+            int nRightEdgeX;
+            m_Buffer.CPtoX( m_nCaret, TRUE, &nRightEdgeX );
+            rcCaret.right = m_rcText.left - nXFirst + nRightEdgeX;
+        }
+
+        m_pDialog->DrawRect( &rcCaret, m_CaretColor );
+    }
+}
+
+
+#define IN_FLOAT_CHARSET( c ) \
+    ( (c) == L'-' || (c) == L'.' || ( (c) >= L'0' && (c) <= L'9' ) )
+
+void CDXUTEditBox::ParseFloatArray( float *pNumbers, int nCount )
+{
+    int nWritten = 0;  // Number of floats written
+    const WCHAR *pToken, *pEnd;
+    WCHAR wszToken[60];
+
+    pToken = m_Buffer.GetBuffer();
+    while( nWritten < nCount && *pToken != L'\0' )
+    {
+        // Skip leading spaces
+        while( *pToken == L' ' )
+            ++pToken;
+
+        if( *pToken == L'\0' )
+            break;
+
+        // Locate the end of number
+        pEnd = pToken;
+        while( IN_FLOAT_CHARSET( *pEnd ) )
+            ++pEnd;
+
+        // Copy the token to our buffer
+        int nTokenLen = __min( sizeof(wszToken) / sizeof(wszToken[0]) - 1, int(pEnd - pToken) );
+        StringCchCopy( wszToken, nTokenLen, pToken );
+        *pNumbers = (float)wcstod( wszToken, NULL );
+        ++nWritten;
+        ++pNumbers;
+        pToken = pEnd;
+    }
+}
+
+
+void CDXUTEditBox::SetTextFloatArray( const float *pNumbers, int nCount )
+{
+    WCHAR wszBuffer[512] = {0};
+    WCHAR wszTmp[64];
+    
+    if( pNumbers == NULL )
+        return;
+        
+    for( int i = 0; i < nCount; ++i )
+    {
+        StringCchPrintf( wszTmp, 64, L"%.4f ", pNumbers[i] );
+        StringCchCat( wszBuffer, 512, wszTmp );
+    }
+
+    // Don't want the last space
+    if( nCount > 0 && wcslen(wszBuffer) > 0 )
+        wszBuffer[wcslen(wszBuffer)-1] = 0;
+
+    SetText( wszBuffer );
+}
+
+
+//--------------------------------------------------------------------------------------
+// CDXUTIMEEditBox class
+//--------------------------------------------------------------------------------------
+// IME constants
+#define CHT_IMEFILENAME1    "TINTLGNT.IME" // New Phonetic
+#define CHT_IMEFILENAME2    "CINTLGNT.IME" // New Chang Jie
+#define CHT_IMEFILENAME3    "MSTCIPHA.IME" // Phonetic 5.1
+#define CHS_IMEFILENAME1    "PINTLGNT.IME" // MSPY1.5/2/3
+#define CHS_IMEFILENAME2    "MSSCIPYA.IME" // MSPY3 for OfficeXP
+
+#define LANG_CHT            MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
+#define LANG_CHS            MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
+#define _CHT_HKL            ( (HKL)(INT_PTR)0xE0080404 ) // New Phonetic
+#define _CHT_HKL2           ( (HKL)(INT_PTR)0xE0090404 ) // New Chang Jie
+#define _CHS_HKL            ( (HKL)(INT_PTR)0xE00E0804 ) // MSPY
+#define MAKEIMEVERSION( major, minor )      ( (DWORD)( ( (BYTE)( major ) << 24 ) | ( (BYTE)( minor ) << 16 ) ) )
+
+#define IMEID_CHT_VER42 ( LANG_CHT | MAKEIMEVERSION( 4, 2 ) )   // New(Phonetic/ChanJie)IME98  : 4.2.x.x // Win98
+#define IMEID_CHT_VER43 ( LANG_CHT | MAKEIMEVERSION( 4, 3 ) )   // New(Phonetic/ChanJie)IME98a : 4.3.x.x // Win2k
+#define IMEID_CHT_VER44 ( LANG_CHT | MAKEIMEVERSION( 4, 4 ) )   // New ChanJie IME98b          : 4.4.x.x // WinXP
+#define IMEID_CHT_VER50 ( LANG_CHT | MAKEIMEVERSION( 5, 0 ) )   // New(Phonetic/ChanJie)IME5.0 : 5.0.x.x // WinME
+#define IMEID_CHT_VER51 ( LANG_CHT | MAKEIMEVERSION( 5, 1 ) )   // New(Phonetic/ChanJie)IME5.1 : 5.1.x.x // IME2002(w/OfficeXP)
+#define IMEID_CHT_VER52 ( LANG_CHT | MAKEIMEVERSION( 5, 2 ) )   // New(Phonetic/ChanJie)IME5.2 : 5.2.x.x // IME2002a(w/Whistler)
+#define IMEID_CHT_VER60 ( LANG_CHT | MAKEIMEVERSION( 6, 0 ) )   // New(Phonetic/ChanJie)IME6.0 : 6.0.x.x // IME XP(w/WinXP SP1)
+#define IMEID_CHS_VER41 ( LANG_CHS | MAKEIMEVERSION( 4, 1 ) )   // MSPY1.5  // SCIME97 or MSPY1.5 (w/Win98, Office97)
+#define IMEID_CHS_VER42 ( LANG_CHS | MAKEIMEVERSION( 4, 2 ) )   // MSPY2    // Win2k/WinME
+#define IMEID_CHS_VER53 ( LANG_CHS | MAKEIMEVERSION( 5, 3 ) )   // MSPY3    // WinXP
+
+// Function pointers
+INPUTCONTEXT* (WINAPI * CDXUTIMEEditBox::_ImmLockIMC)( HIMC ) = CDXUTIMEEditBox::Dummy_ImmLockIMC;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmUnlockIMC)( HIMC ) = CDXUTIMEEditBox::Dummy_ImmUnlockIMC;
+LPVOID (WINAPI * CDXUTIMEEditBox::_ImmLockIMCC)( HIMCC ) = CDXUTIMEEditBox::Dummy_ImmLockIMCC;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmUnlockIMCC)( HIMCC ) = CDXUTIMEEditBox::Dummy_ImmUnlockIMCC;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmDisableTextFrameService)( DWORD ) = CDXUTIMEEditBox::Dummy_ImmDisableTextFrameService;
+LONG (WINAPI * CDXUTIMEEditBox::_ImmGetCompositionStringW)( HIMC, DWORD, LPVOID, DWORD ) = CDXUTIMEEditBox::Dummy_ImmGetCompositionStringW;
+DWORD (WINAPI * CDXUTIMEEditBox::_ImmGetCandidateListW)( HIMC, DWORD, LPCANDIDATELIST, DWORD ) = CDXUTIMEEditBox::Dummy_ImmGetCandidateListW;
+HIMC (WINAPI * CDXUTIMEEditBox::_ImmGetContext)( HWND ) = CDXUTIMEEditBox::Dummy_ImmGetContext;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmReleaseContext)( HWND, HIMC ) = CDXUTIMEEditBox::Dummy_ImmReleaseContext;
+HIMC (WINAPI * CDXUTIMEEditBox::_ImmAssociateContext)( HWND, HIMC ) = CDXUTIMEEditBox::Dummy_ImmAssociateContext;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmGetOpenStatus)( HIMC ) = CDXUTIMEEditBox::Dummy_ImmGetOpenStatus;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmSetOpenStatus)( HIMC, BOOL ) = CDXUTIMEEditBox::Dummy_ImmSetOpenStatus;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmGetConversionStatus)( HIMC, LPDWORD, LPDWORD ) = CDXUTIMEEditBox::Dummy_ImmGetConversionStatus;
+HWND (WINAPI * CDXUTIMEEditBox::_ImmGetDefaultIMEWnd)( HWND ) = CDXUTIMEEditBox::Dummy_ImmGetDefaultIMEWnd;
+UINT (WINAPI * CDXUTIMEEditBox::_ImmGetIMEFileNameA)( HKL, LPSTR, UINT ) = CDXUTIMEEditBox::Dummy_ImmGetIMEFileNameA;
+UINT (WINAPI * CDXUTIMEEditBox::_ImmGetVirtualKey)( HWND ) = CDXUTIMEEditBox::Dummy_ImmGetVirtualKey;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmNotifyIME)( HIMC, DWORD, DWORD, DWORD ) = CDXUTIMEEditBox::Dummy_ImmNotifyIME;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmSetConversionStatus)( HIMC, DWORD, DWORD ) = CDXUTIMEEditBox::Dummy_ImmSetConversionStatus;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmSimulateHotKey)( HWND, DWORD ) = CDXUTIMEEditBox::Dummy_ImmSimulateHotKey;
+BOOL (WINAPI * CDXUTIMEEditBox::_ImmIsIME)( HKL ) = CDXUTIMEEditBox::Dummy_ImmIsIME;
+UINT (WINAPI * CDXUTIMEEditBox::_GetReadingString)( HIMC, UINT, LPWSTR, PINT, BOOL*, PUINT ) = CDXUTIMEEditBox::Dummy_GetReadingString; // Traditional Chinese IME
+BOOL (WINAPI * CDXUTIMEEditBox::_ShowReadingWindow)( HIMC, BOOL ) = CDXUTIMEEditBox::Dummy_ShowReadingWindow; // Traditional Chinese IME
+BOOL (APIENTRY * CDXUTIMEEditBox::_VerQueryValueA)( const LPVOID, LPSTR, LPVOID *, PUINT ) = CDXUTIMEEditBox::Dummy_VerQueryValueA;
+BOOL (APIENTRY * CDXUTIMEEditBox::_GetFileVersionInfoA)( LPSTR, DWORD, DWORD, LPVOID )= CDXUTIMEEditBox::Dummy_GetFileVersionInfoA;
+DWORD (APIENTRY * CDXUTIMEEditBox::_GetFileVersionInfoSizeA)( LPSTR, LPDWORD ) = CDXUTIMEEditBox::Dummy_GetFileVersionInfoSizeA;
+
+HINSTANCE CDXUTIMEEditBox::s_hDllImm32;      // IMM32 DLL handle
+HINSTANCE CDXUTIMEEditBox::s_hDllVer;        // Version DLL handle
+HKL       CDXUTIMEEditBox::s_hklCurrent;     // Current keyboard layout of the process
+bool      CDXUTIMEEditBox::s_bVerticalCand;  // Indicates that the candidates are listed vertically
+WCHAR     CDXUTIMEEditBox::s_aszIndicator[5][3] = // String to draw to indicate current input locale
+            {
+                L"En",
+                L"\x7B80",
+                L"\x7E41",
+                L"\xAC00",
+                L"\x3042",
+            };
+LPWSTR    CDXUTIMEEditBox::s_wszCurrIndicator = CDXUTIMEEditBox::s_aszIndicator[0];  // Points to an indicator string that corresponds to current input locale
+bool      CDXUTIMEEditBox::s_bInsertOnType;     // Insert the character as soon as a key is pressed (Korean behavior)
+HINSTANCE CDXUTIMEEditBox::s_hDllIme;           // Instance handle of the current IME module
+HIMC      CDXUTIMEEditBox::s_hImcDef;           // Default input context
+CDXUTIMEEditBox::IMESTATE  CDXUTIMEEditBox::s_ImeState = IMEUI_STATE_OFF;
+bool      CDXUTIMEEditBox::s_bEnableImeSystem;  // Whether the IME system is active
+POINT     CDXUTIMEEditBox::s_ptCompString;      // Composition string position. Updated every frame.
+int       CDXUTIMEEditBox::s_nCompCaret;
+int       CDXUTIMEEditBox::s_nFirstTargetConv;  // Index of the first target converted char in comp string.  If none, -1.
+CUniBuffer CDXUTIMEEditBox::s_CompString = CUniBuffer( 0 );
+BYTE      CDXUTIMEEditBox::s_abCompStringAttr[MAX_COMPSTRING_SIZE];
+DWORD     CDXUTIMEEditBox::s_adwCompStringClause[MAX_COMPSTRING_SIZE];
+WCHAR     CDXUTIMEEditBox::s_wszReadingString[32];
+CDXUTIMEEditBox::CCandList CDXUTIMEEditBox::s_CandList;       // Data relevant to the candidate list
+bool      CDXUTIMEEditBox::s_bShowReadingWindow; // Indicates whether reading window is visible
+bool      CDXUTIMEEditBox::s_bHorizontalReading; // Indicates whether the reading window is vertical or horizontal
+bool      CDXUTIMEEditBox::s_bChineseIME;
+CGrowableArray< CDXUTIMEEditBox::CInputLocale > CDXUTIMEEditBox::s_Locale; // Array of loaded keyboard layout on system
+#if defined(DEBUG) || defined(_DEBUG)
+bool      CDXUTIMEEditBox::m_bIMEStaticMsgProcCalled = false;
+#endif
+
+
+//--------------------------------------------------------------------------------------
+CDXUTIMEEditBox::CDXUTIMEEditBox( CDXUTDialog *pDialog )
+{
+    CDXUTIMEEditBox::Initialize(); // ensure static vars are properly init'ed first
+    _ImmDisableTextFrameService( (DWORD)-1 );  // Disable TSF for the current process
+
+    m_Type = DXUT_CONTROL_IMEEDITBOX;
+    m_pDialog = pDialog;
+
+    s_bEnableImeSystem = true;
+    m_nIndicatorWidth = 0;
+    m_ReadingColor = D3DCOLOR_ARGB( 188, 255, 255, 255 );
+    m_ReadingWinColor = D3DCOLOR_ARGB( 128, 0, 0, 0 );
+    m_ReadingSelColor = D3DCOLOR_ARGB( 255, 255, 0, 0 );
+    m_ReadingSelBkColor = D3DCOLOR_ARGB( 128, 80, 80, 80 );
+    m_CandidateColor = D3DCOLOR_ARGB( 255, 200, 200, 200 );
+    m_CandidateWinColor = D3DCOLOR_ARGB( 128, 0, 0, 0 );
+    m_CandidateSelColor = D3DCOLOR_ARGB( 255, 255, 255, 255 );
+    m_CandidateSelBkColor = D3DCOLOR_ARGB( 128, 158, 158, 158 );
+    m_CompColor = D3DCOLOR_ARGB( 255, 200, 200, 255 );
+    m_CompWinColor = D3DCOLOR_ARGB( 198, 0, 0, 0 );
+    m_CompCaretColor = D3DCOLOR_ARGB( 255, 255, 255, 255 );
+    m_CompTargetColor = D3DCOLOR_ARGB( 255, 255, 255, 255 );
+    m_CompTargetBkColor = D3DCOLOR_ARGB( 255, 150, 150, 150 );
+    m_CompTargetNonColor = D3DCOLOR_ARGB( 255, 255, 255, 0 );
+    m_CompTargetNonBkColor = D3DCOLOR_ARGB( 255, 150, 150, 150 );
+    m_IndicatorImeColor = D3DCOLOR_ARGB( 255, 255, 255, 255 );
+    m_IndicatorEngColor = D3DCOLOR_ARGB( 255, 0, 0, 0 );
+    m_IndicatorBkColor = D3DCOLOR_ARGB( 255, 128, 128, 128 );
+}
+
+
+//--------------------------------------------------------------------------------------
+CDXUTIMEEditBox::~CDXUTIMEEditBox()
+{
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::SendKey( BYTE nVirtKey )
+{
+    keybd_event( nVirtKey, 0, 0,               0 );
+    keybd_event( nVirtKey, 0, KEYEVENTF_KEYUP, 0 );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Called by CDXUTDialogResourceManager::OnCreateDevice.  This gives the class a
+// chance to initialize its default input context associated with the app window.
+HRESULT CDXUTIMEEditBox::StaticOnCreateDevice()
+{
+    // Save the default input context
+    s_hImcDef = _ImmGetContext( DXUTGetHWND() );
+    _ImmReleaseContext( DXUTGetHWND(), s_hImcDef );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::UpdateRects()
+{
+    // Temporary adjust m_width so that CDXUTEditBox can compute
+    // the correct rects for its rendering since we need to make space
+    // for the indicator button
+    int nWidth = m_width;
+    m_width -= m_nIndicatorWidth + m_nBorder * 2; // Make room for the indicator button
+    CDXUTEditBox::UpdateRects();
+    m_width = nWidth;  // Restore
+
+    // Compute the indicator button rectangle
+    SetRect( &m_rcIndicator, m_rcBoundingBox.right, m_rcBoundingBox.top, m_x + m_width, m_rcBoundingBox.bottom );
+//    InflateRect( &m_rcIndicator, -m_nBorder, -m_nBorder );
+    m_rcBoundingBox.right = m_rcBoundingBox.left + m_width;
+}
+
+
+//--------------------------------------------------------------------------------------
+//  GetImeId( UINT uIndex )
+//      returns 
+//  returned value:
+//  0: In the following cases
+//      - Non Chinese IME input locale
+//      - Older Chinese IME
+//      - Other error cases
+//
+//  Othewise:
+//      When uIndex is 0 (default)
+//          bit 31-24:  Major version
+//          bit 23-16:  Minor version
+//          bit 15-0:   Language ID
+//      When uIndex is 1
+//          pVerFixedInfo->dwFileVersionLS
+//
+//  Use IMEID_VER and IMEID_LANG macro to extract version and language information.
+//  
+
+// We define the locale-invariant ID ourselves since it doesn't exist prior to WinXP
+// For more information, see the CompareString() reference.
+#define LCID_INVARIANT MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)
+
+DWORD CDXUTIMEEditBox::GetImeId( UINT uIndex )
+{
+    static HKL hklPrev = 0;
+    static DWORD dwID[2] = { 0, 0 };  // Cache the result
+    
+    DWORD   dwVerSize;
+    DWORD   dwVerHandle;
+    LPVOID  lpVerBuffer;
+    LPVOID  lpVerData;
+    UINT    cbVerData;
+    char    szTmp[1024];
+
+    if( uIndex >= sizeof( dwID ) / sizeof( dwID[0] ) )
+        return 0;
+
+    if( hklPrev == s_hklCurrent )
+        return dwID[uIndex];
+
+    hklPrev = s_hklCurrent;  // Save for the next invocation
+
+    // Check if we are using an older Chinese IME
+    if( !( ( s_hklCurrent == _CHT_HKL ) || ( s_hklCurrent == _CHT_HKL2 ) || ( s_hklCurrent == _CHS_HKL ) ) )
+    {
+        dwID[0] = dwID[1] = 0;
+        return dwID[uIndex];
+    }
+
+    // Obtain the IME file name
+    if ( !_ImmGetIMEFileNameA( s_hklCurrent, szTmp, ( sizeof(szTmp) / sizeof(szTmp[0]) ) - 1 ) )
+    {
+        dwID[0] = dwID[1] = 0;
+        return dwID[uIndex];
+    }
+
+    // Check for IME that doesn't implement reading string API
+    if ( !_GetReadingString )
+    {
+        if( ( CompareStringA( LCID_INVARIANT, NORM_IGNORECASE, szTmp, -1, CHT_IMEFILENAME1, -1 ) != CSTR_EQUAL ) &&
+            ( CompareStringA( LCID_INVARIANT, NORM_IGNORECASE, szTmp, -1, CHT_IMEFILENAME2, -1 ) != CSTR_EQUAL ) &&
+            ( CompareStringA( LCID_INVARIANT, NORM_IGNORECASE, szTmp, -1, CHT_IMEFILENAME3, -1 ) != CSTR_EQUAL ) &&
+            ( CompareStringA( LCID_INVARIANT, NORM_IGNORECASE, szTmp, -1, CHS_IMEFILENAME1, -1 ) != CSTR_EQUAL ) &&
+            ( CompareStringA( LCID_INVARIANT, NORM_IGNORECASE, szTmp, -1, CHS_IMEFILENAME2, -1 ) != CSTR_EQUAL ) )
+        {
+            dwID[0] = dwID[1] = 0;
+            return dwID[uIndex];
+        }
+    }
+
+    dwVerSize = _GetFileVersionInfoSizeA( szTmp, &dwVerHandle );
+    if( dwVerSize )
+    {
+        lpVerBuffer = HeapAlloc( GetProcessHeap(), 0, dwVerSize );
+        if( lpVerBuffer )
+        {
+            if( _GetFileVersionInfoA( szTmp, dwVerHandle, dwVerSize, lpVerBuffer ) )
+            {
+                if( _VerQueryValueA( lpVerBuffer, "\\", &lpVerData, &cbVerData ) )
+                {
+                    DWORD dwVer = ( (VS_FIXEDFILEINFO*)lpVerData )->dwFileVersionMS;
+                    dwVer = ( dwVer & 0x00ff0000 ) << 8 | ( dwVer & 0x000000ff ) << 16;
+                    if( _GetReadingString
+                        ||
+                        ( GetLanguage() == LANG_CHT &&
+                          ( dwVer == MAKEIMEVERSION(4, 2) || 
+                            dwVer == MAKEIMEVERSION(4, 3) || 
+                            dwVer == MAKEIMEVERSION(4, 4) || 
+                            dwVer == MAKEIMEVERSION(5, 0) ||
+                            dwVer == MAKEIMEVERSION(5, 1) ||
+                            dwVer == MAKEIMEVERSION(5, 2) ||
+                            dwVer == MAKEIMEVERSION(6, 0) ) )
+                        ||
+                        ( GetLanguage() == LANG_CHS &&
+                          ( dwVer == MAKEIMEVERSION(4, 1) ||
+                            dwVer == MAKEIMEVERSION(4, 2) ||
+                            dwVer == MAKEIMEVERSION(5, 3) ) )
+                      )
+                    {
+                        dwID[0] = dwVer | GetLanguage();
+                        dwID[1] = ( (VS_FIXEDFILEINFO*)lpVerData )->dwFileVersionLS;
+                    }
+                }
+            }
+            HeapFree( GetProcessHeap(), 0, lpVerBuffer );
+        }
+    }
+
+    return dwID[uIndex];
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::CheckInputLocale()
+{
+    static HKL hklPrev = 0;
+    s_hklCurrent = GetKeyboardLayout( 0 );
+    if ( hklPrev == s_hklCurrent )
+        return;
+
+    hklPrev = s_hklCurrent;
+    switch ( GetPrimaryLanguage() )
+    {
+        // Simplified Chinese
+        case LANG_CHINESE:
+            s_bVerticalCand = true;
+            switch ( GetSubLanguage() )
+            {
+                case SUBLANG_CHINESE_SIMPLIFIED:
+                    s_wszCurrIndicator = s_aszIndicator[INDICATOR_CHS];
+                    s_bVerticalCand = GetImeId() == 0;
+                    break;
+                case SUBLANG_CHINESE_TRADITIONAL:
+                    s_wszCurrIndicator = s_aszIndicator[INDICATOR_CHT];
+                    break;
+                default:    // unsupported sub-language
+                    s_wszCurrIndicator = s_aszIndicator[INDICATOR_NON_IME];
+                    break;
+            }
+            break;
+        // Korean
+        case LANG_KOREAN:
+            s_wszCurrIndicator = s_aszIndicator[INDICATOR_KOREAN];
+            s_bVerticalCand = false;
+            break;
+        // Japanese
+        case LANG_JAPANESE:
+            s_wszCurrIndicator = s_aszIndicator[INDICATOR_JAPANESE];
+            s_bVerticalCand = true;
+            break;
+        default:
+            // A non-IME language.  Obtain the language abbreviation
+            // and store it for rendering the indicator later.
+            s_wszCurrIndicator = s_aszIndicator[INDICATOR_NON_IME];
+    }
+
+    // If non-IME, use the language abbreviation.
+    if( s_wszCurrIndicator == s_aszIndicator[INDICATOR_NON_IME] )
+    {
+        WCHAR wszLang[5];
+        GetLocaleInfoW( MAKELCID( LOWORD( s_hklCurrent ), SORT_DEFAULT ), LOCALE_SABBREVLANGNAME, wszLang, 5 );
+        s_wszCurrIndicator[0] = wszLang[0];
+        s_wszCurrIndicator[1] = towlower( wszLang[1] );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::CheckToggleState()
+{
+    CheckInputLocale();
+    bool bIme = _ImmIsIME( s_hklCurrent ) != 0;
+    s_bChineseIME = ( GetPrimaryLanguage() == LANG_CHINESE ) && bIme;
+
+    HIMC hImc;
+    if( NULL != ( hImc = _ImmGetContext( DXUTGetHWND() ) ) )
+    {
+        if( s_bChineseIME )
+        {
+            DWORD dwConvMode, dwSentMode;
+            _ImmGetConversionStatus( hImc, &dwConvMode, &dwSentMode );
+            s_ImeState = ( dwConvMode & IME_CMODE_NATIVE ) ? IMEUI_STATE_ON : IMEUI_STATE_ENGLISH;
+        }
+        else
+        {
+            s_ImeState = ( bIme && _ImmGetOpenStatus( hImc ) != 0 ) ? IMEUI_STATE_ON : IMEUI_STATE_OFF;
+        }
+        _ImmReleaseContext( DXUTGetHWND(), hImc );
+    }
+    else
+        s_ImeState = IMEUI_STATE_OFF;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Enable/disable the entire IME system.  When disabled, the default IME handling
+// kicks in.
+void CDXUTIMEEditBox::EnableImeSystem( bool bEnable )
+{
+    s_bEnableImeSystem = bEnable;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Sets up IME-specific APIs for the IME edit controls.  This is called every time
+// the input locale changes.
+void CDXUTIMEEditBox::SetupImeApi()
+{
+    char szImeFile[MAX_PATH + 1];
+
+    _GetReadingString = NULL;
+    _ShowReadingWindow = NULL;
+    if( _ImmGetIMEFileNameA( s_hklCurrent, szImeFile, sizeof(szImeFile)/sizeof(szImeFile[0]) - 1 ) == 0 )
+        return;
+
+    if( s_hDllIme ) FreeLibrary( s_hDllIme );
+    s_hDllIme = LoadLibraryA( szImeFile );
+    if ( !s_hDllIme )
+        return;
+    _GetReadingString = (UINT (WINAPI*)(HIMC, UINT, LPWSTR, PINT, BOOL*, PUINT))
+        ( GetProcAddress( s_hDllIme, "GetReadingString" ) );
+    _ShowReadingWindow =(BOOL (WINAPI*)(HIMC, BOOL))
+        ( GetProcAddress( s_hDllIme, "ShowReadingWindow" ) );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Resets the composition string.
+void CDXUTIMEEditBox::ResetCompositionString()
+{
+    s_nCompCaret = 0;
+    s_CompString.SetText( L"" );
+    ZeroMemory( s_abCompStringAttr, sizeof(s_abCompStringAttr) );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Truncate composition string by sending keystrokes to the window.
+void CDXUTIMEEditBox::TruncateCompString( bool bUseBackSpace, int iNewStrLen )
+{
+    if( !s_bInsertOnType )
+        return;
+
+    int cc = (int) wcslen( s_CompString.GetBuffer() );
+    assert( iNewStrLen == 0 || iNewStrLen >= cc );
+
+    // Send right arrow keystrokes to move the caret
+    //   to the end of the composition string.
+    for (int i = 0; i < cc - s_nCompCaret; ++i )
+        SendMessage( DXUTGetHWND(), WM_KEYDOWN, VK_RIGHT, 0 );
+    SendMessage( DXUTGetHWND(), WM_KEYUP, VK_RIGHT, 0 );
+
+    if( bUseBackSpace || m_bInsertMode )
+        iNewStrLen = 0;
+
+    // The caller sets bUseBackSpace to false if there's possibility of sending
+    // new composition string to the app right after this function call.
+    // 
+    // If the app is in overwriting mode and new comp string is 
+    // shorter than current one, delete previous comp string 
+    // till it's same long as the new one. Then move caret to the beginning of comp string.
+    // New comp string will overwrite old one.
+    if( iNewStrLen < cc )
+    {
+        for( int i = 0; i < cc - iNewStrLen; ++i )
+        {
+            SendMessage( DXUTGetHWND(), WM_KEYDOWN, VK_BACK, 0 );  // Backspace character
+            SendMessageW( DXUTGetHWND(), WM_CHAR, VK_BACK, 0 );
+        }
+        SendMessage( DXUTGetHWND(), WM_KEYUP, VK_BACK, 0 );
+    }
+    else
+        iNewStrLen = cc;
+
+    // Move the caret to the beginning by sending left keystrokes
+    for (int i = 0; i < iNewStrLen; ++i )
+        SendMessage( DXUTGetHWND(), WM_KEYDOWN, VK_LEFT, 0 );
+    SendMessage( DXUTGetHWND(), WM_KEYUP, VK_LEFT, 0 );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Sends the current composition string to the application by sending keystroke
+// messages.
+void CDXUTIMEEditBox::SendCompString()
+{
+    for( int i = 0; i < lstrlen( s_CompString.GetBuffer() ); ++i )
+        MsgProc( WM_CHAR, (WPARAM)s_CompString[i], 0 );
+}
+
+
+//--------------------------------------------------------------------------------------
+// Outputs current composition string then cleans up the composition task.
+void CDXUTIMEEditBox::FinalizeString( bool bSend )
+{
+    HIMC hImc;
+    if( NULL == ( hImc = _ImmGetContext( DXUTGetHWND() ) ) )
+        return;
+
+    static bool bProcessing = false;
+    if( bProcessing )    // avoid infinite recursion
+    {
+        DXUTTRACE( L"CDXUTIMEEditBox::FinalizeString: Reentrant detected!\n" );
+        _ImmReleaseContext( DXUTGetHWND(), hImc );
+        return;
+    }
+    bProcessing = true;
+
+    if( !s_bInsertOnType && bSend )
+    {
+        // Send composition string to app.
+        LONG lLength = lstrlen( s_CompString.GetBuffer() );
+        // In case of CHT IME, don't send the trailing double byte space, if it exists.
+        if( GetLanguage() == LANG_CHT
+            && s_CompString[lLength - 1] == 0x3000 )
+        {
+            s_CompString[lLength - 1] = 0;
+        }
+        SendCompString();
+    }
+
+    ResetCompositionString();
+    // Clear composition string in IME
+    _ImmNotifyIME( hImc, NI_COMPOSITIONSTR, CPS_CANCEL, 0 );
+    // the following line is necessary as Korean IME doesn't close cand list
+    // when comp string is cancelled.
+    _ImmNotifyIME( hImc, NI_CLOSECANDIDATE, 0, 0 ); 
+    _ImmReleaseContext( DXUTGetHWND(), hImc );
+    bProcessing = false;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Determine whether the reading window should be vertical or horizontal.
+void CDXUTIMEEditBox::GetReadingWindowOrientation( DWORD dwId )
+{
+    s_bHorizontalReading = ( s_hklCurrent == _CHS_HKL ) || ( s_hklCurrent == _CHT_HKL2 ) || ( dwId == 0 );
+    if( !s_bHorizontalReading && ( dwId & 0x0000FFFF ) == LANG_CHT )
+    {
+        WCHAR wszRegPath[MAX_PATH];
+        HKEY hKey;
+        DWORD dwVer = dwId & 0xFFFF0000;
+        StringCchCopy( wszRegPath, MAX_PATH, L"software\\microsoft\\windows\\currentversion\\" );
+        StringCchCat( wszRegPath, MAX_PATH, ( dwVer >= MAKEIMEVERSION( 5, 1 ) ) ? L"MSTCIPH" : L"TINTLGNT" );
+        LONG lRc = RegOpenKeyExW( HKEY_CURRENT_USER, wszRegPath, 0, KEY_READ, &hKey );
+        if (lRc == ERROR_SUCCESS)
+        {
+            DWORD dwSize = sizeof(DWORD), dwMapping, dwType;
+            lRc = RegQueryValueExW( hKey, L"Keyboard Mapping", NULL, &dwType, (PBYTE)&dwMapping, &dwSize );
+            if (lRc == ERROR_SUCCESS)
+            {
+                if ( ( dwVer <= MAKEIMEVERSION( 5, 0 ) && 
+                       ( (BYTE)dwMapping == 0x22 || (BYTE)dwMapping == 0x23 ) )
+                     ||
+                     ( ( dwVer == MAKEIMEVERSION( 5, 1 ) || dwVer == MAKEIMEVERSION( 5, 2 ) ) &&
+                       (BYTE)dwMapping >= 0x22 && (BYTE)dwMapping <= 0x24 )
+                   )
+                {
+                    s_bHorizontalReading = true;
+                }
+            }
+            RegCloseKey( hKey );
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Obtain the reading string upon WM_IME_NOTIFY/INM_PRIVATE notification.
+void CDXUTIMEEditBox::GetPrivateReadingString()
+{
+    DWORD dwId = GetImeId();
+    if( !dwId )
+    {
+        s_bShowReadingWindow = false;
+        return;
+    }
+
+    HIMC hImc;
+    hImc = _ImmGetContext( DXUTGetHWND() );
+    if( !hImc )
+    {
+        s_bShowReadingWindow = false;
+        return;
+    }
+
+    DWORD dwReadingStrLen = 0;
+    DWORD dwErr = 0;
+    WCHAR *pwszReadingStringBuffer = NULL;  // Buffer for when the IME supports GetReadingString()
+    WCHAR *wstr = 0;
+    bool bUnicodeIme = false;  // Whether the IME context component is Unicode.
+    INPUTCONTEXT *lpIC = NULL;
+
+    if( _GetReadingString )
+    {
+        UINT uMaxUiLen;
+        BOOL bVertical;
+        // Obtain the reading string size
+        dwReadingStrLen = _GetReadingString( hImc, 0, NULL, (PINT)&dwErr, &bVertical, &uMaxUiLen );
+        if( dwReadingStrLen )
+        {
+            wstr = pwszReadingStringBuffer = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, sizeof(WCHAR) * dwReadingStrLen );
+            if( !pwszReadingStringBuffer )
+            {
+                // Out of memory. Exit.
+                _ImmReleaseContext( DXUTGetHWND(), hImc );
+                return;
+            }
+
+            // Obtain the reading string
+            dwReadingStrLen = _GetReadingString( hImc, dwReadingStrLen, wstr, (PINT)&dwErr, &bVertical, &uMaxUiLen );
+        }
+
+        s_bHorizontalReading = !bVertical;
+        bUnicodeIme = true;
+    }
+    else
+    {
+        // IMEs that doesn't implement Reading String API
+
+        lpIC = _ImmLockIMC( hImc );
+        
+        LPBYTE p = 0;
+        switch( dwId )
+        {
+            case IMEID_CHT_VER42: // New(Phonetic/ChanJie)IME98  : 4.2.x.x // Win98
+            case IMEID_CHT_VER43: // New(Phonetic/ChanJie)IME98a : 4.3.x.x // WinMe, Win2k
+            case IMEID_CHT_VER44: // New ChanJie IME98b          : 4.4.x.x // WinXP
+                p = *(LPBYTE *)((LPBYTE)_ImmLockIMCC( lpIC->hPrivate ) + 24 );
+                if( !p ) break;
+                dwReadingStrLen = *(DWORD *)( p + 7 * 4 + 32 * 4 );
+                dwErr = *(DWORD *)( p + 8 * 4 + 32 * 4 );
+                wstr = (WCHAR *)( p + 56 );
+                bUnicodeIme = true;
+                break;
+
+            case IMEID_CHT_VER50: // 5.0.x.x // WinME
+                p = *(LPBYTE *)( (LPBYTE)_ImmLockIMCC( lpIC->hPrivate ) + 3 * 4 );
+                if( !p ) break;
+                p = *(LPBYTE *)( (LPBYTE)p + 1*4 + 5*4 + 4*2 );
+                if( !p ) break;
+                dwReadingStrLen = *(DWORD *)(p + 1*4 + (16*2+2*4) + 5*4 + 16);
+                dwErr = *(DWORD *)(p + 1*4 + (16*2+2*4) + 5*4 + 16 + 1*4);
+                wstr = (WCHAR *)(p + 1*4 + (16*2+2*4) + 5*4);
+                bUnicodeIme = false;
+                break;
+
+            case IMEID_CHT_VER51: // 5.1.x.x // IME2002(w/OfficeXP)
+            case IMEID_CHT_VER52: // 5.2.x.x // (w/whistler)
+            case IMEID_CHS_VER53: // 5.3.x.x // SCIME2k or MSPY3 (w/OfficeXP and Whistler)
+                p = *(LPBYTE *)((LPBYTE)_ImmLockIMCC( lpIC->hPrivate ) + 4);
+                if( !p ) break;
+                p = *(LPBYTE *)((LPBYTE)p + 1*4 + 5*4);
+                if( !p ) break;
+                dwReadingStrLen = *(DWORD *)(p + 1*4 + (16*2+2*4) + 5*4 + 16 * 2);
+                dwErr = *(DWORD *)(p + 1*4 + (16*2+2*4) + 5*4 + 16 * 2 + 1*4);
+                wstr  = (WCHAR *) (p + 1*4 + (16*2+2*4) + 5*4);
+                bUnicodeIme = true;
+                break;
+
+            // the code tested only with Win 98 SE (MSPY 1.5/ ver 4.1.0.21)
+            case IMEID_CHS_VER41:
+            {
+                int nOffset;
+                nOffset = ( GetImeId( 1 ) >= 0x00000002 ) ? 8 : 7;
+
+                p = *(LPBYTE *)((LPBYTE)_ImmLockIMCC( lpIC->hPrivate ) + nOffset * 4);
+                if( !p ) break;
+                dwReadingStrLen = *(DWORD *)(p + 7*4 + 16*2*4);
+                dwErr = *(DWORD *)(p + 8*4 + 16*2*4);
+                dwErr = __min( dwErr, dwReadingStrLen );
+                wstr = (WCHAR *)(p + 6*4 + 16*2*1);
+                bUnicodeIme = true;
+                break;
+            }
+
+            case IMEID_CHS_VER42: // 4.2.x.x // SCIME98 or MSPY2 (w/Office2k, Win2k, WinME, etc)
+            {
+                OSVERSIONINFOW osi;
+                osi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
+                GetVersionExW( &osi );
+
+                int nTcharSize = ( osi.dwPlatformId == VER_PLATFORM_WIN32_NT ) ? sizeof(WCHAR) : sizeof(char);
+                p = *(LPBYTE *)((LPBYTE)_ImmLockIMCC( lpIC->hPrivate ) + 1*4 + 1*4 + 6*4);
+                if( !p ) break;
+                dwReadingStrLen = *(DWORD *)(p + 1*4 + (16*2+2*4) + 5*4 + 16 * nTcharSize);
+                dwErr = *(DWORD *)(p + 1*4 + (16*2+2*4) + 5*4 + 16 * nTcharSize + 1*4);
+                wstr  = (WCHAR *) (p + 1*4 + (16*2+2*4) + 5*4);
+                bUnicodeIme = ( osi.dwPlatformId == VER_PLATFORM_WIN32_NT ) ? true : false;
+            }
+        }   // switch
+    }
+
+    // Copy the reading string to the candidate list first
+    s_CandList.awszCandidate[0][0] = 0;
+    s_CandList.awszCandidate[1][0] = 0;
+    s_CandList.awszCandidate[2][0] = 0;
+    s_CandList.awszCandidate[3][0] = 0;
+    s_CandList.dwCount = dwReadingStrLen;
+    s_CandList.dwSelection = (DWORD)-1; // do not select any char
+    if( bUnicodeIme )
+    {
+        UINT i;
+        for( i = 0; i < dwReadingStrLen; ++i ) // dwlen > 0, if known IME
+        {
+            if( dwErr <= i && s_CandList.dwSelection == (DWORD)-1 )
+            {
+                // select error char
+                s_CandList.dwSelection = i;
+            }
+
+            s_CandList.awszCandidate[i][0] = wstr[i];
+            s_CandList.awszCandidate[i][1] = 0;
+        }
+        s_CandList.awszCandidate[i][0] = 0;
+    }
+    else
+    {
+        char *p = (char *)wstr;
+        DWORD i, j;
+        for( i = 0, j = 0; i < dwReadingStrLen; ++i, ++j ) // dwlen > 0, if known IME
+        {
+            if( dwErr <= i && s_CandList.dwSelection == (DWORD)-1 )
+            {
+                s_CandList.dwSelection = j;
+            }
+            // Obtain the current code page
+            WCHAR wszCodePage[8];
+            UINT uCodePage = CP_ACP;  // Default code page
+            if( GetLocaleInfoW( MAKELCID( GetLanguage(), SORT_DEFAULT ),
+                                LOCALE_IDEFAULTANSICODEPAGE,
+                                wszCodePage,
+                                sizeof(wszCodePage)/sizeof(wszCodePage[0]) ) )
+            {
+                uCodePage = wcstoul( wszCodePage, NULL, 0 );
+            }
+            MultiByteToWideChar( uCodePage, 0, p + i, IsDBCSLeadByteEx( uCodePage, p[i] ) ? 2 : 1,
+                                 s_CandList.awszCandidate[j], 1 );
+            if( IsDBCSLeadByteEx( uCodePage, p[i] ) )
+                ++i;
+        }
+        s_CandList.awszCandidate[j][0] = 0;
+        s_CandList.dwCount = j;
+    }
+    if( !_GetReadingString )
+    {
+        _ImmUnlockIMCC( lpIC->hPrivate );
+        _ImmUnlockIMC( hImc );
+        GetReadingWindowOrientation( dwId );
+    }
+    _ImmReleaseContext( DXUTGetHWND(), hImc );
+
+    if( pwszReadingStringBuffer )
+        HeapFree( GetProcessHeap(), 0, pwszReadingStringBuffer );
+
+    // Copy the string to the reading string buffer
+    if( s_CandList.dwCount > 0 )
+        s_bShowReadingWindow = true;
+    else
+        s_bShowReadingWindow = false;
+    if( s_bHorizontalReading )
+    {
+        s_CandList.nReadingError = -1;
+        s_wszReadingString[0] = 0;
+        for( UINT i = 0; i < s_CandList.dwCount; ++i )
+        {
+            if( s_CandList.dwSelection == i )
+                s_CandList.nReadingError = lstrlen( s_wszReadingString );
+            StringCchCat( s_wszReadingString, 32, s_CandList.awszCandidate[i] );
+        }
+    }
+
+    s_CandList.dwPageSize = MAX_CANDLIST;
+}
+
+
+//--------------------------------------------------------------------------------------
+// This function is used only briefly in CHT IME handling,
+// so accelerator isn't processed.
+void CDXUTIMEEditBox::PumpMessage()
+{
+    MSG msg;
+
+    while( PeekMessageW( &msg, NULL, 0, 0, PM_NOREMOVE ) )
+    {
+        if( !GetMessageW( &msg, NULL, 0, 0 ) )
+        {
+            PostQuitMessage( (int)msg.wParam );
+            return;
+        }
+        TranslateMessage( &msg );
+        DispatchMessageA( &msg );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::OnFocusIn()
+{
+    CDXUTEditBox::OnFocusIn();
+
+    if( s_bEnableImeSystem )
+    {
+        _ImmAssociateContext( DXUTGetHWND(), s_hImcDef );
+        CheckToggleState();
+    } else
+        _ImmAssociateContext( DXUTGetHWND(), NULL );
+
+    //
+    // Set up the IME global state according to the current instance state
+    //
+    HIMC hImc;
+    if( NULL != ( hImc = _ImmGetContext( DXUTGetHWND() ) ) ) 
+    {
+        if( !s_bEnableImeSystem )
+            s_ImeState = IMEUI_STATE_OFF;
+
+        _ImmReleaseContext( DXUTGetHWND(), hImc );
+        CheckToggleState();
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::OnFocusOut()
+{
+    CDXUTEditBox::OnFocusOut();
+
+    FinalizeString( false );  // Don't send the comp string as to match RichEdit behavior
+
+    _ImmAssociateContext( DXUTGetHWND(), NULL );
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTIMEEditBox::StaticMsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    HIMC hImc;
+
+    if( !s_bEnableImeSystem )
+        return false;
+
+#if defined(DEBUG) || defined(_DEBUG)
+    m_bIMEStaticMsgProcCalled = true;
+#endif
+
+    switch( uMsg )
+    {
+        case WM_ACTIVATEAPP:
+            if( wParam )
+            {
+                // Populate s_Locale with the list of keyboard layouts.
+                UINT cKL = GetKeyboardLayoutList( 0, NULL );
+                s_Locale.RemoveAll();
+                HKL *phKL = new HKL[cKL];
+                if( phKL )
+                {
+                    GetKeyboardLayoutList( cKL, phKL );
+                    for( UINT i = 0; i < cKL; ++i )
+                    {
+                        CInputLocale Locale;
+
+                        // Filter out East Asian languages that are not IME.
+                        if( ( PRIMARYLANGID( LOWORD( phKL[i] ) ) == LANG_CHINESE ||
+                              PRIMARYLANGID( LOWORD( phKL[i] ) ) == LANG_JAPANESE ||
+                              PRIMARYLANGID( LOWORD( phKL[i] ) ) == LANG_KOREAN ) &&
+                              !_ImmIsIME( phKL[i] ) )
+                              continue;
+
+                        // If this language is already in the list, don't add it again.
+                        bool bBreak = false;
+                        for( int e = 0; e < s_Locale.GetSize(); ++e )
+                            if( LOWORD( s_Locale.GetAt( e ).m_hKL ) ==
+                                LOWORD( phKL[i] ) )
+                            {
+                                bBreak = true;
+                                break;
+                            }
+                        if( bBreak )
+                            break;
+
+                        Locale.m_hKL = phKL[i];
+                        WCHAR wszDesc[128] = L"";
+                        switch( PRIMARYLANGID( LOWORD( phKL[i] ) ) )
+                        {
+                            // Simplified Chinese
+                            case LANG_CHINESE:
+                                switch( SUBLANGID( LOWORD( phKL[i] ) ) )
+                                {
+                                    case SUBLANG_CHINESE_SIMPLIFIED:
+                                        StringCchCopy( Locale.m_wszLangAbb, 3, s_aszIndicator[INDICATOR_CHS] );
+                                        break;
+                                    case SUBLANG_CHINESE_TRADITIONAL:
+                                        StringCchCopy( Locale.m_wszLangAbb, 3, s_aszIndicator[INDICATOR_CHT] );
+                                        break;
+                                    default:    // unsupported sub-language
+                                        GetLocaleInfoW( MAKELCID( LOWORD( phKL[i] ), SORT_DEFAULT ), LOCALE_SABBREVLANGNAME, wszDesc, 128 );
+                                        Locale.m_wszLangAbb[0] = wszDesc[0];
+                                        Locale.m_wszLangAbb[1] = towlower( wszDesc[1] );
+                                        Locale.m_wszLangAbb[2] = L'\0';
+                                        break;
+                                }
+                                break;
+                            // Korean
+                            case LANG_KOREAN:
+                                StringCchCopy( Locale.m_wszLangAbb, 3, s_aszIndicator[INDICATOR_KOREAN] );
+                                break;
+                            // Japanese
+                            case LANG_JAPANESE:
+                                StringCchCopy( Locale.m_wszLangAbb, 3, s_aszIndicator[INDICATOR_JAPANESE] );
+                                break;         
+                            default:
+                                // A non-IME language.  Obtain the language abbreviation
+                                // and store it for rendering the indicator later.
+                                GetLocaleInfoW( MAKELCID( LOWORD( phKL[i] ), SORT_DEFAULT ), LOCALE_SABBREVLANGNAME, wszDesc, 128 );
+                                Locale.m_wszLangAbb[0] = wszDesc[0];
+                                Locale.m_wszLangAbb[1] = towlower( wszDesc[1] );
+                                Locale.m_wszLangAbb[2] = L'\0';
+                                break;
+                        }
+
+                        GetLocaleInfoW( MAKELCID( LOWORD( phKL[i] ), SORT_DEFAULT ), LOCALE_SLANGUAGE, wszDesc, 128 );
+                        StringCchCopy( Locale.m_wszLang, 64, wszDesc );
+
+                        s_Locale.Add( Locale );
+                    }
+                    delete[] phKL;
+                }
+            }
+            break;
+
+        case WM_INPUTLANGCHANGE:
+            DXUTTRACE( L"WM_INPUTLANGCHANGE\n" );
+            {
+                UINT uLang = GetPrimaryLanguage();
+                CheckToggleState();
+                if ( uLang != GetPrimaryLanguage() )
+                {
+                    // Korean IME always inserts on keystroke.  Other IMEs do not.
+                    s_bInsertOnType = ( GetPrimaryLanguage() == LANG_KOREAN );
+                }
+
+                // IME changed.  Setup the new IME.
+                SetupImeApi();
+                if( _ShowReadingWindow )
+                {
+                    if ( NULL != ( hImc = _ImmGetContext( DXUTGetHWND() ) ) )
+                    {
+                        _ShowReadingWindow( hImc, false );
+                        _ImmReleaseContext( DXUTGetHWND(), hImc );
+                    }
+                }
+            }
+            return true;
+
+        case WM_IME_SETCONTEXT:
+            DXUTTRACE( L"WM_IME_SETCONTEXT\n" );
+            //
+            // We don't want anything to display, so we have to clear this
+            //
+            lParam = 0;
+            return false;
+
+        // Handle WM_IME_STARTCOMPOSITION here since
+        // we do not want the default IME handler to see
+        // this when our fullscreen app is running.
+        case WM_IME_STARTCOMPOSITION:
+            DXUTTRACE( L"WM_IME_STARTCOMPOSITION\n" );
+            ResetCompositionString();
+            // Since the composition string has its own caret, we don't render
+            // the edit control's own caret to avoid double carets on screen.
+            s_bHideCaret = true;
+            return true;
+
+        case WM_IME_COMPOSITION:
+            DXUTTRACE( L"WM_IME_COMPOSITION\n" );
+            return false;
+    }
+
+    return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTIMEEditBox::HandleMouse( UINT uMsg, POINT pt, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+    switch( uMsg )
+    {
+        case WM_LBUTTONDOWN:
+        case WM_LBUTTONDBLCLK:
+        {
+            DXUTFontNode* pFont = m_pDialog->GetFont( m_Elements.GetAt( 9 )->iFont );
+
+            // Check if this click is on top of the composition string
+            int nCompStrWidth;
+            s_CompString.CPtoX( s_CompString.GetTextSize(), FALSE, &nCompStrWidth );
+
+            if( s_ptCompString.x <= pt.x &&
+                s_ptCompString.y <= pt.y &&
+                s_ptCompString.x + nCompStrWidth > pt.x &&
+                s_ptCompString.y + pFont->nHeight > pt.y )
+            {
+                int nCharBodyHit, nCharHit;
+                int nTrail;
+
+                // Determine the character clicked on.
+                s_CompString.XtoCP( pt.x - s_ptCompString.x, &nCharBodyHit, &nTrail );
+                if( nTrail && nCharBodyHit < s_CompString.GetTextSize() )
+                    nCharHit = nCharBodyHit + 1;
+                else
+                    nCharHit = nCharBodyHit;
+
+                // Now generate keypress events to move the comp string cursor
+                // to the click point.  First, if the candidate window is displayed,
+                // send Esc to close it.
+                HIMC hImc = _ImmGetContext( DXUTGetHWND() );
+                if( !hImc )
+                    return true;
+
+                _ImmNotifyIME( hImc, NI_CLOSECANDIDATE, 0, 0 );
+                _ImmReleaseContext( DXUTGetHWND(), hImc );
+
+                switch( GetPrimaryLanguage() )
+                {
+                    case LANG_JAPANESE:
+                        // For Japanese, there are two cases.  If s_nFirstTargetConv is
+                        // -1, the comp string hasn't been converted yet, and we use
+                        // s_nCompCaret.  For any other value of s_nFirstTargetConv,
+                        // the string has been converted, so we use clause information.
+
+                        if( s_nFirstTargetConv != -1 )
+                        {
+                            int nClauseClicked = 0;
+                            while( (int)s_adwCompStringClause[nClauseClicked + 1] <= nCharBodyHit )
+                                ++nClauseClicked;
+
+                            int nClauseSelected = 0;
+                            while( (int)s_adwCompStringClause[nClauseSelected + 1] <= s_nFirstTargetConv )
+                                ++nClauseSelected;
+
+                            BYTE nVirtKey = nClauseClicked > nClauseSelected ? VK_RIGHT : VK_LEFT;
+                            int nSendCount = abs( nClauseClicked - nClauseSelected );
+                            while( nSendCount-- > 0 )
+                                SendKey( nVirtKey );
+
+                            return true;
+                        }
+
+                        // Not converted case. Fall thru to Chinese case.
+
+                    case LANG_CHINESE:
+                    {
+                        // For Chinese, use s_nCompCaret.
+                        BYTE nVirtKey = nCharHit > s_nCompCaret ? VK_RIGHT : VK_LEFT;
+                        int nSendCount = abs( nCharHit - s_nCompCaret );
+                        while( nSendCount-- > 0 )
+                            SendKey( nVirtKey );
+                        break;
+                    }
+                }
+
+                return true;
+            }
+
+            // Check if the click is on top of the candidate window
+            if( s_CandList.bShowWindow && PtInRect( &s_CandList.rcCandidate, pt ) )
+            {
+                if( s_bVerticalCand )
+                {
+                    // Vertical candidate window
+
+                    // Compute the row the click is on
+                    int nRow = ( pt.y - s_CandList.rcCandidate.top ) / pFont->nHeight;
+
+                    if( nRow < (int)s_CandList.dwCount )
+                    {
+                        // nRow is a valid entry.
+                        // Now emulate keystrokes to select the candidate at this row.
+                        switch( GetPrimaryLanguage() )
+                        {
+                            case LANG_CHINESE:
+                            case LANG_KOREAN:
+                                // For Chinese and Korean, simply send the number keystroke.
+                                SendKey( (BYTE) ('0' + nRow + 1) );
+                                break;
+
+                            case LANG_JAPANESE:
+                                // For Japanese, move the selection to the target row,
+                                // then send Right, then send Left.
+
+                                BYTE nVirtKey;
+                                if( nRow > (int)s_CandList.dwSelection )
+                                    nVirtKey = VK_DOWN;
+                                else
+                                    nVirtKey = VK_UP;
+                                int nNumToHit = abs( int( nRow - s_CandList.dwSelection ) );
+                                for( int nStrike = 0; nStrike < nNumToHit; ++nStrike )
+                                    SendKey( nVirtKey );
+
+                                // Do this to close the candidate window without ending composition.
+                                SendKey( VK_RIGHT );
+                                SendKey( VK_LEFT );
+
+                                break;
+                        }
+                    }
+                } else
+                {
+                    // Horizontal candidate window
+
+                    // Determine which the character the click has hit.
+                    int nCharHit;
+                    int nTrail;
+                    s_CandList.HoriCand.XtoCP( pt.x - s_CandList.rcCandidate.left, &nCharHit, &nTrail );
+
+                    // Determine which candidate string the character belongs to.
+                    int nCandidate = s_CandList.dwCount - 1;
+
+                    int nEntryStart = 0;
+                    for( UINT i = 0; i < s_CandList.dwCount; ++i )
+                    {
+                        if( nCharHit >= nEntryStart )
+                        {
+                            // Haven't found it.
+                            nEntryStart += lstrlenW( s_CandList.awszCandidate[i] ) + 1;  // plus space separator
+                        } else
+                        {
+                            // Found it.  This entry starts at the right side of the click point,
+                            // so the char belongs to the previous entry.
+                            nCandidate = i - 1;
+                            break;
+                        }
+                    }
+
+                    // Now emulate keystrokes to select the candidate entry.
+                    switch( GetPrimaryLanguage() )
+                    {
+                        case LANG_CHINESE:
+                        case LANG_KOREAN:
+                            // For Chinese and Korean, simply send the number keystroke.
+                            SendKey( (BYTE) ('0' + nCandidate + 1) );
+                            break;
+                    }
+                }
+
+                return true;
+            }
+        }
+    }
+
+    // If we didn't care for the msg, let the parent process it.
+    return CDXUTEditBox::HandleMouse( uMsg, pt, wParam, lParam );
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CDXUTIMEEditBox::MsgProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    if( !m_bEnabled || !m_bVisible )
+        return false;
+
+#if defined(DEBUG) || defined(_DEBUG)
+    // DXUT.cpp used to call CDXUTIMEEditBox::StaticMsgProc() so that, but now
+    // this is the application's responsiblity.  To do this, call 
+    // CDXUTDialogResourceManager::MsgProc() before calling this function.
+    assert( m_bIMEStaticMsgProcCalled && L"To fix, call CDXUTDialogResourceManager::MsgProc() first" );
+#endif
+
+    bool trappedData;
+    bool *trapped = &trappedData;
+
+    HIMC hImc;
+    static LPARAM lAlt = 0x80000000, lCtrl = 0x80000000, lShift = 0x80000000;
+
+    *trapped = false;
+    if( !s_bEnableImeSystem )
+        return CDXUTEditBox::MsgProc( uMsg, wParam, lParam );
+
+    switch( uMsg )
+    {
+        //
+        //  IME Handling
+        //
+        case WM_IME_COMPOSITION:
+            DXUTTRACE( L"WM_IME_COMPOSITION\n" );
+            {
+                LONG lRet;  // Returned count in CHARACTERS
+                WCHAR wszCompStr[MAX_COMPSTRING_SIZE];
+
+                *trapped = true;
+                if( NULL == ( hImc = _ImmGetContext( DXUTGetHWND() ) ) )
+                {
+                    break;
+                }
+
+                // Get the caret position in composition string
+                if ( lParam & GCS_CURSORPOS )
+                {
+                    s_nCompCaret = _ImmGetCompositionStringW( hImc, GCS_CURSORPOS, NULL, 0 );
+                    if( s_nCompCaret < 0 )
+                        s_nCompCaret = 0; // On error, set caret to pos 0.
+                }
+
+                // ResultStr must be processed before composition string.
+                //
+                // This is because for some IMEs, such as CHT, pressing Enter
+                // to complete the composition sends WM_IME_COMPOSITION with both
+                // GCS_RESULTSTR and GCS_COMPSTR.  Retrieving the result string
+                // gives the correct string, while retrieving the comp string
+                // (GCS_COMPSTR) gives empty string.  GCS_RESULTSTR should be
+                // handled first so that the application receives the string.  Then
+                // GCS_COMPSTR can be handled to clear the comp string buffer.
+
+                if ( lParam & GCS_RESULTSTR )
+                {
+                    DXUTTRACE( L"  GCS_RESULTSTR\n" );
+                    lRet = _ImmGetCompositionStringW( hImc, GCS_RESULTSTR, wszCompStr, sizeof( wszCompStr ) );
+                    if( lRet > 0 )
+                    {
+                        lRet /= sizeof(WCHAR);
+                        wszCompStr[lRet] = 0;  // Force terminate
+                        TruncateCompString( false, (int)wcslen( wszCompStr ) );
+                        s_CompString.SetText( wszCompStr );
+                        SendCompString();
+                        ResetCompositionString();
+                    }
+                }
+
+                //
+                // Reads in the composition string.
+                //
+                if ( lParam & GCS_COMPSTR )
+                {
+                    DXUTTRACE( L"  GCS_COMPSTR\n" );
+                    //////////////////////////////////////////////////////
+                    // Retrieve the latest user-selected IME candidates
+                    lRet = _ImmGetCompositionStringW( hImc, GCS_COMPSTR, wszCompStr, sizeof( wszCompStr ) );
+                    if( lRet > 0 )
+                    {
+                        lRet /= sizeof(WCHAR);  // Convert size in byte to size in char
+                        wszCompStr[lRet] = 0;  // Force terminate
+                        //
+                        // Remove the whole of the string
+                        //
+                        TruncateCompString( false, (int)wcslen( wszCompStr ) );
+
+                        s_CompString.SetText( wszCompStr );
+
+                        // Older CHT IME uses composition string for reading string
+                        if ( GetLanguage() == LANG_CHT && !GetImeId() )
+                        {
+                            if( lstrlen( s_CompString.GetBuffer() ) )
+                            {
+                                s_CandList.dwCount = 4;             // Maximum possible length for reading string is 4
+                                s_CandList.dwSelection = (DWORD)-1; // don't select any candidate
+
+                                // Copy the reading string to the candidate list
+                                for( int i = 3; i >= 0; --i )
+                                {
+                                    if( i > lstrlen( s_CompString.GetBuffer() ) - 1 )
+                                        s_CandList.awszCandidate[i][0] = 0;  // Doesn't exist
+                                    else
+                                    {
+                                        s_CandList.awszCandidate[i][0] = s_CompString[i];
+                                        s_CandList.awszCandidate[i][1] = 0;
+                                    }
+                                }
+                                s_CandList.dwPageSize = MAX_CANDLIST;
+                                // Clear comp string after we are done copying
+                                ZeroMemory( (LPVOID)s_CompString.GetBuffer(), 4 * sizeof(WCHAR) );
+                                s_bShowReadingWindow = true;
+                                GetReadingWindowOrientation( 0 );
+                                if( s_bHorizontalReading )
+                                {
+                                    s_CandList.nReadingError = -1;  // Clear error
+
+                                    // Create a string that consists of the current
+                                    // reading string.  Since horizontal reading window
+                                    // is used, we take advantage of this by rendering
+                                    // one string instead of several.
+                                    //
+                                    // Copy the reading string from the candidate list
+                                    // to the reading string buffer.
+                                    s_wszReadingString[0] = 0;
+                                    for( UINT i = 0; i < s_CandList.dwCount; ++i )
+                                    {
+                                        if( s_CandList.dwSelection == i )
+                                            s_CandList.nReadingError = lstrlen( s_wszReadingString );
+                                        StringCchCat( s_wszReadingString, 32, s_CandList.awszCandidate[i] );
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                s_CandList.dwCount = 0;
+                                s_bShowReadingWindow = false;
+                            }
+                        }
+
+                        if( s_bInsertOnType )
+                        {
+                            // Send composition string to the edit control
+                            SendCompString();
+                            // Restore the caret to the correct location.
+                            // It's at the end right now, so compute the number
+                            // of times left arrow should be pressed to
+                            // send it to the original position.
+                            int nCount = lstrlen( s_CompString.GetBuffer() + s_nCompCaret );
+                            // Send left keystrokes
+                            for( int i = 0; i < nCount; ++i )
+                                SendMessage( DXUTGetHWND(), WM_KEYDOWN, VK_LEFT, 0 );
+                            SendMessage( DXUTGetHWND(), WM_KEYUP, VK_LEFT, 0 );
+                        }
+                    }
+
+                    ResetCaretBlink();
+                }
+
+                // Retrieve comp string attributes
+                if( lParam & GCS_COMPATTR )
+                {
+                    lRet = _ImmGetCompositionStringW( hImc, GCS_COMPATTR, s_abCompStringAttr, sizeof( s_abCompStringAttr ) );
+                    if( lRet > 0 )
+                        s_abCompStringAttr[lRet] = 0;  // ??? Is this needed for attributes?
+                }
+
+                // Retrieve clause information
+                if( lParam & GCS_COMPCLAUSE )
+                {
+                    lRet = _ImmGetCompositionStringW(hImc, GCS_COMPCLAUSE, s_adwCompStringClause, sizeof( s_adwCompStringClause ) );
+                    s_adwCompStringClause[lRet / sizeof(DWORD)] = 0;  // Terminate
+                }
+
+                _ImmReleaseContext( DXUTGetHWND(), hImc );
+            }
+            break;
+
+        case WM_IME_ENDCOMPOSITION:
+            DXUTTRACE( L"WM_IME_ENDCOMPOSITION\n" );
+            TruncateCompString();
+            ResetCompositionString();
+            // We can show the edit control's caret again.
+            s_bHideCaret = false;
+            // Hide reading window
+            s_bShowReadingWindow = false;
+            break;
+
+        case WM_IME_NOTIFY:
+            DXUTTRACE( L"WM_IME_NOTIFY %u\n", wParam );
+            switch( wParam )
+            {
+                case IMN_SETCONVERSIONMODE:
+                    DXUTTRACE( L"  IMN_SETCONVERSIONMODE\n" );
+                case IMN_SETOPENSTATUS:
+                    DXUTTRACE( L"  IMN_SETOPENSTATUS\n" );
+                    CheckToggleState();
+                    break;
+
+                case IMN_OPENCANDIDATE:
+                case IMN_CHANGECANDIDATE:
+                {
+                    DXUTTRACE( wParam == IMN_CHANGECANDIDATE ? L"  IMN_CHANGECANDIDATE\n" : L"  IMN_OPENCANDIDATE\n" );
+
+                    s_CandList.bShowWindow = true;
+                    *trapped = true;
+                    if( NULL == ( hImc = _ImmGetContext( DXUTGetHWND() ) ) )
+                        break;
+
+                    LPCANDIDATELIST lpCandList = NULL;
+                    DWORD dwLenRequired;
+
+                    s_bShowReadingWindow = false;
+                    // Retrieve the candidate list
+                    dwLenRequired = _ImmGetCandidateListW( hImc, 0, NULL, 0 );
+                    if( dwLenRequired )
+                    {
+                        lpCandList = (LPCANDIDATELIST)HeapAlloc( GetProcessHeap(), 0, dwLenRequired );
+                        dwLenRequired = _ImmGetCandidateListW( hImc, 0, lpCandList, dwLenRequired );
+                    }
+
+                    if( lpCandList )
+                    {
+                        // Update candidate list data
+                        s_CandList.dwSelection = lpCandList->dwSelection;
+                        s_CandList.dwCount = lpCandList->dwCount;
+
+                        int nPageTopIndex = 0;
+                        s_CandList.dwPageSize = __min( lpCandList->dwPageSize, MAX_CANDLIST );
+                        if( GetPrimaryLanguage() == LANG_JAPANESE )
+                        {
+                            // Japanese IME organizes its candidate list a little
+                            // differently from the other IMEs.
+                            nPageTopIndex = ( s_CandList.dwSelection / s_CandList.dwPageSize ) * s_CandList.dwPageSize;
+                        }
+                        else
+                            nPageTopIndex = lpCandList->dwPageStart;
+
+                        // Make selection index relative to first entry of page
+                        s_CandList.dwSelection = ( GetLanguage() == LANG_CHS && !GetImeId() ) ? (DWORD)-1
+                                                 : s_CandList.dwSelection - nPageTopIndex;
+
+                        ZeroMemory( s_CandList.awszCandidate, sizeof(s_CandList.awszCandidate) );
+                        for( UINT i = nPageTopIndex, j = 0;
+                            (DWORD)i < lpCandList->dwCount && j < s_CandList.dwPageSize;
+                            i++, j++ )
+                        {
+                            // Initialize the candidate list strings
+                            LPWSTR pwsz = s_CandList.awszCandidate[j];
+                            // For every candidate string entry,
+                            // write [index] + Space + [String] if vertical,
+                            // write [index] + [String] + Space if horizontal.
+                            *pwsz++ = (WCHAR)( L'0' + ( (j + 1) % 10 ) );  // Index displayed is 1 based
+                            if( s_bVerticalCand )
+                                *pwsz++ = L' ';
+                            WCHAR *pwszNewCand = (LPWSTR)( (LPBYTE)lpCandList + lpCandList->dwOffset[i] );
+                            while ( *pwszNewCand )
+                                *pwsz++ = *pwszNewCand++;
+                            if( !s_bVerticalCand )
+                                *pwsz++ = L' ';
+                            *pwsz = 0;  // Terminate
+                        }
+
+                        // Make dwCount in s_CandList be number of valid entries in the page.
+                        s_CandList.dwCount = lpCandList->dwCount - lpCandList->dwPageStart;
+                        if( s_CandList.dwCount > lpCandList->dwPageSize )
+                            s_CandList.dwCount = lpCandList->dwPageSize;
+
+                        HeapFree( GetProcessHeap(), 0, lpCandList );
+                        _ImmReleaseContext( DXUTGetHWND(), hImc );
+
+                        // Korean and old Chinese IME can't have selection.
+                        // User must use the number hotkey or Enter to select
+                        // a candidate.
+                        if( GetPrimaryLanguage() == LANG_KOREAN ||
+                            GetLanguage() == LANG_CHT && !GetImeId() )
+                        {
+                            s_CandList.dwSelection = (DWORD)-1;
+                        }
+
+                        // Initialize s_CandList.HoriCand if we have a
+                        // horizontal candidate window.
+                        if( !s_bVerticalCand )
+                        {
+                            WCHAR wszCand[256] = L"";
+
+                            s_CandList.nFirstSelected = 0;
+                            s_CandList.nHoriSelectedLen = 0;
+                            for( UINT i = 0; i < MAX_CANDLIST; ++i )
+                            {
+                                if( s_CandList.awszCandidate[i][0] == L'\0' )
+                                    break;
+
+                                WCHAR wszEntry[32];
+                                StringCchPrintf( wszEntry, 32, L"%s ", s_CandList.awszCandidate[i] );
+                                // If this is the selected entry, mark its char position.
+                                if( s_CandList.dwSelection == i )
+                                {
+                                    s_CandList.nFirstSelected = lstrlen( wszCand );
+                                    s_CandList.nHoriSelectedLen = lstrlen( wszEntry ) - 1;  // Minus space
+                                }
+                                StringCchCat( wszCand, 256, wszEntry );
+                            }
+                            wszCand[lstrlen(wszCand) - 1] = L'\0';  // Remove the last space
+                            s_CandList.HoriCand.SetText( wszCand );
+                        }
+                    }
+                    break;
+                }
+
+                case IMN_CLOSECANDIDATE:
+                {
+                    DXUTTRACE( L"  IMN_CLOSECANDIDATE\n" );
+                    s_CandList.bShowWindow = false;
+                    if( !s_bShowReadingWindow )
+                    {
+                        s_CandList.dwCount = 0;
+                        ZeroMemory( s_CandList.awszCandidate, sizeof(s_CandList.awszCandidate) );
+                    }
+                    *trapped = true;
+                    break;
+                }
+
+                case IMN_PRIVATE:
+                    DXUTTRACE( L"  IMN_PRIVATE\n" );
+                    {
+                        if( !s_CandList.bShowWindow )
+                            GetPrivateReadingString();
+
+                        // Trap some messages to hide reading window
+                        DWORD dwId = GetImeId();
+                        switch( dwId )
+                        {
+                            case IMEID_CHT_VER42:
+                            case IMEID_CHT_VER43:
+                            case IMEID_CHT_VER44:
+                            case IMEID_CHS_VER41:
+                            case IMEID_CHS_VER42:
+                                if( ( lParam == 1 ) || ( lParam == 2 ) )
+                                {
+                                    *trapped = true;
+                                }
+                                break;
+
+                            case IMEID_CHT_VER50:
+                            case IMEID_CHT_VER51:
+                            case IMEID_CHT_VER52:
+                            case IMEID_CHT_VER60:
+                            case IMEID_CHS_VER53:
+                                if( (lParam == 16) || (lParam == 17) || (lParam == 26) || (lParam == 27) || (lParam == 28) )
+                                {
+                                    *trapped = true;
+                                }
+                                break;
+                        }
+                    }
+                    break;
+
+                default:
+                    *trapped = true;
+                    break;
+            }
+            break;
+
+        // When Text Service Framework is installed in Win2K, Alt+Shift and Ctrl+Shift combination (to switch input
+        // locale / keyboard layout) doesn't send WM_KEYUP message for the key that is released first. We need to check
+        // if these keys are actually up whenever we receive key up message for other keys.
+        case WM_KEYUP:
+        case WM_SYSKEYUP:
+            if ( !( lAlt & 0x80000000 ) && wParam != VK_MENU && ( GetAsyncKeyState( VK_MENU ) & 0x8000 ) == 0 )
+            {
+                PostMessageW( GetFocus(), WM_KEYUP, (WPARAM)VK_MENU, ( lAlt & 0x01ff0000 ) | 0xC0000001 );
+            }   
+            else if ( !( lCtrl & 0x80000000 ) && wParam != VK_CONTROL && ( GetAsyncKeyState( VK_CONTROL ) & 0x8000 ) == 0 )
+            {
+                PostMessageW( GetFocus(), WM_KEYUP, (WPARAM)VK_CONTROL, ( lCtrl & 0x01ff0000 ) | 0xC0000001 );
+            }
+            else if ( !( lShift & 0x80000000 ) && wParam != VK_SHIFT && ( GetAsyncKeyState( VK_SHIFT ) & 0x8000 ) == 0 )
+            {
+                PostMessageW( GetFocus(), WM_KEYUP, (WPARAM)VK_SHIFT, ( lShift & 0x01ff0000 ) | 0xC0000001 );
+            }
+            // fall through WM_KEYDOWN / WM_SYSKEYDOWN
+        case WM_KEYDOWN:
+        case WM_SYSKEYDOWN:
+            switch ( wParam )
+            {
+                case VK_MENU:
+                    lAlt = lParam;
+                    break;
+                case VK_SHIFT:
+                    lShift = lParam;
+                    break;
+                case VK_CONTROL:
+                    lCtrl = lParam;
+                    break;
+            }
+            //break;
+            // Fall through to default case
+            // so we invoke the parent.
+
+        default:
+            // Let the parent handle the message that we
+            // don't handle.
+            return CDXUTEditBox::MsgProc( uMsg, wParam, lParam );
+
+    }  // switch
+
+    return *trapped;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::RenderCandidateReadingWindow( IDirect3DDevice9* pd3dDevice, float fElapsedTime, bool bReading )
+{
+    RECT rc;
+    UINT nNumEntries = bReading ? 4 : MAX_CANDLIST;
+    D3DCOLOR TextColor, TextBkColor, SelTextColor, SelBkColor;
+    int nX, nXFirst, nXComp;
+    m_Buffer.CPtoX( m_nCaret, FALSE, &nX );
+    m_Buffer.CPtoX( m_nFirstVisible, FALSE, &nXFirst );
+
+    if( bReading )
+    {
+        TextColor = m_ReadingColor;
+        TextBkColor = m_ReadingWinColor;
+        SelTextColor = m_ReadingSelColor;
+        SelBkColor = m_ReadingSelBkColor;
+    } else
+    {
+        TextColor = m_CandidateColor;
+        TextBkColor = m_CandidateWinColor;
+        SelTextColor = m_CandidateSelColor;
+        SelBkColor = m_CandidateSelBkColor;
+    }
+
+    // For Japanese IME, align the window with the first target converted character.
+    // For all other IMEs, align with the caret.  This is because the caret
+    // does not move for Japanese IME.
+    if ( GetLanguage() == LANG_CHT && !GetImeId() )
+        nXComp = 0;
+    else
+    if( GetPrimaryLanguage() == LANG_JAPANESE )
+        s_CompString.CPtoX( s_nFirstTargetConv, FALSE, &nXComp );
+    else
+        s_CompString.CPtoX( s_nCompCaret, FALSE, &nXComp );
+
+    // Compute the size of the candidate window
+    int nWidthRequired = 0;
+    int nHeightRequired = 0;
+    int nSingleLineHeight = 0;
+
+    if( ( s_bVerticalCand && !bReading ) ||
+        ( !s_bHorizontalReading && bReading ) )
+    {
+        // Vertical window
+        for( UINT i = 0; i < nNumEntries; ++i )
+        {
+            if( s_CandList.awszCandidate[i][0] == L'\0' )
+                break;
+            SetRect( &rc, 0, 0, 0, 0 );
+            m_pDialog->CalcTextRect( s_CandList.awszCandidate[i], m_Elements.GetAt( 1 ), &rc );
+            nWidthRequired = __max( nWidthRequired, rc.right - rc.left );
+            nSingleLineHeight = __max( nSingleLineHeight, rc.bottom - rc.top );
+        }
+        nHeightRequired = nSingleLineHeight * nNumEntries;
+    } else
+    {
+        // Horizontal window
+        SetRect( &rc, 0, 0, 0, 0 );
+        if( bReading )
+            m_pDialog->CalcTextRect( s_wszReadingString, m_Elements.GetAt( 1 ), &rc );
+        else
+            m_pDialog->CalcTextRect( s_CandList.HoriCand.GetBuffer(), m_Elements.GetAt( 1 ), &rc );
+        nWidthRequired = rc.right - rc.left;
+        nSingleLineHeight = nHeightRequired = rc.bottom - rc.top;
+    }
+
+    // Now that we have the dimension, calculate the location for the candidate window.
+    // We attempt to fit the window in this order:
+    // bottom, top, right, left.
+
+    bool bHasPosition = false;
+
+    // Bottom
+    SetRect( &rc, s_ptCompString.x + nXComp, s_ptCompString.y + m_rcText.bottom - m_rcText.top,
+                  s_ptCompString.x + nXComp + nWidthRequired, s_ptCompString.y + m_rcText.bottom - m_rcText.top + nHeightRequired );
+    // if the right edge is cut off, move it left.
+    if( rc.right > m_pDialog->GetWidth() )
+    {
+        rc.left -= rc.right - m_pDialog->GetWidth();
+        rc.right = m_pDialog->GetWidth();
+    }
+    if( rc.bottom <= m_pDialog->GetHeight() )
+        bHasPosition = true;
+
+    // Top
+    if( !bHasPosition )
+    {
+        SetRect( &rc, s_ptCompString.x + nXComp, s_ptCompString.y - nHeightRequired,
+                      s_ptCompString.x + nXComp + nWidthRequired, s_ptCompString.y );
+        // if the right edge is cut off, move it left.
+        if( rc.right > m_pDialog->GetWidth() )
+        {
+            rc.left -= rc.right - m_pDialog->GetWidth();
+            rc.right = m_pDialog->GetWidth();
+        }
+        if( rc.top >= 0 )
+            bHasPosition = true;
+    }
+
+    // Right
+    if( !bHasPosition )
+    {
+        int nXCompTrail;
+        s_CompString.CPtoX( s_nCompCaret, TRUE, &nXCompTrail );
+        SetRect( &rc, s_ptCompString.x + nXCompTrail, 0,
+                      s_ptCompString.x + nXCompTrail + nWidthRequired, nHeightRequired );
+        if( rc.right <= m_pDialog->GetWidth() )
+            bHasPosition = true;
+    }
+
+    // Left
+    if( !bHasPosition )
+    {
+        SetRect( &rc, s_ptCompString.x + nXComp - nWidthRequired, 0,
+                      s_ptCompString.x + nXComp, nHeightRequired );
+        if( rc.right >= 0 )
+            bHasPosition = true;
+    }
+
+    if( !bHasPosition )
+    {
+        // The dialog is too small for the candidate window.
+        // Fall back to render at 0, 0.  Some part of the window
+        // will be cut off.
+        rc.left = 0;
+        rc.right = nWidthRequired;
+    }
+
+    // If we are rendering the candidate window, save the position
+    // so that mouse clicks are checked properly.
+    if( !bReading )
+        s_CandList.rcCandidate = rc;
+
+    // Render the elements
+    m_pDialog->DrawRect( &rc, TextBkColor );
+    if( ( s_bVerticalCand && !bReading ) ||
+        ( !s_bHorizontalReading && bReading ) )
+    {
+        // Vertical candidate window
+        for( UINT i = 0; i < nNumEntries; ++i )
+        {
+            // Here we are rendering one line at a time
+            rc.bottom = rc.top + nSingleLineHeight;
+            // Use a different color for the selected string
+            if( s_CandList.dwSelection == i )
+            {
+                m_pDialog->DrawRect( &rc, SelBkColor );
+                m_Elements.GetAt( 1 )->FontColor.Current = SelTextColor;
+            } else
+                m_Elements.GetAt( 1 )->FontColor.Current = TextColor;
+
+            m_pDialog->DrawText( s_CandList.awszCandidate[i], m_Elements.GetAt( 1 ), &rc );
+
+            rc.top += nSingleLineHeight;
+        }
+    } else
+    {
+        // Horizontal candidate window
+        m_Elements.GetAt( 1 )->FontColor.Current = TextColor;
+        if( bReading )
+            m_pDialog->DrawText( s_wszReadingString, m_Elements.GetAt( 1 ), &rc );
+        else
+            m_pDialog->DrawText( s_CandList.HoriCand.GetBuffer(), m_Elements.GetAt( 1 ), &rc );
+
+        // Render the selected entry differently
+        if( !bReading )
+        {
+            int nXLeft, nXRight;
+            s_CandList.HoriCand.CPtoX( s_CandList.nFirstSelected, FALSE, &nXLeft );
+            s_CandList.HoriCand.CPtoX( s_CandList.nFirstSelected + s_CandList.nHoriSelectedLen, FALSE, &nXRight );
+
+            rc.right = rc.left + nXRight;
+            rc.left += nXLeft;
+            m_pDialog->DrawRect( &rc, SelBkColor );
+            m_Elements.GetAt( 1 )->FontColor.Current = SelTextColor;
+            m_pDialog->DrawText( s_CandList.HoriCand.GetBuffer() + s_CandList.nFirstSelected,
+                                m_Elements.GetAt( 1 ), &rc, false, s_CandList.nHoriSelectedLen );
+        }
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::RenderComposition( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    RECT rcCaret = { 0, 0, 0, 0 };
+    int nX, nXFirst;
+    m_Buffer.CPtoX( m_nCaret, FALSE, &nX );
+    m_Buffer.CPtoX( m_nFirstVisible, FALSE, &nXFirst );
+    CDXUTElement *pElement = m_Elements.GetAt( 1 );
+
+    // Get the required width
+    RECT rc = { m_rcText.left + nX - nXFirst, m_rcText.top,
+                m_rcText.left + nX - nXFirst, m_rcText.bottom };
+    m_pDialog->CalcTextRect( s_CompString.GetBuffer(), pElement, &rc );
+
+    // If the composition string is too long to fit within
+    // the text area, move it to below the current line.
+    // This matches the behavior of the default IME.
+    if( rc.right > m_rcText.right )
+        OffsetRect( &rc, m_rcText.left - rc.left, rc.bottom - rc.top );
+
+    // Save the rectangle position for processing highlighted text.
+    RECT rcFirst = rc;
+
+    // Update s_ptCompString for RenderCandidateReadingWindow().
+    s_ptCompString.x = rc.left; s_ptCompString.y = rc.top;
+
+    D3DCOLOR TextColor = m_CompColor;
+    // Render the window and string.
+    // If the string is too long, we must wrap the line.
+    pElement->FontColor.Current = TextColor;
+    const WCHAR *pwszComp = s_CompString.GetBuffer();
+    int nCharLeft = s_CompString.GetTextSize();
+    for( ; ; )
+    {
+        // Find the last character that can be drawn on the same line.
+        int nLastInLine;
+        int bTrail;
+        s_CompString.XtoCP( m_rcText.right - rc.left, &nLastInLine, &bTrail );
+        int nNumCharToDraw = __min( nCharLeft, nLastInLine );
+        m_pDialog->CalcTextRect( pwszComp, pElement, &rc, nNumCharToDraw );
+
+        // Draw the background
+        // For Korean IME, blink the composition window background as if it
+        // is a cursor.
+        if( GetPrimaryLanguage() == LANG_KOREAN )
+        {
+            if( m_bCaretOn )
+            {
+                m_pDialog->DrawRect( &rc, m_CompWinColor );
+            }
+            else
+            {
+                // Not drawing composition string background. We
+                // use the editbox's text color for composition
+                // string text.
+                TextColor = m_Elements.GetAt(0)->FontColor.States[DXUT_STATE_NORMAL];
+            }
+        } else
+        {
+            // Non-Korean IME. Always draw composition background.
+            m_pDialog->DrawRect( &rc, m_CompWinColor );
+        }
+
+        // Draw the text
+        pElement->FontColor.Current = TextColor;
+        m_pDialog->DrawText( pwszComp, pElement, &rc, false, nNumCharToDraw );
+
+        // Advance pointer and counter
+        nCharLeft -= nNumCharToDraw;
+        pwszComp += nNumCharToDraw;
+        if( nCharLeft <= 0 )
+            break;
+
+        // Advance rectangle coordinates to beginning of next line
+        OffsetRect( &rc, m_rcText.left - rc.left, rc.bottom - rc.top );
+    }
+
+    // Load the rect for the first line again.
+    rc = rcFirst;
+
+    // Inspect each character in the comp string.
+    // For target-converted and target-non-converted characters,
+    // we display a different background color so they appear highlighted.
+    int nCharFirst = 0;
+    nXFirst = 0;
+    s_nFirstTargetConv = -1;
+    BYTE *pAttr;
+    const WCHAR *pcComp;
+    for( pcComp = s_CompString.GetBuffer(), pAttr = s_abCompStringAttr;
+          *pcComp != L'\0'; ++pcComp, ++pAttr )
+    {
+        D3DCOLOR bkColor;
+
+        // Render a different background for this character
+        int nXLeft, nXRight;
+        s_CompString.CPtoX( int(pcComp - s_CompString.GetBuffer()), FALSE, &nXLeft );
+        s_CompString.CPtoX( int(pcComp - s_CompString.GetBuffer()), TRUE, &nXRight );
+
+        // Check if this character is off the right edge and should
+        // be wrapped to the next line.
+        if( nXRight - nXFirst > m_rcText.right - rc.left )
+        {
+            // Advance rectangle coordinates to beginning of next line
+            OffsetRect( &rc, m_rcText.left - rc.left, rc.bottom - rc.top );
+
+            // Update the line's first character information
+            nCharFirst = int(pcComp - s_CompString.GetBuffer());
+            s_CompString.CPtoX( nCharFirst, FALSE, &nXFirst );
+        }
+
+        // If the caret is on this character, save the coordinates
+        // for drawing the caret later.
+        if( s_nCompCaret == int(pcComp - s_CompString.GetBuffer()) )
+        {
+            rcCaret = rc;
+            rcCaret.left += nXLeft - nXFirst - 1;
+            rcCaret.right = rcCaret.left + 2;
+        }
+
+        // Set up color based on the character attribute
+        if( *pAttr == ATTR_TARGET_CONVERTED )
+        {
+            pElement->FontColor.Current = m_CompTargetColor;
+            bkColor = m_CompTargetBkColor;
+        }
+        else
+        if( *pAttr == ATTR_TARGET_NOTCONVERTED )
+        {
+            pElement->FontColor.Current = m_CompTargetNonColor;
+            bkColor = m_CompTargetNonBkColor;
+        }
+        else
+        {
+            continue;
+        }
+
+        RECT rcTarget = { rc.left + nXLeft - nXFirst, rc.top, rc.left + nXRight - nXFirst, rc.bottom };
+        m_pDialog->DrawRect( &rcTarget, bkColor );
+        m_pDialog->DrawText( pcComp, pElement, &rcTarget, false, 1 );
+
+        // Record the first target converted character's index
+        if( -1 == s_nFirstTargetConv )
+            s_nFirstTargetConv = int(pAttr - s_abCompStringAttr);
+    }
+
+    // Render the composition caret
+    if( m_bCaretOn )
+    {
+        // If the caret is at the very end, its position would not have
+        // been computed in the above loop.  We compute it here.
+        if( s_nCompCaret == s_CompString.GetTextSize() )
+        {
+            s_CompString.CPtoX( s_nCompCaret, FALSE, &nX );
+            rcCaret = rc;
+            rcCaret.left += nX - nXFirst - 1;
+            rcCaret.right = rcCaret.left + 2;
+        }
+
+        m_pDialog->DrawRect( &rcCaret, m_CompCaretColor );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::RenderIndicator( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    CDXUTElement *pElement = m_Elements.GetAt( 9 );
+    pElement->TextureColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );
+
+    m_pDialog->DrawSprite( pElement, &m_rcIndicator );
+    RECT rc = m_rcIndicator;
+    InflateRect( &rc, -m_nSpacing, -m_nSpacing );
+    pElement->FontColor.Current = s_ImeState == IMEUI_STATE_ON && s_bEnableImeSystem ? m_IndicatorImeColor : m_IndicatorEngColor;
+    RECT rcCalc = { 0, 0, 0, 0 };
+    // If IME system is off, draw English indicator.
+    WCHAR *pwszIndicator = s_bEnableImeSystem ? s_wszCurrIndicator : s_aszIndicator[0];
+
+    m_pDialog->CalcTextRect( pwszIndicator, pElement, &rcCalc );
+    m_pDialog->DrawText( pwszIndicator, pElement, &rc );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::Render( IDirect3DDevice9* pd3dDevice, float fElapsedTime )
+{
+    if( m_bVisible == false )
+        return;
+
+    // If we have not computed the indicator symbol width,
+    // do it.
+    if( !m_nIndicatorWidth )
+    {
+        for( int i = 0; i < 5; ++i )
+        {
+            RECT rc = { 0, 0, 0, 0 };
+            m_pDialog->CalcTextRect( s_aszIndicator[i], m_Elements.GetAt( 9 ), &rc );
+            m_nIndicatorWidth = __max( m_nIndicatorWidth, rc.right - rc.left );
+        }
+        // Update the rectangles now that we have the indicator's width
+        UpdateRects();
+    }
+
+    // Let the parent render first (edit control)
+    CDXUTEditBox::Render( pd3dDevice, fElapsedTime );
+
+    CDXUTElement* pElement = GetElement( 1 );
+    if( pElement )
+    {
+        s_CompString.SetFontNode( m_pDialog->GetFont( pElement->iFont ) );
+        s_CandList.HoriCand.SetFontNode( m_pDialog->GetFont( pElement->iFont ) );
+    }
+
+    //
+    // Now render the IME elements
+    //
+    if( m_bHasFocus )
+    {
+        // Render the input locale indicator
+        RenderIndicator( pd3dDevice, fElapsedTime );
+
+        // Display the composition string.
+        // This method should also update s_ptCompString
+        // for RenderCandidateReadingWindow.
+        RenderComposition( pd3dDevice, fElapsedTime );
+
+        // Display the reading/candidate window. RenderCandidateReadingWindow()
+        // uses s_ptCompString to position itself.  s_ptCompString must have
+        // been filled in by RenderComposition().
+        if( s_bShowReadingWindow )
+            // Reading window
+            RenderCandidateReadingWindow( pd3dDevice, fElapsedTime, true );
+        else
+        if( s_CandList.bShowWindow )
+            // Candidate list window
+            RenderCandidateReadingWindow( pd3dDevice, fElapsedTime, false );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CUniBuffer::Initialize()
+{
+    if( s_hDll ) // Only need to do once
+        return;
+
+    WCHAR wszPath[MAX_PATH+1];
+    if( !::GetSystemDirectory( wszPath, MAX_PATH+1 ) )
+        return;
+
+    // Verify whether it is safe to concatenate these strings
+    int len1 = lstrlen(wszPath);
+    int len2 = lstrlen(UNISCRIBE_DLLNAME);
+    if (len1 + len2 > MAX_PATH)
+    {
+        return;
+    }
+
+    // We have verified that the concatenated string will fit into wszPath,
+    // so it is safe to concatenate them.
+    StringCchCat( wszPath, MAX_PATH, UNISCRIBE_DLLNAME );
+
+    s_hDll = LoadLibrary( wszPath );
+    if( s_hDll )
+    {
+        FARPROC Temp;
+        GETPROCADDRESS( s_hDll, ScriptApplyDigitSubstitution, Temp );
+        GETPROCADDRESS( s_hDll, ScriptStringAnalyse, Temp );
+        GETPROCADDRESS( s_hDll, ScriptStringCPtoX, Temp );
+        GETPROCADDRESS( s_hDll, ScriptStringXtoCP, Temp );
+        GETPROCADDRESS( s_hDll, ScriptStringFree, Temp );
+        GETPROCADDRESS( s_hDll, ScriptString_pLogAttr, Temp );
+        GETPROCADDRESS( s_hDll, ScriptString_pcOutChars, Temp );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CUniBuffer::Uninitialize()
+{
+    if( s_hDll )
+    {
+        PLACEHOLDERPROC( ScriptApplyDigitSubstitution );
+        PLACEHOLDERPROC( ScriptStringAnalyse );
+        PLACEHOLDERPROC( ScriptStringCPtoX );
+        PLACEHOLDERPROC( ScriptStringXtoCP );
+        PLACEHOLDERPROC( ScriptStringFree );
+        PLACEHOLDERPROC( ScriptString_pLogAttr );
+        PLACEHOLDERPROC( ScriptString_pcOutChars );
+
+        FreeLibrary( s_hDll );
+        s_hDll = NULL;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CUniBuffer::SetBufferSize( int nNewSize )
+{
+    // If the current size is already the maximum allowed,
+    // we can't possibly allocate more.
+    if( m_nBufferSize == DXUT_MAX_EDITBOXLENGTH )
+        return false;
+
+    int nAllocateSize = ( nNewSize == -1 || nNewSize < m_nBufferSize * 2 ) ? ( m_nBufferSize ? m_nBufferSize * 2 : 256 ) : nNewSize * 2;
+
+    // Cap the buffer size at the maximum allowed.
+    if( nAllocateSize > DXUT_MAX_EDITBOXLENGTH )
+        nAllocateSize = DXUT_MAX_EDITBOXLENGTH;
+
+    WCHAR *pTempBuffer = new WCHAR[nAllocateSize];
+    if( !pTempBuffer )
+        return false;
+    if( m_pwszBuffer )
+    {
+        CopyMemory( pTempBuffer, m_pwszBuffer, m_nBufferSize * sizeof(WCHAR) );
+        delete[] m_pwszBuffer;
+    }
+    else
+    {
+        ZeroMemory( pTempBuffer, sizeof(WCHAR) * nAllocateSize );
+    }
+
+    m_pwszBuffer = pTempBuffer;
+    m_nBufferSize = nAllocateSize;
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Uniscribe -- Analyse() analyses the string in the buffer
+//--------------------------------------------------------------------------------------
+HRESULT CUniBuffer::Analyse()
+{
+    if( m_Analysis )
+        _ScriptStringFree( &m_Analysis );
+
+    SCRIPT_CONTROL ScriptControl; // For uniscribe
+    SCRIPT_STATE   ScriptState;   // For uniscribe
+    ZeroMemory( &ScriptControl, sizeof(ScriptControl) );
+    ZeroMemory( &ScriptState, sizeof(ScriptState) );
+    _ScriptApplyDigitSubstitution ( NULL, &ScriptControl, &ScriptState );
+
+    if( !m_pFontNode )
+        return E_FAIL;
+
+    HRESULT hr = _ScriptStringAnalyse( m_pFontNode->pFont ? m_pFontNode->pFont->GetDC() : NULL,
+                                       m_pwszBuffer,
+                                       lstrlenW( m_pwszBuffer ) + 1,  // NULL is also analyzed.
+                                       lstrlenW( m_pwszBuffer ) * 3 / 2 + 16,
+                                       -1,
+                                       SSA_BREAK | SSA_GLYPHS | SSA_FALLBACK | SSA_LINK,
+                                       0,
+                                       &ScriptControl,
+                                       &ScriptState,
+                                       NULL,
+                                       NULL,
+                                       NULL,
+                                       &m_Analysis );
+    if( SUCCEEDED( hr ) )
+        m_bAnalyseRequired = false;  // Analysis is up-to-date
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+CUniBuffer::CUniBuffer( int nInitialSize )
+{
+    CUniBuffer::Initialize();  // ensure static vars are properly init'ed first
+
+    m_nBufferSize = 0;
+    m_pwszBuffer = NULL;
+    m_bAnalyseRequired = true;
+    m_Analysis = NULL;
+    m_pFontNode = NULL;
+    
+    if( nInitialSize > 0 )
+        SetBufferSize( nInitialSize );
+}
+
+
+//--------------------------------------------------------------------------------------
+CUniBuffer::~CUniBuffer()
+{
+    delete[] m_pwszBuffer;
+    if( m_Analysis )
+        _ScriptStringFree( &m_Analysis );
+}
+
+
+//--------------------------------------------------------------------------------------
+WCHAR& CUniBuffer::operator[]( int n )  // No param checking
+{
+    // This version of operator[] is called only
+    // if we are asking for write access, so
+    // re-analysis is required.
+    m_bAnalyseRequired = true;
+    return m_pwszBuffer[n];
+}
+
+
+//--------------------------------------------------------------------------------------
+void CUniBuffer::Clear()
+{
+    *m_pwszBuffer = L'\0';
+    m_bAnalyseRequired = true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Inserts the char at specified index.
+// If nIndex == -1, insert to the end.
+//--------------------------------------------------------------------------------------
+bool CUniBuffer::InsertChar( int nIndex, WCHAR wChar )
+{
+    assert( nIndex >= 0 );
+
+    if( nIndex < 0 || nIndex > lstrlenW( m_pwszBuffer ) )
+        return false;  // invalid index
+
+    // Check for maximum length allowed
+    if( GetTextSize() + 1 >= DXUT_MAX_EDITBOXLENGTH )
+        return false;
+
+    if( lstrlenW( m_pwszBuffer ) + 1 >= m_nBufferSize )
+    {
+        if( !SetBufferSize( -1 ) )
+            return false;  // out of memory
+    }
+
+    assert( m_nBufferSize >= 2 );
+
+    // Shift the characters after the index, start by copying the null terminator
+    WCHAR* dest = m_pwszBuffer + lstrlenW(m_pwszBuffer)+1;
+    WCHAR* stop = m_pwszBuffer + nIndex;
+    WCHAR* src = dest - 1;
+
+    while( dest > stop )
+    {
+        *dest-- = *src--;
+    }
+
+    // Set new character
+    m_pwszBuffer[ nIndex ] = wChar;
+    m_bAnalyseRequired = true;
+
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Removes the char at specified index.
+// If nIndex == -1, remove the last char.
+//--------------------------------------------------------------------------------------
+bool CUniBuffer::RemoveChar( int nIndex )
+{
+    if( !lstrlenW( m_pwszBuffer ) || nIndex < 0 || nIndex >= lstrlenW( m_pwszBuffer ) )
+        return false;  // Invalid index
+
+    MoveMemory( m_pwszBuffer + nIndex, m_pwszBuffer + nIndex + 1, sizeof(WCHAR) * ( lstrlenW( m_pwszBuffer ) - nIndex ) );
+    m_bAnalyseRequired = true;
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Inserts the first nCount characters of the string pStr at specified index.
+// If nCount == -1, the entire string is inserted.
+// If nIndex == -1, insert to the end.
+//--------------------------------------------------------------------------------------
+bool CUniBuffer::InsertString( int nIndex, const WCHAR *pStr, int nCount )
+{
+    assert( nIndex >= 0 );
+
+    if( nIndex > lstrlenW( m_pwszBuffer ) )
+        return false;  // invalid index
+
+    if( -1 == nCount )
+        nCount = lstrlenW( pStr );
+
+    // Check for maximum length allowed
+    if( GetTextSize() + nCount >= DXUT_MAX_EDITBOXLENGTH )
+        return false;
+
+    if( lstrlenW( m_pwszBuffer ) + nCount >= m_nBufferSize )
+    {
+        if( !SetBufferSize( lstrlenW( m_pwszBuffer ) + nCount + 1 ) )
+            return false;  // out of memory
+    }
+
+    MoveMemory( m_pwszBuffer + nIndex + nCount, m_pwszBuffer + nIndex, sizeof(WCHAR) * ( lstrlenW( m_pwszBuffer ) - nIndex + 1 ) );
+    CopyMemory( m_pwszBuffer + nIndex, pStr, nCount * sizeof(WCHAR) );
+    m_bAnalyseRequired = true;
+
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+bool CUniBuffer::SetText( LPCWSTR wszText )
+{
+    assert( wszText != NULL );
+
+    int nRequired = int(wcslen( wszText ) + 1);
+
+    // Check for maximum length allowed
+    if( nRequired >= DXUT_MAX_EDITBOXLENGTH )
+        return false;
+
+    while( GetBufferSize() < nRequired )
+        if( !SetBufferSize( -1 ) )
+            break;
+    // Check again in case out of memory occurred inside while loop.
+    if( GetBufferSize() >= nRequired )
+    {
+        StringCchCopy( m_pwszBuffer, GetBufferSize(), wszText );
+        m_bAnalyseRequired = true;
+        return true;
+    }
+    else
+        return false;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CUniBuffer::CPtoX( int nCP, BOOL bTrail, int *pX )
+{
+    assert( pX );
+    *pX = 0;  // Default
+
+    HRESULT hr = S_OK;
+    if( m_bAnalyseRequired )
+        hr = Analyse();
+
+    if( SUCCEEDED( hr ) )
+        hr = _ScriptStringCPtoX( m_Analysis, nCP, bTrail, pX );
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CUniBuffer::XtoCP( int nX, int *pCP, int *pnTrail )
+{
+    assert( pCP && pnTrail );
+    *pCP = 0; *pnTrail = FALSE;  // Default
+
+    HRESULT hr = S_OK;
+    if( m_bAnalyseRequired )
+        hr = Analyse();
+
+    if( SUCCEEDED( hr ) )
+        hr = _ScriptStringXtoCP( m_Analysis, nX, pCP, pnTrail );
+
+    // If the coordinate falls outside the text region, we
+    // can get character positions that don't exist.  We must
+    // filter them here and convert them to those that do exist.
+    if( *pCP == -1 && *pnTrail == TRUE )
+    {
+        *pCP = 0; *pnTrail = FALSE;
+    } else
+    if( *pCP > lstrlenW( m_pwszBuffer ) && *pnTrail == FALSE )
+    {
+        *pCP = lstrlenW( m_pwszBuffer ); *pnTrail = TRUE;
+    }
+
+    return hr;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CUniBuffer::GetPriorItemPos( int nCP, int *pPrior )
+{
+    *pPrior = nCP;  // Default is the char itself
+
+    if( m_bAnalyseRequired )
+        if( FAILED( Analyse() ) )
+            return;
+
+    const SCRIPT_LOGATTR *pLogAttr = _ScriptString_pLogAttr( m_Analysis );
+    if( !pLogAttr )
+        return;
+
+    if( !_ScriptString_pcOutChars( m_Analysis ) )
+        return;
+    int nInitial = *_ScriptString_pcOutChars( m_Analysis );
+    if( nCP - 1 < nInitial )
+        nInitial = nCP - 1;
+    for( int i = nInitial; i > 0; --i )
+        if( pLogAttr[i].fWordStop ||       // Either the fWordStop flag is set
+            ( !pLogAttr[i].fWhiteSpace &&  // Or the previous char is whitespace but this isn't.
+                pLogAttr[i-1].fWhiteSpace ) )
+        {
+            *pPrior = i;
+            return;
+        }
+    // We have reached index 0.  0 is always a break point, so simply return it.
+    *pPrior = 0;
+}
+    
+
+//--------------------------------------------------------------------------------------
+void CUniBuffer::GetNextItemPos( int nCP, int *pPrior )
+{
+    *pPrior = nCP;  // Default is the char itself
+
+    HRESULT hr = S_OK;
+    if( m_bAnalyseRequired )
+        hr = Analyse();
+    if( FAILED( hr ) )
+        return;
+
+    const SCRIPT_LOGATTR *pLogAttr = _ScriptString_pLogAttr( m_Analysis );
+    if( !pLogAttr )
+        return;
+
+    if( !_ScriptString_pcOutChars( m_Analysis ) )
+        return;
+    int nInitial = *_ScriptString_pcOutChars( m_Analysis );
+    if( nCP + 1 < nInitial )
+        nInitial = nCP + 1;
+    for( int i = nInitial; i < *_ScriptString_pcOutChars( m_Analysis ) - 1; ++i )
+    {
+        if( pLogAttr[i].fWordStop )      // Either the fWordStop flag is set
+        {
+            *pPrior = i;
+            return;
+        }
+        else
+        if( pLogAttr[i].fWhiteSpace &&  // Or this whitespace but the next char isn't.
+            !pLogAttr[i+1].fWhiteSpace )
+        {
+            *pPrior = i+1;  // The next char is a word stop
+            return;
+        }
+    }
+    // We have reached the end. It's always a word stop, so simply return it.
+    *pPrior = *_ScriptString_pcOutChars( m_Analysis ) - 1;
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTEditBox::ResetCaretBlink()
+{
+    m_bCaretOn = true;
+    m_dfLastBlink = DXUTGetGlobalTimer()->GetAbsoluteTime();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::Initialize()
+{
+    if( s_hDllImm32 ) // Only need to do once
+        return;
+
+    FARPROC Temp;
+
+    s_CompString.SetBufferSize( MAX_COMPSTRING_SIZE );
+
+    WCHAR wszPath[MAX_PATH+1];
+    if( !::GetSystemDirectory( wszPath, MAX_PATH+1 ) )
+        return;
+    StringCchCat( wszPath, MAX_PATH, IMM32_DLLNAME );
+    s_hDllImm32 = LoadLibrary( wszPath );
+    if( s_hDllImm32 )
+    {
+        GETPROCADDRESS( s_hDllImm32, ImmLockIMC, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmUnlockIMC, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmLockIMCC, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmUnlockIMCC, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmDisableTextFrameService, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetCompositionStringW, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetCandidateListW, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetContext, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmReleaseContext, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmAssociateContext, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetOpenStatus, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmSetOpenStatus, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetConversionStatus, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetDefaultIMEWnd, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetIMEFileNameA, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmGetVirtualKey, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmNotifyIME, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmSetConversionStatus, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmSimulateHotKey, Temp );
+        GETPROCADDRESS( s_hDllImm32, ImmIsIME, Temp );
+    }
+
+    if( !::GetSystemDirectory( wszPath, MAX_PATH+1 ) )
+        return;
+    StringCchCat( wszPath, MAX_PATH, VER_DLLNAME );
+    s_hDllVer = LoadLibrary( wszPath );
+    if( s_hDllVer )
+    {
+        GETPROCADDRESS( s_hDllVer, VerQueryValueA, Temp );
+        GETPROCADDRESS( s_hDllVer, GetFileVersionInfoA, Temp );
+        GETPROCADDRESS( s_hDllVer, GetFileVersionInfoSizeA, Temp );
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTIMEEditBox::Uninitialize()
+{
+    if( s_hDllImm32 )
+    {
+        PLACEHOLDERPROC( ImmLockIMC );
+        PLACEHOLDERPROC( ImmUnlockIMC );
+        PLACEHOLDERPROC( ImmLockIMCC );
+        PLACEHOLDERPROC( ImmUnlockIMCC );
+        PLACEHOLDERPROC( ImmDisableTextFrameService );
+        PLACEHOLDERPROC( ImmGetCompositionStringW );
+        PLACEHOLDERPROC( ImmGetCandidateListW );
+        PLACEHOLDERPROC( ImmGetContext );
+        PLACEHOLDERPROC( ImmReleaseContext );
+        PLACEHOLDERPROC( ImmAssociateContext );
+        PLACEHOLDERPROC( ImmGetOpenStatus );
+        PLACEHOLDERPROC( ImmSetOpenStatus );
+        PLACEHOLDERPROC( ImmGetConversionStatus );
+        PLACEHOLDERPROC( ImmGetDefaultIMEWnd );
+        PLACEHOLDERPROC( ImmGetIMEFileNameA );
+        PLACEHOLDERPROC( ImmGetVirtualKey );
+        PLACEHOLDERPROC( ImmNotifyIME );
+        PLACEHOLDERPROC( ImmSetConversionStatus );
+        PLACEHOLDERPROC( ImmSimulateHotKey );
+        PLACEHOLDERPROC( ImmIsIME );
+
+        FreeLibrary( s_hDllImm32 );
+        s_hDllImm32 = NULL;
+    }
+    if( s_hDllIme )
+    {
+        PLACEHOLDERPROC( GetReadingString );
+        PLACEHOLDERPROC( ShowReadingWindow );
+
+        FreeLibrary( s_hDllIme );
+        s_hDllIme = NULL;
+    }
+    if( s_hDllVer )
+    {
+        PLACEHOLDERPROC( VerQueryValueA );
+        PLACEHOLDERPROC( GetFileVersionInfoA );
+        PLACEHOLDERPROC( GetFileVersionInfoSizeA );
+
+        FreeLibrary( s_hDllVer );
+        s_hDllVer = NULL;
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+void DXUTBlendColor::Init( D3DCOLOR defaultColor, D3DCOLOR disabledColor, D3DCOLOR hiddenColor )
+{
+    for( int i=0; i < MAX_CONTROL_STATES; i++ )
+    {
+        States[ i ] = defaultColor;
+    }
+
+    States[ DXUT_STATE_DISABLED ] = disabledColor;
+    States[ DXUT_STATE_HIDDEN ] = hiddenColor;
+    Current = hiddenColor;
+}
+
+
+//--------------------------------------------------------------------------------------
+void DXUTBlendColor::Blend( UINT iState, float fElapsedTime, float fRate )
+{
+    D3DXCOLOR destColor = States[ iState ];
+    D3DXColorLerp( &Current, &Current, &destColor, 1.0f - powf( fRate, 30 * fElapsedTime ) );
+}
+
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTElement::SetTexture( UINT iTexture, RECT* prcTexture, D3DCOLOR defaultTextureColor )
+{
+    this->iTexture = iTexture;
+    
+    if( prcTexture )
+        rcTexture = *prcTexture;
+    else
+        SetRectEmpty( &rcTexture );
+    
+    TextureColor.Init( defaultTextureColor );
+}
+    
+
+//--------------------------------------------------------------------------------------
+void CDXUTElement::SetFont( UINT iFont, D3DCOLOR defaultFontColor, DWORD dwTextFormat )
+{
+    this->iFont = iFont;
+    this->dwTextFormat = dwTextFormat;
+
+    FontColor.Init( defaultFontColor );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CDXUTElement::Refresh()
+{
+    TextureColor.Current = TextureColor.States[ DXUT_STATE_HIDDEN ];
+    FontColor.Current = FontColor.States[ DXUT_STATE_HIDDEN ];
+}
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/dxstdafx.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/dxstdafx.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/dxstdafx.h	(revision 1481)
@@ -0,0 +1,131 @@
+//--------------------------------------------------------------------------------------
+// File: DxStdAfx.h
+//
+// Desc: Standard includes and precompiled headers for DXUT
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#pragma once
+#ifndef DXSDK_STDAFX_H
+#define DXSDK_STDAFX_H
+
+#ifndef STRICT
+#define STRICT
+#endif
+
+// If app hasn't choosen, set to work with Windows 98, Windows Me, Windows 2000, Windows XP and beyond
+#ifndef WINVER
+#define WINVER         0x0410
+#endif
+#ifndef _WIN32_WINDOWS
+#define _WIN32_WINDOWS 0x0410 
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT   0x0500 
+#endif
+
+// #define DXUT_AUTOLIB to automatically include the libs needed for DXUT 
+#ifdef DXUT_AUTOLIB
+#pragma comment( lib, "dxerr9.lib" )
+#pragma comment( lib, "dxguid.lib" )
+#if defined(DEBUG) || defined(_DEBUG)
+#pragma comment( lib, "d3dx9d.lib" )
+#else
+#pragma comment( lib, "d3dx9.lib" )
+#endif
+#pragma comment( lib, "d3d9.lib" )
+#pragma comment( lib, "winmm.lib" )
+#pragma comment( lib, "comctl32.lib" )
+#endif
+
+#pragma warning( disable : 4100 ) // disable unreference formal parameter warnings for /W4 builds
+
+#include <windows.h>
+#include <assert.h>
+#include <wchar.h>
+#include <mmsystem.h>
+#include <commctrl.h> // for InitCommonControls() 
+#include <shellapi.h> // for ExtractIcon()
+#include <new.h>      // for placement new
+#include <math.h>      
+#include <limits.h>      
+#include <stdio.h>
+#include <XInput.h> // Header for XInput APIs
+
+// CRT's memory leak detection
+#if defined(DEBUG) || defined(_DEBUG)
+#include <crtdbg.h>
+#endif
+
+// Enable extra D3D debugging in debug builds if using the debug DirectX runtime.  
+// This makes D3D objects work well in the debugger watch window, but slows down 
+// performance slightly.
+#if defined(DEBUG) || defined(_DEBUG)
+#ifndef D3D_DEBUG_INFO
+#define D3D_DEBUG_INFO
+#endif
+#endif
+
+// Direct3D includes
+#include <d3d9.h>
+#include <d3dx9.h>
+#include <dxerr9.h>
+
+// DirectSound includes
+#include <mmsystem.h>
+#include <mmreg.h>
+#include <dsound.h>
+
+// strsafe.h deprecates old unsecure string functions.  If you 
+// really do not want to it to (not recommended), then uncomment the next line 
+//#define STRSAFE_NO_DEPRECATE
+
+#ifndef STRSAFE_NO_DEPRECATE
+#pragma deprecated("strncpy")
+#pragma deprecated("wcsncpy")
+#pragma deprecated("_tcsncpy")
+#pragma deprecated("wcsncat")
+#pragma deprecated("strncat")
+#pragma deprecated("_tcsncat")
+#endif
+
+#pragma warning( disable : 4996 ) // disable deprecated warning 
+#include <strsafe.h>
+#pragma warning( default : 4996 ) 
+
+#include "DXUT.h"
+#include "DXUTmisc.h"
+#include "DXUTenum.h"
+#include "DXUTmesh.h"
+#include "DXUTgui.h"
+#include "DXUTsettingsDlg.h"
+#include "DXUTSound.h"
+#include "DXUTRes.h"
+
+#if defined(DEBUG) || defined(_DEBUG)
+#ifndef V
+#define V(x)           { hr = x; if( FAILED(hr) ) { DXUTTrace( __FILE__, (DWORD)__LINE__, hr, L#x, true ); } }
+#endif
+#ifndef V_RETURN
+#define V_RETURN(x)    { hr = x; if( FAILED(hr) ) { return DXUTTrace( __FILE__, (DWORD)__LINE__, hr, L#x, true ); } }
+#endif
+#else
+#ifndef V
+#define V(x)           { hr = x; }
+#endif
+#ifndef V_RETURN
+#define V_RETURN(x)    { hr = x; if( FAILED(hr) ) { return hr; } }
+#endif
+#endif
+
+#ifndef SAFE_DELETE
+#define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
+#endif    
+#ifndef SAFE_DELETE_ARRAY
+#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
+#endif    
+#ifndef SAFE_RELEASE
+#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
+#endif
+
+#endif // !defined(DXSDK_STDAFX_H)
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTSettingsDlg.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTSettingsDlg.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTSettingsDlg.cpp	(revision 1481)
@@ -0,0 +1,1365 @@
+//--------------------------------------------------------------------------------------
+// File: DXUTSettingsDlg.cpp
+//
+// Dialog for selection of device settings 
+//
+// Copyright (c) Microsoft Corporation. All rights reserved
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+#include "DXUTgui.h"
+#include "DXUTsettingsDlg.h"
+#undef min // use __min instead
+#undef max // use __max instead
+
+
+//--------------------------------------------------------------------------------------
+// Internal functions forward declarations
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTPresentIntervalToString( UINT pi );
+WCHAR* DXUTMultisampleTypeToString(D3DMULTISAMPLE_TYPE MultiSampleType);
+WCHAR* DXUTD3DDeviceTypeToString(D3DDEVTYPE devType);
+WCHAR* DXUTVertexProcessingTypeToString(DWORD vpt);
+
+
+//--------------------------------------------------------------------------------------
+// Global state
+//--------------------------------------------------------------------------------------
+DXUTDeviceSettings g_DeviceSettings;
+
+CD3DSettingsDlg* DXUTGetSettingsDialog()
+{
+    // Using an accessor function gives control of the construction order
+    static CD3DSettingsDlg dlg;
+    return &dlg;
+}
+
+
+//--------------------------------------------------------------------------------------
+CD3DSettingsDlg::CD3DSettingsDlg()
+{
+    m_pStateBlock = NULL;
+    m_bActive = false;
+}
+
+
+//--------------------------------------------------------------------------------------
+CD3DSettingsDlg::~CD3DSettingsDlg()
+{
+    OnDestroyDevice();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DSettingsDlg::Init( CDXUTDialogResourceManager* pManager )
+{
+    assert( pManager );
+    m_Dialog.Init( pManager, false );  // Don't register this dialog.
+    CreateControls();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DSettingsDlg::Init( CDXUTDialogResourceManager* pManager, LPCWSTR szControlTextureFileName )
+{
+    assert( pManager );
+    m_Dialog.Init( pManager, false, szControlTextureFileName );  // Don't register this dialog.
+    CreateControls();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DSettingsDlg::Init( CDXUTDialogResourceManager* pManager, LPCWSTR pszControlTextureResourcename, HMODULE hModule )
+{
+    assert( pManager );
+    m_Dialog.Init( pManager, false, pszControlTextureResourcename, hModule );  // Don't register this dialog.
+    CreateControls();
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DSettingsDlg::CreateControls()
+{
+    m_Dialog.EnableKeyboardInput( true );
+    m_Dialog.SetFont( 0, L"Arial", 15, FW_NORMAL );
+    m_Dialog.SetFont( 1, L"Arial", 28, FW_BOLD );
+
+    // Right-justify static controls
+    CDXUTElement* pElement = m_Dialog.GetDefaultElement( DXUT_CONTROL_STATIC, 0 );
+    if( pElement )
+    {
+        pElement->dwTextFormat = DT_VCENTER | DT_RIGHT;
+        
+        // Title
+        CDXUTStatic* pStatic = NULL;
+        m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Direct3D Settings", 10, 5, 400, 50, false, &pStatic );
+        pElement = pStatic->GetElement( 0 );
+        pElement->iFont = 1;
+        pElement->dwTextFormat = DT_TOP | DT_LEFT;
+    }
+
+    // DXUTSETTINGSDLG_ADAPTER
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Display Adapter", 10, 50, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_ADAPTER, 200, 50, 300, 23 );
+
+    // DXUTSETTINGSDLG_DEVICE_TYPE
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Render Device", 10, 75, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_DEVICE_TYPE, 200, 75, 300, 23 );
+
+    // DXUTSETTINGSDLG_WINDOWED, DXUTSETTINGSDLG_FULLSCREEN
+    m_Dialog.AddRadioButton( DXUTSETTINGSDLG_WINDOWED, DXUTSETTINGSDLG_WINDOWED_GROUP, L"Windowed", 240, 105, 300, 16 );
+    m_Dialog.AddCheckBox( DXUTSETTINGSDLG_DEVICECLIP, L"Clip to device when window spans across multiple monitors", 250, 126, 400, 16 );
+    m_Dialog.AddRadioButton( DXUTSETTINGSDLG_FULLSCREEN, DXUTSETTINGSDLG_WINDOWED_GROUP, L"Full Screen", 240, 147, 300, 16 );
+
+    // DXUTSETTINGSDLG_ADAPTER_FORMAT
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL, L"Adapter Format", 10, 180, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT, 200, 180, 300, 23 );
+
+    // DXUTSETTINGSDLG_RESOLUTION
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_RESOLUTION_LABEL, L"Resolution", 10, 205, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_RESOLUTION, 200, 205, 200, 23 );
+    m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION )->SetDropHeight( 106 );
+
+    // DXUTSETTINGSDLG_RES_SHOW_ALL
+    m_Dialog.AddCheckBox( DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL, L"Show All Aspect Ratios", 420, 205, 200, 23, false );
+
+    // DXUTSETTINGSDLG_REFRESH_RATE
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_REFRESH_RATE_LABEL, L"Refresh Rate", 10, 230, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_REFRESH_RATE, 200, 230, 300, 23 );
+
+    // DXUTSETTINGSDLG_BACK_BUFFER_FORMAT
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Back Buffer Format", 10, 265, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT, 200, 265, 300, 23 );
+
+    // DXUTSETTINGSDLG_DEPTH_STENCIL
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Depth/Stencil Format", 10, 290, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL, 200, 290, 300, 23 );
+
+    // DXUTSETTINGSDLG_MULTISAMPLE_TYPE
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Multisample Type", 10, 315, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE, 200, 315, 300, 23 );
+
+    // DXUTSETTINGSDLG_MULTISAMPLE_QUALITY
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Multisample Quality", 10, 340, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_MULTISAMPLE_QUALITY, 200, 340, 300, 23 );
+
+     // DXUTSETTINGSDLG_VERTEX_PROCESSING
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Vertex Processing", 10, 365, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_VERTEX_PROCESSING, 200, 365, 300, 23 );
+
+     // DXUTSETTINGSDLG_PRESENT_INTERVAL
+    m_Dialog.AddStatic( DXUTSETTINGSDLG_STATIC, L"Vertical Sync", 10, 390, 180, 23 );
+    m_Dialog.AddComboBox( DXUTSETTINGSDLG_PRESENT_INTERVAL, 200, 390, 300, 23 );
+    
+    // DXUTSETTINGSDLG_OK, DXUTSETTINGSDLG_CANCEL
+    m_Dialog.AddButton( DXUTSETTINGSDLG_OK, L"OK", 230, 435, 73, 31 );
+    m_Dialog.AddButton( DXUTSETTINGSDLG_CANCEL, L"Cancel", 315, 435, 73, 31, 0, true );
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnCreateDevice( IDirect3DDevice9* pd3dDevice )
+{
+    if( pd3dDevice == NULL )
+        return DXUT_ERR_MSGBOX( L"CD3DSettingsDlg::OnCreatedDevice", E_INVALIDARG );
+
+    // Create the fonts/textures 
+    m_Dialog.SetCallback( StaticOnEvent, (void*) this );
+  
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Changes the UI defaults to the current device settings
+//--------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::Refresh()
+{
+    HRESULT hr = S_OK;
+
+    CD3DEnumeration* pD3DEnum = DXUTGetEnumeration();
+    g_DeviceSettings = DXUTGetDeviceSettings();
+
+    // Fill the UI with the current settings
+    AddDeviceType( g_DeviceSettings.DeviceType );
+    SetWindowed( FALSE != g_DeviceSettings.pp.Windowed );
+    SetDeviceClip( 0 != (g_DeviceSettings.pp.Flags & D3DPRESENTFLAG_DEVICECLIP) );
+    AddAdapterFormat( g_DeviceSettings.AdapterFormat );
+    AddResolution( g_DeviceSettings.pp.BackBufferWidth, g_DeviceSettings.pp.BackBufferHeight );
+    AddRefreshRate( g_DeviceSettings.pp.FullScreen_RefreshRateInHz );
+    AddBackBufferFormat( g_DeviceSettings.pp.BackBufferFormat );
+    AddDepthStencilBufferFormat( g_DeviceSettings.pp.AutoDepthStencilFormat );
+    AddMultisampleType( g_DeviceSettings.pp.MultiSampleType );
+    AddMultisampleQuality( g_DeviceSettings.pp.MultiSampleQuality );
+    
+    if( g_DeviceSettings.BehaviorFlags & D3DCREATE_PUREDEVICE )
+        AddVertexProcessingType( D3DCREATE_PUREDEVICE );
+    else if( g_DeviceSettings.BehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING )
+        AddVertexProcessingType( D3DCREATE_HARDWARE_VERTEXPROCESSING );
+    else if( g_DeviceSettings.BehaviorFlags & D3DCREATE_SOFTWARE_VERTEXPROCESSING )
+        AddVertexProcessingType( D3DCREATE_SOFTWARE_VERTEXPROCESSING );
+    else if( g_DeviceSettings.BehaviorFlags & D3DCREATE_MIXED_VERTEXPROCESSING )
+        AddVertexProcessingType( D3DCREATE_MIXED_VERTEXPROCESSING );
+
+    CD3DEnumDeviceSettingsCombo* pBestDeviceSettingsCombo = pD3DEnum->GetDeviceSettingsCombo( g_DeviceSettings.AdapterOrdinal, g_DeviceSettings.DeviceType, g_DeviceSettings.AdapterFormat, g_DeviceSettings.pp.BackBufferFormat, (g_DeviceSettings.pp.Windowed != 0) );
+    if( NULL == pBestDeviceSettingsCombo )
+        return DXUT_ERR_MSGBOX( L"GetDeviceSettingsCombo", E_INVALIDARG );    
+
+    // Get the adapters list from CD3DEnumeration object
+    CGrowableArray<CD3DEnumAdapterInfo*>* pAdapterInfoList = pD3DEnum->GetAdapterInfoList();
+
+    if( pAdapterInfoList->GetSize() == 0 )
+        return DXUT_ERR_MSGBOX( L"CD3DSettingsDlg::OnCreatedDevice", DXUTERR_NOCOMPATIBLEDEVICES );
+    
+    CDXUTComboBox* pAdapterCombo = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER );
+    pAdapterCombo->RemoveAllItems();
+
+    // Add adapters
+    for( int iAdapter=0; iAdapter<pAdapterInfoList->GetSize(); iAdapter++ )
+    {          
+        CD3DEnumAdapterInfo* pAdapterInfo = pAdapterInfoList->GetAt(iAdapter);
+        AddAdapter( pAdapterInfo->szUniqueDescription, pAdapterInfo->AdapterOrdinal );
+    }
+    
+    pAdapterCombo->SetSelectedByData( ULongToPtr( g_DeviceSettings.AdapterOrdinal ) );
+
+    hr = OnAdapterChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    //m_Dialog.Refresh();
+    CDXUTDialog::SetRefreshTime( (float) DXUTGetTime() );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnResetDevice()
+{
+    const D3DSURFACE_DESC* pDesc = DXUTGetBackBufferSurfaceDesc();
+    m_Dialog.SetLocation( 0, 0 );
+    m_Dialog.SetSize( pDesc->Width, pDesc->Height );
+    m_Dialog.SetBackgroundColors( D3DCOLOR_ARGB(255, 98, 138, 206), 
+                                         D3DCOLOR_ARGB(255, 54, 105, 192),
+                                         D3DCOLOR_ARGB(255, 54, 105, 192),
+                                         D3DCOLOR_ARGB(255, 10,  73, 179) );
+    
+    
+    IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+    pd3dDevice->BeginStateBlock();
+    pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID ); 
+    pd3dDevice->EndStateBlock( &m_pStateBlock );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnRender( float fElapsedTime )
+{
+    IDirect3DDevice9* pd3dDevice = DXUTGetD3DDevice();
+
+    // Clear the render target and the zbuffer 
+    pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, 0x00003F3F, 1.0f, 0);
+
+    // Render the scene
+    if( SUCCEEDED( pd3dDevice->BeginScene() ) )
+    {
+        m_pStateBlock->Capture();
+        pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID ); 
+        m_Dialog.OnRender( fElapsedTime );    
+        m_pStateBlock->Apply();
+        pd3dDevice->EndScene();
+    }
+    
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+LRESULT CD3DSettingsDlg::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
+{
+    m_Dialog.MsgProc( hWnd, uMsg, wParam, lParam );
+    if( uMsg == WM_KEYDOWN && wParam == VK_F2 )
+        SetActive( false );
+    return 0;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnLostDevice()
+{
+    SAFE_RELEASE( m_pStateBlock );
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnDestroyDevice()
+{
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+void WINAPI CD3DSettingsDlg::StaticOnEvent( UINT nEvent, int nControlID, 
+                                            CDXUTControl* pControl, void* pUserData )
+{
+    CD3DSettingsDlg* pD3DSettings = (CD3DSettingsDlg*) pUserData;
+    if( pD3DSettings )
+        pD3DSettings->OnEvent( nEvent, nControlID, pControl );
+}
+
+
+//--------------------------------------------------------------------------------------
+void CD3DSettingsDlg::OnEvent( UINT nEvent, int nControlID, 
+                               CDXUTControl* pControl )
+{
+    switch( nControlID )
+    {
+        case DXUTSETTINGSDLG_ADAPTER:               OnAdapterChanged(); break;
+        case DXUTSETTINGSDLG_DEVICE_TYPE:           OnDeviceTypeChanged(); break;
+        case DXUTSETTINGSDLG_WINDOWED:              OnWindowedFullScreenChanged(); break;
+        case DXUTSETTINGSDLG_FULLSCREEN:            OnWindowedFullScreenChanged(); break;
+        case DXUTSETTINGSDLG_ADAPTER_FORMAT:        OnAdapterFormatChanged(); break;
+        case DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL:   OnAdapterFormatChanged(); break;
+        case DXUTSETTINGSDLG_RESOLUTION:            OnResolutionChanged(); break;
+        case DXUTSETTINGSDLG_REFRESH_RATE:          OnRefreshRateChanged(); break;
+        case DXUTSETTINGSDLG_BACK_BUFFER_FORMAT:    OnBackBufferFormatChanged(); break;
+        case DXUTSETTINGSDLG_DEPTH_STENCIL:         OnDepthStencilBufferFormatChanged(); break;
+        case DXUTSETTINGSDLG_MULTISAMPLE_TYPE:      OnMultisampleTypeChanged(); break;
+        case DXUTSETTINGSDLG_MULTISAMPLE_QUALITY:   OnMultisampleQualityChanged(); break;
+        case DXUTSETTINGSDLG_VERTEX_PROCESSING:     OnVertexProcessingChanged(); break;
+        case DXUTSETTINGSDLG_PRESENT_INTERVAL:      OnPresentIntervalChanged(); break;
+        case DXUTSETTINGSDLG_DEVICECLIP:            OnDeviceClipChanged(); break;
+
+        case DXUTSETTINGSDLG_OK:
+        {
+            if( g_DeviceSettings.pp.Windowed )
+            {
+                g_DeviceSettings.pp.FullScreen_RefreshRateInHz = 0;
+
+                RECT rcClient;
+                if( DXUTIsWindowed() )
+                    GetClientRect( DXUTGetHWND(), &rcClient );
+                else
+                    rcClient = DXUTGetWindowClientRectAtModeChange();
+                DWORD dwWindowWidth  = rcClient.right - rcClient.left;
+                DWORD dwWindowHeight = rcClient.bottom - rcClient.top;
+
+                g_DeviceSettings.pp.BackBufferWidth = dwWindowWidth;
+                g_DeviceSettings.pp.BackBufferHeight = dwWindowHeight;
+            }
+
+            if( g_DeviceSettings.pp.MultiSampleType != D3DMULTISAMPLE_NONE )
+            {
+                g_DeviceSettings.pp.Flags &= ~D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
+            }
+
+            DXUTCreateDeviceFromSettings( &g_DeviceSettings );
+
+            SetActive( false );
+            break;
+        }
+
+        case DXUTSETTINGSDLG_CANCEL:                
+        {
+            SetActive( false );
+            break;
+        }
+
+    }
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::SetDeviceSettingsFromUI()
+{
+    CDXUTComboBox* pComboBox;
+    CDXUTRadioButton* pRadioButton;
+
+    // DXUTSETTINGSDLG_DEVICE_TYPE
+    pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEVICE_TYPE );
+    g_DeviceSettings.DeviceType = (D3DDEVTYPE) PtrToUlong( pComboBox->GetSelectedData() );
+    
+    // DXUTSETTINGSDLG_WINDOWED
+    pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_WINDOWED );
+    g_DeviceSettings.pp.Windowed = pRadioButton->GetChecked();
+
+    // DXUTSETTINGSDLG_ADAPTER_FORMAT
+    pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT );
+    g_DeviceSettings.AdapterFormat = (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() );
+    
+
+    if( g_DeviceSettings.pp.Windowed )
+    {
+        g_DeviceSettings.pp.BackBufferFormat = D3DFMT_UNKNOWN;
+        g_DeviceSettings.pp.FullScreen_RefreshRateInHz = 0;
+    }
+    else
+    {
+        // DXUTSETTINGSDLG_BACK_BUFFER_FORMAT
+        pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT );
+        g_DeviceSettings.pp.BackBufferFormat = (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() );
+    
+        // DXUTSETTINGSDLG_RESOLUTION
+        pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
+        DWORD dwResolution = PtrToUlong( pComboBox->GetSelectedData() );
+        g_DeviceSettings.pp.BackBufferWidth = HIWORD( dwResolution );
+        g_DeviceSettings.pp.BackBufferHeight = LOWORD( dwResolution );
+        
+        // DXUTSETTINGSDLG_REFRESH_RATE
+        pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
+        g_DeviceSettings.pp.FullScreen_RefreshRateInHz = PtrToUlong( pComboBox->GetSelectedData() );
+    }
+
+    // DXUTSETTINGSDLG_DEPTH_STENCIL
+    pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL );
+    g_DeviceSettings.pp.AutoDepthStencilFormat = (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() );
+    
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+CD3DEnumAdapterInfo* CD3DSettingsDlg::GetCurrentAdapterInfo()
+{
+    CD3DEnumeration* pD3DEnum = DXUTGetEnumeration();
+    return pD3DEnum->GetAdapterInfo( g_DeviceSettings.AdapterOrdinal );
+}
+
+
+//-------------------------------------------------------------------------------------
+CD3DEnumDeviceInfo* CD3DSettingsDlg::GetCurrentDeviceInfo()
+{
+    CD3DEnumeration* pD3DEnum = DXUTGetEnumeration();
+    return pD3DEnum->GetDeviceInfo( g_DeviceSettings.AdapterOrdinal,
+                                      g_DeviceSettings.DeviceType );
+}
+
+
+//-------------------------------------------------------------------------------------
+CD3DEnumDeviceSettingsCombo* CD3DSettingsDlg::GetCurrentDeviceSettingsCombo()
+{
+    CD3DEnumeration* pD3DEnum = DXUTGetEnumeration();
+    return pD3DEnum->GetDeviceSettingsCombo( g_DeviceSettings.AdapterOrdinal,
+                                             g_DeviceSettings.DeviceType,
+                                             g_DeviceSettings.AdapterFormat,
+                                             g_DeviceSettings.pp.BackBufferFormat,
+                                             (g_DeviceSettings.pp.Windowed == TRUE) );
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnAdapterChanged()
+{
+    HRESULT hr = S_OK;
+
+    // Store the adapter index
+    g_DeviceSettings.AdapterOrdinal = GetSelectedAdapter();
+    
+    // DXUTSETTINGSDLG_DEVICE_TYPE
+    CDXUTComboBox* pDeviceTypeComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEVICE_TYPE );
+    pDeviceTypeComboBox->RemoveAllItems();
+ 
+    CD3DEnumAdapterInfo* pAdapterInfo = GetCurrentAdapterInfo();
+    if( pAdapterInfo == NULL )
+        return E_FAIL;
+
+    for( int iDeviceInfo=0; iDeviceInfo < pAdapterInfo->deviceInfoList.GetSize(); iDeviceInfo++ )
+    {
+        CD3DEnumDeviceInfo* pDeviceInfo = pAdapterInfo->deviceInfoList.GetAt(iDeviceInfo);
+        AddDeviceType( pDeviceInfo->DeviceType );
+    }
+
+    pDeviceTypeComboBox->SetSelectedByData( ULongToPtr(g_DeviceSettings.DeviceType) );
+
+    hr = OnDeviceTypeChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK; 
+}
+
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnDeviceTypeChanged()
+{
+    HRESULT hr = S_OK;
+    
+    g_DeviceSettings.DeviceType = GetSelectedDeviceType();
+   
+    // Update windowed/full screen radio buttons
+    bool bHasWindowedDeviceCombo = false;
+    bool bHasFullScreenDeviceCombo = false;
+
+    CD3DEnumDeviceInfo* pDeviceInfo = GetCurrentDeviceInfo();
+    if( pDeviceInfo == NULL )
+        return E_FAIL;
+            
+    for( int idc = 0; idc < pDeviceInfo->deviceSettingsComboList.GetSize(); idc++ )
+    {
+        CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = pDeviceInfo->deviceSettingsComboList.GetAt( idc );
+
+        if( pDeviceSettingsCombo->Windowed )
+            bHasWindowedDeviceCombo = true;
+        else
+            bHasFullScreenDeviceCombo = true;
+    }
+
+    // DXUTSETTINGSDLG_WINDOWED, DXUTSETTINGSDLG_FULLSCREEN
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_WINDOWED, bHasWindowedDeviceCombo );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_FULLSCREEN, bHasFullScreenDeviceCombo );
+
+    SetWindowed( g_DeviceSettings.pp.Windowed && bHasWindowedDeviceCombo );
+
+    hr = OnWindowedFullScreenChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnWindowedFullScreenChanged()
+{
+    HRESULT hr = S_OK;
+
+    bool bWindowed = IsWindowed();
+    g_DeviceSettings.pp.Windowed = bWindowed;
+
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL, !bWindowed );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_RESOLUTION_LABEL, !bWindowed );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_REFRESH_RATE_LABEL, !bWindowed );
+
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_ADAPTER_FORMAT, !bWindowed );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_RESOLUTION, !bWindowed );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL, !bWindowed );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_REFRESH_RATE, !bWindowed );
+    m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_DEVICECLIP, bWindowed );
+
+    bool bDeviceClip = ( 0x0 != (g_DeviceSettings.pp.Flags & D3DPRESENTFLAG_DEVICECLIP) );
+
+    // If windowed, get the appropriate adapter format from Direct3D
+    if( g_DeviceSettings.pp.Windowed )
+    {
+        IDirect3D9* pD3D = DXUTGetD3DObject();
+        if( pD3D == NULL )
+            return DXTRACE_ERR( L"DXUTGetD3DObject", E_FAIL );
+
+        D3DDISPLAYMODE mode;
+        hr = pD3D->GetAdapterDisplayMode( g_DeviceSettings.AdapterOrdinal, &mode );
+        if( FAILED(hr) )
+            return DXTRACE_ERR( L"GetAdapterDisplayMode", hr );
+
+        // Default resolution to the fullscreen res that was last used
+        RECT rc = DXUTGetFullsceenClientRectAtModeChange();
+        if( rc.right == 0 || rc.bottom == 0 )
+        {
+            // If nothing last used, then default to the adapter desktop res
+            g_DeviceSettings.pp.BackBufferWidth = mode.Width;
+            g_DeviceSettings.pp.BackBufferHeight = mode.Height;
+        }
+        else
+        {
+            g_DeviceSettings.pp.BackBufferWidth = rc.right;
+            g_DeviceSettings.pp.BackBufferHeight = rc.bottom;
+        }
+
+        g_DeviceSettings.AdapterFormat = mode.Format;
+        g_DeviceSettings.pp.FullScreen_RefreshRateInHz = mode.RefreshRate;
+    }
+
+    const D3DFORMAT adapterFormat = g_DeviceSettings.AdapterFormat;
+    const DWORD dwWidth = g_DeviceSettings.pp.BackBufferWidth;
+    const DWORD dwHeight = g_DeviceSettings.pp.BackBufferHeight;
+    const DWORD dwRefreshRate = g_DeviceSettings.pp.FullScreen_RefreshRateInHz;
+
+    // DXUTSETTINGSDLG_DEVICECLIP
+    SetDeviceClip( bDeviceClip );
+    
+    // DXUTSETTINGSDLG_ADAPTER_FORMAT
+    CDXUTComboBox* pAdapterFormatComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT );
+    if( pAdapterFormatComboBox == NULL )
+        return E_FAIL;
+    pAdapterFormatComboBox->RemoveAllItems();
+
+    CD3DEnumDeviceInfo* pDeviceInfo = GetCurrentDeviceInfo();
+    if( pDeviceInfo == NULL )
+        return E_FAIL;
+
+    if( bWindowed )
+    {
+        AddAdapterFormat( adapterFormat );
+    }
+    else
+    {
+        for( int iSettingsCombo=0; iSettingsCombo < pDeviceInfo->deviceSettingsComboList.GetSize(); iSettingsCombo++ )
+        {
+            CD3DEnumDeviceSettingsCombo* pSettingsCombo = pDeviceInfo->deviceSettingsComboList.GetAt(iSettingsCombo);
+            AddAdapterFormat( pSettingsCombo->AdapterFormat );
+        }    
+    }
+
+    pAdapterFormatComboBox->SetSelectedByData( ULongToPtr(adapterFormat) );
+
+    hr = OnAdapterFormatChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    // DXUTSETTINGSDLG_RESOLUTION
+    CDXUTComboBox* pResolutionComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
+    
+    if( bWindowed )
+    {
+        pResolutionComboBox->RemoveAllItems();
+        AddResolution( dwWidth, dwHeight );
+    }
+
+    pResolutionComboBox->SetSelectedByData( ULongToPtr( MAKELONG(dwWidth, dwHeight) ) );
+    
+    hr = OnResolutionChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    // DXUTSETTINGSDLG_REFRESH_RATE
+    CDXUTComboBox* pRefreshRateComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
+    
+    if( bWindowed )
+    {
+        pRefreshRateComboBox->RemoveAllItems();
+        AddRefreshRate( dwRefreshRate );
+    }
+    
+    pRefreshRateComboBox->SetSelectedByData( ULongToPtr(dwRefreshRate) ); 
+
+    hr = OnRefreshRateChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnAdapterFormatChanged()
+{ 
+    HRESULT hr = S_OK;
+
+    // DXUTSETTINGSDLG_ADAPTER_FORMAT
+    D3DFORMAT adapterFormat = GetSelectedAdapterFormat();
+    g_DeviceSettings.AdapterFormat = adapterFormat;
+
+    // DXUTSETTINGSDLG_RESOLUTION
+    CDXUTComboBox* pResolutionComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
+    pResolutionComboBox->RemoveAllItems();
+
+    CD3DEnumAdapterInfo* pAdapterInfo = GetCurrentAdapterInfo();
+    if( pAdapterInfo == NULL )
+        return E_FAIL;
+
+    bool bShowAll = m_Dialog.GetCheckBox( DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL )->GetChecked();
+
+    // Get the desktop aspect ratio
+    D3DDISPLAYMODE dmDesktop;
+    DXUTGetDesktopResolution( g_DeviceSettings.AdapterOrdinal, &dmDesktop.Width, &dmDesktop.Height );
+    float fDesktopAspectRatio = dmDesktop.Width / (float)dmDesktop.Height;
+
+    for( int idm = 0; idm < pAdapterInfo->displayModeList.GetSize(); idm++ )
+    {
+        D3DDISPLAYMODE DisplayMode = pAdapterInfo->displayModeList.GetAt( idm );
+        float fAspect = (float)DisplayMode.Width / (float)DisplayMode.Height;
+
+        if( DisplayMode.Format == adapterFormat )
+        {
+            // If "Show All" is not checked, then hide all resolutions
+            // that don't match the aspect ratio of the desktop resolution
+            if( bShowAll || (!bShowAll && fabsf(fDesktopAspectRatio - fAspect) < 0.05f) )
+            {
+                AddResolution( DisplayMode.Width, DisplayMode.Height );    
+            }
+        }
+    }
+
+    const DWORD dwCurResolution = MAKELONG( g_DeviceSettings.pp.BackBufferWidth, 
+                                            g_DeviceSettings.pp.BackBufferHeight );
+
+    pResolutionComboBox->SetSelectedByData( ULongToPtr(dwCurResolution) );
+
+    hr = OnResolutionChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    // DXUTSETTINGSDLG_BACK_BUFFER_FORMAT
+    CDXUTComboBox* pBackBufferFormatComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT );
+    pBackBufferFormatComboBox->RemoveAllItems();
+
+    CD3DEnumDeviceInfo* pDeviceInfo = GetCurrentDeviceInfo();
+    if( pDeviceInfo == NULL )
+        return E_FAIL;
+
+    const BOOL bWindowed = IsWindowed();
+    bool bHasWindowedBackBuffer = false;
+
+    for( int idc = 0; idc < pDeviceInfo->deviceSettingsComboList.GetSize(); idc++ )
+    {
+        CD3DEnumDeviceSettingsCombo* pDeviceCombo = pDeviceInfo->deviceSettingsComboList.GetAt( idc );
+        if( pDeviceCombo->Windowed == bWindowed &&
+            pDeviceCombo->AdapterFormat == g_DeviceSettings.AdapterFormat )
+        {
+            AddBackBufferFormat( pDeviceCombo->BackBufferFormat );
+            bHasWindowedBackBuffer = true;
+        }
+    }
+
+    pBackBufferFormatComboBox->SetSelectedByData( ULongToPtr(g_DeviceSettings.pp.BackBufferFormat) );
+
+    hr = OnBackBufferFormatChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    if( !bHasWindowedBackBuffer )
+    {
+        m_Dialog.SetControlEnabled( DXUTSETTINGSDLG_WINDOWED, false );
+
+        if( g_DeviceSettings.pp.Windowed )
+        {
+            SetWindowed( false );
+
+            hr = OnWindowedFullScreenChanged();
+            if( FAILED(hr) )
+                return hr;
+        }
+    }
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnResolutionChanged()
+{
+    HRESULT hr = S_OK;
+
+    CD3DEnumAdapterInfo* pAdapterInfo = GetCurrentAdapterInfo();
+    if( pAdapterInfo == NULL )
+        return E_FAIL;
+
+    // Set resolution
+    DWORD dwWidth, dwHeight;
+    GetSelectedResolution( &dwWidth, &dwHeight );
+    g_DeviceSettings.pp.BackBufferWidth = dwWidth;
+    g_DeviceSettings.pp.BackBufferHeight = dwHeight;
+
+    DWORD dwRefreshRate = g_DeviceSettings.pp.FullScreen_RefreshRateInHz;
+
+    // Update the refresh rate list
+    CDXUTComboBox* pRefreshRateComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
+    pRefreshRateComboBox->RemoveAllItems();
+
+    D3DFORMAT adapterFormat = g_DeviceSettings.AdapterFormat;
+    for( int idm = 0; idm < pAdapterInfo->displayModeList.GetSize(); idm++ )
+    {
+        D3DDISPLAYMODE displayMode = pAdapterInfo->displayModeList.GetAt( idm );
+
+        if( displayMode.Format == adapterFormat &&
+            displayMode.Width == dwWidth &&
+            displayMode.Height == dwHeight )
+        {
+            AddRefreshRate( displayMode.RefreshRate );
+        }
+    }
+
+    pRefreshRateComboBox->SetSelectedByData( ULongToPtr(dwRefreshRate) );
+
+    hr = OnRefreshRateChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnRefreshRateChanged()
+{
+    // Set refresh rate
+    g_DeviceSettings.pp.FullScreen_RefreshRateInHz = GetSelectedRefreshRate();
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnBackBufferFormatChanged()
+{
+    HRESULT hr = S_OK;
+
+    g_DeviceSettings.pp.BackBufferFormat = GetSelectedBackBufferFormat();
+    
+    D3DFORMAT adapterFormat = g_DeviceSettings.AdapterFormat;
+    D3DFORMAT backBufferFormat = g_DeviceSettings.pp.BackBufferFormat;
+
+    CD3DEnumDeviceInfo* pDeviceInfo = GetCurrentDeviceInfo();
+    if( pDeviceInfo == NULL )
+        return E_FAIL;
+
+    bool bAllowSoftwareVP, bAllowHardwareVP, bAllowPureHardwareVP, bAllowMixedVP;
+    DXUTGetEnumeration()->GetPossibleVertexProcessingList( &bAllowSoftwareVP, &bAllowHardwareVP, 
+                                                           &bAllowPureHardwareVP, &bAllowMixedVP );
+    
+    for( int idc=0; idc < pDeviceInfo->deviceSettingsComboList.GetSize(); idc++ )
+    {
+        CD3DEnumDeviceSettingsCombo* pDeviceCombo = pDeviceInfo->deviceSettingsComboList.GetAt( idc );
+
+        if( pDeviceCombo->Windowed == (g_DeviceSettings.pp.Windowed == TRUE) &&
+            pDeviceCombo->AdapterFormat == adapterFormat &&
+            pDeviceCombo->BackBufferFormat == backBufferFormat )
+        {
+            CDXUTComboBox* pDepthStencilComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL );
+            pDepthStencilComboBox->RemoveAllItems();
+            pDepthStencilComboBox->SetEnabled( (g_DeviceSettings.pp.EnableAutoDepthStencil == TRUE) ); 
+
+            if( g_DeviceSettings.pp.EnableAutoDepthStencil )
+            {
+                for( int ifmt=0; ifmt < pDeviceCombo->depthStencilFormatList.GetSize(); ifmt++ )
+                {
+                    D3DFORMAT fmt = pDeviceCombo->depthStencilFormatList.GetAt( ifmt );
+
+                    AddDepthStencilBufferFormat( fmt );
+                }
+
+                pDepthStencilComboBox->SetSelectedByData( ULongToPtr(g_DeviceSettings.pp.AutoDepthStencilFormat) );
+            }
+            else
+            {
+                if( !pDepthStencilComboBox->ContainsItem( L"(not used)" ) )
+                    pDepthStencilComboBox->AddItem( L"(not used)", NULL );
+            }
+
+            hr = OnDepthStencilBufferFormatChanged();
+            if( FAILED(hr) )
+                return hr;
+
+            CDXUTComboBox* pVertexProcessingComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_VERTEX_PROCESSING );
+            pVertexProcessingComboBox->RemoveAllItems();
+
+            // Add valid vertex processing types
+            if( bAllowSoftwareVP )
+                AddVertexProcessingType( D3DCREATE_SOFTWARE_VERTEXPROCESSING );
+
+            if( bAllowHardwareVP && pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
+                AddVertexProcessingType( D3DCREATE_HARDWARE_VERTEXPROCESSING );
+
+            if( bAllowPureHardwareVP && pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_PUREDEVICE )
+                AddVertexProcessingType( D3DCREATE_PUREDEVICE );
+
+            if( bAllowMixedVP && pDeviceInfo->Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
+                AddVertexProcessingType( D3DCREATE_MIXED_VERTEXPROCESSING );
+
+            if( g_DeviceSettings.BehaviorFlags & D3DCREATE_PUREDEVICE )
+                pVertexProcessingComboBox->SetSelectedByData( ULongToPtr(D3DCREATE_PUREDEVICE) );
+            else if( g_DeviceSettings.BehaviorFlags & D3DCREATE_SOFTWARE_VERTEXPROCESSING )
+                pVertexProcessingComboBox->SetSelectedByData( ULongToPtr(D3DCREATE_SOFTWARE_VERTEXPROCESSING) );
+            else if( g_DeviceSettings.BehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING )
+                pVertexProcessingComboBox->SetSelectedByData( ULongToPtr(D3DCREATE_HARDWARE_VERTEXPROCESSING) );
+            else if( g_DeviceSettings.BehaviorFlags & D3DCREATE_MIXED_VERTEXPROCESSING )
+                pVertexProcessingComboBox->SetSelectedByData( ULongToPtr(D3DCREATE_MIXED_VERTEXPROCESSING) );
+
+            hr = OnVertexProcessingChanged();
+            if( FAILED(hr) )
+                return hr;
+
+            CDXUTComboBox* pPresentIntervalComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_PRESENT_INTERVAL );
+            pPresentIntervalComboBox->RemoveAllItems();
+            pPresentIntervalComboBox->AddItem( L"On", ULongToPtr(D3DPRESENT_INTERVAL_DEFAULT) );
+            pPresentIntervalComboBox->AddItem( L"Off", ULongToPtr(D3DPRESENT_INTERVAL_IMMEDIATE) );
+
+            pPresentIntervalComboBox->SetSelectedByData( ULongToPtr( g_DeviceSettings.pp.PresentationInterval ) );
+        
+            hr = OnPresentIntervalChanged();
+            if( FAILED(hr) )
+                return hr;
+        }
+    }
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnDepthStencilBufferFormatChanged()
+{
+    HRESULT hr = S_OK;
+
+    D3DFORMAT depthStencilBufferFormat = GetSelectedDepthStencilBufferFormat();
+
+    if( g_DeviceSettings.pp.EnableAutoDepthStencil )
+        g_DeviceSettings.pp.AutoDepthStencilFormat = depthStencilBufferFormat;
+
+    CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = GetCurrentDeviceSettingsCombo();
+    if( pDeviceSettingsCombo == NULL )
+        return E_FAIL;
+    
+    CDXUTComboBox* pMultisampleTypeCombo = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE );
+    pMultisampleTypeCombo->RemoveAllItems();
+
+    for( int ims=0; ims < pDeviceSettingsCombo->multiSampleTypeList.GetSize(); ims++ )
+    {
+        D3DMULTISAMPLE_TYPE msType = pDeviceSettingsCombo->multiSampleTypeList.GetAt( ims );
+
+        bool bConflictFound = false;
+        for( int iConf = 0; iConf < pDeviceSettingsCombo->DSMSConflictList.GetSize(); iConf++ )
+        {
+            CD3DEnumDSMSConflict DSMSConf = pDeviceSettingsCombo->DSMSConflictList.GetAt( iConf );
+            if( DSMSConf.DSFormat == depthStencilBufferFormat &&
+                DSMSConf.MSType == msType )
+            {
+                bConflictFound = true;
+                break;
+            }
+        }
+
+        if( !bConflictFound )
+            AddMultisampleType( msType );
+    }
+
+    CDXUTComboBox* pMultisampleQualityCombo = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE );
+    pMultisampleQualityCombo->SetSelectedByData( ULongToPtr(g_DeviceSettings.pp.MultiSampleType) );
+
+    hr = OnMultisampleTypeChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnMultisampleTypeChanged()
+{
+    HRESULT hr = S_OK;
+
+    D3DMULTISAMPLE_TYPE multisampleType = GetSelectedMultisampleType();
+    g_DeviceSettings.pp.MultiSampleType = multisampleType;
+
+    CD3DEnumDeviceSettingsCombo* pDeviceSettingsCombo = GetCurrentDeviceSettingsCombo();
+    if( pDeviceSettingsCombo == NULL )
+        return E_FAIL;
+
+    DWORD dwMaxQuality = 0;
+    for( int iType = 0; iType < pDeviceSettingsCombo->multiSampleTypeList.GetSize(); iType++ )
+    {
+        D3DMULTISAMPLE_TYPE msType = pDeviceSettingsCombo->multiSampleTypeList.GetAt( iType );
+        if( msType == multisampleType )
+        {
+            dwMaxQuality = pDeviceSettingsCombo->multiSampleQualityList.GetAt( iType );
+            break;
+        }
+    }
+   
+    // DXUTSETTINGSDLG_MULTISAMPLE_QUALITY
+    CDXUTComboBox* pMultisampleQualityCombo = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_QUALITY );
+    pMultisampleQualityCombo->RemoveAllItems();
+
+    for( UINT iQuality = 0; iQuality < dwMaxQuality; iQuality++ )
+    {
+        AddMultisampleQuality( iQuality );
+    }
+
+    pMultisampleQualityCombo->SetSelectedByData( ULongToPtr(g_DeviceSettings.pp.MultiSampleQuality) );
+
+    hr = OnMultisampleQualityChanged();
+    if( FAILED(hr) )
+        return hr;
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnMultisampleQualityChanged()
+{
+    g_DeviceSettings.pp.MultiSampleQuality = GetSelectedMultisampleQuality();
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnVertexProcessingChanged()
+{
+    DWORD dwBehavior = g_DeviceSettings.BehaviorFlags;
+
+    // Clear vertex processing flags
+    dwBehavior &= ~D3DCREATE_HARDWARE_VERTEXPROCESSING;
+    dwBehavior &= ~D3DCREATE_SOFTWARE_VERTEXPROCESSING;
+    dwBehavior &= ~D3DCREATE_MIXED_VERTEXPROCESSING;
+    dwBehavior &= ~D3DCREATE_PUREDEVICE;
+
+    // Determine new flags
+    DWORD dwNewFlags = GetSelectedVertexProcessingType();
+    if( dwNewFlags & D3DCREATE_PUREDEVICE )
+        dwNewFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
+
+    // Make changes
+    g_DeviceSettings.BehaviorFlags = dwBehavior | dwNewFlags;
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnPresentIntervalChanged()
+{
+    g_DeviceSettings.pp.PresentationInterval = GetSelectedPresentInterval();
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+HRESULT CD3DSettingsDlg::OnDeviceClipChanged()
+{
+    if( IsDeviceClip() )
+        g_DeviceSettings.pp.Flags |= D3DPRESENTFLAG_DEVICECLIP;
+    else
+        g_DeviceSettings.pp.Flags &= ~D3DPRESENTFLAG_DEVICECLIP;
+
+    return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddAdapter( const WCHAR* strDescription, UINT iAdapter )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER );
+ 
+    if( !pComboBox->ContainsItem( strDescription ) )
+        pComboBox->AddItem( strDescription, ULongToPtr(iAdapter) );
+}
+
+
+//-------------------------------------------------------------------------------------
+UINT CD3DSettingsDlg::GetSelectedAdapter()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER );
+
+    return PtrToUlong( pComboBox->GetSelectedData() );  
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddDeviceType( D3DDEVTYPE devType )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEVICE_TYPE );
+
+    if( !pComboBox->ContainsItem( DXUTD3DDeviceTypeToString(devType) ) )
+        pComboBox->AddItem( DXUTD3DDeviceTypeToString(devType), ULongToPtr(devType) );
+}
+
+
+//-------------------------------------------------------------------------------------
+D3DDEVTYPE CD3DSettingsDlg::GetSelectedDeviceType()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEVICE_TYPE );
+
+    return (D3DDEVTYPE) PtrToUlong( pComboBox->GetSelectedData() );
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::SetWindowed( bool bWindowed )
+{
+    CDXUTRadioButton* pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_WINDOWED );
+    pRadioButton->SetChecked( bWindowed );
+
+    pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_FULLSCREEN );
+    pRadioButton->SetChecked( !bWindowed );
+}
+
+
+//-------------------------------------------------------------------------------------
+bool CD3DSettingsDlg::IsWindowed()
+{
+    CDXUTRadioButton* pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_WINDOWED );
+    return pRadioButton->GetChecked();
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddAdapterFormat( D3DFORMAT format )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT );
+    
+    if( !pComboBox->ContainsItem( DXUTD3DFormatToString(format, TRUE) ) )
+        pComboBox->AddItem( DXUTD3DFormatToString(format, TRUE), ULongToPtr( format ) );
+}
+
+
+//-------------------------------------------------------------------------------------
+D3DFORMAT CD3DSettingsDlg::GetSelectedAdapterFormat()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT );
+  
+    return (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddResolution( DWORD dwWidth, DWORD dwHeight )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
+  
+    DWORD dwResolutionData;
+    WCHAR strResolution[50];
+    dwResolutionData = MAKELONG( dwWidth, dwHeight );
+    StringCchPrintf( strResolution, 50, L"%d by %d", dwWidth, dwHeight );
+
+    if( !pComboBox->ContainsItem( strResolution ) )
+        pComboBox->AddItem( strResolution, ULongToPtr( dwResolutionData ) );
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::GetSelectedResolution( DWORD* pdwWidth, DWORD* pdwHeight )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
+
+    DWORD dwResolution = PtrToUlong( pComboBox->GetSelectedData() );
+
+    *pdwWidth = LOWORD( dwResolution );
+    *pdwHeight = HIWORD( dwResolution );
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddRefreshRate( DWORD dwRate )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
+        
+    WCHAR strRefreshRate[50];
+
+    if( dwRate == 0 )
+        StringCchCopy( strRefreshRate, 50, L"Default Rate" );
+    else
+        StringCchPrintf( strRefreshRate, 50, L"%d Hz", dwRate );
+
+    if( !pComboBox->ContainsItem( strRefreshRate ) )
+        pComboBox->AddItem( strRefreshRate, ULongToPtr(dwRate) );
+}
+
+
+//-------------------------------------------------------------------------------------
+DWORD CD3DSettingsDlg::GetSelectedRefreshRate()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
+    
+    return PtrToUlong( pComboBox->GetSelectedData() );
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddBackBufferFormat( D3DFORMAT format )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT );
+    
+    if( !pComboBox->ContainsItem( DXUTD3DFormatToString(format, TRUE) ) )
+        pComboBox->AddItem( DXUTD3DFormatToString(format, TRUE), ULongToPtr( format ) );
+}
+
+
+//-------------------------------------------------------------------------------------
+D3DFORMAT CD3DSettingsDlg::GetSelectedBackBufferFormat()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT );
+    
+    return (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddDepthStencilBufferFormat( D3DFORMAT format )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL );
+    
+    if( !pComboBox->ContainsItem( DXUTD3DFormatToString(format, TRUE) ) )
+        pComboBox->AddItem( DXUTD3DFormatToString(format, TRUE), ULongToPtr(format) );
+}
+
+
+//-------------------------------------------------------------------------------------
+D3DFORMAT CD3DSettingsDlg::GetSelectedDepthStencilBufferFormat()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL );
+    
+    return (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddMultisampleType( D3DMULTISAMPLE_TYPE type )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE );
+    
+    if( !pComboBox->ContainsItem( DXUTMultisampleTypeToString(type) ) )
+        pComboBox->AddItem( DXUTMultisampleTypeToString(type), ULongToPtr(type) );
+}
+
+
+//-------------------------------------------------------------------------------------
+D3DMULTISAMPLE_TYPE CD3DSettingsDlg::GetSelectedMultisampleType()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE );
+    
+    return (D3DMULTISAMPLE_TYPE) PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddMultisampleQuality( DWORD dwQuality )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_QUALITY );
+        
+    WCHAR strQuality[50];
+    StringCchPrintf( strQuality, 50, L"%d", dwQuality );
+
+    if( !pComboBox->ContainsItem( strQuality ) )
+        pComboBox->AddItem( strQuality, ULongToPtr(dwQuality) );
+}
+
+
+//-------------------------------------------------------------------------------------
+DWORD CD3DSettingsDlg::GetSelectedMultisampleQuality()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_QUALITY );
+    
+    return PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::AddVertexProcessingType( DWORD dwType )
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_VERTEX_PROCESSING );
+    
+    if( !pComboBox->ContainsItem( DXUTVertexProcessingTypeToString(dwType) ) )
+        pComboBox->AddItem( DXUTVertexProcessingTypeToString(dwType), ULongToPtr(dwType) );
+}
+
+
+//-------------------------------------------------------------------------------------
+DWORD CD3DSettingsDlg::GetSelectedVertexProcessingType()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_VERTEX_PROCESSING );
+    
+    return PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+DWORD CD3DSettingsDlg::GetSelectedPresentInterval()
+{
+    CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_PRESENT_INTERVAL );
+    
+    return PtrToUlong( pComboBox->GetSelectedData() ); 
+}
+
+
+//-------------------------------------------------------------------------------------
+void CD3DSettingsDlg::SetDeviceClip( bool bDeviceClip )
+{
+    CDXUTCheckBox* pCheckBox = m_Dialog.GetCheckBox( DXUTSETTINGSDLG_DEVICECLIP );
+    pCheckBox->SetChecked( bDeviceClip );
+}
+
+
+//-------------------------------------------------------------------------------------
+bool CD3DSettingsDlg::IsDeviceClip()
+{
+    CDXUTCheckBox* pCheckBox = m_Dialog.GetCheckBox( DXUTSETTINGSDLG_DEVICECLIP );
+    return pCheckBox->GetChecked();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns the string for the given D3DDEVTYPE.
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTD3DDeviceTypeToString(D3DDEVTYPE devType)
+{
+    switch (devType)
+    {
+        case D3DDEVTYPE_HAL:        return L"D3DDEVTYPE_HAL";
+        case D3DDEVTYPE_SW:         return L"D3DDEVTYPE_SW";
+        case D3DDEVTYPE_REF:        return L"D3DDEVTYPE_REF";
+        default:                    return L"Unknown devType";
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns the string for the given D3DMULTISAMPLE_TYPE.
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTMultisampleTypeToString(D3DMULTISAMPLE_TYPE MultiSampleType)
+{
+    switch (MultiSampleType)
+    {
+    case D3DMULTISAMPLE_NONE:       return L"D3DMULTISAMPLE_NONE";
+    case D3DMULTISAMPLE_NONMASKABLE: return L"D3DMULTISAMPLE_NONMASKABLE";
+    case D3DMULTISAMPLE_2_SAMPLES:  return L"D3DMULTISAMPLE_2_SAMPLES";
+    case D3DMULTISAMPLE_3_SAMPLES:  return L"D3DMULTISAMPLE_3_SAMPLES";
+    case D3DMULTISAMPLE_4_SAMPLES:  return L"D3DMULTISAMPLE_4_SAMPLES";
+    case D3DMULTISAMPLE_5_SAMPLES:  return L"D3DMULTISAMPLE_5_SAMPLES";
+    case D3DMULTISAMPLE_6_SAMPLES:  return L"D3DMULTISAMPLE_6_SAMPLES";
+    case D3DMULTISAMPLE_7_SAMPLES:  return L"D3DMULTISAMPLE_7_SAMPLES";
+    case D3DMULTISAMPLE_8_SAMPLES:  return L"D3DMULTISAMPLE_8_SAMPLES";
+    case D3DMULTISAMPLE_9_SAMPLES:  return L"D3DMULTISAMPLE_9_SAMPLES";
+    case D3DMULTISAMPLE_10_SAMPLES: return L"D3DMULTISAMPLE_10_SAMPLES";
+    case D3DMULTISAMPLE_11_SAMPLES: return L"D3DMULTISAMPLE_11_SAMPLES";
+    case D3DMULTISAMPLE_12_SAMPLES: return L"D3DMULTISAMPLE_12_SAMPLES";
+    case D3DMULTISAMPLE_13_SAMPLES: return L"D3DMULTISAMPLE_13_SAMPLES";
+    case D3DMULTISAMPLE_14_SAMPLES: return L"D3DMULTISAMPLE_14_SAMPLES";
+    case D3DMULTISAMPLE_15_SAMPLES: return L"D3DMULTISAMPLE_15_SAMPLES";
+    case D3DMULTISAMPLE_16_SAMPLES: return L"D3DMULTISAMPLE_16_SAMPLES";
+    default:                        return L"Unknown Multisample Type";
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns the string for the given vertex processing type
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTVertexProcessingTypeToString(DWORD vpt)
+{
+    switch (vpt)
+    {
+    case D3DCREATE_SOFTWARE_VERTEXPROCESSING: return L"Software vertex processing";
+    case D3DCREATE_MIXED_VERTEXPROCESSING:    return L"Mixed vertex processing";
+    case D3DCREATE_HARDWARE_VERTEXPROCESSING: return L"Hardware vertex processing";
+    case D3DCREATE_PUREDEVICE:                return L"Pure hardware vertex processing";
+    default:                                  return L"Unknown vertex processing type";
+    }
+}
+
+
+//--------------------------------------------------------------------------------------
+// Returns the string for the given present interval.
+//--------------------------------------------------------------------------------------
+WCHAR* DXUTPresentIntervalToString( UINT pi )
+{
+    switch( pi )
+    {
+    case D3DPRESENT_INTERVAL_IMMEDIATE: return L"D3DPRESENT_INTERVAL_IMMEDIATE";
+    case D3DPRESENT_INTERVAL_DEFAULT:   return L"D3DPRESENT_INTERVAL_DEFAULT";
+    case D3DPRESENT_INTERVAL_ONE:       return L"D3DPRESENT_INTERVAL_ONE";
+    case D3DPRESENT_INTERVAL_TWO:       return L"D3DPRESENT_INTERVAL_TWO";
+    case D3DPRESENT_INTERVAL_THREE:     return L"D3DPRESENT_INTERVAL_THREE";
+    case D3DPRESENT_INTERVAL_FOUR:      return L"D3DPRESENT_INTERVAL_FOUR";
+    default:                            return L"Unknown PresentInterval";
+    }
+}
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTsound.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTsound.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Common/DXUTsound.cpp	(revision 1481)
@@ -0,0 +1,1576 @@
+//-----------------------------------------------------------------------------
+// File: DXUTsound.cpp
+//
+// Desc: DirectSound framework classes for reading and writing wav files and
+//       playing them in DirectSound buffers. Feel free to use this class
+//       as a starting point for adding extra functionality.
+//
+// Copyright (c) Microsoft Corp. All rights reserved.
+//-----------------------------------------------------------------------------
+#define STRICT
+#include "dxstdafx.h"
+#include <mmsystem.h>
+#include <dsound.h>
+#include "DXUTsound.h"
+#undef min // use __min instead
+#undef max // use __max instead
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::CSoundManager()
+// Desc: Constructs the class
+//-----------------------------------------------------------------------------
+CSoundManager::CSoundManager()
+{
+    m_pDS = NULL;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::~CSoundManager()
+// Desc: Destroys the class
+//-----------------------------------------------------------------------------
+CSoundManager::~CSoundManager()
+{
+    SAFE_RELEASE( m_pDS );
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::Initialize()
+// Desc: Initializes the IDirectSound object and also sets the primary buffer
+//       format.  This function must be called before any others.
+//-----------------------------------------------------------------------------
+HRESULT CSoundManager::Initialize( HWND  hWnd,
+                                   DWORD dwCoopLevel )
+{
+    HRESULT             hr;
+
+    SAFE_RELEASE( m_pDS );
+
+    // Create IDirectSound using the primary sound device
+    if( FAILED( hr = DirectSoundCreate8( NULL, &m_pDS, NULL ) ) )
+        return DXUT_ERR( L"DirectSoundCreate8", hr );
+
+    // Set DirectSound coop level
+    if( FAILED( hr = m_pDS->SetCooperativeLevel( hWnd, dwCoopLevel ) ) )
+        return DXUT_ERR( L"SetCooperativeLevel", hr );
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::SetPrimaryBufferFormat()
+// Desc: Set primary buffer to a specified format
+//       !WARNING! - Setting the primary buffer format and then using this
+//                   same DirectSound object for DirectMusic messes up
+//                   DirectMusic!
+//       For example, to set the primary buffer format to 22kHz stereo, 16-bit
+//       then:   dwPrimaryChannels = 2
+//               dwPrimaryFreq     = 22050,
+//               dwPrimaryBitRate  = 16
+//-----------------------------------------------------------------------------
+HRESULT CSoundManager::SetPrimaryBufferFormat( DWORD dwPrimaryChannels,
+                                               DWORD dwPrimaryFreq,
+                                               DWORD dwPrimaryBitRate )
+{
+    HRESULT             hr;
+    LPDIRECTSOUNDBUFFER pDSBPrimary = NULL;
+
+    if( m_pDS == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    // Get the primary buffer
+    DSBUFFERDESC dsbd;
+    ZeroMemory( &dsbd, sizeof(DSBUFFERDESC) );
+    dsbd.dwSize        = sizeof(DSBUFFERDESC);
+    dsbd.dwFlags       = DSBCAPS_PRIMARYBUFFER;
+    dsbd.dwBufferBytes = 0;
+    dsbd.lpwfxFormat   = NULL;
+
+    if( FAILED( hr = m_pDS->CreateSoundBuffer( &dsbd, &pDSBPrimary, NULL ) ) )
+        return DXUT_ERR( L"CreateSoundBuffer", hr );
+
+    WAVEFORMATEX wfx;
+    ZeroMemory( &wfx, sizeof(WAVEFORMATEX) );
+    wfx.wFormatTag      = (WORD) WAVE_FORMAT_PCM;
+    wfx.nChannels       = (WORD) dwPrimaryChannels;
+    wfx.nSamplesPerSec  = (DWORD) dwPrimaryFreq;
+    wfx.wBitsPerSample  = (WORD) dwPrimaryBitRate;
+    wfx.nBlockAlign     = (WORD) (wfx.wBitsPerSample / 8 * wfx.nChannels);
+    wfx.nAvgBytesPerSec = (DWORD) (wfx.nSamplesPerSec * wfx.nBlockAlign);
+
+    if( FAILED( hr = pDSBPrimary->SetFormat(&wfx) ) )
+        return DXUT_ERR( L"SetFormat", hr );
+
+    SAFE_RELEASE( pDSBPrimary );
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::Get3DListenerInterface()
+// Desc: Returns the 3D listener interface associated with primary buffer.
+//-----------------------------------------------------------------------------
+HRESULT CSoundManager::Get3DListenerInterface( LPDIRECTSOUND3DLISTENER* ppDSListener )
+{
+    HRESULT             hr;
+    DSBUFFERDESC        dsbdesc;
+    LPDIRECTSOUNDBUFFER pDSBPrimary = NULL;
+
+    if( ppDSListener == NULL )
+        return E_INVALIDARG;
+    if( m_pDS == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    *ppDSListener = NULL;
+
+    // Obtain primary buffer, asking it for 3D control
+    ZeroMemory( &dsbdesc, sizeof(DSBUFFERDESC) );
+    dsbdesc.dwSize = sizeof(DSBUFFERDESC);
+    dsbdesc.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_PRIMARYBUFFER;
+    if( FAILED( hr = m_pDS->CreateSoundBuffer( &dsbdesc, &pDSBPrimary, NULL ) ) )
+        return DXUT_ERR( L"CreateSoundBuffer", hr );
+
+    if( FAILED( hr = pDSBPrimary->QueryInterface( IID_IDirectSound3DListener,
+                                                  (VOID**)ppDSListener ) ) )
+    {
+        SAFE_RELEASE( pDSBPrimary );
+        return DXUT_ERR( L"QueryInterface", hr );
+    }
+
+    // Release the primary buffer, since it is not need anymore
+    SAFE_RELEASE( pDSBPrimary );
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::Create()
+// Desc:
+//-----------------------------------------------------------------------------
+HRESULT CSoundManager::Create( CSound** ppSound,
+                               LPWSTR strWaveFileName,
+                               DWORD dwCreationFlags,
+                               GUID guid3DAlgorithm,
+                               DWORD dwNumBuffers )
+{
+    HRESULT hr;
+    HRESULT hrRet = S_OK;
+    DWORD   i;
+    LPDIRECTSOUNDBUFFER* apDSBuffer     = NULL;
+    DWORD                dwDSBufferSize = NULL;
+    CWaveFile*           pWaveFile      = NULL;
+
+    if( m_pDS == NULL )
+        return CO_E_NOTINITIALIZED;
+    if( strWaveFileName == NULL || ppSound == NULL || dwNumBuffers < 1 )
+        return E_INVALIDARG;
+
+    apDSBuffer = new LPDIRECTSOUNDBUFFER[dwNumBuffers];
+    if( apDSBuffer == NULL )
+    {
+        hr = E_OUTOFMEMORY;
+        goto LFail;
+    }
+
+    pWaveFile = new CWaveFile();
+    if( pWaveFile == NULL )
+    {
+        hr = E_OUTOFMEMORY;
+        goto LFail;
+    }
+
+    pWaveFile->Open( strWaveFileName, NULL, WAVEFILE_READ );
+
+    if( pWaveFile->GetSize() == 0 )
+    {
+        // Wave is blank, so don't create it.
+        hr = E_FAIL;
+        goto LFail;
+    }
+
+    // Make the DirectSound buffer the same size as the wav file
+    dwDSBufferSize = pWaveFile->GetSize();
+
+    // Create the direct sound buffer, and only request the flags needed
+    // since each requires some overhead and limits if the buffer can
+    // be hardware accelerated
+    DSBUFFERDESC dsbd;
+    ZeroMemory( &dsbd, sizeof(DSBUFFERDESC) );
+    dsbd.dwSize          = sizeof(DSBUFFERDESC);
+    dsbd.dwFlags         = dwCreationFlags;
+    dsbd.dwBufferBytes   = dwDSBufferSize;
+    dsbd.guid3DAlgorithm = guid3DAlgorithm;
+    dsbd.lpwfxFormat     = pWaveFile->m_pwfx;
+
+    // DirectSound is only guarenteed to play PCM data.  Other
+    // formats may or may not work depending the sound card driver.
+    hr = m_pDS->CreateSoundBuffer( &dsbd, &apDSBuffer[0], NULL );
+
+    // Be sure to return this error code if it occurs so the
+    // callers knows this happened.
+    if( hr == DS_NO_VIRTUALIZATION )
+        hrRet = DS_NO_VIRTUALIZATION;
+
+    if( FAILED(hr) )
+    {
+        // DSERR_BUFFERTOOSMALL will be returned if the buffer is
+        // less than DSBSIZE_FX_MIN and the buffer is created
+        // with DSBCAPS_CTRLFX.
+
+        // It might also fail if hardware buffer mixing was requested
+        // on a device that doesn't support it.
+        DXUT_ERR( L"CreateSoundBuffer", hr );
+
+        goto LFail;
+    }
+
+    // Default to use DuplicateSoundBuffer() when created extra buffers since always
+    // create a buffer that uses the same memory however DuplicateSoundBuffer() will fail if
+    // DSBCAPS_CTRLFX is used, so use CreateSoundBuffer() instead in this case.
+    if( (dwCreationFlags & DSBCAPS_CTRLFX) == 0 )
+    {
+        for( i=1; i<dwNumBuffers; i++ )
+        {
+            if( FAILED( hr = m_pDS->DuplicateSoundBuffer( apDSBuffer[0], &apDSBuffer[i] ) ) )
+            {
+                DXUT_ERR( L"DuplicateSoundBuffer", hr );
+                goto LFail;
+            }
+        }
+    }
+    else
+    {
+        for( i=1; i<dwNumBuffers; i++ )
+        {
+            hr = m_pDS->CreateSoundBuffer( &dsbd, &apDSBuffer[i], NULL );
+            if( FAILED(hr) )
+            {
+                DXUT_ERR( L"CreateSoundBuffer", hr );
+                goto LFail;
+            }
+        }
+   }
+
+    // Create the sound
+    *ppSound = new CSound( apDSBuffer, dwDSBufferSize, dwNumBuffers, pWaveFile, dwCreationFlags );
+
+    SAFE_DELETE_ARRAY( apDSBuffer );
+    return hrRet;
+
+LFail:
+    // Cleanup
+    SAFE_DELETE( pWaveFile );
+    SAFE_DELETE_ARRAY( apDSBuffer );
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::CreateFromMemory()
+// Desc:
+//-----------------------------------------------------------------------------
+HRESULT CSoundManager::CreateFromMemory( CSound** ppSound,
+                                        BYTE* pbData,
+                                        ULONG  ulDataSize,
+                                        LPWAVEFORMATEX pwfx,
+                                        DWORD dwCreationFlags,
+                                        GUID guid3DAlgorithm,
+                                        DWORD dwNumBuffers )
+{
+    HRESULT hr;
+    DWORD   i;
+    LPDIRECTSOUNDBUFFER* apDSBuffer     = NULL;
+    DWORD                dwDSBufferSize = NULL;
+    CWaveFile*           pWaveFile      = NULL;
+
+    if( m_pDS == NULL )
+        return CO_E_NOTINITIALIZED;
+    if( pbData == NULL || ppSound == NULL || dwNumBuffers < 1 )
+        return E_INVALIDARG;
+
+    apDSBuffer = new LPDIRECTSOUNDBUFFER[dwNumBuffers];
+    if( apDSBuffer == NULL )
+    {
+        hr = E_OUTOFMEMORY;
+        goto LFail;
+    }
+
+    pWaveFile = new CWaveFile();
+    if( pWaveFile == NULL )
+    {
+        hr = E_OUTOFMEMORY;
+        goto LFail;
+    }
+
+    pWaveFile->OpenFromMemory( pbData,ulDataSize, pwfx, WAVEFILE_READ );
+
+
+    // Make the DirectSound buffer the same size as the wav file
+    dwDSBufferSize = ulDataSize;
+
+    // Create the direct sound buffer, and only request the flags needed
+    // since each requires some overhead and limits if the buffer can
+    // be hardware accelerated
+    DSBUFFERDESC dsbd;
+    ZeroMemory( &dsbd, sizeof(DSBUFFERDESC) );
+    dsbd.dwSize          = sizeof(DSBUFFERDESC);
+    dsbd.dwFlags         = dwCreationFlags;
+    dsbd.dwBufferBytes   = dwDSBufferSize;
+    dsbd.guid3DAlgorithm = guid3DAlgorithm;
+    dsbd.lpwfxFormat     = pwfx;
+
+    if( FAILED( hr = m_pDS->CreateSoundBuffer( &dsbd, &apDSBuffer[0], NULL ) ) )
+    {
+        DXUT_ERR( L"CreateSoundBuffer", hr );
+        goto LFail;
+    }
+
+    // Default to use DuplicateSoundBuffer() when created extra buffers since always
+    // create a buffer that uses the same memory however DuplicateSoundBuffer() will fail if
+    // DSBCAPS_CTRLFX is used, so use CreateSoundBuffer() instead in this case.
+    if( (dwCreationFlags & DSBCAPS_CTRLFX) == 0 )
+    {
+        for( i=1; i<dwNumBuffers; i++ )
+        {
+            if( FAILED( hr = m_pDS->DuplicateSoundBuffer( apDSBuffer[0], &apDSBuffer[i] ) ) )
+            {
+                DXUT_ERR( L"DuplicateSoundBuffer", hr );
+                goto LFail;
+            }
+        }
+    }
+    else
+    {
+        for( i=1; i<dwNumBuffers; i++ )
+        {
+            hr = m_pDS->CreateSoundBuffer( &dsbd, &apDSBuffer[i], NULL );
+            if( FAILED(hr) )
+            {
+                DXUT_ERR( L"CreateSoundBuffer", hr );
+                goto LFail;
+            }
+        }
+   }
+
+    // Create the sound
+    *ppSound = new CSound( apDSBuffer, dwDSBufferSize, dwNumBuffers, pWaveFile, dwCreationFlags );
+
+    SAFE_DELETE_ARRAY( apDSBuffer );
+    return S_OK;
+
+LFail:
+    // Cleanup
+
+    SAFE_DELETE_ARRAY( apDSBuffer );
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSoundManager::CreateStreaming()
+// Desc:
+//-----------------------------------------------------------------------------
+HRESULT CSoundManager::CreateStreaming( CStreamingSound** ppStreamingSound,
+                                        LPWSTR strWaveFileName,
+                                        DWORD dwCreationFlags,
+                                        GUID guid3DAlgorithm,
+                                        DWORD dwNotifyCount,
+                                        DWORD dwNotifySize,
+                                        HANDLE hNotifyEvent )
+{
+    HRESULT hr;
+
+    if( m_pDS == NULL )
+        return CO_E_NOTINITIALIZED;
+    if( strWaveFileName == NULL || ppStreamingSound == NULL || hNotifyEvent == NULL )
+        return E_INVALIDARG;
+
+    LPDIRECTSOUNDBUFFER pDSBuffer      = NULL;
+    DWORD               dwDSBufferSize = NULL;
+    CWaveFile*          pWaveFile      = NULL;
+    DSBPOSITIONNOTIFY*  aPosNotify     = NULL;
+    LPDIRECTSOUNDNOTIFY pDSNotify      = NULL;
+
+    pWaveFile = new CWaveFile();
+    if( pWaveFile == NULL )
+        return E_OUTOFMEMORY;
+    pWaveFile->Open( strWaveFileName, NULL, WAVEFILE_READ );
+
+    // Figure out how big the DirectSound buffer should be
+    dwDSBufferSize = dwNotifySize * dwNotifyCount;
+
+    // Set up the direct sound buffer.  Request the NOTIFY flag, so
+    // that we are notified as the sound buffer plays.  Note, that using this flag
+    // may limit the amount of hardware acceleration that can occur.
+    DSBUFFERDESC dsbd;
+    ZeroMemory( &dsbd, sizeof(DSBUFFERDESC) );
+    dsbd.dwSize          = sizeof(DSBUFFERDESC);
+    dsbd.dwFlags         = dwCreationFlags |
+                           DSBCAPS_CTRLPOSITIONNOTIFY |
+                           DSBCAPS_GETCURRENTPOSITION2;
+    dsbd.dwBufferBytes   = dwDSBufferSize;
+    dsbd.guid3DAlgorithm = guid3DAlgorithm;
+    dsbd.lpwfxFormat     = pWaveFile->m_pwfx;
+
+    if( FAILED( hr = m_pDS->CreateSoundBuffer( &dsbd, &pDSBuffer, NULL ) ) )
+    {
+        // If wave format isn't then it will return
+        // either DSERR_BADFORMAT or E_INVALIDARG
+        if( hr == DSERR_BADFORMAT || hr == E_INVALIDARG )
+            return DXUT_ERR( L"CreateSoundBuffer", hr );
+
+        return DXUT_ERR( L"CreateSoundBuffer", hr );
+    }
+
+    // Create the notification events, so that we know when to fill
+    // the buffer as the sound plays.
+    if( FAILED( hr = pDSBuffer->QueryInterface( IID_IDirectSoundNotify,
+                                                (VOID**)&pDSNotify ) ) )
+    {
+        SAFE_DELETE_ARRAY( aPosNotify );
+        return DXUT_ERR( L"QueryInterface", hr );
+    }
+
+    aPosNotify = new DSBPOSITIONNOTIFY[ dwNotifyCount ];
+    if( aPosNotify == NULL )
+        return E_OUTOFMEMORY;
+
+    for( DWORD i = 0; i < dwNotifyCount; i++ )
+    {
+        aPosNotify[i].dwOffset     = (dwNotifySize * i) + dwNotifySize - 1;
+        aPosNotify[i].hEventNotify = hNotifyEvent;
+    }
+
+    // Tell DirectSound when to notify us. The notification will come in the from
+    // of signaled events that are handled in WinMain()
+    if( FAILED( hr = pDSNotify->SetNotificationPositions( dwNotifyCount,
+                                                          aPosNotify ) ) )
+    {
+        SAFE_RELEASE( pDSNotify );
+        SAFE_DELETE_ARRAY( aPosNotify );
+        return DXUT_ERR( L"SetNotificationPositions", hr );
+    }
+
+    SAFE_RELEASE( pDSNotify );
+    SAFE_DELETE_ARRAY( aPosNotify );
+
+    // Create the sound
+    *ppStreamingSound = new CStreamingSound( pDSBuffer, dwDSBufferSize, pWaveFile, dwNotifySize );
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::CSound()
+// Desc: Constructs the class
+//-----------------------------------------------------------------------------
+CSound::CSound( LPDIRECTSOUNDBUFFER* apDSBuffer, DWORD dwDSBufferSize,
+                DWORD dwNumBuffers, CWaveFile* pWaveFile, DWORD dwCreationFlags )
+{
+    DWORD i;
+
+    if( dwNumBuffers <= 0 )
+        return;
+
+    m_apDSBuffer = new LPDIRECTSOUNDBUFFER[dwNumBuffers];
+    if( NULL != m_apDSBuffer )
+    {
+        for( i=0; i<dwNumBuffers; i++ )
+            m_apDSBuffer[i] = apDSBuffer[i];
+
+        m_dwDSBufferSize = dwDSBufferSize;
+        m_dwNumBuffers   = dwNumBuffers;
+        m_pWaveFile      = pWaveFile;
+        m_dwCreationFlags = dwCreationFlags;
+
+        FillBufferWithSound( m_apDSBuffer[0], FALSE );
+    }
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::~CSound()
+// Desc: Destroys the class
+//-----------------------------------------------------------------------------
+CSound::~CSound()
+{
+    for( DWORD i=0; i<m_dwNumBuffers; i++ )
+    {
+        SAFE_RELEASE( m_apDSBuffer[i] );
+    }
+
+    SAFE_DELETE_ARRAY( m_apDSBuffer );
+    SAFE_DELETE( m_pWaveFile );
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::FillBufferWithSound()
+// Desc: Fills a DirectSound buffer with a sound file
+//-----------------------------------------------------------------------------
+HRESULT CSound::FillBufferWithSound( LPDIRECTSOUNDBUFFER pDSB, BOOL bRepeatWavIfBufferLarger )
+{
+    HRESULT hr;
+    VOID*   pDSLockedBuffer      = NULL; // Pointer to locked buffer memory
+    DWORD   dwDSLockedBufferSize = 0;    // Size of the locked DirectSound buffer
+    DWORD   dwWavDataRead        = 0;    // Amount of data read from the wav file
+
+    if( pDSB == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    // Make sure we have focus, and we didn't just switch in from
+    // an app which had a DirectSound device
+    if( FAILED( hr = RestoreBuffer( pDSB, NULL ) ) )
+        return DXUT_ERR( L"RestoreBuffer", hr );
+
+    // Lock the buffer down
+    if( FAILED( hr = pDSB->Lock( 0, m_dwDSBufferSize,
+                                 &pDSLockedBuffer, &dwDSLockedBufferSize,
+                                 NULL, NULL, 0L ) ) )
+        return DXUT_ERR( L"Lock", hr );
+
+    // Reset the wave file to the beginning
+    m_pWaveFile->ResetFile();
+
+    if( FAILED( hr = m_pWaveFile->Read( (BYTE*) pDSLockedBuffer,
+                                        dwDSLockedBufferSize,
+                                        &dwWavDataRead ) ) )
+        return DXUT_ERR( L"Read", hr );
+
+    if( dwWavDataRead == 0 )
+    {
+        // Wav is blank, so just fill with silence
+        FillMemory( (BYTE*) pDSLockedBuffer,
+                    dwDSLockedBufferSize,
+                    (BYTE)(m_pWaveFile->m_pwfx->wBitsPerSample == 8 ? 128 : 0 ) );
+    }
+    else if( dwWavDataRead < dwDSLockedBufferSize )
+    {
+        // If the wav file was smaller than the DirectSound buffer,
+        // we need to fill the remainder of the buffer with data
+        if( bRepeatWavIfBufferLarger )
+        {
+            // Reset the file and fill the buffer with wav data
+            DWORD dwReadSoFar = dwWavDataRead;    // From previous call above.
+            while( dwReadSoFar < dwDSLockedBufferSize )
+            {
+                // This will keep reading in until the buffer is full
+                // for very short files
+                if( FAILED( hr = m_pWaveFile->ResetFile() ) )
+                    return DXUT_ERR( L"ResetFile", hr );
+
+                hr = m_pWaveFile->Read( (BYTE*)pDSLockedBuffer + dwReadSoFar,
+                                        dwDSLockedBufferSize - dwReadSoFar,
+                                        &dwWavDataRead );
+                if( FAILED(hr) )
+                    return DXUT_ERR( L"Read", hr );
+
+                dwReadSoFar += dwWavDataRead;
+            }
+        }
+        else
+        {
+            // Don't repeat the wav file, just fill in silence
+            FillMemory( (BYTE*) pDSLockedBuffer + dwWavDataRead,
+                        dwDSLockedBufferSize - dwWavDataRead,
+                        (BYTE)(m_pWaveFile->m_pwfx->wBitsPerSample == 8 ? 128 : 0 ) );
+        }
+    }
+
+    // Unlock the buffer, we don't need it anymore.
+    pDSB->Unlock( pDSLockedBuffer, dwDSLockedBufferSize, NULL, 0 );
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::RestoreBuffer()
+// Desc: Restores the lost buffer. *pbWasRestored returns TRUE if the buffer was
+//       restored.  It can also NULL if the information is not needed.
+//-----------------------------------------------------------------------------
+HRESULT CSound::RestoreBuffer( LPDIRECTSOUNDBUFFER pDSB, BOOL* pbWasRestored )
+{
+    HRESULT hr;
+
+    if( pDSB == NULL )
+        return CO_E_NOTINITIALIZED;
+    if( pbWasRestored )
+        *pbWasRestored = FALSE;
+
+    DWORD dwStatus;
+    if( FAILED( hr = pDSB->GetStatus( &dwStatus ) ) )
+        return DXUT_ERR( L"GetStatus", hr );
+
+    if( dwStatus & DSBSTATUS_BUFFERLOST )
+    {
+        // Since the app could have just been activated, then
+        // DirectSound may not be giving us control yet, so
+        // the restoring the buffer may fail.
+        // If it does, sleep until DirectSound gives us control.
+        do
+        {
+            hr = pDSB->Restore();
+            if( hr == DSERR_BUFFERLOST )
+                Sleep( 10 );
+        }
+        while( ( hr = pDSB->Restore() ) == DSERR_BUFFERLOST );
+
+        if( pbWasRestored != NULL )
+            *pbWasRestored = TRUE;
+
+        return S_OK;
+    }
+    else
+    {
+        return S_FALSE;
+    }
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::GetFreeBuffer()
+// Desc: Finding the first buffer that is not playing and return a pointer to
+//       it, or if all are playing return a pointer to a randomly selected buffer.
+//-----------------------------------------------------------------------------
+LPDIRECTSOUNDBUFFER CSound::GetFreeBuffer()
+{
+    if( m_apDSBuffer == NULL )
+        return FALSE;
+
+	DWORD i;
+    for( i=0; i<m_dwNumBuffers; i++ )
+    {
+        if( m_apDSBuffer[i] )
+        {
+            DWORD dwStatus = 0;
+            m_apDSBuffer[i]->GetStatus( &dwStatus );
+            if ( ( dwStatus & DSBSTATUS_PLAYING ) == 0 )
+                break;
+        }
+    }
+
+    if( i != m_dwNumBuffers )
+        return m_apDSBuffer[ i ];
+    else
+        return m_apDSBuffer[ rand() % m_dwNumBuffers ];
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::GetBuffer()
+// Desc:
+//-----------------------------------------------------------------------------
+LPDIRECTSOUNDBUFFER CSound::GetBuffer( DWORD dwIndex )
+{
+    if( m_apDSBuffer == NULL )
+        return NULL;
+    if( dwIndex >= m_dwNumBuffers )
+        return NULL;
+
+    return m_apDSBuffer[dwIndex];
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::Get3DBufferInterface()
+// Desc:
+//-----------------------------------------------------------------------------
+HRESULT CSound::Get3DBufferInterface( DWORD dwIndex, LPDIRECTSOUND3DBUFFER* ppDS3DBuffer )
+{
+    if( m_apDSBuffer == NULL )
+        return CO_E_NOTINITIALIZED;
+    if( dwIndex >= m_dwNumBuffers )
+        return E_INVALIDARG;
+
+    *ppDS3DBuffer = NULL;
+
+    return m_apDSBuffer[dwIndex]->QueryInterface( IID_IDirectSound3DBuffer,
+                                                  (VOID**)ppDS3DBuffer );
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::Play()
+// Desc: Plays the sound using voice management flags.  Pass in DSBPLAY_LOOPING
+//       in the dwFlags to loop the sound
+//-----------------------------------------------------------------------------
+HRESULT CSound::Play( DWORD dwPriority, DWORD dwFlags, LONG lVolume, LONG lFrequency, LONG lPan )
+{
+    HRESULT hr;
+    BOOL    bRestored;
+
+    if( m_apDSBuffer == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    LPDIRECTSOUNDBUFFER pDSB = GetFreeBuffer();
+
+    if( pDSB == NULL )
+        return DXUT_ERR( L"GetFreeBuffer", E_FAIL );
+
+    // Restore the buffer if it was lost
+    if( FAILED( hr = RestoreBuffer( pDSB, &bRestored ) ) )
+        return DXUT_ERR( L"RestoreBuffer", hr );
+
+    if( bRestored )
+    {
+        // The buffer was restored, so we need to fill it with new data
+        if( FAILED( hr = FillBufferWithSound( pDSB, FALSE ) ) )
+            return DXUT_ERR( L"FillBufferWithSound", hr );
+    }
+
+    if( m_dwCreationFlags & DSBCAPS_CTRLVOLUME )
+    {
+        pDSB->SetVolume( lVolume );
+    }
+
+    if( lFrequency != -1 &&
+        (m_dwCreationFlags & DSBCAPS_CTRLFREQUENCY) )
+    {
+        pDSB->SetFrequency( lFrequency );
+    }
+
+    if( m_dwCreationFlags & DSBCAPS_CTRLPAN )
+    {
+        pDSB->SetPan( lPan );
+    }
+
+    return pDSB->Play( 0, dwPriority, dwFlags );
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::Play3D()
+// Desc: Plays the sound using voice management flags.  Pass in DSBPLAY_LOOPING
+//       in the dwFlags to loop the sound
+//-----------------------------------------------------------------------------
+HRESULT CSound::Play3D( LPDS3DBUFFER p3DBuffer, DWORD dwPriority, DWORD dwFlags, LONG lFrequency )
+{
+    HRESULT hr;
+    BOOL    bRestored;
+    DWORD   dwBaseFrequency;
+
+    if( m_apDSBuffer == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    LPDIRECTSOUNDBUFFER pDSB = GetFreeBuffer();
+    if( pDSB == NULL )
+        return DXUT_ERR( L"GetFreeBuffer", E_FAIL );
+
+    // Restore the buffer if it was lost
+    if( FAILED( hr = RestoreBuffer( pDSB, &bRestored ) ) )
+        return DXUT_ERR( L"RestoreBuffer", hr );
+
+    if( bRestored )
+    {
+        // The buffer was restored, so we need to fill it with new data
+        if( FAILED( hr = FillBufferWithSound( pDSB, FALSE ) ) )
+            return DXUT_ERR( L"FillBufferWithSound", hr );
+    }
+
+    if( m_dwCreationFlags & DSBCAPS_CTRLFREQUENCY )
+    {
+        pDSB->GetFrequency( &dwBaseFrequency );
+        pDSB->SetFrequency( dwBaseFrequency + lFrequency );
+    }
+
+    // QI for the 3D buffer
+    LPDIRECTSOUND3DBUFFER pDS3DBuffer;
+    hr = pDSB->QueryInterface( IID_IDirectSound3DBuffer, (VOID**) &pDS3DBuffer );
+    if( SUCCEEDED( hr ) )
+    {
+        hr = pDS3DBuffer->SetAllParameters( p3DBuffer, DS3D_IMMEDIATE );
+        if( SUCCEEDED( hr ) )
+        {
+            hr = pDSB->Play( 0, dwPriority, dwFlags );
+        }
+
+        pDS3DBuffer->Release();
+    }
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::Stop()
+// Desc: Stops the sound from playing
+//-----------------------------------------------------------------------------
+HRESULT CSound::Stop()
+{
+    if( m_apDSBuffer == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    HRESULT hr = 0;
+
+    for( DWORD i=0; i<m_dwNumBuffers; i++ )
+        hr |= m_apDSBuffer[i]->Stop();
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::Reset()
+// Desc: Reset all of the sound buffers
+//-----------------------------------------------------------------------------
+HRESULT CSound::Reset()
+{
+    if( m_apDSBuffer == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    HRESULT hr = 0;
+
+    for( DWORD i=0; i<m_dwNumBuffers; i++ )
+        hr |= m_apDSBuffer[i]->SetCurrentPosition( 0 );
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CSound::IsSoundPlaying()
+// Desc: Checks to see if a buffer is playing and returns TRUE if it is.
+//-----------------------------------------------------------------------------
+BOOL CSound::IsSoundPlaying()
+{
+    BOOL bIsPlaying = FALSE;
+
+    if( m_apDSBuffer == NULL )
+        return FALSE;
+
+    for( DWORD i=0; i<m_dwNumBuffers; i++ )
+    {
+        if( m_apDSBuffer[i] )
+        {
+            DWORD dwStatus = 0;
+            m_apDSBuffer[i]->GetStatus( &dwStatus );
+            bIsPlaying |= ( ( dwStatus & DSBSTATUS_PLAYING ) != 0 );
+        }
+    }
+
+    return bIsPlaying;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CStreamingSound::CStreamingSound()
+// Desc: Setups up a buffer so data can be streamed from the wave file into
+//       a buffer.  This is very useful for large wav files that would take a
+//       while to load.  The buffer is initially filled with data, then
+//       as sound is played the notification events are signaled and more data
+//       is written into the buffer by calling HandleWaveStreamNotification()
+//-----------------------------------------------------------------------------
+CStreamingSound::CStreamingSound( LPDIRECTSOUNDBUFFER pDSBuffer, DWORD dwDSBufferSize,
+                                  CWaveFile* pWaveFile, DWORD dwNotifySize )
+                : CSound( &pDSBuffer, dwDSBufferSize, 1, pWaveFile, 0 )
+{
+    m_dwLastPlayPos     = 0;
+    m_dwPlayProgress    = 0;
+    m_dwNotifySize      = dwNotifySize;
+    m_dwNextWriteOffset = 0;
+    m_bFillNextNotificationWithSilence = FALSE;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CStreamingSound::~CStreamingSound()
+// Desc: Destroys the class
+//-----------------------------------------------------------------------------
+CStreamingSound::~CStreamingSound()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CStreamingSound::HandleWaveStreamNotification()
+// Desc: Handle the notification that tells us to put more wav data in the
+//       circular buffer
+//-----------------------------------------------------------------------------
+HRESULT CStreamingSound::HandleWaveStreamNotification( BOOL bLoopedPlay )
+{
+    HRESULT hr;
+    DWORD   dwCurrentPlayPos;
+    DWORD   dwPlayDelta;
+    DWORD   dwBytesWrittenToBuffer;
+    VOID*   pDSLockedBuffer = NULL;
+    VOID*   pDSLockedBuffer2 = NULL;
+    DWORD   dwDSLockedBufferSize;
+    DWORD   dwDSLockedBufferSize2;
+
+    if( m_apDSBuffer == NULL || m_pWaveFile == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    // Restore the buffer if it was lost
+    BOOL bRestored;
+    if( FAILED( hr = RestoreBuffer( m_apDSBuffer[0], &bRestored ) ) )
+        return DXUT_ERR( L"RestoreBuffer", hr );
+
+    if( bRestored )
+    {
+        // The buffer was restored, so we need to fill it with new data
+        if( FAILED( hr = FillBufferWithSound( m_apDSBuffer[0], FALSE ) ) )
+            return DXUT_ERR( L"FillBufferWithSound", hr );
+        return S_OK;
+    }
+
+    // Lock the DirectSound buffer
+    if( FAILED( hr = m_apDSBuffer[0]->Lock( m_dwNextWriteOffset, m_dwNotifySize,
+                                            &pDSLockedBuffer, &dwDSLockedBufferSize,
+                                            &pDSLockedBuffer2, &dwDSLockedBufferSize2, 0L ) ) )
+        return DXUT_ERR( L"Lock", hr );
+
+    // m_dwDSBufferSize and m_dwNextWriteOffset are both multiples of m_dwNotifySize,
+    // it should the second buffer, so it should never be valid
+    if( pDSLockedBuffer2 != NULL )
+        return E_UNEXPECTED;
+
+    if( !m_bFillNextNotificationWithSilence )
+    {
+        // Fill the DirectSound buffer with wav data
+        if( FAILED( hr = m_pWaveFile->Read( (BYTE*) pDSLockedBuffer,
+                                                  dwDSLockedBufferSize,
+                                                  &dwBytesWrittenToBuffer ) ) )
+            return DXUT_ERR( L"Read", hr );
+    }
+    else
+    {
+        // Fill the DirectSound buffer with silence
+        FillMemory( pDSLockedBuffer, dwDSLockedBufferSize,
+                    (BYTE)( m_pWaveFile->m_pwfx->wBitsPerSample == 8 ? 128 : 0 ) );
+        dwBytesWrittenToBuffer = dwDSLockedBufferSize;
+    }
+
+    // If the number of bytes written is less than the
+    // amount we requested, we have a short file.
+    if( dwBytesWrittenToBuffer < dwDSLockedBufferSize )
+    {
+        if( !bLoopedPlay )
+        {
+            // Fill in silence for the rest of the buffer.
+            FillMemory( (BYTE*) pDSLockedBuffer + dwBytesWrittenToBuffer,
+                        dwDSLockedBufferSize - dwBytesWrittenToBuffer,
+                        (BYTE)(m_pWaveFile->m_pwfx->wBitsPerSample == 8 ? 128 : 0 ) );
+
+            // Any future notifications should just fill the buffer with silence
+            m_bFillNextNotificationWithSilence = TRUE;
+        }
+        else
+        {
+            // We are looping, so reset the file and fill the buffer with wav data
+            DWORD dwReadSoFar = dwBytesWrittenToBuffer;    // From previous call above.
+            while( dwReadSoFar < dwDSLockedBufferSize )
+            {
+                // This will keep reading in until the buffer is full (for very short files).
+                if( FAILED( hr = m_pWaveFile->ResetFile() ) )
+                    return DXUT_ERR( L"ResetFile", hr );
+
+                if( FAILED( hr = m_pWaveFile->Read( (BYTE*)pDSLockedBuffer + dwReadSoFar,
+                                                          dwDSLockedBufferSize - dwReadSoFar,
+                                                          &dwBytesWrittenToBuffer ) ) )
+                    return DXUT_ERR( L"Read", hr );
+
+                dwReadSoFar += dwBytesWrittenToBuffer;
+            }
+        }
+    }
+
+    // Unlock the DirectSound buffer
+    m_apDSBuffer[0]->Unlock( pDSLockedBuffer, dwDSLockedBufferSize, NULL, 0 );
+
+    // Figure out how much data has been played so far.  When we have played
+    // past the end of the file, we will either need to start filling the
+    // buffer with silence or starting reading from the beginning of the file,
+    // depending if the user wants to loop the sound
+    if( FAILED( hr = m_apDSBuffer[0]->GetCurrentPosition( &dwCurrentPlayPos, NULL ) ) )
+        return DXUT_ERR( L"GetCurrentPosition", hr );
+
+    // Check to see if the position counter looped
+    if( dwCurrentPlayPos < m_dwLastPlayPos )
+        dwPlayDelta = ( m_dwDSBufferSize - m_dwLastPlayPos ) + dwCurrentPlayPos;
+    else
+        dwPlayDelta = dwCurrentPlayPos - m_dwLastPlayPos;
+
+    m_dwPlayProgress += dwPlayDelta;
+    m_dwLastPlayPos = dwCurrentPlayPos;
+
+    // If we are now filling the buffer with silence, then we have found the end so
+    // check to see if the entire sound has played, if it has then stop the buffer.
+    if( m_bFillNextNotificationWithSilence )
+    {
+        // We don't want to cut off the sound before it's done playing.
+        if( m_dwPlayProgress >= m_pWaveFile->GetSize() )
+        {
+            m_apDSBuffer[0]->Stop();
+        }
+    }
+
+    // Update where the buffer will lock (for next time)
+    m_dwNextWriteOffset += dwDSLockedBufferSize;
+    m_dwNextWriteOffset %= m_dwDSBufferSize; // Circular buffer
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CStreamingSound::Reset()
+// Desc: Resets the sound so it will begin playing at the beginning
+//-----------------------------------------------------------------------------
+HRESULT CStreamingSound::Reset()
+{
+    HRESULT hr;
+
+    if( m_apDSBuffer[0] == NULL || m_pWaveFile == NULL )
+        return CO_E_NOTINITIALIZED;
+
+    m_dwLastPlayPos     = 0;
+    m_dwPlayProgress    = 0;
+    m_dwNextWriteOffset = 0;
+    m_bFillNextNotificationWithSilence = FALSE;
+
+    // Restore the buffer if it was lost
+    BOOL bRestored;
+    if( FAILED( hr = RestoreBuffer( m_apDSBuffer[0], &bRestored ) ) )
+        return DXUT_ERR( L"RestoreBuffer", hr );
+
+    if( bRestored )
+    {
+        // The buffer was restored, so we need to fill it with new data
+        if( FAILED( hr = FillBufferWithSound( m_apDSBuffer[0], FALSE ) ) )
+            return DXUT_ERR( L"FillBufferWithSound", hr );
+    }
+
+    m_pWaveFile->ResetFile();
+
+    return m_apDSBuffer[0]->SetCurrentPosition( 0L );
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::CWaveFile()
+// Desc: Constructs the class.  Call Open() to open a wave file for reading.
+//       Then call Read() as needed.  Calling the destructor or Close()
+//       will close the file.
+//-----------------------------------------------------------------------------
+CWaveFile::CWaveFile()
+{
+    m_pwfx    = NULL;
+    m_hmmio   = NULL;
+    m_pResourceBuffer = NULL;
+    m_dwSize  = 0;
+    m_bIsReadingFromMemory = FALSE;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::~CWaveFile()
+// Desc: Destructs the class
+//-----------------------------------------------------------------------------
+CWaveFile::~CWaveFile()
+{
+    Close();
+
+    if( !m_bIsReadingFromMemory )
+        SAFE_DELETE_ARRAY( m_pwfx );
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::Open()
+// Desc: Opens a wave file for reading
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::Open( LPWSTR strFileName, WAVEFORMATEX* pwfx, DWORD dwFlags )
+{
+    HRESULT hr;
+
+    m_dwFlags = dwFlags;
+    m_bIsReadingFromMemory = FALSE;
+
+    if( m_dwFlags == WAVEFILE_READ )
+    {
+        if( strFileName == NULL )
+            return E_INVALIDARG;
+        SAFE_DELETE_ARRAY( m_pwfx );
+
+        m_hmmio = mmioOpen( strFileName, NULL, MMIO_ALLOCBUF | MMIO_READ );
+
+        if( NULL == m_hmmio )
+        {
+            HRSRC   hResInfo;
+            HGLOBAL hResData;
+            DWORD   dwSize;
+            VOID*   pvRes;
+
+            // Loading it as a file failed, so try it as a resource
+            if( NULL == ( hResInfo = FindResource( NULL, strFileName, L"WAVE" ) ) )
+            {
+                if( NULL == ( hResInfo = FindResource( NULL, strFileName, L"WAV" ) ) )
+                    return DXUT_ERR( L"FindResource", E_FAIL );
+            }
+
+            if( NULL == ( hResData = LoadResource( GetModuleHandle(NULL), hResInfo ) ) )
+                return DXUT_ERR( L"LoadResource", E_FAIL );
+
+            if( 0 == ( dwSize = SizeofResource( GetModuleHandle(NULL), hResInfo ) ) )
+                return DXUT_ERR( L"SizeofResource", E_FAIL );
+
+            if( NULL == ( pvRes = LockResource( hResData ) ) )
+                return DXUT_ERR( L"LockResource", E_FAIL );
+
+            m_pResourceBuffer = new CHAR[ dwSize ];
+            if( m_pResourceBuffer == NULL )
+                return DXUT_ERR( L"new", E_OUTOFMEMORY );
+            memcpy( m_pResourceBuffer, pvRes, dwSize );
+
+            MMIOINFO mmioInfo;
+            ZeroMemory( &mmioInfo, sizeof(mmioInfo) );
+            mmioInfo.fccIOProc = FOURCC_MEM;
+            mmioInfo.cchBuffer = dwSize;
+            mmioInfo.pchBuffer = (CHAR*) m_pResourceBuffer;
+
+            m_hmmio = mmioOpen( NULL, &mmioInfo, MMIO_ALLOCBUF | MMIO_READ );
+        }
+
+        if( FAILED( hr = ReadMMIO() ) )
+        {
+            // ReadMMIO will fail if its an not a wave file
+            mmioClose( m_hmmio, 0 );
+            return DXUT_ERR( L"ReadMMIO", hr );
+        }
+
+        if( FAILED( hr = ResetFile() ) )
+            return DXUT_ERR( L"ResetFile", hr );
+
+        // After the reset, the size of the wav file is m_ck.cksize so store it now
+        m_dwSize = m_ck.cksize;
+    }
+    else
+    {
+        m_hmmio = mmioOpen( strFileName, NULL, MMIO_ALLOCBUF  |
+                                                  MMIO_READWRITE |
+                                                  MMIO_CREATE );
+        if( NULL == m_hmmio )
+            return DXUT_ERR( L"mmioOpen", E_FAIL );
+
+        if( FAILED( hr = WriteMMIO( pwfx ) ) )
+        {
+            mmioClose( m_hmmio, 0 );
+            return DXUT_ERR( L"WriteMMIO", hr );
+        }
+
+        if( FAILED( hr = ResetFile() ) )
+            return DXUT_ERR( L"ResetFile", hr );
+    }
+
+    return hr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::OpenFromMemory()
+// Desc: copy data to CWaveFile member variable from memory
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::OpenFromMemory( BYTE* pbData, ULONG ulDataSize,
+                                   WAVEFORMATEX* pwfx, DWORD dwFlags )
+{
+    m_pwfx       = pwfx;
+    m_ulDataSize = ulDataSize;
+    m_pbData     = pbData;
+    m_pbDataCur  = m_pbData;
+    m_bIsReadingFromMemory = TRUE;
+
+    if( dwFlags != WAVEFILE_READ )
+        return E_NOTIMPL;
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::ReadMMIO()
+// Desc: Support function for reading from a multimedia I/O stream.
+//       m_hmmio must be valid before calling.  This function uses it to
+//       update m_ckRiff, and m_pwfx.
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::ReadMMIO()
+{
+    MMCKINFO        ckIn;           // chunk info. for general use.
+    PCMWAVEFORMAT   pcmWaveFormat;  // Temp PCM structure to load in.
+
+    m_pwfx = NULL;
+
+    if( ( 0 != mmioDescend( m_hmmio, &m_ckRiff, NULL, 0 ) ) )
+        return DXUT_ERR( L"mmioDescend", E_FAIL );
+
+    // Check to make sure this is a valid wave file
+    if( (m_ckRiff.ckid != FOURCC_RIFF) ||
+        (m_ckRiff.fccType != mmioFOURCC('W', 'A', 'V', 'E') ) )
+        return DXUT_ERR( L"mmioFOURCC", E_FAIL );
+
+    // Search the input file for for the 'fmt ' chunk.
+    ckIn.ckid = mmioFOURCC('f', 'm', 't', ' ');
+    if( 0 != mmioDescend( m_hmmio, &ckIn, &m_ckRiff, MMIO_FINDCHUNK ) )
+        return DXUT_ERR( L"mmioDescend", E_FAIL );
+
+    // Expect the 'fmt' chunk to be at least as large as <PCMWAVEFORMAT>;
+    // if there are extra parameters at the end, we'll ignore them
+       if( ckIn.cksize < (LONG) sizeof(PCMWAVEFORMAT) )
+           return DXUT_ERR( L"sizeof(PCMWAVEFORMAT)", E_FAIL );
+
+    // Read the 'fmt ' chunk into <pcmWaveFormat>.
+    if( mmioRead( m_hmmio, (HPSTR) &pcmWaveFormat,
+                  sizeof(pcmWaveFormat)) != sizeof(pcmWaveFormat) )
+        return DXUT_ERR( L"mmioRead", E_FAIL );
+
+    // Allocate the waveformatex, but if its not pcm format, read the next
+    // word, and thats how many extra bytes to allocate.
+    if( pcmWaveFormat.wf.wFormatTag == WAVE_FORMAT_PCM )
+    {
+        m_pwfx = (WAVEFORMATEX*)new CHAR[ sizeof(WAVEFORMATEX) ];
+        if( NULL == m_pwfx )
+            return DXUT_ERR( L"m_pwfx", E_FAIL );
+
+        // Copy the bytes from the pcm structure to the waveformatex structure
+        memcpy( m_pwfx, &pcmWaveFormat, sizeof(pcmWaveFormat) );
+        m_pwfx->cbSize = 0;
+    }
+    else
+    {
+        // Read in length of extra bytes.
+        WORD cbExtraBytes = 0L;
+        if( mmioRead( m_hmmio, (CHAR*)&cbExtraBytes, sizeof(WORD)) != sizeof(WORD) )
+            return DXUT_ERR( L"mmioRead", E_FAIL );
+
+        m_pwfx = (WAVEFORMATEX*)new CHAR[ sizeof(WAVEFORMATEX) + cbExtraBytes ];
+        if( NULL == m_pwfx )
+            return DXUT_ERR( L"new", E_FAIL );
+
+        // Copy the bytes from the pcm structure to the waveformatex structure
+        memcpy( m_pwfx, &pcmWaveFormat, sizeof(pcmWaveFormat) );
+        m_pwfx->cbSize = cbExtraBytes;
+
+        // Now, read those extra bytes into the structure, if cbExtraAlloc != 0.
+        if( mmioRead( m_hmmio, (CHAR*)(((BYTE*)&(m_pwfx->cbSize))+sizeof(WORD)),
+                      cbExtraBytes ) != cbExtraBytes )
+        {
+            SAFE_DELETE( m_pwfx );
+            return DXUT_ERR( L"mmioRead", E_FAIL );
+        }
+    }
+
+    // Ascend the input file out of the 'fmt ' chunk.
+    if( 0 != mmioAscend( m_hmmio, &ckIn, 0 ) )
+    {
+        SAFE_DELETE( m_pwfx );
+        return DXUT_ERR( L"mmioAscend", E_FAIL );
+    }
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::GetSize()
+// Desc: Retuns the size of the read access wave file
+//-----------------------------------------------------------------------------
+DWORD CWaveFile::GetSize()
+{
+    return m_dwSize;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::ResetFile()
+// Desc: Resets the internal m_ck pointer so reading starts from the
+//       beginning of the file again
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::ResetFile()
+{
+    if( m_bIsReadingFromMemory )
+    {
+        m_pbDataCur = m_pbData;
+    }
+    else
+    {
+        if( m_hmmio == NULL )
+            return CO_E_NOTINITIALIZED;
+
+        if( m_dwFlags == WAVEFILE_READ )
+        {
+            // Seek to the data
+            if( -1 == mmioSeek( m_hmmio, m_ckRiff.dwDataOffset + sizeof(FOURCC),
+                            SEEK_SET ) )
+                return DXUT_ERR( L"mmioSeek", E_FAIL );
+
+            // Search the input file for the 'data' chunk.
+            m_ck.ckid = mmioFOURCC('d', 'a', 't', 'a');
+            if( 0 != mmioDescend( m_hmmio, &m_ck, &m_ckRiff, MMIO_FINDCHUNK ) )
+              return DXUT_ERR( L"mmioDescend", E_FAIL );
+        }
+        else
+        {
+            // Create the 'data' chunk that holds the waveform samples.
+            m_ck.ckid = mmioFOURCC('d', 'a', 't', 'a');
+            m_ck.cksize = 0;
+
+            if( 0 != mmioCreateChunk( m_hmmio, &m_ck, 0 ) )
+                return DXUT_ERR( L"mmioCreateChunk", E_FAIL );
+
+            if( 0 != mmioGetInfo( m_hmmio, &m_mmioinfoOut, 0 ) )
+                return DXUT_ERR( L"mmioGetInfo", E_FAIL );
+        }
+    }
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::Read()
+// Desc: Reads section of data from a wave file into pBuffer and returns
+//       how much read in pdwSizeRead, reading not more than dwSizeToRead.
+//       This uses m_ck to determine where to start reading from.  So
+//       subsequent calls will be continue where the last left off unless
+//       Reset() is called.
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::Read( BYTE* pBuffer, DWORD dwSizeToRead, DWORD* pdwSizeRead )
+{
+    if( m_bIsReadingFromMemory )
+    {
+        if( m_pbDataCur == NULL )
+            return CO_E_NOTINITIALIZED;
+        if( pdwSizeRead != NULL )
+            *pdwSizeRead = 0;
+
+        if( (BYTE*)(m_pbDataCur + dwSizeToRead) >
+            (BYTE*)(m_pbData + m_ulDataSize) )
+        {
+            dwSizeToRead = m_ulDataSize - (DWORD)(m_pbDataCur - m_pbData);
+        }
+
+        CopyMemory( pBuffer, m_pbDataCur, dwSizeToRead );
+
+        if( pdwSizeRead != NULL )
+            *pdwSizeRead = dwSizeToRead;
+
+        return S_OK;
+    }
+    else
+    {
+        MMIOINFO mmioinfoIn; // current status of m_hmmio
+
+        if( m_hmmio == NULL )
+            return CO_E_NOTINITIALIZED;
+        if( pBuffer == NULL || pdwSizeRead == NULL )
+            return E_INVALIDARG;
+
+        if( pdwSizeRead != NULL )
+            *pdwSizeRead = 0;
+
+        if( 0 != mmioGetInfo( m_hmmio, &mmioinfoIn, 0 ) )
+            return DXUT_ERR( L"mmioGetInfo", E_FAIL );
+
+        UINT cbDataIn = dwSizeToRead;
+        if( cbDataIn > m_ck.cksize )
+            cbDataIn = m_ck.cksize;
+
+        m_ck.cksize -= cbDataIn;
+
+        for( DWORD cT = 0; cT < cbDataIn; cT++ )
+        {
+            // Copy the bytes from the io to the buffer.
+            if( mmioinfoIn.pchNext == mmioinfoIn.pchEndRead )
+            {
+                if( 0 != mmioAdvance( m_hmmio, &mmioinfoIn, MMIO_READ ) )
+                    return DXUT_ERR( L"mmioAdvance", E_FAIL );
+
+                if( mmioinfoIn.pchNext == mmioinfoIn.pchEndRead )
+                    return DXUT_ERR( L"mmioinfoIn.pchNext", E_FAIL );
+            }
+
+            // Actual copy.
+            *((BYTE*)pBuffer+cT) = *((BYTE*)mmioinfoIn.pchNext);
+            mmioinfoIn.pchNext++;
+        }
+
+        if( 0 != mmioSetInfo( m_hmmio, &mmioinfoIn, 0 ) )
+            return DXUT_ERR( L"mmioSetInfo", E_FAIL );
+
+        if( pdwSizeRead != NULL )
+            *pdwSizeRead = cbDataIn;
+
+        return S_OK;
+    }
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::Close()
+// Desc: Closes the wave file
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::Close()
+{
+    if( m_dwFlags == WAVEFILE_READ )
+    {
+        mmioClose( m_hmmio, 0 );
+        m_hmmio = NULL;
+        SAFE_DELETE_ARRAY( m_pResourceBuffer );
+    }
+    else
+    {
+        m_mmioinfoOut.dwFlags |= MMIO_DIRTY;
+
+        if( m_hmmio == NULL )
+            return CO_E_NOTINITIALIZED;
+
+        if( 0 != mmioSetInfo( m_hmmio, &m_mmioinfoOut, 0 ) )
+            return DXUT_ERR( L"mmioSetInfo", E_FAIL );
+
+        // Ascend the output file out of the 'data' chunk -- this will cause
+        // the chunk size of the 'data' chunk to be written.
+        if( 0 != mmioAscend( m_hmmio, &m_ck, 0 ) )
+            return DXUT_ERR( L"mmioAscend", E_FAIL );
+
+        // Do this here instead...
+        if( 0 != mmioAscend( m_hmmio, &m_ckRiff, 0 ) )
+            return DXUT_ERR( L"mmioAscend", E_FAIL );
+
+        mmioSeek( m_hmmio, 0, SEEK_SET );
+
+        if( 0 != (INT)mmioDescend( m_hmmio, &m_ckRiff, NULL, 0 ) )
+            return DXUT_ERR( L"mmioDescend", E_FAIL );
+
+        m_ck.ckid = mmioFOURCC('f', 'a', 'c', 't');
+
+        if( 0 == mmioDescend( m_hmmio, &m_ck, &m_ckRiff, MMIO_FINDCHUNK ) )
+        {
+            DWORD dwSamples = 0;
+            mmioWrite( m_hmmio, (HPSTR)&dwSamples, sizeof(DWORD) );
+            mmioAscend( m_hmmio, &m_ck, 0 );
+        }
+
+        // Ascend the output file out of the 'RIFF' chunk -- this will cause
+        // the chunk size of the 'RIFF' chunk to be written.
+        if( 0 != mmioAscend( m_hmmio, &m_ckRiff, 0 ) )
+            return DXUT_ERR( L"mmioAscend", E_FAIL );
+
+        mmioClose( m_hmmio, 0 );
+        m_hmmio = NULL;
+    }
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::WriteMMIO()
+// Desc: Support function for reading from a multimedia I/O stream
+//       pwfxDest is the WAVEFORMATEX for this new wave file.
+//       m_hmmio must be valid before calling.  This function uses it to
+//       update m_ckRiff, and m_ck.
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::WriteMMIO( WAVEFORMATEX *pwfxDest )
+{
+    DWORD    dwFactChunk; // Contains the actual fact chunk. Garbage until WaveCloseWriteFile.
+    MMCKINFO ckOut1;
+
+    dwFactChunk = (DWORD)-1;
+
+    // Create the output file RIFF chunk of form type 'WAVE'.
+    m_ckRiff.fccType = mmioFOURCC('W', 'A', 'V', 'E');
+    m_ckRiff.cksize = 0;
+
+    if( 0 != mmioCreateChunk( m_hmmio, &m_ckRiff, MMIO_CREATERIFF ) )
+        return DXUT_ERR( L"mmioCreateChunk", E_FAIL );
+
+    // We are now descended into the 'RIFF' chunk we just created.
+    // Now create the 'fmt ' chunk. Since we know the size of this chunk,
+    // specify it in the MMCKINFO structure so MMIO doesn't have to seek
+    // back and set the chunk size after ascending from the chunk.
+    m_ck.ckid = mmioFOURCC('f', 'm', 't', ' ');
+    m_ck.cksize = sizeof(PCMWAVEFORMAT);
+
+    if( 0 != mmioCreateChunk( m_hmmio, &m_ck, 0 ) )
+        return DXUT_ERR( L"mmioCreateChunk", E_FAIL );
+
+    // Write the PCMWAVEFORMAT structure to the 'fmt ' chunk if its that type.
+    if( pwfxDest->wFormatTag == WAVE_FORMAT_PCM )
+    {
+        if( mmioWrite( m_hmmio, (HPSTR) pwfxDest,
+                       sizeof(PCMWAVEFORMAT)) != sizeof(PCMWAVEFORMAT))
+            return DXUT_ERR( L"mmioWrite", E_FAIL );
+    }
+    else
+    {
+        // Write the variable length size.
+        if( (UINT)mmioWrite( m_hmmio, (HPSTR) pwfxDest,
+                             sizeof(*pwfxDest) + pwfxDest->cbSize ) !=
+                             ( sizeof(*pwfxDest) + pwfxDest->cbSize ) )
+            return DXUT_ERR( L"mmioWrite", E_FAIL );
+    }
+
+    // Ascend out of the 'fmt ' chunk, back into the 'RIFF' chunk.
+    if( 0 != mmioAscend( m_hmmio, &m_ck, 0 ) )
+        return DXUT_ERR( L"mmioAscend", E_FAIL );
+
+    // Now create the fact chunk, not required for PCM but nice to have.  This is filled
+    // in when the close routine is called.
+    ckOut1.ckid = mmioFOURCC('f', 'a', 'c', 't');
+    ckOut1.cksize = 0;
+
+    if( 0 != mmioCreateChunk( m_hmmio, &ckOut1, 0 ) )
+        return DXUT_ERR( L"mmioCreateChunk", E_FAIL );
+
+    if( mmioWrite( m_hmmio, (HPSTR)&dwFactChunk, sizeof(dwFactChunk)) !=
+                    sizeof(dwFactChunk) )
+         return DXUT_ERR( L"mmioWrite", E_FAIL );
+
+    // Now ascend out of the fact chunk...
+    if( 0 != mmioAscend( m_hmmio, &ckOut1, 0 ) )
+        return DXUT_ERR( L"mmioAscend", E_FAIL );
+
+    return S_OK;
+}
+
+
+//-----------------------------------------------------------------------------
+// Name: CWaveFile::Write()
+// Desc: Writes data to the open wave file
+//-----------------------------------------------------------------------------
+HRESULT CWaveFile::Write( UINT nSizeToWrite, BYTE* pbSrcData, UINT* pnSizeWrote )
+{
+    UINT cT;
+
+    if( m_bIsReadingFromMemory )
+        return E_NOTIMPL;
+    if( m_hmmio == NULL )
+        return CO_E_NOTINITIALIZED;
+    if( pnSizeWrote == NULL || pbSrcData == NULL )
+        return E_INVALIDARG;
+
+    *pnSizeWrote = 0;
+
+    for( cT = 0; cT < nSizeToWrite; cT++ )
+    {
+        if( m_mmioinfoOut.pchNext == m_mmioinfoOut.pchEndWrite )
+        {
+            m_mmioinfoOut.dwFlags |= MMIO_DIRTY;
+            if( 0 != mmioAdvance( m_hmmio, &m_mmioinfoOut, MMIO_WRITE ) )
+                return DXUT_ERR( L"mmioAdvance", E_FAIL );
+        }
+
+        *((BYTE*)m_mmioinfoOut.pchNext) = *((BYTE*)pbSrcData+cT);
+        (BYTE*)m_mmioinfoOut.pchNext++;
+
+        (*pnSizeWrote)++;
+    }
+
+    return S_OK;
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2003.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2003.sln	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2003.sln	(revision 1481)
@@ -0,0 +1,24 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HierRayEngine", "HierRayEngine_2003.vcproj", "{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Profile = Profile
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Debug.ActiveCfg = Debug|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Debug.Build.0 = Debug|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Profile.ActiveCfg = Profile|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Profile.Build.0 = Profile|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Release.ActiveCfg = Release|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Parameters.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Parameters.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/Parameters.h	(revision 1481)
@@ -0,0 +1,67 @@
+#pragma once
+#include <assert.h>
+
+typedef enum { bShowHelp, bMoveLight, bLookFromLight, bDots, bTurbo, LAST_BOOL } bool_t;
+typedef enum { fRayPathLength, LAST_NUMBER } number_t;
+
+enum { IDC_GEN_BUTTON = -4, IDC_RESET_BUTTON, IDC_SAVE_BUTTON, IDC_LOAD_BUTTON };
+
+#define CHARBUF	100				// The max length of a line in the save file
+
+typedef float (*CONVERTER)(float a);
+typedef void (*ONCHANGE_CALLBACK)(void);
+
+float noconvert(float a);	// { return a; }
+
+float convert100(float a);
+float convert10(float a);
+float convert1(float a);
+float convertNSamples(float a);
+float convertDepthResolution(float a);
+
+void OnChange();			// {}
+
+
+class Parameters {
+	bool bparam[LAST_BOOL];
+	wchar_t bname[LAST_BOOL][CHARBUF];
+
+	int param[LAST_NUMBER];	// 0..100 (0..num_steps)
+	wchar_t name[LAST_NUMBER][CHARBUF];
+	int numsteps[LAST_NUMBER];
+
+	CONVERTER ffunc[LAST_NUMBER];
+	ONCHANGE_CALLBACK chfunc[LAST_NUMBER+3];
+
+	CDXUTDialog* g_HUD;
+
+	bool bSilent;
+	const static int CHARBUFFER_SIZE = 200;
+	enum { checkboxID0 = 1000, sliderID0 = 2000, staticID0 = 3000, upID0 = 4000, downID0 = 5000 };
+
+public:
+	void Setup( CDXUTDialog* g_HUD );
+	void Setup( CDXUTDialog* g_HUD, ONCHANGE_CALLBACK OnReset, ONCHANGE_CALLBACK OnSave = OnChange, ONCHANGE_CALLBACK OnLoad = OnChange);
+
+	bool Get( bool_t i );
+	float Get( number_t i );
+	int GetInt( number_t i );
+
+	void SetBool( bool_t ID, bool b );
+	void SetFloat( number_t ID, float v );
+	void SetInt( number_t ID, int v );
+
+	void Add( bool_t ID, char* label, char cHotKey = 0 );
+	void Add( number_t ID, char* label, int num_steps);
+
+	void Add( number_t ID, char* label, int num_steps, 
+		CONVERTER ff, ONCHANGE_CALLBACK chf = OnChange );
+
+	void Add( number_t ID, char* label, int num_steps, char cKeyDecr, char cKeyIncr, 
+		CONVERTER ff = noconvert, ONCHANGE_CALLBACK chf = OnChange );
+
+	void UpdateFromHUD( int controlID );
+
+	void SaveToFile( char* fileName );
+	void LoadFromFile( char* fileName );
+};
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2005.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2005.sln	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2005.sln	(revision 1481)
@@ -0,0 +1,22 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HierRayEngine", "HierRayEngine_2005.vcproj", "{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Profile|Win32 = Profile|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Debug|Win32.Build.0 = Debug|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Profile|Win32.ActiveCfg = Profile|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Profile|Win32.Build.0 = Profile|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Release|Win32.ActiveCfg = Release|Win32
+		{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.rc
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.rc	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.rc	(revision 1481)
@@ -0,0 +1,85 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define IDC_STATIC -1
+#include <WinResRc.h>
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// RT_MANIFEST
+//
+
+1                       RT_MANIFEST             "HierRayEngine.manifest"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_MAIN_ICON           ICON                    "Common\\directx.ico"
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#define IDC_STATIC -1\r\n"
+    "#include <winresrc.h>\r\n"
+    "\r\n"
+    "\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/rayEngine.fx
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/rayEngine.fx	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/rayEngine.fx	(revision 1481)
@@ -0,0 +1,448 @@
+// transformations
+float4x4	WorldViewProj;
+float4x4	ViewProj;
+float4x4	ViewProjI;
+float4x4	World;
+float4x4	WorldIT;
+float3		EyePos;
+float3		TilePos;
+float		RefractionIndex;
+float		colOrder;
+
+#define MIN_RAY_DEPTH	0.01
+#define MAX_RAY_DEPTH	200.0
+#define RAY_TABLE_SIZE	512.0
+
+float4		ConePeak;
+float4		ConeDirAndCosAngle;
+
+texture rayDirTable;
+sampler rayDirTableSampler = sampler_state
+{
+   Texture = <rayDirTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+texture rayOriginTable;
+sampler rayOriginTableSampler = sampler_state
+{
+   Texture = <rayOriginTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+texture coneDirTable;
+sampler coneDirTableSampler = sampler_state
+{
+   Texture = <coneDirTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+texture conePeakTable;
+sampler conePeakTableSampler = sampler_state
+{
+   Texture = <conePeakTable>;
+   MinFilter = Point;
+   MagFilter = Point;
+   MipFilter = None;
+};
+
+textureCUBE environmentTexture;
+sampler environmentSampler = sampler_state
+{
+   Texture = <environmentTexture>;
+   MinFilter = Linear;
+   MagFilter = Linear;
+   MipFilter = None;
+};
+
+void PrimaryRaysVS (
+		in float4	Pos			: POSITION,
+		in float3	Norm		: NORMAL,
+		out float4	hPos		: POSITION,
+		out float3	wNorm		: TEXCOORD0,
+		out float3	wPos		: TEXCOORD1
+		)
+{
+	hPos = mul(Pos, WorldViewProj);
+	wNorm = mul(Norm, WorldIT);
+	wPos = mul(Pos, World).xyz;
+}
+
+void PrimaryRaysPS (
+	in float3	wNorm		: TEXCOORD0,
+	in float3	wPos		: TEXCOORD1,
+    out float4	Origin		: COLOR0,
+    out float4	Dir			: COLOR1)
+{   
+	Origin = float4(wPos, 1);
+	wNorm = normalize(wNorm);
+	float3 ViewDir =  wPos - EyePos;
+	ViewDir = normalize(ViewDir);
+
+	float3 refractedDir = refract(ViewDir, wNorm, RefractionIndex);
+	if(dot(refractedDir, refractedDir) < 0.5)	//total internal reflection
+		refractedDir = reflect(ViewDir, wNorm);
+
+	Dir = float4(refractedDir, colOrder);
+	Dir.xyz = normalize(Dir.xyz);
+}
+
+struct vsInputCopyBack
+{
+    float4	Pos			: POSITION;
+    float2	tex			: TEXCOORD0;    
+};
+
+struct vsOutputCopyBack
+{
+    float4	Pos			: POSITION;
+    float2	tex			: TEXCOORD0;
+};
+
+vsOutputCopyBack
+	vsCopyBack(vsInputCopyBack input)
+{
+    vsOutputCopyBack output = (vsOutputCopyBack)0;
+    output.Pos = input.Pos;
+    output.tex = input.tex;
+    return output;
+}
+
+void
+	psCopyBack(vsOutputCopyBack input, out float4 c0 : COLOR0, out float4 c1 : COLOR1)
+{
+	c0 = tex2D(rayOriginTableSampler, input.tex);
+	c1 = tex2D(rayDirTableSampler, input.tex);
+}
+
+struct vsInputShowTex
+{
+    float4	Pos			: POSITION;
+    float2	tex			: TEXCOORD0;    
+};
+
+struct vsOutputShowTex
+{
+    float4	Pos			: POSITION;
+    float2	tex			: TEXCOORD0;
+};
+
+vsOutputShowTex
+	vsShowTex(vsInputShowTex input)
+{
+    vsOutputShowTex output = (vsOutputShowTex)0;
+    output.Pos = input.Pos;
+    output.tex = input.tex;
+
+    return output;
+}
+
+float4
+	psShowTex(vsOutputShowTex input) : COLOR0
+{   
+//	return abs(float4(tex2D(rayDirTableSampler, input.tex).xyz, 1));
+	return float4(tex2D(rayOriginTableSampler, input.tex).xyz, 1);
+//	return abs(float4(tex2D(conePeakTableSampler, input.tex).xyz, 1));	
+//	return float4(1,1,0,1);	
+//	return float4(input.tex.x,input.tex.y,0,1);	
+//	return float4(1.0 - acos(tex2D(coneDirTableSampler, input.tex).aaa) / 3.14, 1);	
+//	 + float4(0, 0.7, 0, 0);
+//		+	float4(tex2D(rayDirTableSampler, input.tex).xyz, 1);
+	float3 relfDir = tex2D(rayDirTableSampler, input.tex);
+	return float4((relfDir.x +1) / 2,
+		(relfDir.y + 1) / 2,
+		(relfDir.z + 1) / 2,   1);
+}
+
+void RayCastVS(
+	in float4	Sphere		: POSITION,
+    in float3	PlanePos	: NORMAL,
+    in float3	Invmx0		: TEXCOORD0,
+    in float3	Invmx1		: TEXCOORD1,
+    in float3	Invmx2		: TEXCOORD2,
+    in float3	Normals0	: TEXCOORD3,
+	in float3	Normals1	: TEXCOORD4,
+	in float3	Normals2	: TEXCOORD5,
+	
+	out float4	hPos		: POSITION,
+	out float3	oPlanePos	: TEXCOORD6,
+    out float3	oInvmx0		: TEXCOORD0,
+    out float3	oInvmx1		: TEXCOORD1,
+    out float3	oInvmx2		: TEXCOORD2,
+    out float3	oNormals0	: TEXCOORD3,
+	out float3	oNormals1	: TEXCOORD4,
+	out float3	oNormals2	: TEXCOORD5
+	)
+{
+	oPlanePos = PlanePos;
+	oInvmx0 = Invmx0;
+	oInvmx1 = Invmx1;
+	oInvmx2 = Invmx2;
+	oNormals0 = Normals0;
+	oNormals1 = Normals1;
+	oNormals2 = Normals2;
+
+	hPos = float4(TilePos, 1);
+
+	ConeDirAndCosAngle.xyz = mul(WorldIT, float4(ConeDirAndCosAngle.xyz, 0));
+	ConePeak.xyz = mul(WorldIT, float4(ConePeak.xyz, 1));
+
+	float3 sfc = Sphere.xyz - ConePeak.xyz;
+	float lsfc = length(sfc);
+
+	if(Sphere.w < lsfc)	// cone peak not in sphere
+	{
+		// angle difference between cone main direction and direction to sphere centre
+		float angSpMidConeMid = acos(dot(ConeDirAndCosAngle.xyz, sfc) / lsfc);
+		// the half of the opening angle at which the sphere is seen
+		float angSpRad = asin(Sphere.w / lsfc);
+		// cone opening angle
+		float angCone = acos(ConeDirAndCosAngle.w);
+		
+		// if sphere direction not within (cone direction + sphere angle), discard tile for this triangle
+		if(angCone + angSpRad < angSpMidConeMid)
+		{
+			hPos = float4(10000000.0, 10000000.0, 10000000.0, 1.0);
+		}
+	}
+}
+
+void
+	RayCastPS(
+//		in float3	PlanePos	: TEXCOORD6,
+		in float3	Invmx0		: TEXCOORD0,
+		in float3	Invmx1		: TEXCOORD1,
+		in float3	Invmx2		: TEXCOORD2,
+		in float3	Normals0	: TEXCOORD3,
+		in float3	Normals1	: TEXCOORD4,
+		in float3	Normals2	: TEXCOORD5,
+	
+		in float2	vPos		: VPOS,
+		out float4	oOrigin		: COLOR0,
+		out float4	oDir		: COLOR1,
+		out float1	oDepth		: DEPTH)
+{   
+
+	float3	PlanePos = Invmx0 + Invmx1 + Invmx2;
+	PlanePos /= dot(PlanePos, PlanePos);
+
+	float2 pixpos = vPos.xy;
+	pixpos /= RAY_TABLE_SIZE;	// to texture coordinates
+	float3 rayOrigin = tex2D(rayOriginTableSampler, pixpos.xy);
+	rayOrigin = mul(WorldIT, float4(rayOrigin, 1));
+	float3 rayDir = tex2D(rayDirTableSampler, pixpos.xy);
+	rayDir = mul(WorldIT, float4(rayDir, 0));
+	
+	float hitDepth = (dot(PlanePos, PlanePos) - dot(rayOrigin, PlanePos)) / dot(rayDir, PlanePos);
+	if(hitDepth < MIN_RAY_DEPTH || hitDepth > MAX_RAY_DEPTH)
+	{	
+		oDepth = 1000000.0;
+		oOrigin = oDir = 0;
+	}
+	else
+	{
+		float3 hitPoint = rayOrigin + (rayDir * hitDepth);
+
+		float3 worldDist = mul(float4(hitPoint - rayOrigin, 0), World).xyz;
+		 
+		oDepth = length(worldDist)  / MAX_RAY_DEPTH;
+
+		float baryA = dot(Invmx0, hitPoint);
+		float baryB = dot(Invmx1, hitPoint);
+		float baryC = dot(Invmx2, hitPoint);
+		if(baryA > -0.001 && baryB > -0.001 && baryC > -0.001)
+		{
+			oOrigin = mul(float4(hitPoint, 1), World);
+			
+			float3 normalAtHitPoint = Normals0 * baryA;
+			normalAtHitPoint += Normals1 * baryB;
+			normalAtHitPoint += Normals2 * baryC;
+			normalAtHitPoint = normalize(normalAtHitPoint);
+			if(dot(normalAtHitPoint, rayDir) > 0)
+			{
+				normalAtHitPoint = -normalAtHitPoint;
+				RefractionIndex = 1.0 / RefractionIndex;	// exiting ray
+			}
+			float3 refractedDir = refract(rayDir, normalAtHitPoint, RefractionIndex);
+			if(dot(refractedDir, refractedDir) < 0.5)	// total internal reflection
+				refractedDir = reflect(rayDir, normalAtHitPoint);
+			oDir = float4( mul(float4(refractedDir,0), World).xyz, 1);
+		}
+		else
+		{
+			oOrigin = float4(10.0, 0, 0, 1);
+			oDir = float4(10.0, 0, 0, 1);
+			oDepth = 1000000.0;
+		}
+	}
+}
+
+
+struct vsInputBackGround
+{
+    float4 Pos  : POSITION; //Pos
+    float2 tex	: TEXCOORD0;
+};
+
+struct vsOutputBackGround
+{
+    float4 Pos  : POSITION; //Pos
+	float2 tex	: TEXCOORD0;
+    float3 wPos : TEXCOORD1;
+};
+
+vsOutputBackGround vsBackground(vsInputBackGround input){
+    vsOutputBackGround output = (vsOutputBackGround)0;
+    output.Pos=input.Pos;
+    float4 worldpos = mul(input.Pos, ViewProjI);
+    worldpos /= worldpos.w;
+    output.wPos = worldpos.xyz;
+    output.tex = input.tex;
+    return output;
+}
+
+void psBackground(vsOutputBackGround input, out float4 o0 : COLOR0) 
+{   
+	float4 dird = tex2D(rayDirTableSampler, input.tex);
+	float3 Dir = dird.xyz;
+	float3 col = 1 ;
+						/*float3(pow(0.7, frac(dird.w / 10.0) * 10.0) ,
+						pow(0.7, frac(dird.w / 100.0) * 10.0) ,
+						pow(0.7, frac(dird.w / 1000.0) * 10.0));*/
+	if(dot(Dir, Dir) < 0.5)
+	{
+		Dir = normalize(input.wPos.xyz - EyePos.xyz);
+		col = float3(4, 4, 4);
+	}
+	o0 = float4(texCUBE(environmentSampler, Dir).xyz * col * 1.1, 0.0);
+//	o0 = float4(dird.w / 5.0, dird.w / 2.0, dird.w / 10.0, 1.0);
+	
+//	o0 = float4(input.tex.x, input.tex.y, 1.0, 1.0);
+}
+
+
+void ConeVS(
+    in float4	Pos			: POSITION,
+    in float2	Tex			: TEXCOORD0,
+    out float4	oPos		: POSITION,
+    out float2	oTex		: TEXCOORD0
+    )
+{
+    oPos = Pos;
+    oTex = Tex;
+}
+
+void
+	ConePS(
+		in float2	Tex		: TEXCOORD0,
+		out float4	oConePeak	: COLOR0,
+		out float4	oConeDir		: COLOR1)
+{
+	float3 peak = 0;
+	float3 dir = 0;
+	float cosAngle = 1.0;
+	float sinAngle = 0.0;
+	for(int i=0; i < 16; i++)
+		for(int j=0; j < 16; j++)
+		{
+			float3 currentRayDir = tex2D(rayDirTableSampler, Tex + float2((float)j/RAY_TABLE_SIZE, (float)i/RAY_TABLE_SIZE));
+			if(dot(currentRayDir, currentRayDir) > 0.5) // a valid ray
+			{
+				float3 currentRayOrigin = tex2D(rayOriginTableSampler, Tex + float2((float)j/RAY_TABLE_SIZE, (float)i/RAY_TABLE_SIZE));
+				if(dot(dir,dir) < 0.5) // no valid ray found before this one
+				{
+					dir = currentRayDir;
+					peak = currentRayOrigin;
+				}
+				else
+				{
+					float ncos = dot(currentRayDir,dir);
+					if(ncos < cosAngle)
+					{
+						float3 perpdir = normalize(currentRayDir - ncos * dir);
+						float3 farConeEdge = cosAngle * dir - sinAngle * perpdir;
+						dir = farConeEdge + currentRayDir;
+						dir = normalize(dir);
+						cosAngle = dot(dir, currentRayDir);
+						sinAngle = sqrt(1.0 - cosAngle * cosAngle);
+					}
+					float3 pd = currentRayOrigin - peak;
+					float3 ptop = normalize(pd);
+					float cospp = dot(dir, ptop);
+					if(cospp < cosAngle)
+					{
+						float3 perpdir = ptop - cospp * dir;
+						perpdir = normalize(perpdir);
+						float3 farConeEdge = (cosAngle * dir - sinAngle * perpdir);
+						float3 nearConeEdge = (cosAngle * dir + sinAngle * perpdir);
+						float3 g = currentRayOrigin - peak - nearConeEdge * dot(nearConeEdge, pd);
+						peak += farConeEdge * dot(g,g) / dot(farConeEdge, g);
+					}
+				}
+			}
+		}
+	oConePeak = float4(peak, 1.0);
+	oConeDir = float4(dir, cosAngle);
+	if(dot(dir, dir) < 0.5) // no valid rays in tile
+	{
+		//cone far away not intersecting anything
+		oConePeak = float4(1000000.0, 0 , 0, 0.0);
+		oConeDir = float4(1, 0, 0, 1.0);
+	}
+}
+
+
+technique RenderPrimaryRayArray{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 PrimaryRaysVS();
+        PixelShader  = compile ps_3_0 PrimaryRaysPS();
+    }
+}
+
+technique RayCast{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 RayCastVS();
+        PixelShader  = compile ps_3_0 RayCastPS();
+    }
+}
+
+technique ShowTex{
+	pass P0
+    {
+        VertexShader = compile vs_2_0 vsShowTex();
+        PixelShader  = compile ps_2_0 psShowTex();
+    }
+}
+
+technique Background{
+	pass P0
+    {
+        VertexShader = compile vs_2_0 vsBackground();
+        PixelShader  = compile ps_2_0 psBackground();
+    }
+}
+
+technique CopyBack{
+	pass P0
+    {
+        VertexShader = compile vs_2_0 vsCopyBack();
+        PixelShader  = compile ps_2_0 psCopyBack();
+    }
+}
+
+technique ComputeCones{
+	pass P0
+    {
+        VertexShader = compile vs_3_0 ConeVS();
+        PixelShader  = compile ps_3_0 ConePS();
+    }
+}
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/makefile.x64
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/makefile.x64	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/makefile.x64	(revision 1481)
@@ -0,0 +1,395 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on HierRayEngine.dsp
+!IF "$(CFG)" == ""
+CFG=HierRayEngine - Win64 Debug
+!MESSAGE No configuration specified. Defaulting to HierRayEngine - Win64 Debug.
+!ENDIF 
+
+!IF "$(CFG)" != "HierRayEngine - Win64 Debug" && "$(CFG)" != "HierRayEngine - Win64 Release" && "$(CFG)" != "HierRayEngine - Win64 Profile"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "makefile.x64" CFG="HierRayEngine - Win64 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "HierRayEngine - Win64 Debug" (based on "Win64 (x64) Application")
+!MESSAGE "HierRayEngine - Win64 Release" (based on "Win64 (x64) Application")
+!MESSAGE "HierRayEngine - Win64 Profile" (based on "Win64 (x64) Application")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "HierRayEngine - Win64 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\HierRayEngine.exe"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\dxstdafx.obj"
+	-@erase "$(INTDIR)\dxut.obj"
+	-@erase "$(INTDIR)\dxutenum.obj"
+	-@erase "$(INTDIR)\dxutmisc.obj"
+	-@erase "$(INTDIR)\DXUTRes.obj"
+	-@erase "$(INTDIR)\HierRayEngine.obj"
+	-@erase "$(INTDIR)\HierRayEngine.res"
+	-@erase "$(INTDIR)\HierRayEngine.pch"
+	-@erase "$(INTDIR)\vc60.idb"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\HierRayEngine.pdb"
+	-@erase "$(OUTDIR)\HierRayEngine.exe"
+	-@erase "$(OUTDIR)\HierRayEngine.ilk"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MTd /W4 /Gm /EHsc /GS /ZI /Od /I "Common" /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "PROFILE" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yu"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /win64 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\HierRayEngine.res" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\HierRayEngine.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=bufferoverflowu.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dxerr9.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib comctl32.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\HierRayEngine.pdb" /debug /machine:amd64 /out:"$(OUTDIR)\HierRayEngine.exe" /IGNORE:4089 
+LINK32_OBJS= \
+	"$(INTDIR)\dxstdafx.obj" \
+	"$(INTDIR)\dxut.obj" \
+	"$(INTDIR)\dxutenum.obj" \
+	"$(INTDIR)\DXUTRes.obj" \
+	"$(INTDIR)\dxutmisc.obj" \
+	"$(INTDIR)\HierRayEngine.obj" \
+	"$(INTDIR)\HierRayEngine.res"
+
+"$(OUTDIR)\HierRayEngine.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "HierRayEngine - Win64 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\HierRayEngine.exe"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\dxstdafx.obj"
+	-@erase "$(INTDIR)\dxut.obj"
+	-@erase "$(INTDIR)\dxutenum.obj"
+	-@erase "$(INTDIR)\dxutmisc.obj"
+	-@erase "$(INTDIR)\DXUTRes.obj"
+	-@erase "$(INTDIR)\HierRayEngine.obj"
+	-@erase "$(INTDIR)\HierRayEngine.res"
+	-@erase "$(INTDIR)\HierRayEngine.pch"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\HierRayEngine.exe"
+	-@erase "$(OUTDIR)\HierRayEngine.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MT /W4 /EHsc /GS /Zi /O2 /I "Common" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yu"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GF /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /win64 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\HierRayEngine.res" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\HierRayEngine.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=bufferoverflowu.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\HierRayEngine.pdb" /debug /machine:amd64 /out:"$(OUTDIR)\HierRayEngine.exe" /opt:ref /opt:icf /IGNORE:4089 
+LINK32_OBJS= \
+	"$(INTDIR)\dxstdafx.obj" \
+	"$(INTDIR)\dxut.obj" \
+	"$(INTDIR)\dxutenum.obj" \
+	"$(INTDIR)\DXUTRes.obj" \
+	"$(INTDIR)\dxutmisc.obj" \
+	"$(INTDIR)\HierRayEngine.obj" \
+	"$(INTDIR)\HierRayEngine.res"
+
+"$(OUTDIR)\HierRayEngine.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "HierRayEngine - Win64 Profile"
+
+OUTDIR=.\Profile
+INTDIR=.\Profile
+# Begin Custom Macros
+OutDir=.\Profile
+# End Custom Macros
+
+ALL : "$(OUTDIR)\HierRayEngine.exe"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\dxstdafx.obj"
+	-@erase "$(INTDIR)\dxut.obj"
+	-@erase "$(INTDIR)\dxutenum.obj"
+	-@erase "$(INTDIR)\dxutmisc.obj"
+	-@erase "$(INTDIR)\DXUTRes.obj"
+	-@erase "$(INTDIR)\HierRayEngine.obj"
+	-@erase "$(INTDIR)\HierRayEngine.res"
+	-@erase "$(INTDIR)\HierRayEngine.pch"
+	-@erase "$(INTDIR)\vc60.pdb"
+	-@erase "$(OUTDIR)\HierRayEngine.exe"
+	-@erase "$(OUTDIR)\HierRayEngine.pdb"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MT /W4 /EHsc /GS /Zi /O2 /I "Common" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "PROFILE" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yu"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GF /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /win64 
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\HierRayEngine.res" 
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\HierRayEngine.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+LINK32_FLAGS=bufferoverflowu.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\HierRayEngine.pdb" /debug /machine:amd64 /out:"$(OUTDIR)\HierRayEngine.exe" /opt:ref /opt:icf /IGNORE:4089 
+LINK32_OBJS= \
+	"$(INTDIR)\dxstdafx.obj" \
+	"$(INTDIR)\dxut.obj" \
+	"$(INTDIR)\dxutenum.obj" \
+	"$(INTDIR)\DXUTRes.obj" \
+	"$(INTDIR)\dxutmisc.obj" \
+	"$(INTDIR)\HierRayEngine.obj" \
+	"$(INTDIR)\HierRayEngine.res"
+
+"$(OUTDIR)\HierRayEngine.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("HierRayEngine.dep")
+!INCLUDE "HierRayEngine.dep"
+!ELSE 
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "HierRayEngine - Win64 Debug" || "$(CFG)" == "HierRayEngine - Win64 Release" || "$(CFG)" == "HierRayEngine - Win64 Profile"
+SOURCE=HierRayEngine.rc
+
+"$(INTDIR)\HierRayEngine.res" : $(SOURCE) "$(INTDIR)"
+	$(RSC) $(RSC_PROJ) $(SOURCE)
+
+
+SOURCE=Common\dxstdafx.cpp
+
+!IF  "$(CFG)" == "HierRayEngine - Win64 Debug"
+
+CPP_SWITCHES=/nologo /MTd /W4 /Gm /EHsc /GS /ZI /Od /I "Common" /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "PROFILE" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yc"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"  /c 
+
+"$(INTDIR)\dxstdafx.obj"	"$(INTDIR)\HierRayEngine.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "HierRayEngine - Win64 Release"
+
+CPP_SWITCHES=/nologo /MT /W4 /EHsc /GS /Zi /O2 /I "Common" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yc"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GF /c 
+
+"$(INTDIR)\dxstdafx.obj"	"$(INTDIR)\HierRayEngine.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "HierRayEngine - Win64 Profile"
+
+CPP_SWITCHES=/nologo /MT /W4 /EHsc /GS /Zi /O2 /I "Common" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "PROFILE" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yc"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GF /c 
+
+"$(INTDIR)\dxstdafx.obj"	"$(INTDIR)\HierRayEngine.pch" : $(SOURCE) "$(INTDIR)"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+SOURCE=Common\dxut.cpp
+
+"$(INTDIR)\dxut.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=Common\dxutenum.cpp
+
+"$(INTDIR)\dxutenum.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=Common\dxutmisc.cpp
+
+"$(INTDIR)\dxutmisc.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=Common\DXUTRes.cpp
+
+"$(INTDIR)\DXUTRes.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=HierRayEngine.cpp
+
+!IF  "$(CFG)" == "HierRayEngine - Win64 Debug"
+
+CPP_SWITCHES=/nologo /MTd /W4 /Gm /EHsc /GS /ZI /Od /I "Common" /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "PROFILE" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yu"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
+
+"$(INTDIR)\HierRayEngine.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "HierRayEngine - Win64 Release"
+
+CPP_SWITCHES=/nologo /MT /W4 /EHsc /GS /Zi /O2 /I "Common" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yu"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GF /c 
+
+"$(INTDIR)\HierRayEngine.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF  "$(CFG)" == "HierRayEngine - Win64 Profile"
+
+CPP_SWITCHES=/nologo /MT /W4 /EHsc /GS /Zi /O2 /I "Common" /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "PROFILE" /D "WIN64" /D "UNICODE" /D "_UNICODE" /Fp"$(INTDIR)\HierRayEngine.pch" /Yu"dxstdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GF /c 
+
+"$(INTDIR)\HierRayEngine.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\HierRayEngine.pch"
+	$(CPP) @<<
+  $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF 
+
+
+!ENDIF 
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2002.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2002.vcproj	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2002.vcproj	(revision 1481)
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="HierRayEngine"
+	ProjectGUID="{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;PROFILE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="0"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib comctl32.lib"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/HierRayEngine.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="TRUE"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="4"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib"
+				OutputFile="$(OutDir)/HierRayEngine.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+		<Configuration
+			Name="Profile|Win32"
+			OutputDirectory="Profile"
+			IntermediateDirectory="Profile"
+			ConfigurationType="1"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="TRUE"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PROFILE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="4"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib"
+				OutputFile="$(OutDir)/HierRayEngine.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+	</Configurations>
+	<Files>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath="Common\directx.ico">
+			</File>
+			<File
+				RelativePath="HierRayEngine.manifest">
+			</File>
+			<File
+				RelativePath="HierRayEngine.rc">
+			</File>
+			<File
+				RelativePath="resource.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Common"
+			Filter="">
+			<File
+				RelativePath="Common\dxstdafx.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Profile|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Common\dxstdafx.h">
+			</File>
+			<File
+				RelativePath="Common\dxut.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxut.h">
+			</File>
+			<File
+				RelativePath="Common\dxutenum.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxutenum.h">
+			</File>
+			<File
+				RelativePath="Common\DXUTRes.cpp">
+			</File>
+			<File
+				RelativePath="Common\DXUTRes.h">
+			</File>
+			<File
+				RelativePath="Common\dxutmisc.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxutmisc.h">
+			</File>
+		</Filter>
+		<File
+			RelativePath="HierRayEngine.cpp">
+			<FileConfiguration
+				Name="Release|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="3"
+					PrecompiledHeaderThrough="dxstdafx.h"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Profile|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="3"
+					PrecompiledHeaderThrough="dxstdafx.h"/>
+			</FileConfiguration>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.manifest
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.manifest	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.manifest	(revision 1481)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+    version="1.0.0.0"
+    processorArchitecture="*"
+    name="Microsoft.DirectX SDK.HierRayEngine"
+    type="win32"
+/>
+<description>DirectX SDK Sample Program.</description>
+<dependency>
+    <dependentAssembly>
+        <assemblyIdentity
+            type="win32"
+            name="Microsoft.Windows.Common-Controls"
+            version="6.0.0.0"
+            processorArchitecture="*"
+            publicKeyToken="6595b64144ccf1df"
+            language="*"
+        />
+    </dependentAssembly>
+</dependency>
+</assembly>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2003.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2003.vcproj	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2003.vcproj	(revision 1481)
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="HierRayEngine"
+	ProjectGUID="{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;PROFILE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="0"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib comctl32.lib half.lib"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/HierRayEngine.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="TRUE"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="4"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib"
+				OutputFile="$(OutDir)/HierRayEngine.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Profile|Win32"
+			OutputDirectory="Profile"
+			IntermediateDirectory="Profile"
+			ConfigurationType="1"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="TRUE"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PROFILE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="4"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib"
+				OutputFile="$(OutDir)/HierRayEngine.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath="Common\directx.ico">
+			</File>
+			<File
+				RelativePath="HierRayEngine.manifest">
+			</File>
+			<File
+				RelativePath="HierRayEngine.rc">
+			</File>
+			<File
+				RelativePath="resource.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Common"
+			Filter="">
+			<File
+				RelativePath="Common\dxstdafx.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Profile|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Common\dxstdafx.h">
+			</File>
+			<File
+				RelativePath="Common\dxut.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxut.h">
+			</File>
+			<File
+				RelativePath="Common\dxutenum.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxutenum.h">
+			</File>
+			<File
+				RelativePath=".\Common\DXUTgui.cpp">
+			</File>
+			<File
+				RelativePath=".\Common\DXUTgui.h">
+			</File>
+			<File
+				RelativePath=".\Common\DXUTMesh.cpp">
+			</File>
+			<File
+				RelativePath=".\Common\DXUTMesh.h">
+			</File>
+			<File
+				RelativePath="Common\dxutmisc.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxutmisc.h">
+			</File>
+			<File
+				RelativePath="Common\DXUTRes.cpp">
+			</File>
+			<File
+				RelativePath="Common\DXUTRes.h">
+			</File>
+			<File
+				RelativePath=".\Common\DXUTSettingsDlg.cpp">
+			</File>
+			<File
+				RelativePath=".\Common\DXUTSettingsDlg.h">
+			</File>
+		</Filter>
+		<File
+			RelativePath=".\half.h">
+		</File>
+		<File
+			RelativePath="HierRayEngine.cpp">
+			<FileConfiguration
+				Name="Release|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="3"
+					PrecompiledHeaderThrough="dxstdafx.h"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Profile|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="3"
+					PrecompiledHeaderThrough="dxstdafx.h"/>
+			</FileConfiguration>
+		</File>
+		<File
+			RelativePath=".\HREEffect.cpp">
+		</File>
+		<File
+			RelativePath=".\HREEffect.h">
+		</File>
+		<File
+			RelativePath=".\Parameters.cpp">
+		</File>
+		<File
+			RelativePath=".\Parameters.h">
+		</File>
+		<File
+			RelativePath=".\rayEngine.fx">
+		</File>
+		<File
+			RelativePath=".\Vector.cpp">
+		</File>
+		<File
+			RelativePath=".\Vector.hpp">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/half.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/half.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/half.h	(revision 1481)
@@ -0,0 +1,756 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
+// Digital Ltd. LLC
+// 
+// All rights reserved.
+// 
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+// *       Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// *       Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// *       Neither the name of Industrial Light & Magic nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission. 
+// 
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+///////////////////////////////////////////////////////////////////////////
+
+// Primary authors:
+//     Florian Kainz <kainz@ilm.com>
+//     Rod Bogart <rgb@ilm.com>
+
+//---------------------------------------------------------------------------
+//
+//	half -- a 16-bit floating point number class:
+//
+//	Type half can represent positive and negative numbers, whose
+//	magnitude is between roughly 6.1e-5 and 6.5e+4, with a relative
+//	error of 9.8e-4; numbers smaller than 6.1e-5 can be represented
+//	with an absolute error of 6.0e-8.  All integers from -2048 to
+//	+2048 can be represented exactly.
+//
+//	Type half behaves (almost) like the built-in C++ floating point
+//	types.  In arithmetic expressions, half, float and double can be
+//	mixed freely.  Here are a few examples:
+//
+//	    half a (3.5);
+//	    float b (a + sqrt (a));
+//	    a += b;
+//	    b += a;
+//	    b = a + 7;
+//
+//	Conversions from half to float are lossless; all half numbers
+//	are exactly representable as floats.
+//
+//	Conversions from float to half may not preserve the float's
+//	value exactly.  If a float is not representable as a half, the
+//	float value is rounded to the nearest representable half.  If
+//	a float value is exactly in the middle between the two closest
+//	representable half values, then the float value is rounded to
+//	the half with the greater magnitude.
+//
+//	Overflows during float-to-half conversions cause arithmetic
+//	exceptions.  An overflow occurs when the float value to be
+//	converted is too large to be represented as a half, or if the
+//	float value is an infinity or a NAN.
+//
+//	The implementation of type half makes the following assumptions
+//	about the implementation of the built-in C++ types:
+//
+//	    float is an IEEE 754 single-precision number
+//	    sizeof (float) == 4
+//	    sizeof (unsigned int) == sizeof (float)
+//	    alignof (unsigned int) == alignof (float)
+//	    sizeof (unsigned short) == 2
+//
+//---------------------------------------------------------------------------
+
+#ifndef _HALF_H_
+#define _HALF_H_
+
+#include <iostream>
+
+class half
+{
+  public:
+
+    //-------------
+    // Constructors
+    //-------------
+
+    half ();			// no initialization
+    half (float f);
+
+
+    //--------------------
+    // Conversion to float
+    //--------------------
+
+    operator		float () const;
+
+
+    //------------
+    // Unary minus
+    //------------
+
+    half		operator - () const;
+
+
+    //-----------
+    // Assignment
+    //-----------
+
+    half &		operator = (half  h);
+    half &		operator = (float f);
+
+    half &		operator += (half  h);
+    half &		operator += (float f);
+
+    half &		operator -= (half  h);
+    half &		operator -= (float f);
+
+    half &		operator *= (half  h);
+    half &		operator *= (float f);
+
+    half &		operator /= (half  h);
+    half &		operator /= (float f);
+
+
+    //---------------------------------------------------------
+    // Round to n-bit precision (n should be between 0 and 10).
+    // After rounding, the significand's 10-n least significant
+    // bits will be zero.
+    //---------------------------------------------------------
+
+    half		round (unsigned int n) const;
+
+
+    //--------------------------------------------------------------------
+    // Classification:
+    //
+    //	h.isFinite()		returns true if h is a normalized number,
+    //				a denormalized number or zero
+    //
+    //	h.isNormalized()	returns true if h is a normalized number
+    //
+    //	h.isDenormalized()	returns true if h is a denormalized number
+    //
+    //	h.isZero()		returns true if h is zero
+    //
+    //	h.isNan()		returns true if h is a NAN
+    //
+    //	h.isInfinity()		returns true if h is a positive
+    //				or a negative infinity
+    //
+    //	h.isNegative()		returns true if the sign bit of h
+    //				is set (negative)
+    //--------------------------------------------------------------------
+
+    bool		isFinite () const;
+    bool		isNormalized () const;
+    bool		isDenormalized () const;
+    bool		isZero () const;
+    bool		isNan () const;
+    bool		isInfinity () const;
+    bool		isNegative () const;
+
+
+    //--------------------------------------------
+    // Special values
+    //
+    //	posInf()	returns +infinity
+    //
+    //	negInf()	returns +infinity
+    //
+    //	qNan()		returns a NAN with the bit
+    //			pattern 0111111111111111
+    //
+    //	sNan()		returns a NAN with the bit
+    //			pattern 0111110111111111
+    //--------------------------------------------
+
+    static half		posInf ();
+    static half		negInf ();
+    static half		qNan ();
+    static half		sNan ();
+
+
+    //--------------------------------------
+    // Access to the internal representation
+    //--------------------------------------
+
+    unsigned short	bits () const;
+    void		setBits (unsigned short bits);
+
+
+  public:
+
+    union uif
+    {
+	unsigned int	i;
+	float		f;
+    };
+
+  private:
+
+    static short	convert (int i);
+    static float	overflow ();
+    static bool		selftest ();
+
+    unsigned short	_h;
+
+    static const uif		_toFloat[1 << 16];
+    static const unsigned short	_eLut[1 << 9];
+    static const bool		_itWorks;
+};
+
+
+//-----------
+// Stream I/O
+//-----------
+
+std::ostream &		operator << (std::ostream &os, half  h);
+std::istream &		operator >> (std::istream &is, half &h);
+
+
+//----------
+// Debugging
+//----------
+
+void			printBits   (std::ostream &os, half  h);
+void			printBits   (std::ostream &os, float f);
+void			printBits   (char  c[19], half  h);
+void			printBits   (char  c[35], float f);
+
+
+//-------
+// Limits
+//-------
+
+//----------------------------------------------------------------
+// Visual C++ will complain if these are not float constants,
+// but at least one other compiler (gcc 2.96) produces incorrect
+// results if they are.
+//----------------------------------------------------------------
+
+#ifdef WIN32
+#define HALF_MIN	5.96046448e-08f	// Smallest positive half
+
+#define HALF_NRM_MIN	6.10351562e-05f	// Smallest positive normalized half
+
+#define HALF_MAX	65504.0f	// Largest positive half
+
+#define HALF_EPSILON	0.00097656f	// Smallest positive e for which
+					// half (1.0 + e) != half (1.0)
+#else
+#define HALF_MIN	5.96046448e-08	// Smallest positive half
+
+#define HALF_NRM_MIN	6.10351562e-05	// Smallest positive normalized half
+
+#define HALF_MAX	65504.0		// Largest positive half
+
+#define HALF_EPSILON	0.00097656	// Smallest positive e for which
+					// half (1.0 + e) != half (1.0)
+#endif // WIN32
+
+#define HALF_MANT_DIG	11		// Number of digits in mantissa
+					// (significand + hidden leading 1)
+
+#define HALF_DIG	2		// Number of base 10 digits that
+					// can be represented without change
+
+#define HALF_RADIX	2		// Base of the exponent
+
+#define HALF_MIN_EXP	-13		// Minimum negative integer such that
+					// HALF_RADIX raised to the power of
+					// one less than that integer is a
+					// normalized half
+
+#define HALF_MAX_EXP	16		// Maximum positive integer such that
+					// HALF_RADIX raised to the power of
+					// one less than that integer is a
+					// normalized half
+
+#define HALF_MIN_10_EXP	-4		// Minimum positive integer such
+					// that 10 raised to that power is
+					// a normalized half
+
+#define HALF_MAX_10_EXP	4		// Maximum positive integer such
+					// that 10 raised to that power is
+					// a normalized half
+
+
+//---------------------------------------------------------------------------
+//
+// Implementation --
+//
+// Representation of a float:
+//
+//	We assume that a float, f, is an IEEE 754 single-precision
+//	floating point number, whose bits are arranged as follows:
+//
+//	    31 (msb)
+//	    | 
+//	    | 30     23
+//	    | |      | 
+//	    | |      | 22                    0 (lsb)
+//	    | |      | |                     |
+//	    X XXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
+//
+//	    s e        m
+//
+//	S is the sign-bit, e is the exponent and m is the significand.
+//
+//	If e is between 1 and 254, f is a normalized number:
+//
+//	            s    e-127
+//	    f = (-1)  * 2      * 1.m
+//
+//	If e is 0, and m is not zero, f is a denormalized number:
+//
+//	            s    -126
+//	    f = (-1)  * 2      * 0.m
+//
+//	If e and m are both zero, f is zero:
+//
+//	    f = 0.0
+//
+//	If e is 255, f is an "infinity" or "not a number" (NAN),
+//	depending on whether m is zero or not.
+//
+//	Examples:
+//
+//	    0 00000000 00000000000000000000000 = 0.0
+//	    0 01111110 00000000000000000000000 = 0.5
+//	    0 01111111 00000000000000000000000 = 1.0
+//	    0 10000000 00000000000000000000000 = 2.0
+//	    0 10000000 10000000000000000000000 = 3.0
+//	    1 10000101 11110000010000000000000 = -124.0625
+//	    0 11111111 00000000000000000000000 = +infinity
+//	    1 11111111 00000000000000000000000 = -infinity
+//	    0 11111111 10000000000000000000000 = NAN
+//	    1 11111111 11111111111111111111111 = NAN
+//
+// Representation of a half:
+//
+//	Here is the bit-layout for a half number, h:
+//
+//	    15 (msb)
+//	    | 
+//	    | 14  10
+//	    | |   |
+//	    | |   | 9        0 (lsb)
+//	    | |   | |        |
+//	    X XXXXX XXXXXXXXXX
+//
+//	    s e     m
+//
+//	S is the sign-bit, e is the exponent and m is the significand.
+//
+//	If e is between 1 and 30, h is a normalized number:
+//
+//	            s    e-15
+//	    h = (-1)  * 2     * 1.m
+//
+//	If e is 0, and m is not zero, h is a denormalized number:
+//
+//	            S    -14
+//	    h = (-1)  * 2     * 0.m
+//
+//	If e and m are both zero, h is zero:
+//
+//	    h = 0.0
+//
+//	If e is 31, h is an "infinity" or "not a number" (NAN),
+//	depending on whether m is zero or not.
+//
+//	Examples:
+//
+//	    0 00000 0000000000 = 0.0
+//	    0 01110 0000000000 = 0.5
+//	    0 01111 0000000000 = 1.0
+//	    0 10000 0000000000 = 2.0
+//	    0 10000 1000000000 = 3.0
+//	    1 10101 1111000001 = -124.0625
+//	    0 11111 0000000000 = +infinity
+//	    1 11111 0000000000 = -infinity
+//	    0 11111 1000000000 = NAN
+//	    1 11111 1111111111 = NAN
+//
+// Conversion:
+//
+//	Converting from a float to a half requires some non-trivial bit
+//	manipulations.  In some cases, this makes conversion relatively
+//	slow, but the most common case is accelerated via table lookups.
+//
+//	Converting back from a half to a float is easier because we don't
+//	have to do any rounding.  In addition, there are only 65536
+//	different half numbers; we can convert each of those numbers once
+//	and store the results in a table.  Later, all conversions can be
+//	done using only simple table lookups.
+//
+//---------------------------------------------------------------------------
+
+
+//--------------------
+// Simple constructors
+//--------------------
+
+inline
+half::half ()
+{
+    // no initialization
+}
+
+
+//----------------------------
+// Half-from-float constructor
+//----------------------------
+
+inline
+half::half (float f)
+{
+    if (f == 0)
+    {
+	//
+	// Common special case - zero.
+	// For speed, we don't preserve the zero's sign.
+	//
+
+	_h = 0;
+    }
+    else
+    {
+	//
+	// We extract the combined sign and exponent, e, from our
+	// floating-point number, f.  Then we convert e to the sign
+	// and exponent of the half number via a table lookup.
+	//
+	// For the most common case, where a normalized half is produced,
+	// the table lookup returns a non-zero value; in this case, all
+	// we have to do, is round f's significand to 10 bits and combine
+	// the result with e.
+	//
+	// For all other cases (overflow, zeroes, denormalized numbers
+	// resulting from underflow, infinities and NANs), the table
+	// lookup returns zero, and we call a longer, non-inline function
+	// to do the float-to-half conversion.
+	//
+
+	uif x;
+
+	x.f = f;
+
+	register int e = (x.i >> 23) & 0x000001ff;
+
+	e = _eLut[e];
+
+	if (e)
+	{
+	    //
+	    // Simple case - round the significand and
+	    // combine it with the sign and exponent.
+	    //
+
+	    _h = e + (((x.i & 0x007fffff) + 0x00001000) >> 13);
+	}
+	else
+	{
+	    //
+	    // Difficult case - call a function.
+	    //
+
+	    _h = convert (x.i);
+	}
+    }
+}
+
+
+//------------------------------------------
+// Half-to-float conversion via table lookup
+//------------------------------------------
+
+inline
+half::operator float () const
+{
+    return _toFloat[_h].f;
+}
+
+
+//-------------------------
+// Round to n-bit precision
+//-------------------------
+
+inline half
+half::round (unsigned int n) const
+{
+    //
+    // Parameter check.
+    //
+
+    if (n >= 10)
+	return *this;
+
+    //
+    // Disassemble h into the sign, s,
+    // and the combined exponent and significand, e.
+    //
+
+    unsigned short s = _h & 0x8000;
+    unsigned short e = _h & 0x7fff;
+
+    //
+    // Round the exponent and significand to the nearest value
+    // where ones occur only in the (10-n) most significant bits.
+    // Note that the exponent adjusts automatically if rounding
+    // up causes the significand to overflow.
+    //
+
+    e >>= 9 - n;
+    e  += e & 1;
+    e <<= 9 - n;
+
+    //
+    // Check for exponent overflow.
+    //
+
+    if (e >= 0x7c00)
+    {
+	//
+	// Overflow occurred -- truncate instead of rounding.
+	//
+
+	e = _h;
+	e >>= 10 - n;
+	e <<= 10 - n;
+    }
+
+    //
+    // Put the original sign bit back.
+    //
+
+    half h;
+    h._h = s | e;
+
+    return h;
+}
+
+
+//-----------------------
+// Other inline functions
+//-----------------------
+
+inline half	
+half::operator - () const
+{
+    half h;
+    h._h = _h ^ 0x8000;
+    return h;
+}
+
+
+inline half &
+half::operator = (half h)
+{
+    _h = h._h;
+    return *this;
+}
+
+
+inline half &
+half::operator = (float f)
+{
+    *this = half (f);
+    return *this;
+}
+
+
+inline half &
+half::operator += (half h)
+{
+    *this = half (float (*this) + float (h));
+    return *this;
+}
+
+
+inline half &
+half::operator += (float f)
+{
+    *this = half (float (*this) + f);
+    return *this;
+}
+
+
+inline half &
+half::operator -= (half h)
+{
+    *this = half (float (*this) - float (h));
+    return *this;
+}
+
+
+inline half &
+half::operator -= (float f)
+{
+    *this = half (float (*this) - f);
+    return *this;
+}
+
+
+inline half &
+half::operator *= (half h)
+{
+    *this = half (float (*this) * float (h));
+    return *this;
+}
+
+
+inline half &
+half::operator *= (float f)
+{
+    *this = half (float (*this) * f);
+    return *this;
+}
+
+
+inline half &
+half::operator /= (half h)
+{
+    *this = half (float (*this) / float (h));
+    return *this;
+}
+
+
+inline half &
+half::operator /= (float f)
+{
+    *this = half (float (*this) / f);
+    return *this;
+}
+
+
+inline bool	
+half::isFinite () const
+{
+    unsigned short e = (_h >> 10) & 0x001f;
+    return e < 31;
+}
+
+
+inline bool
+half::isNormalized () const
+{
+    unsigned short e = (_h >> 10) & 0x001f;
+    return e > 0 && e < 31;
+}
+
+
+inline bool
+half::isDenormalized () const
+{
+    unsigned short e = (_h >> 10) & 0x001f;
+    unsigned short m =  _h & 0x3ff;
+    return e == 0 && m != 0;
+}
+
+
+inline bool
+half::isZero () const
+{
+    return (_h & 0x7fff) == 0;
+}
+
+
+inline bool
+half::isNan () const
+{
+    unsigned short e = (_h >> 10) & 0x001f;
+    unsigned short m =  _h & 0x3ff;
+    return e == 31 && m != 0;
+}
+
+
+inline bool
+half::isInfinity () const
+{
+    unsigned short e = (_h >> 10) & 0x001f;
+    unsigned short m =  _h & 0x3ff;
+    return e == 31 && m == 0;
+}
+
+
+inline bool	
+half::isNegative () const
+{
+    return (_h & 0x8000) != 0;
+}
+
+
+inline half
+half::posInf ()
+{
+    half h;
+    h._h = 0x7c00;
+    return h;
+}
+
+
+inline half
+half::negInf ()
+{
+    half h;
+    h._h = 0xfc00;
+    return h;
+}
+
+
+inline half
+half::qNan ()
+{
+    half h;
+    h._h = 0x7fff;
+    return h;
+}
+
+
+inline half
+half::sNan ()
+{
+    half h;
+    h._h = 0x7dff;
+    return h;
+}
+
+
+inline unsigned short
+half::bits () const
+{
+    return _h;
+}
+
+
+inline void
+half::setBits (unsigned short bits)
+{
+    _h = bits;
+}
+
+
+#endif
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/.params
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/.params	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/.params	(revision 1481)
@@ -0,0 +1,6 @@
+----- RayTraceEffects: Saved parameters of the algorithm -----
+Bool values:
+00000
+(Show Help; Move light; Look from light; Entry points; Turbo; )
+Float values:
+1 	(Iterations, 0..10)
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2005.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2005.vcproj	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine_2005.vcproj	(revision 1481)
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="HierRayEngine"
+	ProjectGUID="{9C04CC2D-C188-4443-A185-CB0BCA6ED98D}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="UpgradeFromVC71.vsprops"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;PROFILE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="0"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib comctl32.lib"
+				LinkIncremental="2"
+				GenerateManifest="false"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/HierRayEngine.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"/>
+			<Tool
+				Name="VCALinkTool"/>
+			<Tool
+				Name="VCManifestTool"
+				EmbedManifest="false"/>
+			<Tool
+				Name="VCXDCMakeTool"/>
+			<Tool
+				Name="VCBscMakeTool"/>
+			<Tool
+				Name="VCFxCopTool"/>
+			<Tool
+				Name="VCAppVerifierTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="UpgradeFromVC71.vsprops"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="true"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib"
+				OutputFile="$(OutDir)/HierRayEngine.exe"
+				LinkIncremental="1"
+				GenerateManifest="false"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"/>
+			<Tool
+				Name="VCALinkTool"/>
+			<Tool
+				Name="VCManifestTool"
+				EmbedManifest="false"/>
+			<Tool
+				Name="VCXDCMakeTool"/>
+			<Tool
+				Name="VCBscMakeTool"/>
+			<Tool
+				Name="VCFxCopTool"/>
+			<Tool
+				Name="VCAppVerifierTool"/>
+		</Configuration>
+		<Configuration
+			Name="Profile|Win32"
+			OutputDirectory="Profile"
+			IntermediateDirectory="Profile"
+			ConfigurationType="1"
+			InheritedPropertySheets="UpgradeFromVC71.vsprops"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				OmitFramePointers="true"
+				AdditionalIncludeDirectories="Common"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;PROFILE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="3"
+				PrecompiledHeaderThrough="dxstdafx.h"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/IGNORE:4089"
+				AdditionalDependencies="dxerr9.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib comctl32.lib"
+				OutputFile="$(OutDir)/HierRayEngine.exe"
+				LinkIncremental="1"
+				GenerateManifest="false"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"/>
+			<Tool
+				Name="VCALinkTool"/>
+			<Tool
+				Name="VCManifestTool"
+				EmbedManifest="false"/>
+			<Tool
+				Name="VCXDCMakeTool"/>
+			<Tool
+				Name="VCBscMakeTool"/>
+			<Tool
+				Name="VCFxCopTool"/>
+			<Tool
+				Name="VCAppVerifierTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath="Common\directx.ico">
+			</File>
+			<File
+				RelativePath="HierRayEngine.manifest">
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Profile|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="HierRayEngine.rc">
+			</File>
+			<File
+				RelativePath="resource.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Common"
+			Filter="">
+			<File
+				RelativePath="Common\dxstdafx.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Profile|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="Common\dxstdafx.h">
+			</File>
+			<File
+				RelativePath="Common\dxut.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxut.h">
+			</File>
+			<File
+				RelativePath="Common\dxutenum.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxutenum.h">
+			</File>
+			<File
+				RelativePath="Common\DXUTRes.cpp">
+			</File>
+			<File
+				RelativePath="Common\DXUTRes.h">
+			</File>
+			<File
+				RelativePath="Common\dxutmisc.cpp">
+			</File>
+			<File
+				RelativePath="Common\dxutmisc.h">
+			</File>
+		</Filter>
+		<File
+			RelativePath="HierRayEngine.cpp">
+			<FileConfiguration
+				Name="Release|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="3"
+					PrecompiledHeaderThrough="dxstdafx.h"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Profile|Win32">
+				<Tool
+					Name="VCCLCompilerTool"
+					UsePrecompiledHeader="3"
+					PrecompiledHeaderThrough="dxstdafx.h"/>
+			</FileConfiguration>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HierRayEngine.cpp	(revision 1481)
@@ -0,0 +1,334 @@
+//--------------------------------------------------------------------------------------
+// File: HierRayEngine.cpp
+//
+// Empty starting point for new Direct3D applications
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+#include "dxstdafx.h"
+#include "resource.h"
+
+#include "HREEffect.h"
+#include "Parameters.h"
+
+HREEffect*	hreEffect = NULL;
+
+bool						gShowUI = true;
+CDXUTDialogResourceManager	gDialogResourceManager;		// manager for shared resources of dialogs
+CD3DSettingsDlg				gSettingsDlg;				// Device settings dialog
+CDXUTDialog					gHUD;						// Dialog for sample specific controls
+
+ID3DXFont*					gFont = NULL;				// Font for drawing text
+ID3DXSprite*				gTextSprite = NULL;			// Sprite for batching draw text calls
+
+Parameters					gParameters;
+
+//--------------------------------------------------------------------------------------
+// Rejects any devices that aren't acceptable by returning false
+//--------------------------------------------------------------------------------------
+bool CALLBACK IsDeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, 
+                                  D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext )
+{
+    // Typically want to skip backbuffer formats that don't support alpha blending
+    IDirect3D9* pD3D = DXUTGetD3DObject(); 
+    if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,
+                    AdapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING, 
+                    D3DRTYPE_TEXTURE, BackBufferFormat ) ) )
+        return false;
+
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Before a device is created, modify the device settings as needed
+//--------------------------------------------------------------------------------------
+bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, const D3DCAPS9* pCaps, void* pUserContext )
+{
+	pDeviceSettings->pp.Flags &= ~D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
+	// VSync off
+	pDeviceSettings->pp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
+    return true;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Create any D3DPOOL_MANAGED resources here 
+//--------------------------------------------------------------------------------------
+HRESULT CALLBACK OnCreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext )
+{
+	gDialogResourceManager.OnCreateDevice( pd3dDevice );
+	gSettingsDlg.OnCreateDevice( pd3dDevice );
+
+    // Initialize the font
+	D3DXCreateFont( pd3dDevice, 15, 0, FW_BOLD, 1, FALSE, DEFAULT_CHARSET, 
+                         OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, 
+                         L"Arial", &gFont );
+
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Create any D3DPOOL_DEFAULT resources here 
+//--------------------------------------------------------------------------------------
+HRESULT CALLBACK OnResetDevice( IDirect3DDevice9* pd3dDevice, 
+                                const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext )
+{
+	gDialogResourceManager.OnResetDevice();
+	gSettingsDlg.OnResetDevice();
+
+    if( gFont )
+		gFont->OnResetDevice();
+  
+    // Create a sprite to help batch calls when drawing many lines of text
+	D3DXCreateSprite( pd3dDevice, &gTextSprite );
+
+    // Position the on-screen dialog
+    gHUD.SetLocation( 0, 0 );
+    gHUD.SetSize( pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height );
+
+	hreEffect = new HREEffect(pd3dDevice);
+    return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Handle updates to the scene
+//--------------------------------------------------------------------------------------
+void CALLBACK OnFrameMove( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
+{
+	if(hreEffect)
+		hreEffect->move(fElapsedTime);
+}
+
+//--------------------------------------------------------------------------------------
+// Render the help and statistics text.
+//--------------------------------------------------------------------------------------
+void RenderText()
+{
+	const D3DSURFACE_DESC* backBufferDesc = DXUTGetBackBufferSurfaceDesc();
+
+    CDXUTTextHelper txtHelper( gFont, gTextSprite, 15 );
+    txtHelper.Begin();
+
+	txtHelper.SetInsertionPos( 5, 5 );
+	txtHelper.SetForegroundColor( D3DXCOLOR( 1.0f, 1.0f, 0.0f, 1.0f ) );
+
+	if(gShowUI)
+	{
+		txtHelper.DrawFormattedTextLine( L"%.2f fps @ %i x %i", 
+		DXUTGetFPS(), backBufferDesc->Width, backBufferDesc->Height );
+		txtHelper.DrawTextLine( DXUTGetFrameStats() );
+		txtHelper.DrawTextLine( DXUTGetDeviceStats() );
+		
+		txtHelper.SetInsertionPos( 5, 180 );
+		txtHelper.SetForegroundColor( D3DXCOLOR( 1.0f, 1.0f, 1.0f, 1.0f ) );
+	
+		if(hreEffect)
+		{
+			txtHelper.DrawFormattedTextLine( hreEffect->getCurrentMethodName());
+		}
+
+	}
+	txtHelper.SetForegroundColor( D3DXCOLOR( 1.0f, 1.0f, 0.0f, 1.0f ) );
+
+	if ( gParameters.Get( bShowHelp ) )
+	{
+		txtHelper.SetInsertionPos( backBufferDesc->Width - 260, backBufferDesc->Height-24*8 );
+
+		txtHelper.DrawTextLine( 
+				L"Controls (F1 to hide):\n\n"
+				L"___________________________________\n"
+				L"                     GENERAL CONTROLS\n"
+				L"Left click drag: Turn camera\n"
+				L"Space: Show/Hide UI Elements\n"
+				L"___________________________________\n"
+				L"___________________________________\n"
+				L"                             Quit: ESC");
+	}
+	else
+	{
+	//	txtHelper.DrawTextLine( L"Press F1 for help" );
+	}
+
+	txtHelper.End();
+}
+
+//--------------------------------------------------------------------------------------
+// Render the scene 
+//--------------------------------------------------------------------------------------
+void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
+{
+	hreEffect->render();
+	pd3dDevice->BeginScene();
+	RenderText();
+	if(gShowUI)
+		gHUD.OnRender( fElapsedTime );
+	pd3dDevice->EndScene();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Handle messages to the application 
+//--------------------------------------------------------------------------------------
+LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, 
+                          bool* pbNoFurtherProcessing, void* pUserContext )
+{
+    *pbNoFurtherProcessing = gDialogResourceManager.MsgProc( hWnd, uMsg, wParam, lParam );
+    if( *pbNoFurtherProcessing )
+        return 0;
+
+    if( gSettingsDlg.IsActive() )
+    {
+        gSettingsDlg.MsgProc( hWnd, uMsg, wParam, lParam );
+        return 0;
+    }
+
+	// Give the dialogs a chance to handle the message first
+    *pbNoFurtherProcessing = gHUD.MsgProc( hWnd, uMsg, wParam, lParam );
+    if( *pbNoFurtherProcessing )
+        return 0;
+
+	if(hreEffect)
+		hreEffect->handleMessage(hWnd, uMsg, wParam, lParam);
+
+    return 0;
+}
+
+void    CALLBACK KeyboardProc( UINT nChar, bool bKeyDown, bool bAltDown, void* pUserContext )
+{
+	if( bKeyDown )
+    {
+		switch(nChar)
+		{
+			case VK_SPACE:
+				gShowUI=!gShowUI;
+				break;
+			case VK_TAB:
+				if(hreEffect)
+					hreEffect->nextMethod();
+				break;
+			case '0':
+				if(hreEffect)
+					hreEffect->prevMethod();
+				break;
+			case VK_DOWN:
+				break;
+			case VK_UP:
+				break;
+			case VK_LEFT:
+				break;
+			case VK_RIGHT:
+				break;
+			case VK_DELETE:
+				break;
+			case VK_END:
+				break;				
+			default:
+				break;
+		}
+	}
+}
+
+void    CALLBACK OnGUIEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext )
+{
+	gParameters.UpdateFromHUD( nControlID );
+	if(nControlID == IDC_GEN_BUTTON)
+	{
+		LPDIRECT3DDEVICE9 dev = hreEffect->getDevice();
+		delete hreEffect;
+		hreEffect = new HREEffect(dev);
+	}
+}
+
+void OnLoad()
+{
+}
+
+void OnSave()
+{
+}
+
+void OnReset()
+{
+}
+
+//--------------------------------------------------------------------------------------
+// Release resources created in the OnResetDevice callback here 
+//--------------------------------------------------------------------------------------
+void CALLBACK OnLostDevice( void* pUserContext )
+{
+		gDialogResourceManager.OnLostDevice();
+    gSettingsDlg.OnLostDevice();
+
+    if( gFont )
+		gFont->OnLostDevice();
+   
+	gTextSprite->Release();
+
+	delete hreEffect;
+	hreEffect = NULL;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Release resources created in the OnCreateDevice callback here
+//--------------------------------------------------------------------------------------
+void CALLBACK OnDestroyDevice( void* pUserContext )
+{
+	gDialogResourceManager.OnDestroyDevice();
+    gSettingsDlg.OnDestroyDevice();
+
+	gFont->Release();
+}
+
+//--------------------------------------------------------------------------------------
+// Initialize everything and go into a render loop
+//--------------------------------------------------------------------------------------
+INT WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
+{
+    // Enable run-time memory check for debug builds.
+#if defined(DEBUG) | defined(_DEBUG)
+    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
+#endif
+
+    // Set the callback functions
+    DXUTSetCallbackDeviceCreated( OnCreateDevice );
+    DXUTSetCallbackDeviceReset( OnResetDevice );
+    DXUTSetCallbackDeviceLost( OnLostDevice );
+    DXUTSetCallbackDeviceDestroyed( OnDestroyDevice );
+    DXUTSetCallbackMsgProc( MsgProc );
+    DXUTSetCallbackFrameRender( OnFrameRender );
+    DXUTSetCallbackFrameMove( OnFrameMove );
+	DXUTSetCallbackKeyboard( KeyboardProc ); 
+   
+    // TODO: Perform any application-level initialization here
+	gSettingsDlg.Init( &gDialogResourceManager );
+	gHUD.Init( &gDialogResourceManager );
+	gHUD.SetCallback( OnGUIEvent );	// Event handling
+
+	gParameters.Setup( &gHUD, OnReset, OnSave, OnLoad);	// you can add callbacks to these actions
+	
+	gParameters.Add( bShowHelp, "Show Help", VK_F1 );
+
+	HREEffect::addUiParameters(&gParameters);
+	
+	gParameters.UpdateFromHUD( IDC_RESET_BUTTON );	// do a reset
+
+
+    // Initialize DXUT and create the desired Win32 window and Direct3D device for the application
+    DXUTInit( true, true, true ); // Parse the command line, handle the default hotkeys, and show msgboxes
+    DXUTSetCursorSettings( true, true ); // Show the cursor and clip it when in full screen
+    DXUTCreateWindow( L"Hierarchical Ray Engine" );
+    DXUTCreateDevice( D3DADAPTER_DEFAULT, true, 512, 512, IsDeviceAcceptable, ModifyDeviceSettings );
+
+    // Start the render loop
+    DXUTMainLoop();
+
+    // TODO: Perform any application-level cleanup here
+
+    return DXUTGetExitCode();
+}
+
+
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/README.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/README.txt	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/README.txt	(revision 1481)
@@ -0,0 +1,43 @@
+GameTools standalone demo:
+
+Ray tracing on the GPU [actual ray tracing, not approximate]
+#############################
+
+
+Provided effect:
+#################
+
+Multiple visible refractive objects with multiple refractions, including
+total internal reflection and refraction of exiting rays. The solution is
+based on the hierarchical (tiled) version of the Ray Engine approach.
+
+Algorithm benefits:
+###################
+Actual ray tracing allows accurate light simulation. The hierarchical ray engine
+makes use of coherence to achive interactive performance. Therefore, it is
+most suitable for rendering eye or photon paths: primarily visible refractive
+objects or caustics (if augmented with photon splatting, not in this demo, but
+featured in our 'approximate ray tracing' implementations. )
+
+The algorithm is linear in the number of ray-tracing primitives. It is therefore
+most useful if:
+- a large number of coherent ray paths needs to be traced
+- a low number of primitives are processed (low-poly models)
+- non-triangle geometry (spheres, quadratics, etc.) is used
+
+Compared to the depth approximate ray tracing solutions (a.k.a localized
+environment maps, depth environment impostors) the accuracy is often
+not necessary for a plausible result. Therefore, in a game, the ray
+engine approach is only competitive in a few special cases matching the
+conditions listed above.
+
+Build:
+######
+This is a standalone DirectX 9.0 application, compiles under Visual C++ 2003
+with DirectX SDK April 2006 (identical to June 2006).
+
+Usage notes:
+############
+- Do not resize the application window. A fixed array of rays/tiles is used.
+- use the 'Iterations' slider to toggle the length of ray paths traced. Ignore
+the displayed number.
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HREEffect.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HREEffect.cpp	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/HREEffect.cpp	(revision 1481)
@@ -0,0 +1,809 @@
+#include "dxstdafx.h"
+#include ".\hreeffect.h"
+
+struct ProcessedTriangle			//< a vertex encoding a triangle
+{
+	Vector sphereCentre;			//< endclosig sphere centre							: POSITION.xyz
+	float radius;					//< endclosing sphere radius						: POSITION.w
+	Vector planePos;				//< triangle plane point nearest to origin			: NORMAL
+	Vector inverseVertexMatrix[3];	//< Cartesian-to-barycentric transformation matrix	: TEXCOORD0-2
+	Vector normals[3];				//< model normals at triangle vertices				: TEXCOORD3-5
+	Vector tex[3];					//< model texture coords at triangle vertices		: TEXCOORD6-8
+};
+
+//! D3D vector-matrix multiplication
+D3DVECTOR operator *(const D3DVECTOR& v, const D3DMATRIX& m)
+{
+	D3DVECTOR r;
+	r.x = v.x * m._11 + v.y * m._21 + v.z * m._31 + m._41;
+	r.y = v.x * m._12 + v.y * m._22 + v.z * m._32 + m._42;
+	r.z = v.x * m._13 + v.y * m._23 + v.z * m._33 + m._43;
+	float h = v.x * m._14 + v.y * m._24 + v.z * m._34 + m._44;
+	if(h > 0.00001f || h < 0.00001f)
+	{
+		r.x /= h;
+		r.y /= h;
+		r.z /= h;
+	}
+	return r;
+}
+
+//! method name strings to be displayed on screen
+const wchar_t* HREEffect::Method::methodNames[10] =
+{
+	L"Ray Engine",
+	L"_",
+	L"_",
+	L"_"
+	, NULL, NULL, NULL, NULL, NULL, NULL
+};
+
+//! method constants
+const HREEffect::Method HREEffect::Method::RAYENGINE(0);
+const HREEffect::Method HREEffect::Method::LAST(1);
+
+HREEffect::HREEffect(LPDIRECT3DDEVICE9 device)
+:method(Method::RAYENGINE)
+{
+	this->device = device;
+
+	//first person camera allows more freedom of movement
+	camera = new CFirstPersonCamera();
+	lightCamera = new CFirstPersonCamera();
+
+	HRESULT hr;
+	DWORD effectCompileFlag=0;
+	
+	LPD3DXBUFFER compilationErrors;
+	if(FAILED(
+		hr = 
+			D3DXCreateEffectFromFile(
+				device,
+				L"rayEngine.fx",
+				NULL,
+				NULL,
+				0,
+				NULL,
+				&effect,
+				&compilationErrors) )){
+		MessageBoxA( NULL, (LPSTR)compilationErrors->GetBufferPointer(), "Failed to load effect file!", MB_OK);
+		exit(-1);
+	}
+
+	//store buffers so we can reset them after rendering to texture render targets
+	device->GetRenderTarget(0, &frameColorBuffer);
+	device->GetDepthStencilSurface(&frameDepthStencilBuffer);
+
+	camera->SetViewParams( &D3DXVECTOR3(0.0f, 0.0f, 4.0f), &D3DXVECTOR3(0.0f, 0.0f, 0.0f));
+	D3DSURFACE_DESC fbdesc;
+	frameColorBuffer->GetDesc(&fbdesc);
+	camera->SetProjParams( D3DX_PI/2, (float)fbdesc.Width / fbdesc.Height, 0.1f, 300.0f );
+
+	hr = D3DXCreateCubeTextureFromFile(device, L"media//uffizi_lowrange.dds", &environmentCubeTexture);
+
+	hr=device->CreateTexture(RAY_TABLE_WIDTH / 16,RAY_TABLE_HEIGHT / 16,1,D3DUSAGE_RENDERTARGET,D3DFMT_A32B32G32R32F,D3DPOOL_DEFAULT,&conePeakTexture,NULL);
+	hr=conePeakTexture->GetSurfaceLevel(0,&conePeakSurface);
+
+	hr=device->CreateTexture(RAY_TABLE_WIDTH / 16,RAY_TABLE_HEIGHT / 16,1,0,D3DFMT_A32B32G32R32F,D3DPOOL_SYSTEMMEM,&conePeakTextureMem,NULL);
+	hr=conePeakTextureMem->GetSurfaceLevel(0,&conePeakSurfaceMem);
+
+	hr=device->CreateTexture(RAY_TABLE_WIDTH / 16,RAY_TABLE_HEIGHT / 16,1,D3DUSAGE_RENDERTARGET,D3DFMT_A32B32G32R32F,D3DPOOL_DEFAULT,&coneDirTexture,NULL);
+	hr=coneDirTexture->GetSurfaceLevel(0,&coneDirSurface);
+
+	hr=device->CreateTexture(RAY_TABLE_WIDTH / 16,RAY_TABLE_HEIGHT / 16,1,0,D3DFMT_A32B32G32R32F,D3DPOOL_SYSTEMMEM,&coneDirTextureMem,NULL);
+	hr=coneDirTextureMem->GetSurfaceLevel(0,&coneDirSurfaceMem);
+
+	hr=device->CreateTexture(RAY_TABLE_WIDTH,RAY_TABLE_HEIGHT,1,D3DUSAGE_RENDERTARGET,RAY_ORIGIN_COLOR_FORMAT,D3DPOOL_DEFAULT,&rayOriginTableTexture,NULL);
+	hr=rayOriginTableTexture->GetSurfaceLevel(0,&rayOriginTableSurface);
+	hr=device->CreateTexture(RAY_TABLE_WIDTH,RAY_TABLE_HEIGHT,1,D3DUSAGE_RENDERTARGET,RAY_DIR_COLOR_FORMAT,D3DPOOL_DEFAULT,&rayDirTableTexture,NULL);
+	hr=rayDirTableTexture->GetSurfaceLevel(0,&rayDirTableSurface);
+
+	hr=device->CreateTexture(RAY_TABLE_WIDTH,RAY_TABLE_HEIGHT,1,D3DUSAGE_RENDERTARGET,RAY_ORIGIN_COLOR_FORMAT,D3DPOOL_DEFAULT,&rayOriginTableTexture2,NULL);
+	hr=rayOriginTableTexture2->GetSurfaceLevel(0,&rayOriginTableSurface2);
+	hr=device->CreateTexture(RAY_TABLE_WIDTH,RAY_TABLE_HEIGHT,1,D3DUSAGE_RENDERTARGET,RAY_DIR_COLOR_FORMAT,D3DPOOL_DEFAULT,&rayDirTableTexture2,NULL);
+	hr=rayDirTableTexture2->GetSurfaceLevel(0,&rayDirTableSurface2);
+
+	device->CreateDepthStencilSurface(RAY_TABLE_WIDTH / 16,RAY_TABLE_HEIGHT / 16,DEPTH_FORMAT,D3DMULTISAMPLE_NONE,0,false,&coneStencil,NULL);
+
+	device->CreateDepthStencilSurface(RAY_TABLE_WIDTH,RAY_TABLE_HEIGHT,DEPTH_FORMAT,D3DMULTISAMPLE_NONE,0,false,&depthSurface,NULL);
+
+	D3DVERTEXELEMENT9 trianglePrimitiveDeclElements[] = 
+	{
+		{0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION , 0},
+		{0, 16, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL , 0},
+		{0, 28, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 0},
+		{0, 40, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 1},
+		{0, 52, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 2},
+		{0, 64, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 3},
+		{0, 76, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 4},
+		{0, 88, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 5},
+		{0, 100, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 6},
+		{0, 112, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 7},
+		{0, 124, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 8},
+		D3DDECL_END()
+	};
+	hr = device->CreateVertexDeclaration(trianglePrimitiveDeclElements, &trianglePrimitiveDeclaration);
+
+	//load empty texture
+	D3DXCreateTextureFromFile(device, L"media\\empty.bmp", &emptyTexture);
+
+	//set up a scene
+	loadMesh( L"media\\pillow.x" );
+	loadMesh( L"media\\torus.x" );
+
+	Entity e1;
+	e1.owner = this;
+	e1.mesh = meshes.at(0);
+	D3DXMatrixIdentity(&e1.modelWorldTransform);
+	D3DXMatrixIdentity(&e1.inverseTransposedModelWorldTransform);
+	entities.push_back(e1);
+
+	Entity e2;
+	e2.owner = this;
+	e2.mesh = meshes.at(1);
+	D3DXMatrixIdentity(&e2.modelWorldTransform);
+	D3DXMatrixTranslation(&e2.modelWorldTransform, 5.0, 0.0, 0.0);
+
+	D3DXMatrixInverse(  &e2.inverseTransposedModelWorldTransform, NULL, 
+						&e2.modelWorldTransform);
+	D3DXMatrixTranspose( &e2.inverseTransposedModelWorldTransform, &e2.inverseTransposedModelWorldTransform);
+	entities.push_back(e2);
+
+}
+
+HREEffect::~HREEffect(void)
+{
+	rayOriginTableSurface->Release();
+	 rayOriginTableTexture->Release();
+	 rayDirTableSurface->Release();
+	 rayDirTableTexture->Release();
+	 depthSurface->Release();
+	 rayOriginTableSurface2->Release();
+	 rayOriginTableTexture2->Release();
+	 rayDirTableSurface2->Release();
+	 rayDirTableTexture2->Release();
+	 environmentCubeTexture->Release();
+	 conePeakSurface->Release();
+	 conePeakTexture->Release();
+	 coneDirSurface->Release();
+	 coneDirTexture->Release();
+
+	emptyTexture->Release();
+	releaseTextures();
+	releaseMeshes();
+	releaseEntities();
+
+	frameColorBuffer->Release();
+	frameDepthStencilBuffer->Release();
+
+	effect->Release();
+	delete camera;
+	delete lightCamera;
+}
+
+
+void HREEffect::loadMesh(LPCWSTR fileName)
+{
+	Mesh*		renderMesh = new Mesh();
+
+	if(S_OK != 
+		D3DXLoadMeshFromX(	fileName,
+							D3DXMESH_MANAGED,
+                            device,
+							NULL,
+							&renderMesh->materialBuffer,
+							NULL,
+							(DWORD*)&renderMesh->nSubsets,
+							&renderMesh->mesh))
+	{
+		 MessageBox(NULL, fileName, L"Could not load mesh file!", MB_OK);
+		 return;
+	}
+	//convert mesh into a vertex format using a position, a normal and a texture register
+	//this is the only data our vertex shaders will require
+	renderMesh->setVertexFormat(D3DFVF_XYZ |
+						D3DFVF_NORMAL, device);
+
+	//extract the D3DXMATERIAL* pointer from the generic D3DXBUFFER
+	renderMesh->materials = (D3DXMATERIAL*)renderMesh->materialBuffer->GetBufferPointer();
+
+	//for every material, load the specified texture
+	renderMesh->textures = new LPDIRECT3DTEXTURE9[renderMesh->nSubsets];
+	for(unsigned int i=0; i<renderMesh->nSubsets; i++)
+	{
+		wchar_t* wideTextureFileName = NULL;
+		if(renderMesh->materials[i].pTextureFilename)
+		{
+			wideTextureFileName = new wchar_t[MultiByteToWideChar(CP_ACP, 0, renderMesh->materials[i].pTextureFilename, -1, NULL, 0)];
+			MultiByteToWideChar(CP_ACP, 0, renderMesh->materials[i].pTextureFilename, -1, wideTextureFileName, 511);
+		}
+		renderMesh->textures[i] = loadTexture( wideTextureFileName );
+		if(wideTextureFileName)
+			delete wideTextureFileName;
+	}
+
+	{
+		ProcessedTriangle *tris;
+		device->CreateVertexBuffer(renderMesh->mesh->GetNumFaces() * sizeof(ProcessedTriangle),
+			D3DUSAGE_DYNAMIC, 0, D3DPOOL_DEFAULT, 
+			&renderMesh->primitiveVertexBuffer, NULL);
+		renderMesh->primitiveVertexBuffer->Lock(0, 0, (void**)&tris, 0);
+
+		LPDIRECT3DVERTEXBUFFER9 vertexBuffer;
+		renderMesh->mesh->GetVertexBuffer(&vertexBuffer);
+		unsigned int nVertices = renderMesh->mesh->GetNumVertices();
+		unsigned int nFaces = renderMesh->mesh->GetNumFaces();
+		struct D3DVERTEX{
+			D3DXVECTOR3 pos;
+			D3DXVECTOR3 normal;
+		};
+		D3DVERTEX* vertices;
+		vertexBuffer->Lock(0, 0, (void**)&vertices, 0);
+		LPDIRECT3DINDEXBUFFER9 indexBuffer;
+		renderMesh->mesh->GetIndexBuffer(&indexBuffer);
+		unsigned short* indices;
+		indexBuffer->Lock(0, 0, (void**)&indices, 0);
+
+		for(int i=0; i < nFaces; i++)
+		{
+			Vector A[3];
+			A[0] = Vector(vertices[indices[i*3]].pos);
+			A[1] = Vector(vertices[indices[i*3+1]].pos);
+			A[2] = Vector(vertices[indices[i*3+2]].pos);
+			float		t4 = A[0][0]*A[1][1];
+			float 	    t6 = A[0][0]*A[1][2];
+			float 	    t8 = A[0][1]*A[1][0];
+			float 	    t10 = A[0][2]*A[1][0];
+			float 	    t12 = A[0][1]*A[2][0];
+			float 	    t14 = A[0][2]*A[2][0];
+			float 	    t17 = 1/(t4*A[2][2]-t6*A[2][1]-t8*A[2][2]+t10*A[2][1]+t12*A[1][2]-t14*A[1][1]);
+		
+	//		if(_isnan (t17) )
+	//          AfxMessageBox("mtx inversion gbz");
+			Vector* m = tris[i].inverseVertexMatrix;
+					
+			m[0][0] = (A[1][1]*A[2][2]-A[1][2]*A[2][1])*t17;
+			m[1][0] = -(A[0][1]*A[2][2]-A[0][2]*A[2][1])*t17;
+			m[2][0] = -(-A[0][1]*A[1][2]+A[0][2]*A[1][1])*t17;
+			m[0][1] = -(A[1][0]*A[2][2]-A[1][2]*A[2][0])*t17;
+			m[1][1] = (A[0][0]*A[2][2]-t14)*t17;
+			m[2][1] = -(t6-t10)*t17;
+			m[0][2] = -(-A[1][0]*A[2][1]+A[1][1]*A[2][0])*t17;
+			m[1][2] = -(A[0][0]*A[2][1]-t12)*t17;
+			m[2][2] = (t4-t8)*t17;
+			
+			Vector c = A[0] - A[1];
+			Vector b = A[0] - A[2];
+			Vector a = A[1] - A[2];
+			Vector trinormal = a && b;
+			trinormal.normalize();
+			float s = trinormal * A[0];
+			Vector triPlanePos = trinormal * s;
+			tris[i].planePos = triPlanePos;
+			tris[i].normals[0] = Vector(vertices[indices[i*3]].normal);
+			tris[i].normals[1] = Vector(vertices[indices[i*3+1]].normal);
+			tris[i].normals[2] = Vector(vertices[indices[i*3+2]].normal);
+			float a2 = a.norm2();
+			float b2 = b.norm2();
+			float c2 = c.norm2();
+
+			float wa = a2 * (b2 + c2 - a2);
+			float wb = b2 * (a2 + c2 - b2);
+			float wc = c2 * (a2 + b2 - c2);
+			float wsum = wa+wb+wc;
+			Vector spcen = A[0] * (wa / wsum);
+			spcen += A[1] * (wb / wsum);
+			spcen += A[2] * (wc / wsum);
+
+			Vector cTriNormal = Vector(
+				tris[i].inverseVertexMatrix[0].x + tris[i].inverseVertexMatrix[1].x + tris[i].inverseVertexMatrix[2].x,
+				tris[i].inverseVertexMatrix[0].y + tris[i].inverseVertexMatrix[1].y + tris[i].inverseVertexMatrix[2].y,
+				tris[i].inverseVertexMatrix[0].z + tris[i].inverseVertexMatrix[1].z + tris[i].inverseVertexMatrix[2].z
+				);
+			cTriNormal *= 1.0 / cTriNormal.norm2();
+
+			tris[i].sphereCentre = spcen;
+			tris[i].radius = (spcen - A[0]).norm();
+
+		}
+		renderMesh->primitiveVertexBuffer->Unlock();
+
+		vertexBuffer->Unlock();
+		indexBuffer->Unlock();
+		vertexBuffer->Release();
+		indexBuffer->Release();
+	}
+
+	//store completed mesh
+	meshes.push_back(renderMesh);
+}
+
+LPDIRECT3DTEXTURE9 HREEffect::loadTexture(LPCWSTR fileName)
+{
+	if(fileName == NULL || wcscmp(fileName, L"") == 0)
+		return NULL;
+	wchar_t* mediaFileName = new wchar_t[wcslen(fileName) + 64];
+	//we assume the x file was in folder .\media
+	wcscpy(mediaFileName, L"media\\");
+	wcscat(mediaFileName, fileName);
+	LPDIRECT3DTEXTURE9 tex;
+
+	D3DXIMAGE_INFO bobo;
+	if(S_OK != 
+		D3DXCreateTextureFromFileEx(device, mediaFileName, D3DX_DEFAULT, D3DX_DEFAULT, 1, 0,
+		D3DFMT_FROM_FILE, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, &bobo, NULL, &tex
+		))
+	{
+		 MessageBox(NULL, mediaFileName, L"Could not load texture file!", MB_OK);
+		 return NULL;
+	}
+	
+	materialTextures.push_back(tex);
+	return tex;
+}
+
+void HREEffect::releaseTextures()
+{
+	std::vector<LPDIRECT3DTEXTURE9>::iterator i = materialTextures.begin();
+	while(i != materialTextures.end())
+	{
+		(*i)->Release();
+		i++;
+	}
+}
+
+void HREEffect::releaseMeshes()
+{
+	std::vector<HREEffect::Mesh*>::iterator i = meshes.begin();
+	while(i != meshes.end())
+	{
+		(*i)->mesh->Release();
+		(*i)->materialBuffer->Release();
+		(*i)->primitiveVertexBuffer->Release();
+		delete *i;
+		i++;
+	}
+}
+
+void HREEffect::releaseEntities()
+{
+	std::vector<HREEffect::Entity>::iterator entityIterator = entities.begin();
+	while(entityIterator != entities.end())
+	{
+		entityIterator++;
+	}	
+}
+
+LRESULT HREEffect::handleMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+	if(parameters->Get(bMoveLight))
+		return lightCamera->HandleMessages(hWnd, uMsg, wParam, lParam);
+	else
+		return camera->HandleMessages(hWnd, uMsg, wParam, lParam);
+}
+
+void HREEffect::addUiParameters(Parameters* parameters)
+{
+	HREEffect::parameters = parameters;
+	parameters->Add( bLookFromLight, "Look from light", 1);
+	parameters->Add( bMoveLight, "Move light", 1);
+	parameters->Add( bDots, "Entry points", 1);
+	parameters->Add( bTurbo, "Turbo", 1);
+	parameters->Add( fRayPathLength, "Iterations", 10, 'V', 'B', convert10);
+}
+
+Parameters*	HREEffect::parameters = NULL;
+
+HRESULT HREEffect::Mesh::setVertexFormat(DWORD fvf, LPDIRECT3DDEVICE9 device)
+{
+	LPD3DXMESH tempMesh;
+
+	//clone the mesh to the appropriate format
+    HRESULT hr = mesh->CloneMeshFVF( mesh->GetOptions(), 
+                                  fvf , 
+                                  device, &tempMesh );
+	if(hr == S_OK)
+	{
+		DWORD* padj = new DWORD[mesh->GetNumFaces() * 3];
+		mesh->GenerateAdjacency(0.00001f, padj);
+		delete padj;
+		//forget he old mesh
+		mesh->Release();
+		//use the cloned mesh
+		mesh = tempMesh;
+	}
+	return hr;
+}
+
+void HREEffect::move(float fElapsedTime)
+{
+	//apply some rotation to one of the entities
+	D3DXMATRIX rot;
+	D3DXMatrixRotationY(&rot, fElapsedTime * 1.0);
+	D3DXMatrixMultiply( &entities.at(0).modelWorldTransform, 
+						&rot,
+						&entities.at(0).modelWorldTransform);
+	D3DXMatrixInverse(  &entities.at(0).inverseTransposedModelWorldTransform, NULL, 
+						&entities.at(0).modelWorldTransform);
+	D3DXMatrixTranspose( &entities.at(0).inverseTransposedModelWorldTransform, &entities.at(0).inverseTransposedModelWorldTransform);
+
+	if(parameters->Get(bTurbo))
+	{
+		camera->FrameMove(fElapsedTime * 10.0f);
+		lightCamera->FrameMove(fElapsedTime * 10.0f);
+	}
+	else
+	{
+		camera->FrameMove(fElapsedTime);
+		lightCamera->FrameMove(fElapsedTime);
+	}
+}
+
+void HREEffect::render()
+{
+	HRESULT hr;	UINT nPasses=1;
+	D3DXIMAGE_FILEFORMAT fileFormat=D3DXIFF_HDR;
+
+	device->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
+						D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
+
+	D3DXMATRIX worldToScreen = *camera->GetViewMatrix() * *camera->GetProjMatrix();
+	Vector eyePos = *camera->GetEyePt();
+
+	hr=device->SetRenderTarget(0,rayOriginTableSurface);
+	hr=device->SetRenderTarget(1,rayDirTableSurface);
+
+	hr=device->SetDepthStencilSurface(depthSurface);
+
+	device->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
+	device->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
+	device->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
+	device->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
+	device->SetRenderState(D3DRS_STENCILENABLE, TRUE);
+	device->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS);
+	device->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE);
+	device->SetRenderState(D3DRS_STENCILREF, 0x1);
+	hr=device->SetRenderState(D3DRS_STENCILMASK, 0x1);
+	hr=device->SetRenderState(D3DRS_STENCILWRITEMASK, 0x01);
+
+	device->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL,
+			D3DCOLOR_ARGB(1,0,0,0), 1.0f, 0 );
+
+	// Render initial rays
+	if( SUCCEEDED( device->BeginScene() ) ){
+		if( effect != NULL ){
+			D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"RenderPrimaryRayArray");
+			if(hTechnique==NULL){
+				return;
+			}
+			effect->SetTechnique( hTechnique );
+			
+			effect->Begin( &nPasses, 0 );
+			for(UINT j=0;j<nPasses;j++){
+				effect->BeginPass(j);
+				hr = effect->SetFloatArray("EyePos", (float*)&eyePos, 3);
+				hr = effect->SetFloat("RefractionIndex", 0.9);
+
+				//loop through all entities, all mesh subsets, set proper transformations
+				std::vector<HREEffect::Entity>::iterator entityIterator = entities.begin();
+				while(entityIterator != entities.end())
+				{
+					hr=effect->SetMatrix("WorldViewProj", &(entityIterator->modelWorldTransform * *camera->GetViewMatrix() * *camera->GetProjMatrix() ));
+					hr=effect->SetMatrix("World", &entityIterator->modelWorldTransform);
+					hr=effect->SetMatrix("WorldIT", &entityIterator->inverseTransposedModelWorldTransform);
+					hr=effect->SetFloat("colOrder", 10.0f);
+					effect->CommitChanges();
+					unsigned int nSubsets = entityIterator->mesh->nSubsets;
+					for(int i = 0; i< nSubsets; i++)
+					{
+						entityIterator->mesh->mesh->DrawSubset(i);
+					}
+					entityIterator++;
+				}
+				effect->EndPass();
+			}
+			effect->End();
+		}
+		device->EndScene();
+	}
+
+	//ray cast
+	device->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE);
+	device->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_EQUAL);
+	device->SetRenderState(D3DRS_STENCILREF, 0xff);
+
+	device->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
+	device->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
+	device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
+	float pointSize = 16.0f;
+	hr = device->SetRenderState(D3DRS_POINTSIZE_MAX, *((DWORD*)&pointSize));
+	hr = device->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&pointSize));
+
+	unsigned int nIter = parameters->Get(fRayPathLength);
+
+	for(int rd =0; rd < nIter; rd++)
+	{
+		device->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
+		device->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
+		hr=device->SetRenderState(D3DRS_STENCILENABLE, FALSE);
+		hr=device->SetRenderTarget(1, coneDirSurface);
+		hr=device->SetRenderTarget(0, conePeakSurface);
+		hr=device->SetDepthStencilSurface(NULL);
+
+		if( SUCCEEDED( device->BeginScene() ) ){
+			if( effect != NULL ){
+				D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"ComputeCones");
+				if(hTechnique==NULL){
+					return ;
+				}
+				effect->SetTechnique( hTechnique );
+				
+				effect->Begin( &nPasses, 0 );
+				for(UINT j=0;j<nPasses;j++){
+					effect->BeginPass(j);
+					hr=effect->SetTexture("rayOriginTable", rayOriginTableTexture);
+					hr=effect->SetTexture("rayDirTable", rayDirTableTexture);
+					effect->CommitChanges();
+					drawFullScreenQuad(device);
+					effect->EndPass();
+				}
+				effect->End();
+			}
+			device->EndScene();
+		}
+
+/*		device->SetRenderTarget(1, NULL);
+		device->SetRenderTarget(0, rayOriginTableSurface2);
+		device->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(1,0,0,0), 1.0f, 0 );
+
+		if( SUCCEEDED( device->BeginScene() ) ){
+			if(effect != NULL ){
+				D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"ConeChecker");
+				if(hTechnique==NULL){
+					return;
+				}
+				effect->SetTechnique( hTechnique );
+				
+				effect->Begin( &nPasses, 0 );
+				for(UINT j=0; j<nPasses; j++){
+					effect->BeginPass(j);
+					effect->SetTexture("rayOriginTable", rayOriginTableTexture);
+					effect->SetTexture("rayDirTable", rayDirTableTexture);
+					effect->SetTexture("conePeakTable", conePeakTexture);
+					effect->SetTexture("coneDirTable", coneDirTexture);
+					effect->CommitChanges();
+					drawFullScreenQuad(device);
+					effect->EndPass();
+				}
+				effect->End();
+			}
+			device->EndScene();
+		}
+/*/	
+		hr=device->SetRenderState(D3DRS_STENCILENABLE, TRUE);
+		device->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
+		device->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
+		device->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
+		device->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_REPLACE);
+		device->SetRenderState(D3DRS_STENCILFAIL, D3DSTENCILOP_KEEP);
+		hr=device->SetRenderState(D3DRS_STENCILMASK, 0x1 << rd);
+		hr=device->SetRenderState(D3DRS_STENCILWRITEMASK, 0x2 << rd);
+
+		hr=device->SetRenderTarget(1,rayDirTableSurface2);
+		hr=device->SetRenderTarget(0,rayOriginTableSurface2);
+		hr=device->SetDepthStencilSurface(depthSurface);
+
+		device->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
+							D3DCOLOR_ARGB(1,0,0,0), 1.0f, 0 );
+
+		D3DLOCKED_RECT peakData;
+		hr = device->GetRenderTargetData(conePeakSurface, conePeakSurfaceMem);
+		hr =  conePeakSurfaceMem->LockRect(&peakData, NULL, D3DLOCK_READONLY);
+		float* conePeaks = (float*)peakData.pBits;
+
+		D3DLOCKED_RECT coneData;
+		hr = device->GetRenderTargetData(coneDirSurface, coneDirSurfaceMem);
+		hr =  coneDirSurfaceMem->LockRect(&coneData, NULL, D3DLOCK_READONLY);
+		float* coneDirs = (float*)coneData.pBits;
+
+		if( SUCCEEDED( device->BeginScene() ) ){
+			if( effect != NULL ){
+				D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"RayCast");
+				if(hTechnique==NULL){
+					return;
+				}
+				effect->SetTechnique( hTechnique );
+				
+				effect->Begin( &nPasses, 0 );
+				for(UINT j=0;j<nPasses;j++){
+					effect->BeginPass(j);
+					hr = effect->SetFloat("RefractionIndex", 0.9);
+					hr=effect->SetTexture("conePeakTable",conePeakTexture);
+					hr=effect->SetTexture("coneDirTable",coneDirTexture);
+					hr=effect->SetTexture("rayOriginTable",rayOriginTableTexture);
+					hr=effect->SetTexture("rayDirTable",rayDirTableTexture);
+					hr = device->SetVertexDeclaration(trianglePrimitiveDeclaration);
+
+					//loop through all entities, all mesh subsets, set proper transformations
+					std::vector<HREEffect::Entity>::iterator entityIterator = entities.begin();
+					while(entityIterator != entities.end())
+					{
+						hr = device->SetStreamSource(0, entityIterator->mesh->primitiveVertexBuffer, 0, sizeof(ProcessedTriangle));
+						hr=effect->SetMatrix("World", &entityIterator->modelWorldTransform);
+						hr=effect->SetMatrix("WorldIT", &entityIterator->inverseTransposedModelWorldTransform);
+						hr=effect->SetFloat("colOrder", 10.0f);
+
+						for(int cx=0; cx<32; cx++)
+							for(int cy=0; cy<32; cy++)
+							{
+								Vector tilePos(-1.0 + 0.0625 * 0.5 + 0.0625*cx, -1.0 + 0.0625 * 0.5 + 0.0625*cy, 0.0);
+								hr = effect->SetFloatArray("TilePos", (float*)&tilePos, 3);
+//								D3DVECTOR worldConePeak = *(D3DVECTOR*)(conePeaks + cx * 4 + (31 - cy) * 32 * 4);
+//								D3DVECTOR modelConePeak = worldConePeak * entityIterator->inverseTransposedModelWorldTransform;
+								hr = effect->SetFloatArray("ConePeak",conePeaks + cx * 4 + (31 - cy) * 32 * 4 , 4);
+								hr = effect->SetFloatArray("ConeDirAndCosAngle", coneDirs + cx * 4 + (31 - cy) * 32 * 4, 4);
+								effect->CommitChanges();
+								device->DrawPrimitive(D3DPT_POINTLIST, 0, entityIterator->mesh->mesh->GetNumFaces());
+							}
+						entityIterator++;
+					}
+	
+					effect->EndPass();
+				}
+				effect->End();
+			}
+			device->EndScene();
+		}
+
+		conePeakSurfaceMem->UnlockRect();
+		coneDirSurfaceMem->UnlockRect();
+
+		hr=device->SetRenderState(D3DRS_STENCILMASK, 0x2 << rd);
+		hr=device->SetRenderState(D3DRS_STENCILWRITEMASK, 0x0);
+		hr=device->SetRenderTarget(1,rayDirTableSurface);
+		hr=device->SetRenderTarget(0,rayOriginTableSurface);
+
+		if( SUCCEEDED( device->BeginScene() ) ){
+			if( effect != NULL ){
+				D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"CopyBack");
+				if(hTechnique==NULL){
+					return;
+				}
+				effect->SetTechnique( hTechnique );
+				
+				effect->Begin( &nPasses, 0 );
+				for(UINT j=0;j<nPasses;j++){
+					effect->BeginPass(j);
+					hr=effect->SetTexture("rayOriginTable",rayOriginTableTexture2);
+					hr=effect->SetTexture("rayDirTable",rayDirTableTexture2);
+					effect->CommitChanges();
+					drawFullScreenQuad(device);
+					effect->EndPass();
+				}
+				effect->End();
+			}
+			device->EndScene();
+		}//*/
+	}
+
+	//eval directions, read from envmap
+	hr=device->SetRenderTarget(0,rayOriginTableSurface2);
+	hr=device->SetRenderTarget(1,NULL);
+
+	device->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
+	device->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
+	device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
+	device->SetRenderState(D3DRS_STENCILENABLE, FALSE);
+	device->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS);
+
+	device->Clear( 0, NULL, D3DCLEAR_ZBUFFER,
+						D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
+
+	D3DXMATRIX screenToWorld;
+	D3DXMATRIX screenToWorldIT = *camera->GetViewMatrix() * *camera->GetProjMatrix();
+	D3DXMatrixInverse(&screenToWorld, NULL, &screenToWorldIT);
+	if( SUCCEEDED( device->BeginScene() ) ){
+		if( effect != NULL ){
+			D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"Background");
+			if(hTechnique==NULL){
+				return;
+			}
+			effect->SetTechnique( hTechnique );
+			
+			effect->Begin( &nPasses, 0 );
+			for(UINT j=0;j<nPasses;j++){
+				effect->BeginPass(j);
+				hr = effect->SetFloatArray("EyePos", (float*)&eyePos, 3);
+				hr=effect->SetMatrix("ViewProjI", &screenToWorld);
+				hr=effect->SetTexture("rayDirTable",rayDirTableTexture);
+				hr=effect->SetTexture("environmentTexture",environmentCubeTexture);
+				effect->CommitChanges();
+				drawFullScreenQuad(device);
+				effect->EndPass();
+			}
+			effect->End();
+		}
+		device->EndScene();
+	}
+
+	//render image
+	hr=device->SetDepthStencilSurface(frameDepthStencilBuffer);
+
+	hr=device->SetRenderTarget(1,NULL);
+	hr=device->SetRenderTarget(0, frameColorBuffer);
+	device->SetRenderState(D3DRS_STENCILENABLE, FALSE);
+	device->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_ALWAYS);
+
+	device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
+
+	device->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
+				D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
+
+	if( SUCCEEDED( device->BeginScene() ) ){
+		if( effect != NULL ){
+			D3DXHANDLE hTechnique = effect->GetTechniqueByName((LPSTR)"ShowTex");
+			if(hTechnique==NULL){
+				return;
+			}
+			effect->SetTechnique( hTechnique );
+			
+			effect->Begin( &nPasses, 0 );
+			for(UINT j=0;j<nPasses;j++){
+				effect->BeginPass(j);
+				hr=effect->SetTexture("coneDirTableSampler",coneDirTexture);
+				hr=effect->SetTexture("conePeakTableSampler",coneDirTexture);
+				hr=effect->SetTexture("rayOriginTable",rayOriginTableTexture2);
+				hr=effect->SetTexture("rayDirTable",rayDirTableTexture);
+//				hr=effect->SetTexture("rayOriginTable",rayOriginTableTexture);
+//				hr=effect->SetTexture("rayDirTable",rayDirTableTexture);
+//				hr=effect->SetTexture("rayDirTable",coneDirTexture);
+//				hr=effect->SetTexture("rayOriginTable",conePeakTexture);
+				effect->CommitChanges();
+				drawFullScreenQuad(device);
+				effect->EndPass();
+			}
+			effect->End();
+		}
+		device->EndScene();
+	}
+}
+
+void HREEffect::drawFullScreenQuad(LPDIRECT3DDEVICE9 device, float depth, float fLeftU, float fTopV, float fRightU, float fBottomV)
+{
+    D3DSURFACE_DESC dtdsdRT;
+    PDIRECT3DSURFACE9 pSurfRT;
+
+    // Acquire render target width and height
+    device->GetRenderTarget(0, &pSurfRT);
+    pSurfRT->GetDesc(&dtdsdRT);
+    pSurfRT->Release();
+
+    // Ensure that we're directly mapping texels to pixels by offset by 0.5
+    // For more info see the doc page titled "Directly Mapping Texels to Pixels"
+    FLOAT fWidth5 = (FLOAT)dtdsdRT.Width - 0.5f;
+    FLOAT fHeight5 = (FLOAT)dtdsdRT.Height - 0.5f;
+
+	struct D3DVERTEX{
+		D3DXVECTOR3 pos;
+		D3DXVECTOR2 tex0;
+	};
+
+    // Draw the quad
+    D3DVERTEX svQuad[4];
+
+    svQuad[0].pos=D3DXVECTOR3(-1, 1, depth);
+    svQuad[0].tex0 = D3DXVECTOR2(fLeftU, fTopV);
+
+    svQuad[1].pos = D3DXVECTOR3(1, 1, depth);
+    svQuad[1].tex0 = D3DXVECTOR2(fRightU, fTopV);
+
+    svQuad[2].pos = D3DXVECTOR3(-1, -1, depth);
+    svQuad[2].tex0 = D3DXVECTOR2(fLeftU, fBottomV);
+
+    svQuad[3].pos = D3DXVECTOR3(1, -1, depth);
+    svQuad[3].tex0 = D3DXVECTOR2(fRightU, fBottomV);
+	
+	device->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
+	device->SetFVF(D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0));
+    device->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, svQuad, sizeof(D3DVERTEX));
+}
Index: GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/resource.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/resource.h	(revision 1481)
+++ GTP/trunk/App/Demos/Illum/Standalone/HierRayEngine [DirectX]/resource.h	(revision 1481)
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by HierRayEngine.rc
+//
+#define IDI_MAIN_ICON                   101
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        113
+#define _APS_NEXT_COMMAND_VALUE         40029
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
