Click here to Skip to main content
15,880,956 members
Articles / Desktop Programming / WPF

ListView, ComboBox, and ObservableCollection<T>

Rate me:
Please Sign up or sign in to vote.
4.36/5 (8 votes)
3 Feb 2010MIT5 min read 82.1K   4.9K   29  
An article on WPF data binding using ObservableCollection.
//-------------------------------------------
// TeapotMesh.cs (c) 2007 by Charles Petzold
//-------------------------------------------
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Media3D;

namespace Petzold.Media3D
{
    public class TeapotMesh : MeshGeneratorBase
    {
        /// <summary>
        ///     Initializes a new instance of TeapotMesh.
        /// </summary>
        public TeapotMesh()
        {
            // One-time transfer of points in verticesTeapot array.
            Point3DCollection vertices = Geometry.Positions;

            for (int i = 0; i < verticesTeapot.Length; i += 3)
                vertices.Add(new Point3D(verticesTeapot[i + 0],
                                         verticesTeapot[i + 1],
                                         verticesTeapot[i + 2]));

            // One-time transfer vectors in normalsTeapot array.
            Vector3DCollection normals = Geometry.Normals;

            for (int i = 0; i < normalsTeapot.Length; i += 3)
                normals.Add(new Vector3D(normalsTeapot[i + 0],
                                         normalsTeapot[i + 1],
                                         normalsTeapot[i + 2]));

            // Initialize TriangleRange and invoke PropertyChanged.
            TriangleRange = new TeapotTriangleRange();
        }

        // Static fields provide the raw data for the TriangleIndices, 
        //  Positions, and Normals properties.
        // These values were obtained from the Mesh.Teaport method
        //  from the Microsoft.DirectX.Direct3D namespace in DirectX 9.0.

        #region Boring static arrays

        static int[] indicesTeapot = 
            {
                   0,   7,   8,    8,   1,   0,    1,   8,   9,    9,   2,   1, 
                   2,   9,  10,   10,   3,   2,    3,  10,  11,   11,   4,   3, 
                   4,  11,  12,   12,   5,   4,    5,  12,  13,   13,   6,   5, 
                   7,  14,  15,   15,   8,   7,    8,  15,  16,   16,   9,   8, 
                   9,  16,  17,   17,  10,   9,   10,  17,  18,   18,  11,  10, 
                  11,  18,  19,   19,  12,  11,   12,  19,  20,   20,  13,  12, 
                  14,  21,  22,   22,  15,  14,   15,  22,  23,   23,  16,  15, 
                  16,  23,  24,   24,  17,  16,   17,  24,  25,   25,  18,  17, 
                  18,  25,  26,   26,  19,  18,   19,  26,  27,   27,  20,  19, 
                  21,  28,  29,   29,  22,  21,   22,  29,  30,   30,  23,  22, 
                  23,  30,  31,   31,  24,  23,   24,  31,  32,   32,  25,  24, 
                  25,  32,  33,   33,  26,  25,   26,  33,  34,   34,  27,  26, 
                  28,  35,  36,   36,  29,  28,   29,  36,  37,   37,  30,  29, 
                  30,  37,  38,   38,  31,  30,   31,  38,  39,   39,  32,  31, 
                  32,  39,  40,   40,  33,  32,   33,  40,  41,   41,  34,  33, 
                  35,  42,  43,   43,  36,  35,   36,  43,  44,   44,  37,  36, 
                  37,  44,  45,   45,  38,  37,   38,  45,  46,   46,  39,  38, 
                  39,  46,  47,   47,  40,  39,   40,  47,  48,   48,  41,  40, 
                  42,  49,  50,   50,  43,  42,   43,  50,  51,   51,  44,  43, 
                  44,  51,  52,   52,  45,  44,   45,  52,  53,   53,  46,  45, 
                  46,  53,  54,   54,  47,  46,   47,  54,  55,   55,  48,  47, 
                  49,  56,  57,   57,  50,  49,   50,  57,  58,   58,  51,  50, 
                  51,  58,  59,   59,  52,  51,   52,  59,  60,   60,  53,  52, 
                  53,  60,  61,   61,  54,  53,   54,  61,  62,   62,  55,  54, 
                  56,  63,  64,   64,  57,  56,   57,  64,  65,   65,  58,  57, 
                  58,  65,  66,   66,  59,  58,   59,  66,  67,   67,  60,  59, 
                  60,  67,  68,   68,  61,  60,   61,  68,  69,   69,  62,  61, 
                  63,  70,  71,   71,  64,  63,   64,  71,  72,   72,  65,  64, 
                  65,  72,  73,   73,  66,  65,   66,  73,  74,   74,  67,  66, 
                  67,  74,  75,   75,  68,  67,   68,  75,  76,   76,  69,  68, 
                  70,  77,  78,   78,  71,  70,   71,  78,  79,   79,  72,  71, 
                  72,  79,  80,   80,  73,  72,   73,  80,  81,   81,  74,  73, 
                  74,  81,  82,   82,  75,  74,   75,  82,  83,   83,  76,  75, 
                  77,  84,  85,   85,  78,  77,   78,  85,  86,   86,  79,  78, 
                  79,  86,  87,   87,  80,  79,   80,  87,  88,   88,  81,  80, 
                  81,  88,  89,   89,  82,  81,   82,  89,  90,   90,  83,  82, 
                  84,  91,  92,   92,  85,  84,   85,  92,  93,   93,  86,  85, 
                  86,  93,  94,   94,  87,  86,   87,  94,  95,   95,  88,  87, 
                  88,  95,  96,   96,  89,  88,   89,  96,  97,   97,  90,  89, 
                  91,  98,  99,   99,  92,  91,   92,  99, 100,  100,  93,  92, 
                  93, 100, 101,  101,  94,  93,   94, 101, 102,  102,  95,  94, 
                  95, 102, 103,  103,  96,  95,   96, 103, 104,  104,  97,  96, 
                  98, 105, 106,  106,  99,  98,   99, 106, 107,  107, 100,  99, 
                 100, 107, 108,  108, 101, 100,  101, 108, 109,  109, 102, 101, 
                 102, 109, 110,  110, 103, 102,  103, 110, 111,  111, 104, 103, 
                 105, 112, 113,  113, 106, 105,  106, 113, 114,  114, 107, 106, 
                 107, 114, 115,  115, 108, 107,  108, 115, 116,  116, 109, 108, 
                 109, 116, 117,  117, 110, 109,  110, 117, 118,  118, 111, 110, 
                 112, 119, 120,  120, 113, 112,  113, 120, 121,  121, 114, 113, 
                 114, 121, 122,  122, 115, 114,  115, 122, 123,  123, 116, 115, 
                 116, 123, 124,  124, 117, 116,  117, 124, 125,  125, 118, 117, 
                 119, 126, 127,  127, 120, 119,  120, 127, 128,  128, 121, 120, 
                 121, 128, 129,  129, 122, 121,  122, 129, 130,  130, 123, 122, 
                 123, 130, 131,  131, 124, 123,  124, 131, 132,  132, 125, 124, 
                 126, 133, 134,  134, 127, 126,  127, 134, 135,  135, 128, 127, 
                 128, 135, 136,  136, 129, 128,  129, 136, 137,  137, 130, 129, 
                 130, 137, 138,  138, 131, 130,  131, 138, 139,  139, 132, 131, 
                 133, 140, 141,  141, 134, 133,  134, 141, 142,  142, 135, 134, 
                 135, 142, 143,  143, 136, 135,  136, 143, 144,  144, 137, 136, 
                 137, 144, 145,  145, 138, 137,  138, 145, 146,  146, 139, 138, 
                 140, 147, 148,  148, 141, 140,  141, 148, 149,  149, 142, 141, 
                 142, 149, 150,  150, 143, 142,  143, 150, 151,  151, 144, 143, 
                 144, 151, 152,  152, 145, 144,  145, 152, 153,  153, 146, 145, 
                 147, 154, 155,  155, 148, 147,  148, 155, 156,  156, 149, 148, 
                 149, 156, 157,  157, 150, 149,  150, 157, 158,  158, 151, 150, 
                 151, 158, 159,  159, 152, 151,  152, 159, 160,  160, 153, 152, 
                 154, 161, 162,  162, 155, 154,  155, 162, 163,  163, 156, 155, 
                 156, 163, 164,  164, 157, 156,  157, 164, 165,  165, 158, 157, 
                 158, 165, 166,  166, 159, 158,  159, 166, 167,  167, 160, 159, 
                 161,   0,   1,    1, 162, 161,  162,   1,   2,    2, 163, 162, 
                 163,   2,   3,    3, 164, 163,  164,   3,   4,    4, 165, 164, 
                 165,   4,   5,    5, 166, 165,  166,   5,   6,    6, 167, 166, 
                   6,  13, 174,  174, 168,   6,  168, 174, 175,  175, 169, 168, 
                 169, 175, 176,  176, 170, 169,  170, 176, 177,  177, 171, 170, 
                 171, 177, 178,  178, 172, 171,  172, 178, 179,  179, 173, 172, 
                  13,  20, 180,  180, 174,  13,  174, 180, 181,  181, 175, 174, 
                 175, 181, 182,  182, 176, 175,  176, 182, 183,  183, 177, 176, 
                 177, 183, 184,  184, 178, 177,  178, 184, 185,  185, 179, 178, 
                  20,  27, 186,  186, 180,  20,  180, 186, 187,  187, 181, 180, 
                 181, 187, 188,  188, 182, 181,  182, 188, 189,  189, 183, 182, 
                 183, 189, 190,  190, 184, 183,  184, 190, 191,  191, 185, 184, 
                  27,  34, 192,  192, 186,  27,  186, 192, 193,  193, 187, 186, 
                 187, 193, 194,  194, 188, 187,  188, 194, 195,  195, 189, 188, 
                 189, 195, 196,  196, 190, 189,  190, 196, 197,  197, 191, 190, 
                  34,  41, 198,  198, 192,  34,  192, 198, 199,  199, 193, 192, 
                 193, 199, 200,  200, 194, 193,  194, 200, 201,  201, 195, 194, 
                 195, 201, 202,  202, 196, 195,  196, 202, 203,  203, 197, 196, 
                  41,  48, 204,  204, 198,  41,  198, 204, 205,  205, 199, 198, 
                 199, 205, 206,  206, 200, 199,  200, 206, 207,  207, 201, 200, 
                 201, 207, 208,  208, 202, 201,  202, 208, 209,  209, 203, 202, 
                  48,  55, 210,  210, 204,  48,  204, 210, 211,  211, 205, 204, 
                 205, 211, 212,  212, 206, 205,  206, 212, 213,  213, 207, 206, 
                 207, 213, 214,  214, 208, 207,  208, 214, 215,  215, 209, 208, 
                  55,  62, 216,  216, 210,  55,  210, 216, 217,  217, 211, 210, 
                 211, 217, 218,  218, 212, 211,  212, 218, 219,  219, 213, 212, 
                 213, 219, 220,  220, 214, 213,  214, 220, 221,  221, 215, 214, 
                  62,  69, 222,  222, 216,  62,  216, 222, 223,  223, 217, 216, 
                 217, 223, 224,  224, 218, 217,  218, 224, 225,  225, 219, 218, 
                 219, 225, 226,  226, 220, 219,  220, 226, 227,  227, 221, 220, 
                  69,  76, 228,  228, 222,  69,  222, 228, 229,  229, 223, 222, 
                 223, 229, 230,  230, 224, 223,  224, 230, 231,  231, 225, 224, 
                 225, 231, 232,  232, 226, 225,  226, 232, 233,  233, 227, 226, 
                  76,  83, 234,  234, 228,  76,  228, 234, 235,  235, 229, 228, 
                 229, 235, 236,  236, 230, 229,  230, 236, 237,  237, 231, 230, 
                 231, 237, 238,  238, 232, 231,  232, 238, 239,  239, 233, 232, 
                  83,  90, 240,  240, 234,  83,  234, 240, 241,  241, 235, 234, 
                 235, 241, 242,  242, 236, 235,  236, 242, 243,  243, 237, 236, 
                 237, 243, 244,  244, 238, 237,  238, 244, 245,  245, 239, 238, 
                  90,  97, 246,  246, 240,  90,  240, 246, 247,  247, 241, 240, 
                 241, 247, 248,  248, 242, 241,  242, 248, 249,  249, 243, 242, 
                 243, 249, 250,  250, 244, 243,  244, 250, 251,  251, 245, 244, 
                  97, 104, 252,  252, 246,  97,  246, 252, 253,  253, 247, 246, 
                 247, 253, 254,  254, 248, 247,  248, 254, 255,  255, 249, 248, 
                 249, 255, 256,  256, 250, 249,  250, 256, 257,  257, 251, 250, 
                 104, 111, 258,  258, 252, 104,  252, 258, 259,  259, 253, 252, 
                 253, 259, 260,  260, 254, 253,  254, 260, 261,  261, 255, 254, 
                 255, 261, 262,  262, 256, 255,  256, 262, 263,  263, 257, 256, 
                 111, 118, 264,  264, 258, 111,  258, 264, 265,  265, 259, 258, 
                 259, 265, 266,  266, 260, 259,  260, 266, 267,  267, 261, 260, 
                 261, 267, 268,  268, 262, 261,  262, 268, 269,  269, 263, 262, 
                 118, 125, 270,  270, 264, 118,  264, 270, 271,  271, 265, 264, 
                 265, 271, 272,  272, 266, 265,  266, 272, 273,  273, 267, 266, 
                 267, 273, 274,  274, 268, 267,  268, 274, 275,  275, 269, 268, 
                 125, 132, 276,  276, 270, 125,  270, 276, 277,  277, 271, 270, 
                 271, 277, 278,  278, 272, 271,  272, 278, 279,  279, 273, 272, 
                 273, 279, 280,  280, 274, 273,  274, 280, 281,  281, 275, 274, 
                 132, 139, 282,  282, 276, 132,  276, 282, 283,  283, 277, 276, 
                 277, 283, 284,  284, 278, 277,  278, 284, 285,  285, 279, 278, 
                 279, 285, 286,  286, 280, 279,  280, 286, 287,  287, 281, 280, 
                 139, 146, 288,  288, 282, 139,  282, 288, 289,  289, 283, 282, 
                 283, 289, 290,  290, 284, 283,  284, 290, 291,  291, 285, 284, 
                 285, 291, 292,  292, 286, 285,  286, 292, 293,  293, 287, 286, 
                 146, 153, 294,  294, 288, 146,  288, 294, 295,  295, 289, 288, 
                 289, 295, 296,  296, 290, 289,  290, 296, 297,  297, 291, 290, 
                 291, 297, 298,  298, 292, 291,  292, 298, 299,  299, 293, 292, 
                 153, 160, 300,  300, 294, 153,  294, 300, 301,  301, 295, 294, 
                 295, 301, 302,  302, 296, 295,  296, 302, 303,  303, 297, 296, 
                 297, 303, 304,  304, 298, 297,  298, 304, 305,  305, 299, 298, 
                 160, 167, 306,  306, 300, 160,  300, 306, 307,  307, 301, 300, 
                 301, 307, 308,  308, 302, 301,  302, 308, 309,  309, 303, 302, 
                 303, 309, 310,  310, 304, 303,  304, 310, 311,  311, 305, 304, 
                 167,   6, 168,  168, 306, 167,  306, 168, 169,  169, 307, 306, 
                 307, 169, 170,  170, 308, 307,  308, 170, 171,  171, 309, 308, 
                 309, 171, 172,  172, 310, 309,  310, 172, 173,  173, 311, 310, 
                 173, 179, 318,  318, 312, 173,  312, 318, 319,  319, 313, 312, 
                 313, 319, 320,  320, 314, 313,  314, 320, 321,  321, 315, 314, 
                 315, 321, 322,  322, 316, 315,  316, 322, 323,  323, 317, 316, 
                 179, 185, 324,  324, 318, 179,  318, 324, 325,  325, 319, 318, 
                 319, 325, 326,  326, 320, 319,  320, 326, 327,  327, 321, 320, 
                 321, 327, 328,  328, 322, 321,  322, 328, 329,  329, 323, 322, 
                 185, 191, 330,  330, 324, 185,  324, 330, 331,  331, 325, 324, 
                 325, 331, 332,  332, 326, 325,  326, 332, 333,  333, 327, 326, 
                 327, 333, 334,  334, 328, 327,  328, 334, 335,  335, 329, 328, 
                 191, 197, 336,  336, 330, 191,  330, 336, 337,  337, 331, 330, 
                 331, 337, 338,  338, 332, 331,  332, 338, 339,  339, 333, 332, 
                 333, 339, 340,  340, 334, 333,  334, 340, 341,  341, 335, 334, 
                 197, 203, 342,  342, 336, 197,  336, 342, 343,  343, 337, 336, 
                 337, 343, 344,  344, 338, 337,  338, 344, 345,  345, 339, 338, 
                 339, 345, 346,  346, 340, 339,  340, 346, 347,  347, 341, 340, 
                 203, 209, 348,  348, 342, 203,  342, 348, 349,  349, 343, 342, 
                 343, 349, 350,  350, 344, 343,  344, 350, 351,  351, 345, 344, 
                 345, 351, 352,  352, 346, 345,  346, 352, 353,  353, 347, 346, 
                 209, 215, 354,  354, 348, 209,  348, 354, 355,  355, 349, 348, 
                 349, 355, 356,  356, 350, 349,  350, 356, 357,  357, 351, 350, 
                 351, 357, 358,  358, 352, 351,  352, 358, 359,  359, 353, 352, 
                 215, 221, 360,  360, 354, 215,  354, 360, 361,  361, 355, 354, 
                 355, 361, 362,  362, 356, 355,  356, 362, 363,  363, 357, 356, 
                 357, 363, 364,  364, 358, 357,  358, 364, 365,  365, 359, 358, 
                 221, 227, 366,  366, 360, 221,  360, 366, 367,  367, 361, 360, 
                 361, 367, 368,  368, 362, 361,  362, 368, 369,  369, 363, 362, 
                 363, 369, 370,  370, 364, 363,  364, 370, 371,  371, 365, 364, 
                 227, 233, 372,  372, 366, 227,  366, 372, 373,  373, 367, 366, 
                 367, 373, 374,  374, 368, 367,  368, 374, 375,  375, 369, 368, 
                 369, 375, 376,  376, 370, 369,  370, 376, 377,  377, 371, 370, 
                 233, 239, 378,  378, 372, 233,  372, 378, 379,  379, 373, 372, 
                 373, 379, 380,  380, 374, 373,  374, 380, 381,  381, 375, 374, 
                 375, 381, 382,  382, 376, 375,  376, 382, 383,  383, 377, 376, 
                 239, 245, 384,  384, 378, 239,  378, 384, 385,  385, 379, 378, 
                 379, 385, 386,  386, 380, 379,  380, 386, 387,  387, 381, 380, 
                 381, 387, 388,  388, 382, 381,  382, 388, 389,  389, 383, 382, 
                 245, 251, 390,  390, 384, 245,  384, 390, 391,  391, 385, 384, 
                 385, 391, 392,  392, 386, 385,  386, 392, 393,  393, 387, 386, 
                 387, 393, 394,  394, 388, 387,  388, 394, 395,  395, 389, 388, 
                 251, 257, 396,  396, 390, 251,  390, 396, 397,  397, 391, 390, 
                 391, 397, 398,  398, 392, 391,  392, 398, 399,  399, 393, 392, 
                 393, 399, 400,  400, 394, 393,  394, 400, 401,  401, 395, 394, 
                 257, 263, 402,  402, 396, 257,  396, 402, 403,  403, 397, 396, 
                 397, 403, 404,  404, 398, 397,  398, 404, 405,  405, 399, 398, 
                 399, 405, 406,  406, 400, 399,  400, 406, 407,  407, 401, 400, 
                 263, 269, 408,  408, 402, 263,  402, 408, 409,  409, 403, 402, 
                 403, 409, 410,  410, 404, 403,  404, 410, 411,  411, 405, 404, 
                 405, 411, 412,  412, 406, 405,  406, 412, 413,  413, 407, 406, 
                 269, 275, 414,  414, 408, 269,  408, 414, 415,  415, 409, 408, 
                 409, 415, 416,  416, 410, 409,  410, 416, 417,  417, 411, 410, 
                 411, 417, 418,  418, 412, 411,  412, 418, 419,  419, 413, 412, 
                 275, 281, 420,  420, 414, 275,  414, 420, 421,  421, 415, 414, 
                 415, 421, 422,  422, 416, 415,  416, 422, 423,  423, 417, 416, 
                 417, 423, 424,  424, 418, 417,  418, 424, 425,  425, 419, 418, 
                 281, 287, 426,  426, 420, 281,  420, 426, 427,  427, 421, 420, 
                 421, 427, 428,  428, 422, 421,  422, 428, 429,  429, 423, 422, 
                 423, 429, 430,  430, 424, 423,  424, 430, 431,  431, 425, 424, 
                 287, 293, 432,  432, 426, 287,  426, 432, 433,  433, 427, 426, 
                 427, 433, 434,  434, 428, 427,  428, 434, 435,  435, 429, 428, 
                 429, 435, 436,  436, 430, 429,  430, 436, 437,  437, 431, 430, 
                 293, 299, 438,  438, 432, 293,  432, 438, 439,  439, 433, 432, 
                 433, 439, 440,  440, 434, 433,  434, 440, 441,  441, 435, 434, 
                 435, 441, 442,  442, 436, 435,  436, 442, 443,  443, 437, 436, 
                 299, 305, 444,  444, 438, 299,  438, 444, 445,  445, 439, 438, 
                 439, 445, 446,  446, 440, 439,  440, 446, 447,  447, 441, 440, 
                 441, 447, 448,  448, 442, 441,  442, 448, 449,  449, 443, 442, 
                 305, 311, 450,  450, 444, 305,  444, 450, 451,  451, 445, 444, 
                 445, 451, 452,  452, 446, 445,  446, 452, 453,  453, 447, 446, 
                 447, 453, 454,  454, 448, 447,  448, 454, 455,  455, 449, 448, 
                 311, 173, 312,  312, 450, 311,  450, 312, 313,  313, 451, 450, 
                 451, 313, 314,  314, 452, 451,  452, 314, 315,  315, 453, 452, 
                 453, 315, 316,  316, 454, 453,  454, 316, 317,  317, 455, 454, 
                 317, 323, 462,  462, 456, 317,  456, 462, 463,  463, 457, 456, 
                 457, 463, 464,  464, 458, 457,  458, 464, 465,  465, 459, 458, 
                 459, 465, 466,  466, 460, 459,  460, 466, 461,  323, 329, 467, 
                 467, 462, 323,  462, 467, 468,  468, 463, 462,  463, 468, 469, 
                 469, 464, 463,  464, 469, 470,  470, 465, 464,  465, 470, 471, 
                 471, 466, 465,  466, 471, 461,  329, 335, 472,  472, 467, 329, 
                 467, 472, 473,  473, 468, 467,  468, 473, 474,  474, 469, 468, 
                 469, 474, 475,  475, 470, 469,  470, 475, 476,  476, 471, 470, 
                 471, 476, 461,  335, 341, 477,  477, 472, 335,  472, 477, 478, 
                 478, 473, 472,  473, 478, 479,  479, 474, 473,  474, 479, 480, 
                 480, 475, 474,  475, 480, 481,  481, 476, 475,  476, 481, 461, 
                 341, 347, 482,  482, 477, 341,  477, 482, 483,  483, 478, 477, 
                 478, 483, 484,  484, 479, 478,  479, 484, 485,  485, 480, 479, 
                 480, 485, 486,  486, 481, 480,  481, 486, 461,  347, 353, 487, 
                 487, 482, 347,  482, 487, 488,  488, 483, 482,  483, 488, 489, 
                 489, 484, 483,  484, 489, 490,  490, 485, 484,  485, 490, 491, 
                 491, 486, 485,  486, 491, 461,  353, 359, 492,  492, 487, 353, 
                 487, 492, 493,  493, 488, 487,  488, 493, 494,  494, 489, 488, 
                 489, 494, 495,  495, 490, 489,  490, 495, 496,  496, 491, 490, 
                 491, 496, 461,  359, 365, 497,  497, 492, 359,  492, 497, 498, 
                 498, 493, 492,  493, 498, 499,  499, 494, 493,  494, 499, 500, 
                 500, 495, 494,  495, 500, 501,  501, 496, 495,  496, 501, 461, 
                 365, 371, 502,  502, 497, 365,  497, 502, 503,  503, 498, 497, 
                 498, 503, 504,  504, 499, 498,  499, 504, 505,  505, 500, 499, 
                 500, 505, 506,  506, 501, 500,  501, 506, 461,  371, 377, 507, 
                 507, 502, 371,  502, 507, 508,  508, 503, 502,  503, 508, 509, 
                 509, 504, 503,  504, 509, 510,  510, 505, 504,  505, 510, 511, 
                 511, 506, 505,  506, 511, 461,  377, 383, 512,  512, 507, 377, 
                 507, 512, 513,  513, 508, 507,  508, 513, 514,  514, 509, 508, 
                 509, 514, 515,  515, 510, 509,  510, 515, 516,  516, 511, 510, 
                 511, 516, 461,  383, 389, 517,  517, 512, 383,  512, 517, 518, 
                 518, 513, 512,  513, 518, 519,  519, 514, 513,  514, 519, 520, 
                 520, 515, 514,  515, 520, 521,  521, 516, 515,  516, 521, 461, 
                 389, 395, 522,  522, 517, 389,  517, 522, 523,  523, 518, 517, 
                 518, 523, 524,  524, 519, 518,  519, 524, 525,  525, 520, 519, 
                 520, 525, 526,  526, 521, 520,  521, 526, 461,  395, 401, 527, 
                 527, 522, 395,  522, 527, 528,  528, 523, 522,  523, 528, 529, 
                 529, 524, 523,  524, 529, 530,  530, 525, 524,  525, 530, 531, 
                 531, 526, 525,  526, 531, 461,  401, 407, 532,  532, 527, 401, 
                 527, 532, 533,  533, 528, 527,  528, 533, 534,  534, 529, 528, 
                 529, 534, 535,  535, 530, 529,  530, 535, 536,  536, 531, 530, 
                 531, 536, 461,  407, 413, 537,  537, 532, 407,  532, 537, 538, 
                 538, 533, 532,  533, 538, 539,  539, 534, 533,  534, 539, 540, 
                 540, 535, 534,  535, 540, 541,  541, 536, 535,  536, 541, 461, 
                 413, 419, 542,  542, 537, 413,  537, 542, 543,  543, 538, 537, 
                 538, 543, 544,  544, 539, 538,  539, 544, 545,  545, 540, 539, 
                 540, 545, 546,  546, 541, 540,  541, 546, 461,  419, 425, 547, 
                 547, 542, 419,  542, 547, 548,  548, 543, 542,  543, 548, 549, 
                 549, 544, 543,  544, 549, 550,  550, 545, 544,  545, 550, 551, 
                 551, 546, 545,  546, 551, 461,  425, 431, 552,  552, 547, 425, 
                 547, 552, 553,  553, 548, 547,  548, 553, 554,  554, 549, 548, 
                 549, 554, 555,  555, 550, 549,  550, 555, 556,  556, 551, 550, 
                 551, 556, 461,  431, 437, 557,  557, 552, 431,  552, 557, 558, 
                 558, 553, 552,  553, 558, 559,  559, 554, 553,  554, 559, 560, 
                 560, 555, 554,  555, 560, 561,  561, 556, 555,  556, 561, 461, 
                 437, 443, 562,  562, 557, 437,  557, 562, 563,  563, 558, 557, 
                 558, 563, 564,  564, 559, 558,  559, 564, 565,  565, 560, 559, 
                 560, 565, 566,  566, 561, 560,  561, 566, 461,  443, 449, 567, 
                 567, 562, 443,  562, 567, 568,  568, 563, 562,  563, 568, 569, 
                 569, 564, 563,  564, 569, 570,  570, 565, 564,  565, 570, 571, 
                 571, 566, 565,  566, 571, 461,  449, 455, 572,  572, 567, 449, 
                 567, 572, 573,  573, 568, 567,  568, 573, 574,  574, 569, 568, 
                 569, 574, 575,  575, 570, 569,  570, 575, 576,  576, 571, 570, 
                 571, 576, 461,  455, 317, 456,  456, 572, 455,  572, 456, 457, 
                 457, 573, 572,  573, 457, 458,  458, 574, 573,  574, 458, 459, 
                 459, 575, 574,  575, 459, 460,  460, 576, 575,  576, 460, 461, 
                 577, 584, 585,  585, 578, 577,  578, 585, 586,  586, 579, 578, 
                 579, 586, 587,  587, 580, 579,  580, 587, 588,  588, 581, 580, 
                 581, 588, 589,  589, 582, 581,  582, 589, 590,  590, 583, 582, 
                 584, 591, 592,  592, 585, 584,  585, 592, 593,  593, 586, 585, 
                 586, 593, 594,  594, 587, 586,  587, 594, 595,  595, 588, 587, 
                 588, 595, 596,  596, 589, 588,  589, 596, 597,  597, 590, 589, 
                 591, 598, 599,  599, 592, 591,  592, 599, 600,  600, 593, 592, 
                 593, 600, 601,  601, 594, 593,  594, 601, 602,  602, 595, 594, 
                 595, 602, 603,  603, 596, 595,  596, 603, 604,  604, 597, 596, 
                 598, 605, 606,  606, 599, 598,  599, 606, 607,  607, 600, 599, 
                 600, 607, 608,  608, 601, 600,  601, 608, 609,  609, 602, 601, 
                 602, 609, 610,  610, 603, 602,  603, 610, 611,  611, 604, 603, 
                 605, 612, 613,  613, 606, 605,  606, 613, 614,  614, 607, 606, 
                 607, 614, 615,  615, 608, 607,  608, 615, 616,  616, 609, 608, 
                 609, 616, 617,  617, 610, 609,  610, 617, 618,  618, 611, 610, 
                 612, 619, 620,  620, 613, 612,  613, 620, 621,  621, 614, 613, 
                 614, 621, 622,  622, 615, 614,  615, 622, 623,  623, 616, 615, 
                 616, 623, 624,  624, 617, 616,  617, 624, 625,  625, 618, 617, 
                 619, 626, 627,  627, 620, 619,  620, 627, 628,  628, 621, 620, 
                 621, 628, 629,  629, 622, 621,  622, 629, 630,  630, 623, 622, 
                 623, 630, 631,  631, 624, 623,  624, 631, 632,  632, 625, 624, 
                 626, 633, 634,  634, 627, 626,  627, 634, 635,  635, 628, 627, 
                 628, 635, 636,  636, 629, 628,  629, 636, 637,  637, 630, 629, 
                 630, 637, 638,  638, 631, 630,  631, 638, 639,  639, 632, 631, 
                 633, 640, 641,  641, 634, 633,  634, 641, 642,  642, 635, 634, 
                 635, 642, 643,  643, 636, 635,  636, 643, 644,  644, 637, 636, 
                 637, 644, 645,  645, 638, 637,  638, 645, 646,  646, 639, 638, 
                 640, 647, 648,  648, 641, 640,  641, 648, 649,  649, 642, 641, 
                 642, 649, 650,  650, 643, 642,  643, 650, 651,  651, 644, 643, 
                 644, 651, 652,  652, 645, 644,  645, 652, 653,  653, 646, 645, 
                 647, 654, 655,  655, 648, 647,  648, 655, 656,  656, 649, 648, 
                 649, 656, 657,  657, 650, 649,  650, 657, 658,  658, 651, 650, 
                 651, 658, 659,  659, 652, 651,  652, 659, 660,  660, 653, 652, 
                 654, 577, 578,  578, 655, 654,  655, 578, 579,  579, 656, 655, 
                 656, 579, 580,  580, 657, 656,  657, 580, 581,  581, 658, 657, 
                 658, 581, 582,  582, 659, 658,  659, 582, 583,  583, 660, 659, 
                 583, 590, 667,  667, 661, 583,  661, 667, 668,  668, 662, 661, 
                 662, 668, 669,  669, 663, 662,  663, 669, 670,  670, 664, 663, 
                 664, 670, 671,  671, 665, 664,  665, 671, 672,  672, 666, 665, 
                 590, 597, 673,  673, 667, 590,  667, 673, 674,  674, 668, 667, 
                 668, 674, 675,  675, 669, 668,  669, 675, 676,  676, 670, 669, 
                 670, 676, 677,  677, 671, 670,  671, 677, 678,  678, 672, 671, 
                 597, 604, 679,  679, 673, 597,  673, 679, 680,  680, 674, 673, 
                 674, 680, 681,  681, 675, 674,  675, 681, 682,  682, 676, 675, 
                 676, 682, 683,  683, 677, 676,  677, 683, 684,  684, 678, 677, 
                 604, 611, 685,  685, 679, 604,  679, 685, 686,  686, 680, 679, 
                 680, 686, 687,  687, 681, 680,  681, 687, 688,  688, 682, 681, 
                 682, 688, 689,  689, 683, 682,  683, 689, 690,  690, 684, 683, 
                 611, 618, 691,  691, 685, 611,  685, 691, 692,  692, 686, 685, 
                 686, 692, 693,  693, 687, 686,  687, 693, 694,  694, 688, 687, 
                 688, 694, 695,  695, 689, 688,  689, 695, 696,  696, 690, 689, 
                 618, 625, 697,  697, 691, 618,  691, 697, 698,  698, 692, 691, 
                 692, 698, 699,  699, 693, 692,  693, 699, 700,  700, 694, 693, 
                 694, 700, 701,  701, 695, 694,  695, 701, 702,  702, 696, 695, 
                 625, 632, 703,  703, 697, 625,  697, 703, 704,  704, 698, 697, 
                 698, 704, 705,  705, 699, 698,  699, 705, 706,  706, 700, 699, 
                 700, 706, 707,  707, 701, 700,  701, 707, 708,  708, 702, 701, 
                 632, 639, 709,  709, 703, 632,  703, 709, 710,  710, 704, 703, 
                 704, 710, 711,  711, 705, 704,  705, 711, 712,  712, 706, 705, 
                 706, 712, 713,  713, 707, 706,  707, 713, 714,  714, 708, 707, 
                 639, 646, 715,  715, 709, 639,  709, 715, 716,  716, 710, 709, 
                 710, 716, 717,  717, 711, 710,  711, 717, 718,  718, 712, 711, 
                 712, 718, 719,  719, 713, 712,  713, 719, 720,  720, 714, 713, 
                 646, 653, 721,  721, 715, 646,  715, 721, 722,  722, 716, 715, 
                 716, 722, 723,  723, 717, 716,  717, 723, 724,  724, 718, 717, 
                 718, 724, 725,  725, 719, 718,  719, 725, 726,  726, 720, 719, 
                 653, 660, 727,  727, 721, 653,  721, 727, 728,  728, 722, 721, 
                 722, 728, 729,  729, 723, 722,  723, 729, 730,  730, 724, 723, 
                 724, 730, 731,  731, 725, 724,  725, 731, 732,  732, 726, 725, 
                 660, 583, 661,  661, 727, 660,  727, 661, 662,  662, 728, 727, 
                 728, 662, 663,  663, 729, 728,  729, 663, 664,  664, 730, 729, 
                 730, 664, 665,  665, 731, 730,  731, 665, 666,  666, 732, 731, 
                 733, 740, 741,  741, 734, 733,  734, 741, 742,  742, 735, 734, 
                 735, 742, 743,  743, 736, 735,  736, 743, 744,  744, 737, 736, 
                 737, 744, 745,  745, 738, 737,  738, 745, 746,  746, 739, 738, 
                 740, 747, 748,  748, 741, 740,  741, 748, 749,  749, 742, 741, 
                 742, 749, 750,  750, 743, 742,  743, 750, 751,  751, 744, 743, 
                 744, 751, 752,  752, 745, 744,  745, 752, 753,  753, 746, 745, 
                 747, 754, 755,  755, 748, 747,  748, 755, 756,  756, 749, 748, 
                 749, 756, 757,  757, 750, 749,  750, 757, 758,  758, 751, 750, 
                 751, 758, 759,  759, 752, 751,  752, 759, 760,  760, 753, 752, 
                 754, 761, 762,  762, 755, 754,  755, 762, 763,  763, 756, 755, 
                 756, 763, 764,  764, 757, 756,  757, 764, 765,  765, 758, 757, 
                 758, 765, 766,  766, 759, 758,  759, 766, 767,  767, 760, 759, 
                 761, 768, 769,  769, 762, 761,  762, 769, 770,  770, 763, 762, 
                 763, 770, 771,  771, 764, 763,  764, 771, 772,  772, 765, 764, 
                 765, 772, 773,  773, 766, 765,  766, 773, 774,  774, 767, 766, 
                 768, 775, 776,  776, 769, 768,  769, 776, 777,  777, 770, 769, 
                 770, 777, 778,  778, 771, 770,  771, 778, 779,  779, 772, 771, 
                 772, 779, 780,  780, 773, 772,  773, 780, 781,  781, 774, 773, 
                 775, 782, 783,  783, 776, 775,  776, 783, 784,  784, 777, 776, 
                 777, 784, 785,  785, 778, 777,  778, 785, 786,  786, 779, 778, 
                 779, 786, 787,  787, 780, 779,  780, 787, 788,  788, 781, 780, 
                 782, 789, 790,  790, 783, 782,  783, 790, 791,  791, 784, 783, 
                 784, 791, 792,  792, 785, 784,  785, 792, 793,  793, 786, 785, 
                 786, 793, 794,  794, 787, 786,  787, 794, 795,  795, 788, 787, 
                 789, 796, 797,  797, 790, 789,  790, 797, 798,  798, 791, 790, 
                 791, 798, 799,  799, 792, 791,  792, 799, 800,  800, 793, 792, 
                 793, 800, 801,  801, 794, 793,  794, 801, 802,  802, 795, 794, 
                 796, 803, 804,  804, 797, 796,  797, 804, 805,  805, 798, 797, 
                 798, 805, 806,  806, 799, 798,  799, 806, 807,  807, 800, 799, 
                 800, 807, 808,  808, 801, 800,  801, 808, 809,  809, 802, 801, 
                 803, 810, 811,  811, 804, 803,  804, 811, 812,  812, 805, 804, 
                 805, 812, 813,  813, 806, 805,  806, 813, 814,  814, 807, 806, 
                 807, 814, 815,  815, 808, 807,  808, 815, 816,  816, 809, 808, 
                 810, 733, 734,  734, 811, 810,  811, 734, 735,  735, 812, 811, 
                 812, 735, 736,  736, 813, 812,  813, 736, 737,  737, 814, 813, 
                 814, 737, 738,  738, 815, 814,  815, 738, 739,  739, 816, 815, 
                 739, 746, 823,  823, 817, 739,  817, 823, 824,  824, 818, 817, 
                 818, 824, 825,  825, 819, 818,  819, 825, 826,  826, 820, 819, 
                 820, 826, 827,  827, 821, 820,  821, 827, 828,  828, 822, 821, 
                 746, 753, 829,  829, 823, 746,  823, 829, 830,  830, 824, 823, 
                 824, 830, 831,  831, 825, 824,  825, 831, 832,  832, 826, 825, 
                 826, 832, 833,  833, 827, 826,  827, 833, 834,  834, 828, 827, 
                 753, 760, 835,  835, 829, 753,  829, 835, 836,  836, 830, 829, 
                 830, 836, 837,  837, 831, 830,  831, 837, 838,  838, 832, 831, 
                 832, 838, 839,  839, 833, 832,  833, 839, 840,  840, 834, 833, 
                 760, 767, 841,  841, 835, 760,  835, 841, 842,  842, 836, 835, 
                 836, 842, 843,  843, 837, 836,  837, 843, 844,  844, 838, 837, 
                 838, 844, 845,  845, 839, 838,  839, 845, 846,  846, 840, 839, 
                 767, 774, 847,  847, 841, 767,  841, 847, 848,  848, 842, 841, 
                 842, 848, 849,  849, 843, 842,  843, 849, 850,  850, 844, 843, 
                 844, 850, 851,  851, 845, 844,  845, 851, 852,  852, 846, 845, 
                 774, 781, 853,  853, 847, 774,  847, 853, 854,  854, 848, 847, 
                 848, 854, 855,  855, 849, 848,  849, 855, 856,  856, 850, 849, 
                 850, 856, 857,  857, 851, 850,  851, 857, 858,  858, 852, 851, 
                 781, 788, 859,  859, 853, 781,  853, 859, 860,  860, 854, 853, 
                 854, 860, 861,  861, 855, 854,  855, 861, 862,  862, 856, 855, 
                 856, 862, 863,  863, 857, 856,  857, 863, 864,  864, 858, 857, 
                 788, 795, 865,  865, 859, 788,  859, 865, 866,  866, 860, 859, 
                 860, 866, 867,  867, 861, 860,  861, 867, 868,  868, 862, 861, 
                 862, 868, 869,  869, 863, 862,  863, 869, 870,  870, 864, 863, 
                 795, 802, 871,  871, 865, 795,  865, 871, 872,  872, 866, 865, 
                 866, 872, 873,  873, 867, 866,  867, 873, 874,  874, 868, 867, 
                 868, 874, 875,  875, 869, 868,  869, 875, 876,  876, 870, 869, 
                 802, 809, 877,  877, 871, 802,  871, 877, 878,  878, 872, 871, 
                 872, 878, 879,  879, 873, 872,  873, 879, 880,  880, 874, 873, 
                 874, 880, 881,  881, 875, 874,  875, 881, 882,  882, 876, 875, 
                 809, 816, 883,  883, 877, 809,  877, 883, 884,  884, 878, 877, 
                 878, 884, 885,  885, 879, 878,  879, 885, 886,  886, 880, 879, 
                 880, 886, 887,  887, 881, 880,  881, 887, 888,  888, 882, 881, 
                 816, 739, 817,  817, 883, 816,  883, 817, 818,  818, 884, 883, 
                 884, 818, 819,  819, 885, 884,  885, 819, 820,  820, 886, 885, 
                 886, 820, 821,  821, 887, 886,  887, 821, 822,  822, 888, 887, 
                 896, 890, 889,  890, 896, 897,  897, 891, 890,  891, 897, 898,     // Lid begins here
                 898, 892, 891,  892, 898, 899,  899, 893, 892,  893, 899, 900, 
                 900, 894, 893,  894, 900, 901,  901, 895, 894,  902, 896, 889, 
                 896, 902, 903,  903, 897, 896,  897, 903, 904,  904, 898, 897, 
                 898, 904, 905,  905, 899, 898,  899, 905, 906,  906, 900, 899, 
                 900, 906, 907,  907, 901, 900,  908, 902, 889,  902, 908, 909, 
                 909, 903, 902,  903, 909, 910,  910, 904, 903,  904, 910, 911, 
                 911, 905, 904,  905, 911, 912,  912, 906, 905,  906, 912, 913, 
                 913, 907, 906,  914, 908, 889,  908, 914, 915,  915, 909, 908, 
                 909, 915, 916,  916, 910, 909,  910, 916, 917,  917, 911, 910, 
                 911, 917, 918,  918, 912, 911,  912, 918, 919,  919, 913, 912, 
                 920, 914, 889,  914, 920, 921,  921, 915, 914,  915, 921, 922, 
                 922, 916, 915,  916, 922, 923,  923, 917, 916,  917, 923, 924, 
                 924, 918, 917,  918, 924, 925,  925, 919, 918,  926, 920, 889, 
                 920, 926, 927,  927, 921, 920,  921, 927, 928,  928, 922, 921, 
                 922, 928, 929,  929, 923, 922,  923, 929, 930,  930, 924, 923, 
                 924, 930, 931,  931, 925, 924,  932, 926, 889,  926, 932, 933, 
                 933, 927, 926,  927, 933, 934,  934, 928, 927,  928, 934, 935, 
                 935, 929, 928,  929, 935, 936,  936, 930, 929,  930, 936, 937, 
                 937, 931, 930,  938, 932, 889,  932, 938, 939,  939, 933, 932, 
                 933, 939, 940,  940, 934, 933,  934, 940, 941,  941, 935, 934, 
                 935, 941, 942,  942, 936, 935,  936, 942, 943,  943, 937, 936, 
                 944, 938, 889,  938, 944, 945,  945, 939, 938,  939, 945, 946, 
                 946, 940, 939,  940, 946, 947,  947, 941, 940,  941, 947, 948, 
                 948, 942, 941,  942, 948, 949,  949, 943, 942,  950, 944, 889, 
                 944, 950, 951,  951, 945, 944,  945, 951, 952,  952, 946, 945, 
                 946, 952, 953,  953, 947, 946,  947, 953, 954,  954, 948, 947, 
                 948, 954, 955,  955, 949, 948,  956, 950, 889,  950, 956, 957, 
                 957, 951, 950,  951, 957, 958,  958, 952, 951,  952, 958, 959, 
                 959, 953, 952,  953, 959, 960,  960, 954, 953,  954, 960, 961, 
                 961, 955, 954,  962, 956, 889,  956, 962, 963,  963, 957, 956, 
                 957, 963, 964,  964, 958, 957,  958, 964, 965,  965, 959, 958, 
                 959, 965, 966,  966, 960, 959,  960, 966, 967,  967, 961, 960, 
                 968, 962, 889,  962, 968, 969,  969, 963, 962,  963, 969, 970, 
                 970, 964, 963,  964, 970, 971,  971, 965, 964,  965, 971, 972, 
                 972, 966, 965,  966, 972, 973,  973, 967, 966,  974, 968, 889, 
                 968, 974, 975,  975, 969, 968,  969, 975, 976,  976, 970, 969, 
                 970, 976, 977,  977, 971, 970,  971, 977, 978,  978, 972, 971, 
                 972, 978, 979,  979, 973, 972,  980, 974, 889,  974, 980, 981, 
                 981, 975, 974,  975, 981, 982,  982, 976, 975,  976, 982, 983, 
                 983, 977, 976,  977, 983, 984,  984, 978, 977,  978, 984, 985, 
                 985, 979, 978,  986, 980, 889,  980, 986, 987,  987, 981, 980, 
                 981, 987, 988,  988, 982, 981,  982, 988, 989,  989, 983, 982, 
                 983, 989, 990,  990, 984, 983,  984, 990, 991,  991, 985, 984, 
                 992, 986, 889,  986, 992, 993,  993, 987, 986,  987, 993, 994, 
                 994, 988, 987,  988, 994, 995,  995, 989, 988,  989, 995, 996, 
                 996, 990, 989,  990, 996, 997,  997, 991, 990,  998, 992, 889, 
                 992, 998, 999,  999, 993, 992,  993, 999,1000, 1000, 994, 993, 
                 994,1000,1001, 1001, 995, 994,  995,1001,1002, 1002, 996, 995, 
                 996,1002,1003, 1003, 997, 996, 1004, 998, 889,  998,1004,1005, 
                1005, 999, 998,  999,1005,1006, 1006,1000, 999, 1000,1006,1007, 
                1007,1001,1000, 1001,1007,1008, 1008,1002,1001, 1002,1008,1009, 
                1009,1003,1002, 1010,1004, 889, 1004,1010,1011, 1011,1005,1004, 
                1005,1011,1012, 1012,1006,1005, 1006,1012,1013, 1013,1007,1006, 
                1007,1013,1014, 1014,1008,1007, 1008,1014,1015, 1015,1009,1008, 
                1016,1010, 889, 1010,1016,1017, 1017,1011,1010, 1011,1017,1018, 
                1018,1012,1011, 1012,1018,1019, 1019,1013,1012, 1013,1019,1020, 
                1020,1014,1013, 1014,1020,1021, 1021,1015,1014, 1022,1016, 889, 
                1016,1022,1023, 1023,1017,1016, 1017,1023,1024, 1024,1018,1017, 
                1018,1024,1025, 1025,1019,1018, 1019,1025,1026, 1026,1020,1019, 
                1020,1026,1027, 1027,1021,1020, 1028,1022, 889, 1022,1028,1029, 
                1029,1023,1022, 1023,1029,1030, 1030,1024,1023, 1024,1030,1031, 
                1031,1025,1024, 1025,1031,1032, 1032,1026,1025, 1026,1032,1033, 
                1033,1027,1026,  890,1028, 889, 1028, 890, 891,  891,1029,1028, 
                1029, 891, 892,  892,1030,1029, 1030, 892, 893,  893,1031,1030, 
                1031, 893, 894,  894,1032,1031, 1032, 894, 895,  895,1033,1032, 
                 895, 901,1040, 1040,1034, 895, 1034,1040,1041, 1041,1035,1034, 
                1035,1041,1042, 1042,1036,1035, 1036,1042,1043, 1043,1037,1036, 
                1037,1043,1044, 1044,1038,1037, 1038,1044,1045, 1045,1039,1038, 
                 901, 907,1046, 1046,1040, 901, 1040,1046,1047, 1047,1041,1040, 
                1041,1047,1048, 1048,1042,1041, 1042,1048,1049, 1049,1043,1042, 
                1043,1049,1050, 1050,1044,1043, 1044,1050,1051, 1051,1045,1044, 
                 907, 913,1052, 1052,1046, 907, 1046,1052,1053, 1053,1047,1046, 
                1047,1053,1054, 1054,1048,1047, 1048,1054,1055, 1055,1049,1048, 
                1049,1055,1056, 1056,1050,1049, 1050,1056,1057, 1057,1051,1050, 
                 913, 919,1058, 1058,1052, 913, 1052,1058,1059, 1059,1053,1052, 
                1053,1059,1060, 1060,1054,1053, 1054,1060,1061, 1061,1055,1054, 
                1055,1061,1062, 1062,1056,1055, 1056,1062,1063, 1063,1057,1056, 
                 919, 925,1064, 1064,1058, 919, 1058,1064,1065, 1065,1059,1058, 
                1059,1065,1066, 1066,1060,1059, 1060,1066,1067, 1067,1061,1060, 
                1061,1067,1068, 1068,1062,1061, 1062,1068,1069, 1069,1063,1062, 
                 925, 931,1070, 1070,1064, 925, 1064,1070,1071, 1071,1065,1064, 
                1065,1071,1072, 1072,1066,1065, 1066,1072,1073, 1073,1067,1066, 
                1067,1073,1074, 1074,1068,1067, 1068,1074,1075, 1075,1069,1068, 
                 931, 937,1076, 1076,1070, 931, 1070,1076,1077, 1077,1071,1070, 
                1071,1077,1078, 1078,1072,1071, 1072,1078,1079, 1079,1073,1072, 
                1073,1079,1080, 1080,1074,1073, 1074,1080,1081, 1081,1075,1074, 
                 937, 943,1082, 1082,1076, 937, 1076,1082,1083, 1083,1077,1076, 
                1077,1083,1084, 1084,1078,1077, 1078,1084,1085, 1085,1079,1078, 
                1079,1085,1086, 1086,1080,1079, 1080,1086,1087, 1087,1081,1080, 
                 943, 949,1088, 1088,1082, 943, 1082,1088,1089, 1089,1083,1082, 
                1083,1089,1090, 1090,1084,1083, 1084,1090,1091, 1091,1085,1084, 
                1085,1091,1092, 1092,1086,1085, 1086,1092,1093, 1093,1087,1086, 
                 949, 955,1094, 1094,1088, 949, 1088,1094,1095, 1095,1089,1088, 
                1089,1095,1096, 1096,1090,1089, 1090,1096,1097, 1097,1091,1090, 
                1091,1097,1098, 1098,1092,1091, 1092,1098,1099, 1099,1093,1092, 
                 955, 961,1100, 1100,1094, 955, 1094,1100,1101, 1101,1095,1094, 
                1095,1101,1102, 1102,1096,1095, 1096,1102,1103, 1103,1097,1096, 
                1097,1103,1104, 1104,1098,1097, 1098,1104,1105, 1105,1099,1098, 
                 961, 967,1106, 1106,1100, 961, 1100,1106,1107, 1107,1101,1100, 
                1101,1107,1108, 1108,1102,1101, 1102,1108,1109, 1109,1103,1102, 
                1103,1109,1110, 1110,1104,1103, 1104,1110,1111, 1111,1105,1104, 
                 967, 973,1112, 1112,1106, 967, 1106,1112,1113, 1113,1107,1106, 
                1107,1113,1114, 1114,1108,1107, 1108,1114,1115, 1115,1109,1108, 
                1109,1115,1116, 1116,1110,1109, 1110,1116,1117, 1117,1111,1110, 
                 973, 979,1118, 1118,1112, 973, 1112,1118,1119, 1119,1113,1112, 
                1113,1119,1120, 1120,1114,1113, 1114,1120,1121, 1121,1115,1114, 
                1115,1121,1122, 1122,1116,1115, 1116,1122,1123, 1123,1117,1116, 
                 979, 985,1124, 1124,1118, 979, 1118,1124,1125, 1125,1119,1118, 
                1119,1125,1126, 1126,1120,1119, 1120,1126,1127, 1127,1121,1120, 
                1121,1127,1128, 1128,1122,1121, 1122,1128,1129, 1129,1123,1122, 
                 985, 991,1130, 1130,1124, 985, 1124,1130,1131, 1131,1125,1124, 
                1125,1131,1132, 1132,1126,1125, 1126,1132,1133, 1133,1127,1126, 
                1127,1133,1134, 1134,1128,1127, 1128,1134,1135, 1135,1129,1128, 
                 991, 997,1136, 1136,1130, 991, 1130,1136,1137, 1137,1131,1130, 
                1131,1137,1138, 1138,1132,1131, 1132,1138,1139, 1139,1133,1132, 
                1133,1139,1140, 1140,1134,1133, 1134,1140,1141, 1141,1135,1134, 
                 997,1003,1142, 1142,1136, 997, 1136,1142,1143, 1143,1137,1136, 
                1137,1143,1144, 1144,1138,1137, 1138,1144,1145, 1145,1139,1138, 
                1139,1145,1146, 1146,1140,1139, 1140,1146,1147, 1147,1141,1140, 
                1003,1009,1148, 1148,1142,1003, 1142,1148,1149, 1149,1143,1142, 
                1143,1149,1150, 1150,1144,1143, 1144,1150,1151, 1151,1145,1144, 
                1145,1151,1152, 1152,1146,1145, 1146,1152,1153, 1153,1147,1146, 
                1009,1015,1154, 1154,1148,1009, 1148,1154,1155, 1155,1149,1148, 
                1149,1155,1156, 1156,1150,1149, 1150,1156,1157, 1157,1151,1150, 
                1151,1157,1158, 1158,1152,1151, 1152,1158,1159, 1159,1153,1152, 
                1015,1021,1160, 1160,1154,1015, 1154,1160,1161, 1161,1155,1154, 
                1155,1161,1162, 1162,1156,1155, 1156,1162,1163, 1163,1157,1156, 
                1157,1163,1164, 1164,1158,1157, 1158,1164,1165, 1165,1159,1158, 
                1021,1027,1166, 1166,1160,1021, 1160,1166,1167, 1167,1161,1160, 
                1161,1167,1168, 1168,1162,1161, 1162,1168,1169, 1169,1163,1162, 
                1163,1169,1170, 1170,1164,1163, 1164,1170,1171, 1171,1165,1164, 
                1027,1033,1172, 1172,1166,1027, 1166,1172,1173, 1173,1167,1166, 
                1167,1173,1174, 1174,1168,1167, 1168,1174,1175, 1175,1169,1168, 
                1169,1175,1176, 1176,1170,1169, 1170,1176,1177, 1177,1171,1170, 
                1033, 895,1034, 1034,1172,1033, 1172,1034,1035, 1035,1173,1172, 
                1173,1035,1036, 1036,1174,1173, 1174,1036,1037, 1037,1175,1174, 
                1175,1037,1038, 1038,1176,1175, 1176,1038,1039, 1039,1177,1176
            };

        static double[] verticesTeapot =
            {
                 0.678873, 0.330678, 0.000000,  0.669556, 0.358022, 0.000000, 
                 0.671003, 0.374428, 0.000000,  0.680435, 0.379897, 0.000000, 
                 0.695077, 0.374428, 0.000000,  0.712148, 0.358022, 0.000000, 
                 0.728873, 0.330678, 0.000000,  0.654243, 0.330678, 0.187963, 
                 0.645254, 0.358022, 0.185461,  0.646650, 0.374428, 0.185850, 
                 0.655751, 0.379897, 0.188383,  0.669877, 0.374428, 0.192314, 
                 0.686348, 0.358022, 0.196898,  0.702484, 0.330678, 0.201389, 
                 0.584502, 0.330678, 0.355704,  0.576441, 0.358022, 0.350969, 
                 0.577693, 0.374428, 0.351704,  0.585854, 0.379897, 0.356498, 
                 0.598522, 0.374428, 0.363938,  0.613292, 0.358022, 0.372613, 
                 0.627762, 0.330678, 0.381111,  0.475873, 0.330678, 0.497000, 
                 0.469258, 0.358022, 0.490385,  0.470285, 0.374428, 0.491412, 
                 0.476982, 0.379897, 0.498109,  0.487377, 0.374428, 0.508505, 
                 0.499498, 0.358022, 0.520626,  0.511373, 0.330678, 0.532500, 
                 0.334576, 0.330678, 0.605630,  0.329842, 0.358022, 0.597569, 
                 0.330577, 0.374428, 0.598820,  0.335370, 0.379897, 0.606982, 
                 0.342810, 0.374428, 0.619649,  0.351485, 0.358022, 0.634419, 
                 0.359984, 0.330678, 0.648889,  0.166836, 0.330678, 0.675370, 
                 0.164334, 0.358022, 0.666381,  0.164722, 0.374428, 0.667777, 
                 0.167255, 0.379897, 0.676878,  0.171187, 0.374428, 0.691004, 
                 0.175771, 0.358022, 0.707475,  0.180262, 0.330678, 0.723611, 
                -0.021127, 0.330678, 0.700000, -0.021127, 0.358022, 0.690683, 
                -0.021127, 0.374428, 0.692130, -0.021127, 0.379897, 0.701563, 
                -0.021127, 0.374428, 0.716204, -0.021127, 0.358022, 0.733276, 
                -0.021127, 0.330678, 0.750000, -0.224715, 0.330678, 0.675370, 
                -0.215631, 0.358022, 0.666381, -0.211606, 0.374428, 0.667777, 
                -0.211463, 0.379897, 0.676878, -0.214020, 0.374428, 0.691004, 
                -0.218098, 0.358022, 0.707475, -0.222516, 0.330678, 0.723611, 
                -0.396831, 0.330678, 0.605630, -0.383671, 0.358022, 0.597569, 
                -0.378758, 0.374428, 0.598820, -0.380125, 0.379897, 0.606982, 
                -0.385806, 0.374428, 0.619649, -0.393832, 0.358022, 0.634419, 
                -0.402238, 0.330678, 0.648889, -0.535002, 0.330678, 0.497000, 
                -0.521278, 0.358022, 0.490385, -0.517539, 0.374428, 0.491412, 
                -0.521346, 0.379897, 0.498109, -0.530257, 0.374428, 0.508505, 
                -0.541831, 0.358022, 0.520626, -0.553627, 0.330678, 0.532500, 
                -0.636757, 0.330678, 0.355704, -0.624483, 0.358022, 0.350969, 
                -0.622910, 0.374428, 0.351704, -0.629359, 0.379897, 0.356498, 
                -0.641146, 0.374428, 0.363938, -0.655593, 0.358022, 0.372613, 
                -0.670016, 0.330678, 0.381111, -0.699623, 0.330678, 0.187963, 
                -0.689317, 0.358022, 0.185461, -0.689830, 0.374428, 0.185850, 
                -0.698396, 0.379897, 0.188382, -0.712247, 0.374428, 0.192314, 
                -0.728617, 0.358022, 0.196898, -0.744738, 0.330678, 0.201389, 
                -0.721127, 0.330678, 0.000000, -0.711810, 0.358022, 0.000000, 
                -0.713257, 0.374428, 0.000000, -0.722690, 0.379897, 0.000000, 
                -0.737331, 0.374428, 0.000000, -0.754403, 0.358022, 0.000000, 
                -0.771127, 0.330678, 0.000000, -0.696498, 0.330678,-0.187963, 
                -0.687508, 0.358022,-0.185461, -0.688904, 0.374428,-0.185850, 
                -0.698005, 0.379897,-0.188383, -0.712131, 0.374428,-0.192314, 
                -0.728602, 0.358022,-0.196898, -0.744738, 0.330678,-0.201389, 
                -0.626757, 0.330678,-0.355704, -0.618696, 0.358022,-0.350969, 
                -0.619948, 0.374428,-0.351704, -0.628109, 0.379897,-0.356498, 
                -0.640776, 0.374428,-0.363938, -0.655546, 0.358022,-0.372613, 
                -0.670016, 0.330678,-0.381111, -0.518127, 0.330678,-0.497000, 
                -0.511512, 0.358022,-0.490385, -0.512539, 0.374428,-0.491412, 
                -0.519237, 0.379897,-0.498109, -0.529632, 0.374428,-0.508505, 
                -0.541753, 0.358022,-0.520626, -0.553627, 0.330678,-0.532500, 
                -0.376831, 0.330678,-0.605630, -0.372096, 0.358022,-0.597569, 
                -0.372832, 0.374428,-0.598820, -0.377625, 0.379897,-0.606982, 
                -0.385065, 0.374428,-0.619649, -0.393740, 0.358022,-0.634419, 
                -0.402238, 0.330678,-0.648889, -0.209090, 0.330678,-0.675370, 
                -0.206588, 0.358022,-0.666381, -0.206977, 0.374428,-0.667777, 
                -0.209510, 0.379897,-0.676878, -0.213441, 0.374428,-0.691004, 
                -0.218025, 0.358022,-0.707475, -0.222516, 0.330678,-0.723611, 
                -0.021127, 0.330678,-0.700000, -0.021127, 0.358022,-0.690683, 
                -0.021127, 0.374428,-0.692130, -0.021127, 0.379897,-0.701563, 
                -0.021127, 0.374428,-0.716204, -0.021127, 0.358022,-0.733276, 
                -0.021127, 0.330678,-0.750000,  0.166836, 0.330678,-0.675370, 
                 0.164334, 0.358022,-0.666381,  0.164722, 0.374428,-0.667777, 
                 0.167255, 0.379897,-0.676878,  0.171187, 0.374428,-0.691004, 
                 0.175771, 0.358022,-0.707475,  0.180262, 0.330678,-0.723611, 
                 0.334576, 0.330678,-0.605630,  0.329842, 0.358022,-0.597569, 
                 0.330577, 0.374428,-0.598820,  0.335370, 0.379897,-0.606982, 
                 0.342810, 0.374428,-0.619649,  0.351485, 0.358022,-0.634419, 
                 0.359984, 0.330678,-0.648889,  0.475873, 0.330678,-0.497000, 
                 0.469258, 0.358022,-0.490385,  0.470285, 0.374428,-0.491412, 
                 0.476982, 0.379897,-0.498109,  0.487377, 0.374428,-0.508505, 
                 0.499498, 0.358022,-0.520626,  0.511373, 0.330678,-0.532500, 
                 0.584502, 0.330678,-0.355704,  0.576441, 0.358022,-0.350969, 
                 0.577693, 0.374428,-0.351704,  0.585854, 0.379897,-0.356498, 
                 0.598522, 0.374428,-0.363938,  0.613292, 0.358022,-0.372613, 
                 0.627762, 0.330678,-0.381111,  0.654243, 0.330678,-0.187963, 
                 0.645254, 0.358022,-0.185461,  0.646650, 0.374428,-0.185850, 
                 0.655751, 0.379897,-0.188382,  0.669877, 0.374428,-0.192314, 
                 0.686348, 0.358022,-0.196898,  0.702484, 0.330678,-0.201389, 
                 0.790794, 0.199602, 0.000000,  0.849243, 0.069567, 0.000000, 
                 0.900748,-0.058384, 0.000000,  0.941836,-0.183211, 0.000000, 
                 0.969035,-0.303870, 0.000000,  0.978873,-0.419322, 0.000000, 
                 0.762227, 0.199602, 0.218016,  0.818619, 0.069567, 0.233711, 
                 0.868312,-0.058384, 0.247541,  0.907954,-0.183211, 0.258573, 
                 0.934196,-0.303870, 0.265877,  0.943688,-0.419322, 0.268519, 
                 0.681335, 0.199602, 0.412576,  0.731904, 0.069567, 0.442277, 
                 0.776465,-0.058384, 0.468449,  0.812014,-0.183211, 0.489328, 
                 0.835546,-0.303870, 0.503149,  0.844058,-0.419322, 0.508148, 
                 0.555337, 0.199602, 0.576464,  0.596836, 0.069567, 0.617963, 
                 0.633404,-0.058384, 0.654531,  0.662577,-0.183211, 0.683704, 
                 0.681888,-0.303870, 0.703015,  0.688873,-0.419322, 0.710000, 
                 0.391449, 0.199602, 0.702462,  0.421150, 0.069567, 0.753032, 
                 0.447322,-0.058384, 0.797593,  0.468201,-0.183211, 0.833141, 
                 0.482022,-0.303870, 0.856674,  0.487021,-0.419322, 0.865185, 
                 0.196889, 0.199602, 0.783354,  0.212583, 0.069567, 0.839746, 
                 0.226413,-0.058384, 0.889439,  0.237446,-0.183211, 0.929081, 
                 0.244750,-0.303870, 0.955323,  0.247391,-0.419322, 0.964815, 
                -0.021127, 0.199602, 0.811921, -0.021127, 0.069567, 0.870370, 
                -0.021127,-0.058384, 0.921875, -0.021127,-0.183211, 0.962963, 
                -0.021127,-0.303870, 0.990162, -0.021127,-0.419322, 1.000000, 
                -0.239143, 0.199602, 0.783354, -0.254838, 0.069567, 0.839746, 
                -0.268668,-0.058384, 0.889439, -0.279701,-0.183211, 0.929081, 
                -0.287004,-0.303870, 0.955323, -0.289646,-0.419322, 0.964815, 
                -0.433704, 0.199602, 0.702462, -0.463404, 0.069567, 0.753032, 
                -0.489576,-0.058384, 0.797593, -0.510455,-0.183211, 0.833141, 
                -0.524276,-0.303870, 0.856674, -0.529275,-0.419322, 0.865185, 
                -0.597591, 0.199602, 0.576464, -0.639090, 0.069567, 0.617963, 
                -0.675658,-0.058384, 0.654531, -0.704831,-0.183211, 0.683704, 
                -0.724142,-0.303870, 0.703015, -0.731127,-0.419322, 0.710000, 
                -0.723589, 0.199602, 0.412576, -0.774159, 0.069567, 0.442277, 
                -0.818720,-0.058384, 0.468449, -0.854269,-0.183211, 0.489328, 
                -0.877801,-0.303870, 0.503149, -0.886312,-0.419322, 0.508148, 
                -0.804481, 0.199602, 0.218016, -0.860873, 0.069567, 0.233711, 
                -0.910566,-0.058384, 0.247540, -0.950208,-0.183211, 0.258573, 
                -0.976450,-0.303870, 0.265877, -0.985942,-0.419322, 0.268518, 
                -0.833049, 0.199602, 0.000000, -0.891498, 0.069567, 0.000000, 
                -0.943002,-0.058384, 0.000000, -0.984090,-0.183211, 0.000000, 
                -1.011289,-0.303870, 0.000000, -1.021127,-0.419322, 0.000000, 
                -0.804481, 0.199602,-0.218016, -0.860873, 0.069567,-0.233711, 
                -0.910566,-0.058384,-0.247541, -0.950208,-0.183211,-0.258573, 
                -0.976450,-0.303870,-0.265877, -0.985942,-0.419322,-0.268519, 
                -0.723589, 0.199602,-0.412576, -0.774159, 0.069567,-0.442277, 
                -0.818720,-0.058384,-0.468449, -0.854269,-0.183211,-0.489328, 
                -0.877801,-0.303870,-0.503149, -0.886312,-0.419322,-0.508148, 
                -0.597591, 0.199602,-0.576464, -0.639090, 0.069567,-0.617963, 
                -0.675658,-0.058384,-0.654531, -0.704831,-0.183211,-0.683704, 
                -0.724142,-0.303870,-0.703015, -0.731127,-0.419322,-0.710000, 
                -0.433704, 0.199602,-0.702462, -0.463404, 0.069567,-0.753032, 
                -0.489576,-0.058384,-0.797593, -0.510455,-0.183211,-0.833141, 
                -0.524276,-0.303870,-0.856674, -0.529275,-0.419322,-0.865185, 
                -0.239143, 0.199602,-0.783354, -0.254838, 0.069567,-0.839746, 
                -0.268668,-0.058384,-0.889439, -0.279701,-0.183211,-0.929081, 
                -0.287004,-0.303870,-0.955323, -0.289646,-0.419322,-0.964815, 
                -0.021127, 0.199602,-0.811921, -0.021127, 0.069567,-0.870370, 
                -0.021127,-0.058384,-0.921875, -0.021127,-0.183211,-0.962963, 
                -0.021127,-0.303870,-0.990162, -0.021127,-0.419322,-1.000000, 
                 0.196889, 0.199602,-0.783354,  0.212583, 0.069567,-0.839746, 
                 0.226413,-0.058384,-0.889439,  0.237446,-0.183211,-0.929081, 
                 0.244750,-0.303870,-0.955323,  0.247391,-0.419322,-0.964815, 
                 0.391449, 0.199602,-0.702462,  0.421150, 0.069567,-0.753032, 
                 0.447322,-0.058384,-0.797593,  0.468201,-0.183211,-0.833141, 
                 0.482022,-0.303870,-0.856674,  0.487021,-0.419322,-0.865185, 
                 0.555337, 0.199602,-0.576464,  0.596836, 0.069567,-0.617963, 
                 0.633404,-0.058384,-0.654531,  0.662577,-0.183211,-0.683704, 
                 0.681888,-0.303870,-0.703015,  0.688873,-0.419322,-0.710000, 
                 0.681335, 0.199602,-0.412576,  0.731904, 0.069567,-0.442277, 
                 0.776465,-0.058384,-0.468449,  0.812014,-0.183211,-0.489328, 
                 0.835546,-0.303870,-0.503149,  0.844058,-0.419322,-0.508148, 
                 0.762227, 0.199602,-0.218016,  0.818619, 0.069567,-0.233711, 
                 0.868312,-0.058384,-0.247540,  0.907954,-0.183211,-0.258573, 
                 0.934196,-0.303870,-0.265877,  0.943688,-0.419322,-0.268518, 
                 0.960354,-0.522620, 0.000000,  0.914058,-0.608211, 0.000000, 
                 0.853873,-0.677134, 0.000000,  0.793688,-0.730433, 0.000000, 
                 0.747391,-0.769148, 0.000000,  0.728873,-0.794322, 0.000000, 
                 0.925821,-0.522620, 0.263546,  0.881153,-0.608211, 0.251115, 
                 0.823086,-0.677134, 0.234954,  0.765018,-0.730433, 0.218793, 
                 0.720351,-0.769148, 0.206361,  0.702484,-0.794322, 0.201389, 
                 0.828036,-0.522620, 0.498738,  0.787981,-0.608211, 0.475213, 
                 0.735910,-0.677134, 0.444630,  0.683839,-0.730433, 0.414047, 
                 0.643784,-0.769148, 0.390521,  0.627762,-0.794322, 0.381111, 
                 0.675725,-0.522620, 0.696852,  0.642854,-0.608211, 0.663981, 
                 0.600123,-0.677134, 0.621250,  0.557391,-0.730433, 0.578519, 
                 0.524521,-0.769148, 0.545648,  0.511373,-0.794322, 0.532500, 
                 0.477611,-0.522620, 0.849163,  0.454085,-0.608211, 0.809108, 
                 0.423502,-0.677134, 0.757037,  0.392919,-0.730433, 0.704966, 
                 0.369394,-0.769148, 0.664911,  0.359984,-0.794322, 0.648889, 
                 0.242419,-0.522620, 0.946948,  0.229987,-0.608211, 0.902281, 
                 0.213826,-0.677134, 0.844213,  0.197666,-0.730433, 0.786145, 
                 0.185234,-0.769148, 0.741478,  0.180262,-0.794322, 0.723611, 
                -0.021127,-0.522620, 0.981482, -0.021127,-0.608211, 0.935185, 
                -0.021127,-0.677134, 0.875000, -0.021127,-0.730433, 0.814815, 
                -0.021127,-0.769148, 0.768519, -0.021127,-0.794322, 0.750000, 
                -0.284673,-0.522620, 0.946948, -0.272242,-0.608211, 0.902281, 
                -0.256081,-0.677134, 0.844213, -0.239920,-0.730433, 0.786145, 
                -0.227489,-0.769148, 0.741478, -0.222516,-0.794322, 0.723611, 
                -0.519865,-0.522620, 0.849163, -0.496340,-0.608211, 0.809108, 
                -0.465757,-0.677134, 0.757037, -0.435174,-0.730433, 0.704966, 
                -0.411649,-0.769148, 0.664911, -0.402238,-0.794322, 0.648889, 
                -0.717979,-0.522620, 0.696852, -0.685109,-0.608211, 0.663981, 
                -0.642377,-0.677134, 0.621250, -0.599646,-0.730433, 0.578519, 
                -0.566775,-0.769148, 0.545648, -0.553627,-0.794322, 0.532500, 
                -0.870290,-0.522620, 0.498738, -0.830236,-0.608211, 0.475213, 
                -0.778164,-0.677134, 0.444630, -0.726093,-0.730433, 0.414047, 
                -0.686038,-0.769148, 0.390521, -0.670016,-0.794322, 0.381111, 
                -0.968075,-0.522620, 0.263546, -0.923408,-0.608211, 0.251115, 
                -0.865340,-0.677134, 0.234954, -0.807273,-0.730433, 0.218793, 
                -0.762605,-0.769148, 0.206361, -0.744738,-0.794322, 0.201389, 
                -1.002609,-0.522620, 0.000000, -0.956312,-0.608211, 0.000000, 
                -0.896127,-0.677134, 0.000000, -0.835942,-0.730433, 0.000000, 
                -0.789646,-0.769148, 0.000000, -0.771127,-0.794322, 0.000000, 
                -0.968075,-0.522620,-0.263546, -0.923408,-0.608211,-0.251115, 
                -0.865340,-0.677134,-0.234954, -0.807273,-0.730433,-0.218793, 
                -0.762605,-0.769148,-0.206361, -0.744738,-0.794322,-0.201389, 
                -0.870290,-0.522620,-0.498738, -0.830236,-0.608211,-0.475213, 
                -0.778164,-0.677134,-0.444630, -0.726093,-0.730433,-0.414047, 
                -0.686038,-0.769148,-0.390521, -0.670016,-0.794322,-0.381111, 
                -0.717979,-0.522620,-0.696852, -0.685109,-0.608211,-0.663981, 
                -0.642377,-0.677134,-0.621250, -0.599646,-0.730433,-0.578519, 
                -0.566775,-0.769148,-0.545648, -0.553627,-0.794322,-0.532500, 
                -0.519865,-0.522620,-0.849163, -0.496340,-0.608211,-0.809108, 
                -0.465757,-0.677134,-0.757037, -0.435174,-0.730433,-0.704966, 
                -0.411648,-0.769148,-0.664911, -0.402238,-0.794322,-0.648889, 
                -0.284673,-0.522620,-0.946948, -0.272242,-0.608211,-0.902281, 
                -0.256081,-0.677134,-0.844213, -0.239920,-0.730433,-0.786145, 
                -0.227489,-0.769148,-0.741478, -0.222516,-0.794322,-0.723611, 
                -0.021127,-0.522620,-0.981482, -0.021127,-0.608211,-0.935185, 
                -0.021127,-0.677134,-0.875000, -0.021127,-0.730433,-0.814815, 
                -0.021127,-0.769148,-0.768519, -0.021127,-0.794322,-0.750000, 
                 0.242419,-0.522620,-0.946948,  0.229987,-0.608211,-0.902281, 
                 0.213827,-0.677134,-0.844213,  0.197666,-0.730433,-0.786145, 
                 0.185234,-0.769148,-0.741478,  0.180262,-0.794322,-0.723611, 
                 0.477611,-0.522620,-0.849163,  0.454085,-0.608211,-0.809108, 
                 0.423502,-0.677134,-0.757037,  0.392919,-0.730433,-0.704966, 
                 0.369394,-0.769148,-0.664911,  0.359984,-0.794322,-0.648889, 
                 0.675725,-0.522620,-0.696852,  0.642854,-0.608211,-0.663981, 
                 0.600123,-0.677134,-0.621250,  0.557391,-0.730433,-0.578519, 
                 0.524521,-0.769148,-0.545648,  0.511373,-0.794322,-0.532500, 
                 0.828036,-0.522620,-0.498738,  0.787981,-0.608211,-0.475213, 
                 0.735910,-0.677134,-0.444630,  0.683839,-0.730433,-0.414047, 
                 0.643784,-0.769148,-0.390521,  0.627762,-0.794322,-0.381111, 
                 0.925821,-0.522620,-0.263546,  0.881153,-0.608211,-0.251115, 
                 0.823086,-0.677134,-0.234954,  0.765018,-0.730433,-0.218793, 
                 0.720351,-0.769148,-0.206361,  0.702484,-0.794322,-0.201389, 
                 0.722796,-0.812898, 0.000000,  0.692762,-0.830433, 0.000000, 
                 0.621060,-0.845884, 0.000000,  0.489984,-0.858211, 0.000000, 
                 0.281824,-0.866370, 0.000000, -0.021127,-0.869322, 0.000000, 
                 0.696621,-0.812898, 0.199757,  0.667643,-0.830433, 0.191692, 
                 0.598465,-0.845884, 0.172439,  0.472000,-0.858211, 0.137243, 
                 0.271165,-0.866370, 0.081348,  0.622505,-0.812898, 0.378023, 
                 0.596519,-0.830433, 0.362761,  0.534484,-0.845884, 0.326326, 
                 0.421079,-0.858211, 0.259720,  0.240982,-0.866370, 0.153944, 
                 0.507059,-0.812898, 0.528186,  0.485734,-0.830433, 0.506861, 
                 0.434826,-0.845884, 0.455953,  0.341762,-0.858211, 0.362889, 
                 0.193968,-0.866370, 0.215095,  0.356896,-0.812898, 0.643632, 
                 0.341634,-0.830433, 0.617646,  0.305199,-0.845884, 0.555611, 
                 0.238593,-0.858211, 0.442206,  0.132817,-0.866370, 0.262109, 
                 0.178630,-0.812898, 0.717749,  0.170565,-0.830433, 0.688771, 
                 0.151312,-0.845884, 0.619592,  0.116116,-0.858211, 0.493128, 
                 0.060221,-0.866370, 0.292292, -0.021127,-0.812898, 0.743924, 
                -0.021127,-0.830433, 0.713889, -0.021127,-0.845884, 0.642188, 
                -0.021127,-0.858211, 0.511111, -0.021127,-0.866370, 0.302951, 
                -0.220884,-0.812898, 0.717749, -0.212820,-0.830433, 0.688771, 
                -0.193566,-0.845884, 0.619592, -0.158370,-0.858211, 0.493128, 
                -0.102475,-0.866370, 0.292292, -0.399151,-0.812898, 0.643632, 
                -0.383889,-0.830433, 0.617646, -0.347454,-0.845884, 0.555611, 
                -0.280847,-0.858211, 0.442206, -0.175071,-0.866370, 0.262109, 
                -0.549313,-0.812898, 0.528186, -0.527988,-0.830433, 0.506861, 
                -0.477080,-0.845884, 0.455953, -0.384016,-0.858211, 0.362889, 
                -0.236223,-0.866370, 0.215095, -0.664759,-0.812898, 0.378023, 
                -0.638773,-0.830433, 0.362761, -0.576738,-0.845884, 0.326326, 
                -0.463333,-0.858211, 0.259720, -0.283236,-0.866370, 0.153944, 
                -0.738876,-0.812898, 0.199757, -0.709898,-0.830433, 0.191692, 
                -0.640719,-0.845884, 0.172439, -0.514255,-0.858211, 0.137243, 
                -0.313419,-0.866370, 0.081348, -0.765051,-0.812898, 0.000000, 
                -0.735016,-0.830433, 0.000000, -0.663315,-0.845884, 0.000000, 
                -0.532238,-0.858211, 0.000000, -0.324079,-0.866370, 0.000000, 
                -0.738876,-0.812898,-0.199757, -0.709898,-0.830433,-0.191692, 
                -0.640719,-0.845884,-0.172439, -0.514255,-0.858211,-0.137243, 
                -0.313419,-0.866370,-0.081348, -0.664759,-0.812898,-0.378023, 
                -0.638773,-0.830433,-0.362761, -0.576738,-0.845884,-0.326326, 
                -0.463333,-0.858211,-0.259720, -0.283236,-0.866370,-0.153944, 
                -0.549313,-0.812898,-0.528186, -0.527988,-0.830433,-0.506861, 
                -0.477080,-0.845884,-0.455953, -0.384016,-0.858211,-0.362889, 
                -0.236223,-0.866370,-0.215095, -0.399151,-0.812898,-0.643632, 
                -0.383889,-0.830433,-0.617646, -0.347454,-0.845884,-0.555611, 
                -0.280847,-0.858211,-0.442206, -0.175071,-0.866370,-0.262109, 
                -0.220884,-0.812898,-0.717749, -0.212820,-0.830433,-0.688771, 
                -0.193566,-0.845884,-0.619592, -0.158370,-0.858211,-0.493128, 
                -0.102475,-0.866370,-0.292292, -0.021127,-0.812898,-0.743924, 
                -0.021127,-0.830433,-0.713889, -0.021127,-0.845884,-0.642188, 
                -0.021127,-0.858211,-0.511111, -0.021127,-0.866370,-0.302951, 
                 0.178630,-0.812898,-0.717749,  0.170565,-0.830433,-0.688771, 
                 0.151312,-0.845884,-0.619592,  0.116116,-0.858211,-0.493128, 
                 0.060221,-0.866370,-0.292292,  0.356896,-0.812898,-0.643632, 
                 0.341634,-0.830433,-0.617646,  0.305199,-0.845884,-0.555611, 
                 0.238593,-0.858211,-0.442206,  0.132817,-0.866370,-0.262109, 
                 0.507059,-0.812898,-0.528186,  0.485734,-0.830433,-0.506861, 
                 0.434826,-0.845884,-0.455953,  0.341762,-0.858211,-0.362889, 
                 0.193968,-0.866370,-0.215095,  0.622505,-0.812898,-0.378023, 
                 0.596519,-0.830433,-0.362761,  0.534484,-0.845884,-0.326326, 
                 0.421079,-0.858211,-0.259720,  0.240982,-0.866370,-0.153944, 
                 0.696621,-0.812898,-0.199757,  0.667643,-0.830433,-0.191692, 
                 0.598465,-0.845884,-0.172439,  0.472000,-0.858211,-0.137243, 
                 0.271165,-0.866370,-0.081348, -0.821127, 0.143178, 0.000000, 
                -0.983396, 0.142657, 0.000000, -1.119275, 0.139012, 0.000000, 
                -1.227377, 0.129116, 0.000000, -1.306313, 0.109845, 0.000000, 
                -1.354692, 0.078074, 0.000000, -1.371127, 0.030678, 0.000000, 
                -0.817424, 0.151512, 0.062500, -0.984648, 0.150952, 0.062500, 
                -1.124351, 0.147036, 0.062500, -1.235248, 0.136407, 0.062500, 
                -1.316052, 0.115709, 0.062500, -1.365477, 0.081585, 0.062500, 
                -1.382239, 0.030678, 0.062500, -0.808164, 0.172345, 0.100000, 
                -0.987777, 0.171689, 0.100000, -1.137040, 0.167098, 0.100000, 
                -1.254924, 0.154637, 0.100000, -1.340400, 0.130370, 0.100000, 
                -1.392441, 0.090362, 0.100000, -1.410016, 0.030678, 0.100000, 
                -0.796127, 0.199428, 0.112500, -0.991845, 0.198647, 0.112500, 
                -1.153535, 0.193178, 0.112500, -1.280502, 0.178335, 0.112500, 
                -1.372053, 0.149428, 0.112500, -1.427493, 0.101772, 0.112500, 
                -1.446127, 0.030678, 0.112500, -0.784090, 0.226511, 0.100000, 
                -0.995913, 0.225605, 0.100000, -1.170030, 0.219258, 0.100000, 
                -1.306081, 0.202032, 0.100000, -1.403706, 0.168487, 0.100000, 
                -1.462545, 0.113182, 0.100000, -1.482238, 0.030678, 0.100000, 
                -0.774831, 0.247345, 0.062500, -0.999042, 0.246342, 0.062500, 
                -1.182719, 0.239320, 0.062500, -1.325757, 0.220261, 0.062500, 
                -1.428054, 0.183147, 0.062500, -1.489509, 0.121959, 0.062500, 
                -1.510016, 0.030678, 0.062500, -0.771127, 0.255678, 0.000000, 
                -1.000294, 0.254636, 0.000000, -1.187794, 0.247345, 0.000000, 
                -1.333627, 0.227553, 0.000000, -1.437794, 0.189011, 0.000000, 
                -1.500294, 0.125470, 0.000000, -1.521127, 0.030678, 0.000000, 
                -0.774831, 0.247345,-0.062500, -0.999042, 0.246342,-0.062500, 
                -1.182719, 0.239320,-0.062500, -1.325757, 0.220261,-0.062500, 
                -1.428054, 0.183147,-0.062500, -1.489509, 0.121959,-0.062500, 
                -1.510016, 0.030678,-0.062500, -0.784090, 0.226511,-0.100000, 
                -0.995913, 0.225605,-0.100000, -1.170030, 0.219258,-0.100000, 
                -1.306081, 0.202032,-0.100000, -1.403706, 0.168487,-0.100000, 
                -1.462545, 0.113182,-0.100000, -1.482238, 0.030678,-0.100000, 
                -0.796127, 0.199428,-0.112500, -0.991845, 0.198647,-0.112500, 
                -1.153535, 0.193178,-0.112500, -1.280502, 0.178335,-0.112500, 
                -1.372053, 0.149428,-0.112500, -1.427493, 0.101772,-0.112500, 
                -1.446127, 0.030678,-0.112500, -0.808164, 0.172345,-0.100000, 
                -0.987777, 0.171689,-0.100000, -1.137040, 0.167098,-0.100000, 
                -1.254924, 0.154637,-0.100000, -1.340400, 0.130370,-0.100000, 
                -1.392441, 0.090362,-0.100000, -1.410016, 0.030678,-0.100000, 
                -0.817424, 0.151512,-0.062500, -0.984648, 0.150952,-0.062500, 
                -1.124351, 0.147036,-0.062500, -1.235248, 0.136407,-0.062500, 
                -1.316052, 0.115709,-0.062500, -1.365477, 0.081585,-0.062500, 
                -1.382239, 0.030678,-0.062500, -1.362563,-0.033905, 0.000000, 
                -1.335942,-0.110988, 0.000000, -1.289877,-0.194322, 0.000000, 
                -1.222979,-0.277655, 0.000000, -1.133859,-0.354739, 0.000000, 
                -1.021127,-0.419322, 0.000000, -1.373219,-0.037332, 0.062500, 
                -1.345270,-0.116647, 0.062500, -1.297053,-0.201440, 0.062500, 
                -1.227232,-0.285886, 0.062500, -1.134467,-0.364159, 0.062500, 
                -1.017424,-0.430433, 0.062500, -1.399861,-0.045900, 0.100000, 
                -1.368590,-0.130793, 0.100000, -1.314993,-0.219235, 0.100000, 
                -1.237862,-0.306462, 0.100000, -1.135989,-0.387709, 0.100000, 
                -1.008164,-0.458211, 0.100000, -1.434495,-0.057039, 0.112500, 
                -1.398905,-0.149183, 0.112500, -1.338315,-0.242369, 0.112500, 
                -1.251683,-0.333211, 0.112500, -1.137967,-0.418324, 0.112500, 
                -0.996127,-0.494322, 0.112500, -1.469130,-0.068177, 0.100000, 
                -1.429221,-0.167573, 0.100000, -1.361637,-0.265502, 0.100000, 
                -1.265503,-0.359960, 0.100000, -1.139946,-0.448939, 0.100000, 
                -0.984090,-0.530433, 0.100000, -1.495772,-0.076745, 0.062500, 
                -1.452540,-0.181719, 0.062500, -1.379576,-0.283298, 0.062500, 
                -1.276134,-0.380536, 0.062500, -1.141468,-0.472489, 0.062500, 
                -0.974831,-0.558211, 0.062500, -1.506428,-0.080173, 0.000000, 
                -1.461868,-0.187377, 0.000000, -1.386752,-0.290416, 0.000000, 
                -1.280387,-0.388766, 0.000000, -1.142076,-0.481909, 0.000000, 
                -0.971127,-0.569322, 0.000000, -1.495772,-0.076745,-0.062500, 
                -1.452540,-0.181719,-0.062500, -1.379576,-0.283298,-0.062500, 
                -1.276134,-0.380536,-0.062500, -1.141468,-0.472489,-0.062500, 
                -0.974831,-0.558211,-0.062500, -1.469130,-0.068177,-0.100000, 
                -1.429221,-0.167573,-0.100000, -1.361637,-0.265502,-0.100000, 
                -1.265503,-0.359960,-0.100000, -1.139946,-0.448939,-0.100000, 
                -0.984090,-0.530433,-0.100000, -1.434495,-0.057039,-0.112500, 
                -1.398905,-0.149183,-0.112500, -1.338315,-0.242369,-0.112500, 
                -1.251683,-0.333211,-0.112500, -1.137967,-0.418324,-0.112500, 
                -0.996127,-0.494322,-0.112500, -1.399861,-0.045900,-0.100000, 
                -1.368590,-0.130793,-0.100000, -1.314993,-0.219235,-0.100000, 
                -1.237862,-0.306462,-0.100000, -1.135989,-0.387709,-0.100000, 
                -1.008164,-0.458211,-0.100000, -1.373219,-0.037332,-0.062500, 
                -1.345270,-0.116647,-0.062500, -1.297053,-0.201440,-0.062500, 
                -1.227232,-0.285886,-0.062500, -1.134467,-0.364159,-0.062500, 
                -1.017424,-0.430433,-0.062500,  0.828873,-0.156822, 0.000000, 
                 1.008271,-0.131127, 0.000000,  1.114058,-0.063766, 0.000000, 
                 1.172623, 0.030678, 0.000000,  1.210354, 0.137623, 0.000000, 
                 1.253641, 0.242484, 0.000000,  1.328873, 0.330678, 0.000000, 
                 0.828873,-0.187377, 0.137500,  1.015061,-0.156719, 0.131173, 
                 1.123935,-0.083314, 0.115355,  1.183734, 0.017484, 0.094792, 
                 1.222700, 0.130318, 0.074228,  1.269073, 0.239835, 0.058411, 
                 1.351095, 0.330678, 0.052083,  0.828873,-0.263766, 0.220000, 
                 1.032036,-0.220698, 0.209877,  1.148626,-0.132182, 0.184568, 
                 1.211512,-0.015502, 0.151667,  1.253564, 0.112057, 0.118765, 
                 1.307654, 0.233212, 0.093457,  1.406651, 0.330678, 0.083333, 
                 0.828873,-0.363072, 0.247500,  1.054104,-0.303870, 0.236111, 
                 1.180725,-0.195711, 0.207639,  1.247623,-0.058384, 0.170625, 
                 1.293688, 0.088317, 0.133611,  1.357808, 0.224602, 0.105139, 
                 1.478873, 0.330678, 0.093750,  0.828873,-0.462377, 0.220000, 
                 1.076172,-0.387043, 0.209877,  1.212823,-0.259240, 0.184568, 
                 1.283734,-0.101266, 0.151667,  1.333811, 0.064577, 0.118765, 
                 1.407962, 0.215992, 0.093457,  1.551095, 0.330678, 0.083333, 
                 0.828873,-0.538766, 0.137500,  1.093148,-0.451022, 0.131173, 
                 1.237515,-0.308108, 0.115355,  1.311512,-0.134252, 0.094792, 
                 1.364675, 0.046316, 0.074228,  1.446543, 0.209369, 0.058410, 
                 1.606651, 0.330678, 0.052083,  0.828873,-0.569322, 0.000000, 
                 1.099938,-0.476614, 0.000000,  1.247391,-0.327655, 0.000000, 
                 1.322623,-0.147447, 0.000000,  1.377021, 0.039012, 0.000000, 
                 1.461975, 0.206720, 0.000000,  1.628873, 0.330678, 0.000000, 
                 0.828873,-0.538766,-0.137500,  1.093148,-0.451022,-0.131173, 
                 1.237515,-0.308108,-0.115355,  1.311512,-0.134252,-0.094792, 
                 1.364675, 0.046316,-0.074228,  1.446543, 0.209369,-0.058410, 
                 1.606651, 0.330678,-0.052083,  0.828873,-0.462377,-0.220000, 
                 1.076172,-0.387043,-0.209877,  1.212823,-0.259240,-0.184568, 
                 1.283734,-0.101266,-0.151667,  1.333811, 0.064577,-0.118765, 
                 1.407962, 0.215992,-0.093457,  1.551095, 0.330678,-0.083333, 
                 0.828873,-0.363072,-0.247500,  1.054104,-0.303870,-0.236111, 
                 1.180725,-0.195711,-0.207639,  1.247623,-0.058384,-0.170625, 
                 1.293688, 0.088317,-0.133611,  1.357808, 0.224602,-0.105139, 
                 1.478873, 0.330678,-0.093750,  0.828873,-0.263766,-0.220000, 
                 1.032036,-0.220698,-0.209877,  1.148626,-0.132182,-0.184568, 
                 1.211512,-0.015502,-0.151667,  1.253564, 0.112057,-0.118765, 
                 1.307654, 0.233212,-0.093457,  1.406651, 0.330678,-0.083333, 
                 0.828873,-0.187377,-0.137500,  1.015061,-0.156719,-0.131173, 
                 1.123935,-0.083314,-0.115355,  1.183734, 0.017484,-0.094792, 
                 1.222700, 0.130318,-0.074228,  1.269073, 0.239835,-0.058410, 
                 1.351095, 0.330678,-0.052083,  1.353410, 0.346303, 0.000000, 
                 1.375169, 0.355678, 0.000000,  1.391373, 0.358803, 0.000000, 
                 1.399243, 0.355678, 0.000000,  1.396003, 0.346303, 0.000000, 
                 1.378873, 0.330678, 0.000000,  1.377077, 0.346641, 0.050540, 
                 1.398763, 0.356295, 0.046682,  1.413711, 0.359584, 0.041667, 
                 1.419477, 0.356450, 0.036651,  1.413617, 0.346834, 0.032793, 
                 1.393688, 0.330678, 0.031250,  1.436244, 0.347485, 0.080864, 
                 1.457748, 0.357839, 0.074691,  1.469556, 0.361538, 0.066667, 
                 1.470060, 0.358379, 0.058642,  1.457652, 0.348160, 0.052469, 
                 1.430725, 0.330678, 0.050000,  1.513161, 0.348582, 0.090972, 
                 1.534428, 0.359845, 0.084028,  1.542154, 0.364077, 0.075000, 
                 1.535817, 0.360886, 0.065972,  1.514897, 0.349884, 0.059028, 
                 1.478873, 0.330678, 0.056250,  1.590078, 0.349679, 0.080864, 
                 1.611109, 0.361851, 0.074691,  1.614753, 0.366616, 0.066667, 
                 1.601575, 0.363394, 0.058642,  1.572143, 0.351608, 0.052469, 
                 1.527021, 0.330678, 0.050000,  1.649245, 0.350523, 0.050540, 
                 1.670094, 0.363394, 0.046682,  1.670597, 0.368569, 0.041667, 
                 1.652158, 0.365323, 0.036651,  1.616178, 0.352934, 0.032793, 
                 1.564058, 0.330678, 0.031250,  1.672912, 0.350860, 0.000000, 
                 1.693688, 0.364011, 0.000000,  1.692935, 0.369350, 0.000000, 
                 1.672391, 0.366095, 0.000000,  1.633792, 0.353465, 0.000000, 
                 1.578873, 0.330678, 0.000000,  1.649245, 0.350523,-0.050540, 
                 1.670094, 0.363394,-0.046682,  1.670597, 0.368569,-0.041667, 
                 1.652158, 0.365323,-0.036651,  1.616178, 0.352934,-0.032793, 
                 1.564058, 0.330678,-0.031250,  1.590078, 0.349679,-0.080864, 
                 1.611109, 0.361851,-0.074691,  1.614753, 0.366616,-0.066667, 
                 1.601575, 0.363394,-0.058642,  1.572143, 0.351608,-0.052469, 
                 1.527021, 0.330678,-0.050000,  1.513161, 0.348582,-0.090972, 
                 1.534428, 0.359845,-0.084028,  1.542154, 0.364077,-0.075000, 
                 1.535817, 0.360886,-0.065972,  1.514897, 0.349884,-0.059028, 
                 1.478873, 0.330678,-0.056250,  1.436244, 0.347485,-0.080864, 
                 1.457748, 0.357839,-0.074691,  1.469556, 0.361538,-0.066667, 
                 1.470060, 0.358379,-0.058642,  1.457652, 0.348160,-0.052469, 
                 1.430725, 0.330678,-0.050000,  1.377077, 0.346641,-0.050540, 
                 1.398763, 0.356295,-0.046682,  1.413711, 0.359584,-0.041667, 
                 1.419477, 0.356450,-0.036651,  1.413617, 0.346834,-0.032793, 
                 1.393688, 0.330678,-0.031250, -0.021127, 0.705678, 0.000000, 
                 0.118225, 0.694220, 0.000000,  0.160354, 0.664011, 0.000000, 
                 0.141373, 0.621303, 0.000000,  0.097391, 0.572345, 0.000000, 
                 0.064521, 0.523386, 0.000000,  0.078873, 0.480678, 0.000000, 
                 0.113346, 0.694220, 0.037539,  0.154000, 0.664011, 0.048885, 
                 0.135681, 0.621303, 0.043764,  0.093237, 0.572345, 0.031902, 
                 0.061512, 0.523386, 0.023022,  0.075354, 0.480678, 0.026852, 
                 0.099515, 0.694220, 0.070966,  0.135987, 0.664011, 0.092417, 
                 0.119549, 0.621303, 0.082741,  0.081463, 0.572345, 0.060324, 
                 0.052990, 0.523386, 0.043553,  0.065391, 0.480678, 0.050815, 
                 0.077943, 0.694220, 0.099070,  0.107891, 0.664011, 0.129019, 
                 0.094388, 0.621303, 0.115516,  0.063104, 0.572345, 0.084231, 
                 0.039709, 0.523386, 0.060836,  0.049873, 0.480678, 0.071000, 
                 0.049838, 0.694220, 0.120642,  0.071290, 0.664011, 0.157114, 
                 0.061614, 0.621303, 0.140676,  0.039197, 0.572345, 0.102590, 
                 0.022426, 0.523386, 0.074117,  0.029688, 0.480678, 0.086519, 
                 0.016412, 0.694220, 0.134473,  0.027758, 0.664011, 0.175127, 
                 0.022637, 0.621303, 0.156808,  0.010774, 0.572345, 0.114364, 
                 0.001895, 0.523386, 0.082639,  0.005725, 0.480678, 0.096482, 
                -0.021127, 0.694220, 0.139352, -0.021127, 0.664011, 0.181482, 
                -0.021127, 0.621303, 0.162500, -0.021127, 0.572345, 0.118519, 
                -0.021127, 0.523386, 0.085648, -0.021127, 0.480678, 0.100000, 
                -0.058666, 0.694220, 0.134473, -0.070013, 0.664011, 0.175127, 
                -0.064892, 0.621303, 0.156808, -0.053029, 0.572345, 0.114364, 
                -0.044149, 0.523386, 0.082639, -0.047979, 0.480678, 0.096481, 
                -0.092093, 0.694220, 0.120642, -0.113544, 0.664011, 0.157114, 
                -0.103868, 0.621303, 0.140676, -0.081451, 0.572345, 0.102590, 
                -0.064680, 0.523386, 0.074117, -0.071942, 0.480678, 0.086519, 
                -0.120197, 0.694220, 0.099070, -0.150146, 0.664011, 0.129019, 
                -0.136643, 0.621303, 0.115516, -0.105359, 0.572345, 0.084231, 
                -0.081963, 0.523386, 0.060836, -0.092127, 0.480678, 0.071000, 
                -0.141770, 0.694220, 0.070966, -0.178241, 0.664011, 0.092417, 
                -0.161803, 0.621303, 0.082741, -0.123717, 0.572345, 0.060324, 
                -0.095244, 0.523386, 0.043553, -0.107646, 0.480678, 0.050815, 
                -0.155600, 0.694220, 0.037539, -0.196254, 0.664011, 0.048885, 
                -0.177936, 0.621303, 0.043764, -0.135491, 0.572345, 0.031902, 
                -0.103767, 0.523386, 0.023022, -0.117609, 0.480678, 0.026852, 
                -0.160479, 0.694220, 0.000000, -0.202609, 0.664011, 0.000000, 
                -0.183627, 0.621303, 0.000000, -0.139646, 0.572345, 0.000000, 
                -0.106775, 0.523386, 0.000000, -0.121127, 0.480678, 0.000000, 
                -0.155600, 0.694220,-0.037539, -0.196254, 0.664011,-0.048885, 
                -0.177936, 0.621303,-0.043764, -0.135491, 0.572345,-0.031902, 
                -0.103767, 0.523386,-0.023022, -0.117609, 0.480678,-0.026852, 
                -0.141770, 0.694220,-0.070966, -0.178241, 0.664011,-0.092417, 
                -0.161803, 0.621303,-0.082741, -0.123717, 0.572345,-0.060324, 
                -0.095244, 0.523386,-0.043553, -0.107646, 0.480678,-0.050815, 
                -0.120197, 0.694220,-0.099070, -0.150146, 0.664011,-0.129019, 
                -0.136643, 0.621303,-0.115516, -0.105359, 0.572345,-0.084231, 
                -0.081963, 0.523386,-0.060836, -0.092127, 0.480678,-0.071000, 
                -0.092093, 0.694220,-0.120642, -0.113544, 0.664011,-0.157114, 
                -0.103868, 0.621303,-0.140676, -0.081451, 0.572345,-0.102590, 
                -0.064680, 0.523386,-0.074117, -0.071942, 0.480678,-0.086519, 
                -0.058666, 0.694220,-0.134473, -0.070013, 0.664011,-0.175127, 
                -0.064892, 0.621303,-0.156808, -0.053029, 0.572345,-0.114364, 
                -0.044149, 0.523386,-0.082639, -0.047979, 0.480678,-0.096482, 
                -0.021127, 0.694220,-0.139352, -0.021127, 0.664011,-0.181482, 
                -0.021127, 0.621303,-0.162500, -0.021127, 0.572345,-0.118519, 
                -0.021127, 0.523386,-0.085648, -0.021127, 0.480678,-0.100000, 
                 0.016412, 0.694220,-0.134473,  0.027758, 0.664011,-0.175127, 
                 0.022637, 0.621303,-0.156808,  0.010774, 0.572345,-0.114364, 
                 0.001895, 0.523386,-0.082639,  0.005725, 0.480678,-0.096481, 
                 0.049838, 0.694220,-0.120642,  0.071290, 0.664011,-0.157114, 
                 0.061614, 0.621303,-0.140676,  0.039197, 0.572345,-0.102590, 
                 0.022426, 0.523386,-0.074117,  0.029688, 0.480678,-0.086519, 
                 0.077943, 0.694220,-0.099070,  0.107891, 0.664011,-0.129019, 
                 0.094388, 0.621303,-0.115516,  0.063104, 0.572345,-0.084231, 
                 0.039709, 0.523386,-0.060836,  0.049873, 0.480678,-0.071000, 
                 0.099515, 0.694220,-0.070966,  0.135987, 0.664011,-0.092417, 
                 0.119549, 0.621303,-0.082741,  0.081463, 0.572345,-0.060324, 
                 0.052990, 0.523386,-0.043553,  0.065391, 0.480678,-0.050815, 
                 0.113346, 0.694220,-0.037539,  0.154000, 0.664011,-0.048885, 
                 0.135681, 0.621303,-0.043764,  0.093237, 0.572345,-0.031902, 
                 0.061512, 0.523386,-0.023022,  0.075354, 0.480678,-0.026852, 
                 0.154336, 0.448734, 0.000000,  0.265910, 0.425123, 0.000000, 
                 0.391373, 0.405678, 0.000000,  0.508502, 0.386234, 0.000000, 
                 0.595077, 0.362623, 0.000000,  0.628873, 0.330678, 0.000000, 
                 0.148162, 0.448734, 0.047115,  0.255810, 0.425123, 0.077075, 
                 0.376859, 0.405678, 0.110764,  0.489867, 0.386234, 0.142215, 
                 0.573395, 0.362623, 0.165462,  0.606002, 0.330678, 0.174537, 
                 0.130681, 0.448734, 0.089161,  0.227213, 0.425123, 0.145857, 
                 0.335762, 0.405678, 0.209611,  0.437101, 0.386234, 0.269130, 
                 0.512003, 0.362623, 0.313123,  0.541243, 0.330678, 0.330296, 
                 0.103451, 0.448734, 0.124579,  0.182669, 0.425123, 0.203796, 
                 0.271748, 0.405678, 0.292875,  0.354910, 0.386234, 0.376037, 
                 0.416377, 0.362623, 0.437505,  0.440373, 0.330678, 0.461500, 
                 0.068034, 0.448734, 0.151808,  0.124730, 0.425123, 0.248340, 
                 0.188484, 0.405678, 0.356889,  0.248003, 0.386234, 0.458228, 
                 0.291995, 0.362623, 0.533130,  0.309169, 0.330678, 0.562370, 
                 0.025988, 0.448734, 0.169289,  0.055948, 0.425123, 0.276938, 
                 0.089637, 0.405678, 0.397986,  0.121088, 0.386234, 0.510995, 
                 0.144335, 0.362623, 0.594523,  0.153410, 0.330678, 0.627130, 
                -0.021127, 0.448734, 0.175463, -0.021127, 0.425123, 0.287037, 
                -0.021127, 0.405678, 0.412500, -0.021127, 0.386234, 0.529630, 
                -0.021127, 0.362623, 0.616204, -0.021127, 0.330678, 0.650000, 
                -0.068242, 0.448734, 0.169289, -0.098202, 0.425123, 0.276938, 
                -0.131891, 0.405678, 0.397986, -0.163343, 0.386234, 0.510995, 
                -0.186589, 0.362623, 0.594523, -0.195664, 0.330678, 0.627130, 
                -0.110288, 0.448734, 0.151808, -0.166985, 0.425123, 0.248340, 
                -0.230738, 0.405678, 0.356889, -0.290258, 0.386234, 0.458228, 
                -0.334250, 0.362623, 0.533130, -0.351424, 0.330678, 0.562370, 
                -0.145706, 0.448734, 0.124579, -0.224924, 0.425123, 0.203796, 
                -0.314002, 0.405678, 0.292875, -0.397164, 0.386234, 0.376037, 
                -0.458632, 0.362623, 0.437505, -0.482627, 0.330678, 0.461500, 
                -0.172935, 0.448734, 0.089161, -0.269467, 0.425123, 0.145857, 
                -0.378016, 0.405678, 0.209611, -0.479355, 0.386234, 0.269130, 
                -0.554258, 0.362623, 0.313123, -0.583498, 0.330678, 0.330296, 
                -0.190416, 0.448734, 0.047115, -0.298065, 0.425123, 0.077075, 
                -0.419113, 0.405678, 0.110764, -0.532122, 0.386234, 0.142215, 
                -0.615650, 0.362623, 0.165462, -0.648257, 0.330678, 0.174537, 
                -0.196590, 0.448734, 0.000000, -0.308164, 0.425123, 0.000000, 
                -0.433627, 0.405678, 0.000000, -0.550757, 0.386234, 0.000000, 
                -0.637331, 0.362623, 0.000000, -0.671127, 0.330678, 0.000000, 
                -0.190416, 0.448734,-0.047115, -0.298065, 0.425123,-0.077075, 
                -0.419113, 0.405678,-0.110764, -0.532122, 0.386234,-0.142215, 
                -0.615650, 0.362623,-0.165462, -0.648257, 0.330678,-0.174537, 
                -0.172935, 0.448734,-0.089161, -0.269467, 0.425123,-0.145857, 
                -0.378016, 0.405678,-0.209611, -0.479355, 0.386234,-0.269130, 
                -0.554258, 0.362623,-0.313123, -0.583498, 0.330678,-0.330296, 
                -0.145706, 0.448734,-0.124579, -0.224924, 0.425123,-0.203796, 
                -0.314002, 0.405678,-0.292875, -0.397164, 0.386234,-0.376037, 
                -0.458632, 0.362623,-0.437505, -0.482627, 0.330678,-0.461500, 
                -0.110288, 0.448734,-0.151808, -0.166985, 0.425123,-0.248340, 
                -0.230738, 0.405678,-0.356889, -0.290258, 0.386234,-0.458228, 
                -0.334250, 0.362623,-0.533130, -0.351424, 0.330678,-0.562370, 
                -0.068242, 0.448734,-0.169289, -0.098202, 0.425123,-0.276938, 
                -0.131891, 0.405678,-0.397986, -0.163343, 0.386234,-0.510995, 
                -0.186589, 0.362623,-0.594523, -0.195664, 0.330678,-0.627130, 
                -0.021127, 0.448734,-0.175463, -0.021127, 0.425123,-0.287037, 
                -0.021127, 0.405678,-0.412500, -0.021127, 0.386234,-0.529630, 
                -0.021127, 0.362623,-0.616204, -0.021127, 0.330678,-0.650000, 
                 0.025988, 0.448734,-0.169289,  0.055948, 0.425123,-0.276938, 
                 0.089637, 0.405678,-0.397986,  0.121088, 0.386234,-0.510995, 
                 0.144335, 0.362623,-0.594523,  0.153410, 0.330678,-0.627130, 
                 0.068034, 0.448734,-0.151808,  0.124730, 0.425123,-0.248340, 
                 0.188484, 0.405678,-0.356889,  0.248003, 0.386234,-0.458228, 
                 0.291996, 0.362623,-0.533130,  0.309169, 0.330678,-0.562370, 
                 0.103451, 0.448734,-0.124579,  0.182669, 0.425123,-0.203796, 
                 0.271748, 0.405678,-0.292875,  0.354910, 0.386234,-0.376037, 
                 0.416377, 0.362623,-0.437505,  0.440373, 0.330678,-0.461500, 
                 0.130681, 0.448734,-0.089161,  0.227213, 0.425123,-0.145857, 
                 0.335762, 0.405678,-0.209611,  0.437101, 0.386234,-0.269130, 
                 0.512003, 0.362623,-0.313123,  0.541243, 0.330678,-0.330296, 
                 0.148162, 0.448734,-0.047115,  0.255810, 0.425123,-0.077075, 
                 0.376859, 0.405678,-0.110764,  0.489867, 0.386234,-0.142215, 
                 0.573395, 0.362623,-0.165462,  0.606002, 0.330678,-0.174537
            };

        static double[] normalsTeapot =
            {
                -0.945751,-0.322256,-0.041309, -0.992771,-0.120019,-0.001089, 
                -0.842751, 0.538169, 0.012052, -0.083588, 0.996288, 0.020560, 
                 0.532170, 0.846603, 0.007614,  0.779300, 0.626641, 0.003491, 
                 0.879896, 0.475165, 0.001103, -0.902413,-0.322783,-0.285416, 
                -0.958558,-0.120097,-0.258348, -0.816875, 0.538579,-0.206514, 
                -0.086190, 0.996277,-0.001604,  0.511484, 0.846942, 0.145167, 
                 0.751363, 0.627164, 0.205227,  0.849281, 0.475682, 0.229015, 
                -0.797449,-0.323303,-0.509461, -0.858625,-0.120328,-0.498282, 
                -0.735017, 0.538957,-0.411431, -0.082580, 0.996294,-0.024043, 
                 0.455735, 0.847352, 0.272581,  0.671856, 0.627868, 0.392927, 
                 0.760399, 0.476384, 0.441420, -0.639341,-0.323439,-0.697589, 
                -0.701183,-0.120461,-0.702731, -0.604040, 0.539064,-0.586980, 
                -0.073399, 0.996309,-0.044511,  0.369925, 0.847499, 0.380659, 
                 0.547722, 0.628143, 0.552663,  0.620826, 0.476660, 0.622391, 
                -0.437782,-0.323142,-0.839003, -0.496373,-0.120437,-0.859715, 
                -0.432443, 0.538876,-0.722914, -0.059523, 0.996312,-0.061801, 
                 0.259388, 0.847326, 0.463418,  0.386844, 0.627880, 0.675366, 
                 0.439492, 0.476398, 0.761506, -0.204681,-0.322547,-0.924159, 
                -0.256209,-0.120257,-0.959112, -0.230122, 0.538458,-0.810621, 
                -0.041668, 0.996304,-0.075119,  0.130300, 0.846904, 0.515534, 
                 0.198391, 0.627182, 0.753183,  0.226852, 0.475703, 0.849850, 
                 0.035941,-0.330214,-0.943221, -0.001376,-0.125569,-0.992084, 
                -0.012701, 0.535792,-0.844254, -0.020672, 0.996343,-0.082901, 
                -0.007571, 0.846427, 0.532451, -0.003482, 0.626608, 0.779327, 
                -0.001103, 0.475165, 0.879896,  0.269574,-0.386954,-0.881814, 
                 0.249993,-0.181783,-0.951030,  0.211872, 0.499984,-0.839718, 
                 0.002768, 0.995768,-0.091859, -0.146446, 0.844150, 0.515718, 
                -0.205497, 0.625909, 0.752335, -0.229034, 0.475536, 0.849358, 
                 0.482854,-0.445924,-0.753661,  0.483883,-0.261599,-0.835118, 
                 0.442338, 0.434016,-0.784836,  0.036680, 0.993502,-0.107746, 
                -0.278510, 0.839949, 0.465746, -0.394390, 0.624142, 0.674465, 
                -0.441541, 0.475913, 0.760624,  0.669165,-0.453044,-0.589041, 
                 0.686401,-0.287530,-0.667967,  0.643212, 0.404496,-0.650124, 
                 0.074604, 0.991460,-0.106959, -0.391289, 0.837987, 0.380356, 
                -0.555484, 0.623132, 0.550586, -0.622636, 0.476008, 0.621080, 
                 0.821788,-0.407716,-0.398036,  0.849894,-0.244430,-0.466834, 
                 0.778095, 0.435804,-0.452374,  0.095458, 0.992115,-0.081218, 
                -0.473659, 0.839871, 0.265074, -0.678265, 0.623724, 0.388490, 
                -0.761768, 0.475842, 0.439641,  0.919150,-0.348512,-0.183583, 
                 0.956218,-0.171139,-0.237398,  0.838823, 0.493898,-0.229000, 
                 0.094322, 0.994404,-0.047578, -0.520640, 0.843596, 0.131452, 
                -0.754753, 0.625180, 0.198741, -0.849997, 0.475426, 0.226882, 
                 0.945537,-0.322183, 0.046446,  0.991881,-0.126966, 0.007216, 
                 0.847572, 0.530605,-0.008996,  0.087879, 0.995918,-0.020615, 
                -0.533063, 0.846041,-0.007711, -0.779612, 0.626253,-0.003532, 
                -0.879926, 0.475109,-0.001109,  0.902413,-0.322783, 0.285416, 
                 0.958558,-0.120097, 0.258348,  0.816875, 0.538579, 0.206514, 
                 0.086190, 0.996277, 0.001604, -0.511484, 0.846942,-0.145167, 
                -0.751363, 0.627164,-0.205227, -0.849281, 0.475682,-0.229015, 
                 0.797449,-0.323303, 0.509461,  0.858625,-0.120328, 0.498282, 
                 0.735017, 0.538957, 0.411431,  0.082580, 0.996294, 0.024043, 
                -0.455735, 0.847352,-0.272581, -0.671856, 0.627868,-0.392927, 
                -0.760399, 0.476384,-0.441420,  0.639341,-0.323439, 0.697589, 
                 0.701183,-0.120461, 0.702731,  0.604040, 0.539064, 0.586980, 
                 0.073399, 0.996309, 0.044511, -0.369925, 0.847499,-0.380659, 
                -0.547722, 0.628143,-0.552663, -0.620826, 0.476660,-0.622391, 
                 0.437782,-0.323142, 0.839003,  0.496373,-0.120437, 0.859715, 
                 0.432443, 0.538876, 0.722914,  0.059523, 0.996312, 0.061801, 
                -0.259388, 0.847326,-0.463418, -0.386844, 0.627880,-0.675366, 
                -0.439492, 0.476398,-0.761506,  0.204681,-0.322547, 0.924159, 
                 0.256209,-0.120257, 0.959112,  0.230122, 0.538458, 0.810621, 
                 0.041668, 0.996304, 0.075119, -0.130300, 0.846904,-0.515534, 
                -0.198391, 0.627182,-0.753183, -0.226852, 0.475703,-0.849850, 
                -0.041309,-0.322256, 0.945751, -0.001089,-0.120019, 0.992771, 
                 0.012052, 0.538169, 0.842751,  0.020560, 0.996288, 0.083588, 
                 0.007614, 0.846603,-0.532170,  0.003491, 0.626641,-0.779300, 
                 0.001103, 0.475165,-0.879896, -0.285416,-0.322783, 0.902413, 
                -0.258348,-0.120097, 0.958558, -0.206514, 0.538579, 0.816875, 
                -0.001604, 0.996277, 0.086190,  0.145167, 0.846942,-0.511484, 
                 0.205227, 0.627164,-0.751363,  0.229015, 0.475682,-0.849281, 
                -0.509461,-0.323303, 0.797449, -0.498282,-0.120328, 0.858625, 
                -0.411431, 0.538957, 0.735017, -0.024043, 0.996294, 0.082580, 
                 0.272581, 0.847352,-0.455735,  0.392927, 0.627868,-0.671856, 
                 0.441420, 0.476384,-0.760399, -0.697589,-0.323439, 0.639341, 
                -0.702731,-0.120461, 0.701183, -0.586980, 0.539064, 0.604040, 
                -0.044511, 0.996309, 0.073399,  0.380659, 0.847499,-0.369925, 
                 0.552663, 0.628143,-0.547722,  0.622391, 0.476660,-0.620826, 
                -0.839003,-0.323142, 0.437782, -0.859715,-0.120437, 0.496373, 
                -0.722914, 0.538876, 0.432443, -0.061801, 0.996312, 0.059523, 
                 0.463418, 0.847326,-0.259388,  0.675366, 0.627880,-0.386844, 
                 0.761506, 0.476398,-0.439492, -0.924159,-0.322547, 0.204681, 
                -0.959112,-0.120257, 0.256209, -0.810621, 0.538458, 0.230122, 
                -0.075119, 0.996304, 0.041668,  0.515534, 0.846904,-0.130300, 
                 0.753183, 0.627182,-0.198391,  0.849850, 0.475703,-0.226852, 
                 0.908180, 0.418579, 0.000170,  0.920061, 0.391776, 0.000335, 
                 0.939254, 0.343222, 0.000478,  0.963807, 0.266599, 0.000552, 
                 0.988261, 0.152772, 0.000449,  0.998933,-0.046187,-0.000262, 
                 0.876892, 0.419073, 0.235451,  0.888349, 0.392247, 0.238702, 
                 0.906891, 0.343648, 0.243832,  0.930644, 0.266938, 0.250291, 
                 0.954351, 0.152959, 0.256551,  0.964867,-0.046304, 0.258627, 
                 0.785456, 0.419734, 0.454843,  0.795707, 0.392883, 0.460971, 
                 0.812334, 0.344228, 0.470766,  0.833667, 0.267414, 0.483207, 
                 0.855012, 0.153250, 0.495448,  0.864663,-0.046372, 0.500207, 
                 0.641599, 0.419990, 0.641841,  0.649935, 0.393130, 0.650410, 
                 0.663494, 0.344457, 0.664173,  0.680925, 0.267607, 0.681710, 
                 0.698421, 0.153377, 0.699059,  0.706532,-0.046369, 0.706160, 
                 0.454545, 0.419737, 0.785627,  0.460384, 0.392890, 0.796043, 
                 0.469929, 0.344241, 0.812813,  0.482239, 0.267436, 0.834220, 
                 0.494660, 0.153286, 0.855462,  0.500666,-0.046300, 0.864402, 
                 0.235117, 0.419078, 0.876980,  0.238044, 0.392258, 0.888521, 
                 0.242894, 0.343667, 0.907136,  0.249206, 0.266970, 0.930926, 
                 0.255668, 0.153012, 0.954579,  0.259142,-0.046198, 0.964734, 
                -0.000170, 0.418579, 0.908181, -0.000335, 0.391776, 0.920061, 
                -0.000478, 0.343222, 0.939254, -0.000552, 0.266599, 0.963807, 
                -0.000449, 0.152772, 0.988261,  0.000262,-0.046187, 0.998933, 
                -0.235451, 0.419073, 0.876892, -0.238702, 0.392247, 0.888349, 
                -0.243832, 0.343648, 0.906891, -0.250291, 0.266938, 0.930644, 
                -0.256551, 0.152959, 0.954351, -0.258627,-0.046304, 0.964867, 
                -0.454843, 0.419734, 0.785456, -0.460971, 0.392883, 0.795707, 
                -0.470766, 0.344228, 0.812334, -0.483207, 0.267414, 0.833667, 
                -0.495448, 0.153250, 0.855012, -0.500207,-0.046372, 0.864663, 
                -0.641841, 0.419990, 0.641599, -0.650410, 0.393130, 0.649935, 
                -0.664173, 0.344457, 0.663494, -0.681710, 0.267607, 0.680925, 
                -0.699059, 0.153377, 0.698421, -0.706160,-0.046369, 0.706532, 
                -0.785627, 0.419737, 0.454545, -0.796043, 0.392890, 0.460384, 
                -0.812813, 0.344241, 0.469929, -0.834220, 0.267436, 0.482239, 
                -0.855462, 0.153286, 0.494660, -0.864402,-0.046300, 0.500666, 
                -0.876980, 0.419078, 0.235117, -0.888521, 0.392258, 0.238044, 
                -0.907136, 0.343667, 0.242894, -0.930926, 0.266970, 0.249206, 
                -0.954579, 0.153012, 0.255668, -0.964734,-0.046198, 0.259142, 
                -0.908181, 0.418579,-0.000170, -0.920061, 0.391776,-0.000335, 
                -0.939254, 0.343222,-0.000478, -0.963807, 0.266599,-0.000552, 
                -0.988261, 0.152772,-0.000449, -0.998933,-0.046187, 0.000262, 
                -0.876892, 0.419073,-0.235451, -0.888349, 0.392247,-0.238702, 
                -0.906891, 0.343648,-0.243832, -0.930644, 0.266938,-0.250291, 
                -0.954351, 0.152959,-0.256551, -0.964867,-0.046304,-0.258627, 
                -0.785456, 0.419734,-0.454843, -0.795707, 0.392883,-0.460971, 
                -0.812334, 0.344228,-0.470766, -0.833667, 0.267414,-0.483207, 
                -0.855012, 0.153250,-0.495448, -0.864663,-0.046372,-0.500207, 
                -0.641599, 0.419990,-0.641841, -0.649935, 0.393130,-0.650410, 
                -0.663494, 0.344457,-0.664173, -0.680925, 0.267607,-0.681710, 
                -0.698421, 0.153377,-0.699059, -0.706532,-0.046369,-0.706160, 
                -0.454545, 0.419737,-0.785627, -0.460384, 0.392890,-0.796043, 
                -0.469929, 0.344241,-0.812813, -0.482239, 0.267436,-0.834220, 
                -0.494660, 0.153286,-0.855462, -0.500666,-0.046300,-0.864402, 
                -0.235117, 0.419078,-0.876980, -0.238044, 0.392258,-0.888521, 
                -0.242894, 0.343667,-0.907136, -0.249206, 0.266970,-0.930926, 
                -0.255668, 0.153012,-0.954579, -0.259142,-0.046198,-0.964734, 
                 0.000170, 0.418579,-0.908181,  0.000335, 0.391776,-0.920061, 
                 0.000478, 0.343222,-0.939254,  0.000552, 0.266599,-0.963807, 
                 0.000449, 0.152772,-0.988261, -0.000262,-0.046187,-0.998933, 
                 0.235451, 0.419073,-0.876892,  0.238702, 0.392247,-0.888349, 
                 0.243832, 0.343648,-0.906891,  0.250291, 0.266938,-0.930644, 
                 0.256551, 0.152959,-0.954351,  0.258627,-0.046304,-0.964867, 
                 0.454843, 0.419734,-0.785456,  0.460971, 0.392883,-0.795707, 
                 0.470766, 0.344228,-0.812334,  0.483207, 0.267414,-0.833667, 
                 0.495448, 0.153250,-0.855012,  0.500207,-0.046372,-0.864663, 
                 0.641841, 0.419990,-0.641599,  0.650410, 0.393130,-0.649935, 
                 0.664173, 0.344457,-0.663494,  0.681710, 0.267607,-0.680925, 
                 0.699059, 0.153377,-0.698421,  0.706160,-0.046369,-0.706532, 
                 0.785627, 0.419737,-0.454545,  0.796043, 0.392890,-0.460384, 
                 0.812813, 0.344241,-0.469929,  0.834220, 0.267436,-0.482239, 
                 0.855462, 0.153286,-0.494660,  0.864402,-0.046300,-0.500666, 
                 0.876980, 0.419078,-0.235117,  0.888521, 0.392258,-0.238044, 
                 0.907136, 0.343667,-0.242894,  0.930926, 0.266970,-0.249206, 
                 0.954579, 0.153012,-0.255668,  0.964734,-0.046198,-0.259142, 
                 0.943833,-0.330414,-0.002283,  0.821403,-0.570341,-0.002745, 
                 0.709541,-0.704661,-0.001958,  0.652305,-0.757957,-0.000466, 
                 0.728669,-0.684856, 0.003576,  0.889124,-0.457656, 0.003164, 
                 0.912037,-0.330868, 0.242313,  0.793697,-0.570897, 0.210051, 
                 0.685340,-0.705168, 0.181787,  0.629635,-0.758420, 0.168401, 
                 0.702387,-0.685364, 0.192168,  0.857690,-0.458122, 0.233435, 
                 0.817716,-0.331385, 0.470664,  0.711528,-0.571608, 0.408646, 
                 0.614071,-0.705839, 0.353140,  0.563713,-0.759034, 0.325721, 
                 0.627891,-0.686037, 0.367569,  0.767411,-0.458787, 0.447879, 
                 0.668728,-0.331557, 0.665486,  0.582010,-0.571874, 0.578122, 
                 0.502096,-0.706097, 0.499327,  0.460496,-0.759271, 0.459838, 
                 0.511760,-0.686297, 0.516816,  0.625950,-0.459060, 0.630437, 
                 0.474660,-0.331321, 0.815429,  0.413434,-0.571590, 0.708771, 
                 0.356547,-0.705839, 0.612100,  0.326530,-0.759035, 0.563244, 
                 0.361346,-0.686040, 0.631489,  0.442349,-0.458832, 0.770585, 
                 0.246794,-0.330773, 0.910869,  0.215429,-0.570870, 0.792274, 
                 0.185619,-0.705168, 0.684313,  0.169311,-0.758421, 0.629390, 
                 0.185170,-0.685368, 0.704260,  0.227231,-0.458188, 0.859319, 
                 0.002283,-0.330414, 0.943833,  0.002745,-0.570341, 0.821403, 
                 0.001958,-0.704661, 0.709541,  0.000466,-0.757957, 0.652305, 
                -0.003576,-0.684856, 0.728669, -0.003164,-0.457656, 0.889124, 
                -0.242313,-0.330868, 0.912037, -0.210051,-0.570897, 0.793697, 
                -0.181787,-0.705168, 0.685340, -0.168401,-0.758420, 0.629635, 
                -0.192168,-0.685364, 0.702387, -0.233435,-0.458122, 0.857690, 
                -0.470664,-0.331385, 0.817716, -0.408646,-0.571608, 0.711528, 
                -0.353140,-0.705839, 0.614071, -0.325721,-0.759034, 0.563713, 
                -0.367569,-0.686037, 0.627891, -0.447879,-0.458787, 0.767411, 
                -0.665486,-0.331557, 0.668728, -0.578122,-0.571874, 0.582010, 
                -0.499327,-0.706097, 0.502096, -0.459838,-0.759271, 0.460496, 
                -0.516816,-0.686297, 0.511760, -0.630437,-0.459060, 0.625950, 
                -0.815429,-0.331321, 0.474660, -0.708771,-0.571590, 0.413434, 
                -0.612100,-0.705839, 0.356547, -0.563244,-0.759035, 0.326530, 
                -0.631489,-0.686040, 0.361346, -0.770585,-0.458832, 0.442349, 
                -0.910869,-0.330773, 0.246794, -0.792274,-0.570870, 0.215429, 
                -0.684313,-0.705168, 0.185619, -0.629390,-0.758421, 0.169311, 
                -0.704260,-0.685368, 0.185170, -0.859319,-0.458188, 0.227231, 
                -0.943833,-0.330414, 0.002283, -0.821403,-0.570341, 0.002745, 
                -0.709541,-0.704661, 0.001958, -0.652305,-0.757957, 0.000466, 
                -0.728669,-0.684856,-0.003576, -0.889124,-0.457656,-0.003164, 
                -0.912037,-0.330868,-0.242313, -0.793697,-0.570897,-0.210051, 
                -0.685340,-0.705168,-0.181787, -0.629635,-0.758420,-0.168401, 
                -0.702387,-0.685364,-0.192168, -0.857690,-0.458122,-0.233435, 
                -0.817716,-0.331385,-0.470664, -0.711528,-0.571608,-0.408646, 
                -0.614071,-0.705839,-0.353140, -0.563713,-0.759034,-0.325721, 
                -0.627891,-0.686037,-0.367569, -0.767411,-0.458787,-0.447879, 
                -0.668728,-0.331557,-0.665486, -0.582010,-0.571874,-0.578122, 
                -0.502096,-0.706097,-0.499327, -0.460496,-0.759271,-0.459838, 
                -0.511760,-0.686297,-0.516816, -0.625950,-0.459060,-0.630437, 
                -0.474660,-0.331321,-0.815429, -0.413434,-0.571590,-0.708771, 
                -0.356547,-0.705839,-0.612100, -0.326530,-0.759035,-0.563244, 
                -0.361346,-0.686040,-0.631489, -0.442349,-0.458832,-0.770585, 
                -0.246794,-0.330773,-0.910869, -0.215429,-0.570870,-0.792274, 
                -0.185619,-0.705168,-0.684313, -0.169311,-0.758421,-0.629390, 
                -0.185170,-0.685368,-0.704260, -0.227231,-0.458188,-0.859319, 
                -0.002283,-0.330414,-0.943833, -0.002745,-0.570341,-0.821403, 
                -0.001958,-0.704661,-0.709541, -0.000466,-0.757957,-0.652305, 
                 0.003576,-0.684856,-0.728669,  0.003164,-0.457656,-0.889124, 
                 0.242313,-0.330868,-0.912037,  0.210051,-0.570897,-0.793697, 
                 0.181787,-0.705168,-0.685340,  0.168401,-0.758420,-0.629635, 
                 0.192168,-0.685364,-0.702387,  0.233435,-0.458122,-0.857690, 
                 0.470664,-0.331385,-0.817716,  0.408646,-0.571608,-0.711528, 
                 0.353140,-0.705839,-0.614071,  0.325721,-0.759034,-0.563713, 
                 0.367569,-0.686037,-0.627891,  0.447879,-0.458787,-0.767411, 
                 0.665486,-0.331557,-0.668728,  0.578122,-0.571874,-0.582010, 
                 0.499327,-0.706097,-0.502096,  0.459838,-0.759271,-0.460496, 
                 0.516816,-0.686297,-0.511760,  0.630437,-0.459060,-0.625950, 
                 0.815429,-0.331321,-0.474660,  0.708771,-0.571590,-0.413434, 
                 0.612100,-0.705839,-0.356547,  0.563244,-0.759035,-0.326530, 
                 0.631489,-0.686040,-0.361346,  0.770585,-0.458832,-0.442349, 
                 0.910869,-0.330773,-0.246794,  0.792274,-0.570870,-0.215429, 
                 0.684313,-0.705168,-0.185619,  0.629390,-0.758421,-0.169311, 
                 0.704260,-0.685368,-0.185170,  0.859319,-0.458188,-0.227231, 
                 0.777345,-0.628990,-0.010332,  0.361793,-0.932236,-0.006477, 
                 0.152402,-0.988315,-0.002559,  0.066422,-0.997791,-0.001190, 
                 0.027401,-0.999624,-0.001027,  0.000000,-1.000000, 0.000000, 
                 0.753154,-0.629440, 0.191218,  0.350766,-0.932386, 0.087291, 
                 0.147688,-0.988344, 0.036926,  0.064386,-0.997796, 0.016021, 
                 0.026706,-0.999625, 0.006087,  0.677297,-0.629962, 0.380023, 
                 0.315543,-0.932612, 0.175124,  0.132774,-0.988389, 0.073881, 
                 0.057900,-0.997805, 0.032133,  0.024157,-0.999626, 0.012794, 
                 0.556310,-0.630147, 0.541695,  0.259523,-0.932707, 0.250409, 
                 0.109137,-0.988408, 0.105540,  0.047613,-0.997809, 0.045941, 
                 0.020018,-0.999627, 0.018575,  0.398014,-0.629932, 0.666911, 
                 0.186318,-0.932635, 0.308995,  0.078296,-0.988394, 0.130182, 
                 0.034185,-0.997806, 0.056696,  0.014564,-0.999627, 0.023117, 
                 0.211443,-0.629395, 0.747766,  0.099921,-0.932420, 0.347287, 
                 0.041912,-0.988352, 0.146303,  0.018338,-0.997798, 0.063741, 
                 0.008087,-0.999625, 0.026150,  0.010332,-0.628990, 0.777345, 
                 0.006477,-0.932236, 0.361793,  0.002559,-0.988315, 0.152402, 
                 0.001190,-0.997791, 0.066422,  0.001027,-0.999624, 0.027401, 
                -0.191218,-0.629440, 0.753154, -0.087291,-0.932386, 0.350766, 
                -0.036926,-0.988344, 0.147688, -0.016021,-0.997796, 0.064386, 
                -0.006087,-0.999625, 0.026706, -0.380023,-0.629962, 0.677297, 
                -0.175124,-0.932612, 0.315543, -0.073881,-0.988389, 0.132774, 
                -0.032133,-0.997805, 0.057900, -0.012794,-0.999626, 0.024157, 
                -0.541695,-0.630147, 0.556310, -0.250409,-0.932707, 0.259523, 
                -0.105540,-0.988408, 0.109137, -0.045941,-0.997809, 0.047613, 
                -0.018575,-0.999627, 0.020018, -0.666911,-0.629932, 0.398014, 
                -0.308995,-0.932635, 0.186318, -0.130182,-0.988394, 0.078296, 
                -0.056696,-0.997806, 0.034185, -0.023117,-0.999627, 0.014564, 
                -0.747766,-0.629395, 0.211443, -0.347287,-0.932420, 0.099921, 
                -0.146303,-0.988352, 0.041912, -0.063741,-0.997798, 0.018338, 
                -0.026150,-0.999625, 0.008087, -0.777345,-0.628990, 0.010332, 
                -0.361793,-0.932236, 0.006477, -0.152402,-0.988315, 0.002559, 
                -0.066422,-0.997791, 0.001190, -0.027401,-0.999624, 0.001027, 
                -0.753154,-0.629440,-0.191218, -0.350766,-0.932386,-0.087291, 
                -0.147688,-0.988344,-0.036926, -0.064386,-0.997796,-0.016021, 
                -0.026706,-0.999625,-0.006087, -0.677297,-0.629962,-0.380023, 
                -0.315543,-0.932612,-0.175124, -0.132774,-0.988389,-0.073881, 
                -0.057900,-0.997805,-0.032133, -0.024157,-0.999626,-0.012794, 
                -0.556310,-0.630147,-0.541695, -0.259523,-0.932707,-0.250409, 
                -0.109137,-0.988408,-0.105540, -0.047613,-0.997809,-0.045941, 
                -0.020018,-0.999627,-0.018575, -0.398014,-0.629932,-0.666911, 
                -0.186318,-0.932635,-0.308995, -0.078296,-0.988394,-0.130182, 
                -0.034185,-0.997806,-0.056696, -0.014564,-0.999627,-0.023117, 
                -0.211443,-0.629395,-0.747766, -0.099921,-0.932420,-0.347287, 
                -0.041912,-0.988352,-0.146303, -0.018338,-0.997798,-0.063741, 
                -0.008087,-0.999625,-0.026150, -0.010332,-0.628990,-0.777345, 
                -0.006477,-0.932236,-0.361793, -0.002559,-0.988315,-0.152402, 
                -0.001190,-0.997791,-0.066422, -0.001027,-0.999624,-0.027401, 
                 0.191218,-0.629440,-0.753154,  0.087291,-0.932386,-0.350766, 
                 0.036926,-0.988344,-0.147688,  0.016021,-0.997796,-0.064386, 
                 0.006087,-0.999625,-0.026706,  0.380023,-0.629962,-0.677297, 
                 0.175124,-0.932612,-0.315543,  0.073881,-0.988389,-0.132774, 
                 0.032133,-0.997805,-0.057900,  0.012794,-0.999626,-0.024157, 
                 0.541695,-0.630147,-0.556310,  0.250409,-0.932707,-0.259523, 
                 0.105540,-0.988408,-0.109137,  0.045941,-0.997809,-0.047613, 
                 0.018575,-0.999627,-0.020018,  0.666911,-0.629932,-0.398014, 
                 0.308995,-0.932635,-0.186318,  0.130182,-0.988394,-0.078296, 
                 0.056696,-0.997806,-0.034185,  0.023117,-0.999627,-0.014564, 
                 0.747766,-0.629395,-0.211443,  0.347287,-0.932420,-0.099921, 
                 0.146303,-0.988352,-0.041912,  0.063741,-0.997798,-0.018338, 
                 0.026150,-0.999625,-0.008087,  0.003252,-0.999017, 0.044215, 
                 0.015240,-0.999884,-0.000426,  0.059928,-0.998202,-0.000876, 
                 0.167134,-0.985934,-0.001083,  0.403838,-0.914830,-0.000203, 
                 0.792445,-0.609943, 0.000242,  0.995161,-0.098254,-0.001013, 
                 0.003195,-0.927908, 0.372795,  0.015041,-0.949764, 0.312606, 
                 0.059227,-0.948266, 0.311904,  0.164453,-0.933549, 0.318499, 
                 0.388162,-0.854219, 0.345890,  0.729394,-0.561905, 0.390189, 
                 0.912351,-0.095332, 0.398156,  0.002232,-0.597680, 0.801731, 
                 0.010830,-0.681497, 0.731741,  0.043613,-0.679614, 0.732272, 
                 0.120047,-0.660320, 0.741327,  0.267930,-0.580441, 0.768962, 
                 0.467285,-0.367107, 0.804287,  0.584006,-0.067606, 0.808929, 
                -0.000653, 0.152635, 0.988282, -0.002559, 0.000905, 0.999996, 
                -0.007405, 0.000384, 0.999972, -0.016090,-0.004746, 0.999859, 
                -0.025703,-0.019620, 0.999477, -0.020936,-0.035053, 0.999166, 
                -0.002824,-0.023899, 0.999710, -0.003296, 0.756255, 0.654269, 
                -0.015405, 0.681251, 0.731887, -0.059217, 0.676283, 0.734258, 
                -0.158438, 0.643792, 0.748619, -0.334170, 0.526967, 0.781432, 
                -0.518177, 0.278028, 0.808822, -0.588929, 0.016391, 0.808019, 
                -0.004352, 0.967350, 0.253408, -0.020677, 0.949300, 0.313691, 
                -0.081844, 0.945117, 0.316317, -0.226175, 0.916097, 0.331076, 
                -0.500500, 0.784289, 0.366594, -0.804374, 0.439635, 0.399630, 
                -0.916460, 0.037237, 0.398390, -0.004517, 0.999011,-0.044228, 
                -0.021584, 0.999767, 0.000265, -0.086245, 0.996274, 0.000157, 
                -0.240673, 0.970606,-0.000608, -0.540280, 0.841484,-0.001597, 
                -0.877811, 0.479008, 0.000390, -0.999074, 0.043021, 0.000686, 
                -0.004094, 0.927919,-0.372759, -0.019687, 0.949518,-0.313093, 
                -0.079023, 0.945545,-0.315752, -0.219600, 0.917458,-0.331734, 
                -0.488715, 0.790534,-0.369071, -0.797673, 0.452036,-0.399226, 
                -0.916555, 0.045675,-0.397293, -0.002516, 0.597699,-0.801716, 
                -0.012433, 0.681272,-0.731925, -0.050950, 0.677183,-0.734048, 
                -0.140298, 0.648898,-0.747829, -0.303501, 0.546934,-0.780224, 
                -0.495541, 0.315794,-0.809143, -0.586888, 0.043544,-0.808497, 
                 0.000557,-0.152599,-0.988288,  0.002074,-0.000969,-0.999997, 
                 0.005499,-0.001410,-0.999984,  0.011569, 0.000546,-0.999933, 
                 0.019331, 0.010342,-0.999760,  0.017294, 0.025347,-0.999529, 
                 0.002733, 0.020710,-0.999782,  0.002668,-0.756195,-0.654340, 
                 0.012416,-0.681586,-0.731633,  0.047946,-0.679845,-0.731787, 
                 0.130533,-0.659594,-0.740200,  0.293034,-0.569168,-0.768231, 
                 0.500213,-0.318883,-0.805047,  0.587808,-0.026599,-0.808563, 
                 0.003191,-0.967332,-0.253494,  0.014981,-0.949482,-0.313464, 
                 0.058954,-0.947784,-0.313417,  0.164056,-0.933187,-0.319761, 
                 0.391212,-0.853217,-0.344925,  0.743675,-0.542841,-0.390219, 
                 0.913602,-0.073956,-0.399828,  0.972925, 0.231121,-0.000918, 
                 0.912330, 0.409438,-0.003849,  0.828029, 0.560649,-0.006408, 
                 0.716807, 0.697239,-0.006712,  0.575989, 0.817451,-0.003302, 
                 0.495133, 0.867633,-0.045350,  0.893985, 0.213142, 0.394158, 
                 0.840605, 0.383895, 0.382108,  0.768860, 0.531454, 0.355543, 
                 0.672509, 0.665677, 0.323426,  0.545610, 0.779633, 0.307380, 
                 0.479303, 0.843050, 0.244000,  0.576388, 0.133958, 0.806122, 
                 0.544470, 0.253746, 0.799478,  0.508754, 0.364144, 0.780108, 
                 0.461180, 0.471780, 0.751490,  0.387281, 0.561166, 0.731509, 
                 0.371347, 0.666129, 0.646818,  0.002410,-0.014515, 0.999892, 
                 0.001301,-0.016411, 0.999865,  0.000720,-0.020201, 0.999796, 
                 0.003256,-0.021359, 0.999767,  0.008876,-0.013337, 0.999872, 
                 0.072759, 0.131709, 0.988615, -0.569088,-0.161451, 0.806271, 
                -0.524317,-0.294841, 0.798850, -0.472635,-0.410610, 0.779754, 
                -0.415783,-0.508606, 0.753953, -0.349674,-0.579676, 0.736006, 
                -0.279208,-0.530698, 0.800252, -0.885693,-0.241406, 0.396574, 
                -0.803204,-0.449996, 0.390343, -0.697513,-0.613444, 0.370354, 
                -0.588462,-0.732277, 0.342757, -0.485206,-0.813008, 0.321860, 
                -0.425879,-0.823534, 0.374725, -0.965787,-0.259335, 0.000592, 
                -0.872611,-0.488406, 0.003010, -0.748651,-0.662945, 0.005037, 
                -0.622443,-0.782648, 0.005056, -0.509112,-0.860697, 0.002551, 
                -0.455515,-0.889038, 0.046023, -0.888605,-0.232245,-0.395529, 
                -0.809378,-0.443445,-0.385051, -0.704052,-0.611598,-0.360913, 
                -0.592713,-0.733528,-0.332607, -0.486334,-0.814293,-0.316868, 
                -0.441890,-0.860789,-0.252538, -0.574477,-0.139332,-0.806575, 
                -0.532235,-0.275661,-0.800460, -0.480844,-0.396171,-0.782201, 
                -0.423172,-0.499323,-0.756044, -0.355443,-0.574187,-0.737543, 
                -0.348424,-0.670745,-0.654753, -0.001891, 0.012937,-0.999915, 
                 0.001397, 0.011921,-0.999928,  0.005089, 0.014178,-0.999887, 
                 0.004896, 0.016722,-0.999848, -0.002003, 0.012285,-0.999922, 
                -0.068183,-0.130578,-0.989091,  0.573387, 0.149188,-0.805587, 
                 0.541227, 0.266714,-0.797456,  0.503525, 0.377270,-0.777258, 
                 0.451452, 0.484144,-0.749530,  0.372386, 0.571022,-0.731616, 
                 0.289707, 0.529053,-0.797604,  0.892654, 0.216131,-0.395546, 
                 0.837234, 0.384836,-0.388510,  0.763231, 0.531640,-0.367202, 
                 0.665469, 0.666102,-0.336837,  0.537995, 0.781974,-0.314766, 
                 0.455324, 0.810920,-0.367545, -0.145927, 0.987044, 0.066705, 
                -0.350253, 0.936641,-0.005157, -0.710995, 0.703191,-0.003047, 
                -0.899400, 0.437101, 0.004678, -0.930238, 0.366579, 0.016656, 
                -0.845840, 0.533040, 0.020564, -0.646372, 0.763018, 0.002776, 
                -0.128906, 0.841567, 0.524546, -0.292019, 0.852082, 0.434375, 
                -0.615355, 0.675119, 0.406882, -0.799678, 0.453205, 0.393853, 
                -0.814130, 0.384381, 0.435251, -0.711742, 0.496654, 0.496746, 
                -0.538718, 0.683956, 0.491922, -0.054328, 0.445430, 0.893667, 
                -0.120328, 0.535740, 0.835765, -0.285367, 0.495269, 0.820533, 
                -0.427214, 0.405516, 0.808112, -0.455262, 0.354182, 0.816880, 
                -0.386518, 0.375163, 0.842530, -0.289150, 0.468105, 0.835027, 
                 0.075157,-0.092491, 0.992873,  0.130249, 0.040179, 0.990667, 
                 0.205304, 0.124938, 0.970691,  0.176764, 0.184322, 0.966840, 
                 0.082193, 0.182483, 0.979767,  0.009842, 0.124532, 0.992167, 
                -0.004171, 0.105296, 0.994432,  0.213849,-0.587755, 0.780264, 
                 0.361728,-0.447069, 0.818097,  0.601635,-0.258541, 0.755772, 
                 0.672221,-0.099063, 0.733693,  0.583247,-0.084870, 0.807849, 
                 0.409251,-0.235708, 0.881451,  0.284284,-0.385654, 0.877755, 
                 0.302637,-0.880762, 0.364237,  0.496428,-0.756105, 0.426456, 
                 0.790450,-0.487110, 0.371365,  0.895860,-0.277360, 0.347141, 
                 0.865262,-0.295907, 0.404673,  0.690272,-0.542643, 0.478606, 
                 0.467747,-0.753579, 0.461879,  0.321563,-0.944505,-0.067141, 
                 0.531566,-0.847002, 0.005046,  0.833505,-0.552508, 0.002163, 
                 0.944185,-0.329343,-0.006880,  0.932318,-0.361245,-0.016874, 
                 0.768639,-0.639601,-0.010215,  0.513002,-0.858387, 0.000964, 
                 0.278331,-0.809595,-0.516806,  0.491568,-0.763636,-0.418594, 
                 0.788478,-0.493107,-0.367624,  0.891089,-0.275271,-0.360815, 
                 0.856479,-0.282922,-0.431739,  0.692218,-0.527331,-0.492704, 
                 0.473487,-0.749262,-0.463052,  0.166654,-0.429938,-0.887344, 
                 0.339768,-0.458348,-0.821264,  0.590160,-0.276240,-0.758553, 
                 0.668115,-0.103914,-0.736766,  0.590009,-0.076740,-0.803741, 
                 0.433287,-0.219357,-0.874154,  0.299036,-0.368898,-0.880052, 
                 0.027869, 0.102187,-0.994375,  0.088152, 0.031815,-0.995599, 
                 0.174456, 0.096185,-0.979956,  0.188708, 0.161291,-0.968697, 
                 0.127686, 0.175774,-0.976115,  0.054509, 0.130986,-0.989885, 
                 0.015877, 0.116730,-0.993037, -0.081072, 0.607187,-0.790412, 
                -0.164116, 0.522469,-0.836715, -0.319626, 0.463405,-0.826495, 
                -0.422971, 0.383450,-0.821013, -0.424534, 0.353597,-0.833511, 
                -0.351612, 0.388106,-0.851905, -0.270475, 0.475063,-0.837352, 
                -0.133739, 0.917541,-0.374476, -0.316043, 0.839490,-0.442011, 
                -0.631181, 0.656649,-0.412823, -0.807405, 0.443017,-0.389658, 
                -0.821659, 0.386229,-0.419171, -0.707748, 0.517393,-0.481037, 
                -0.526814, 0.693790,-0.491043, -0.461017, 0.887371,-0.005987, 
                -0.290675, 0.956710,-0.014601,  0.085518, 0.995086,-0.049913, 
                 0.887713, 0.456166,-0.062285,  0.822992,-0.567263, 0.029937, 
                 0.659878,-0.743158, 0.110798, -0.391094, 0.831360, 0.394824, 
                -0.253310, 0.936825, 0.241231,  0.015366, 0.995010,-0.098588, 
                 0.520185, 0.549881,-0.653482,  0.628856,-0.382376,-0.677000, 
                 0.578948,-0.646092,-0.497378, -0.223422, 0.660928, 0.716420, 
                -0.156131, 0.874986, 0.458282, -0.036467, 0.998264,-0.046261, 
                 0.156637, 0.682491,-0.713913,  0.263632, 0.005571,-0.964607, 
                 0.312409,-0.324778,-0.892704, -0.001751, 0.339383, 0.940647, 
                -0.021119, 0.759902, 0.649695, -0.044404, 0.998121, 0.042219, 
                -0.032529, 0.802862,-0.595277, -0.008745, 0.371564,-0.928366, 
                 0.042529, 0.077913,-0.996053,  0.280020,-0.238192, 0.929975, 
                 0.227305, 0.491486, 0.840699, -0.003105, 0.987407, 0.158172, 
                -0.143918, 0.895866,-0.420370, -0.200177, 0.683872,-0.701604, 
                -0.187188, 0.500198,-0.845437,  0.453673,-0.746835, 0.486229, 
                 0.692158,-0.080062, 0.717291,  0.185758, 0.942536, 0.277704, 
                -0.211188, 0.955274,-0.207004, -0.312961, 0.881061,-0.354665, 
                -0.336331, 0.811345,-0.478122,  0.482445,-0.875816,-0.013906, 
                 0.913013,-0.405572,-0.043811,  0.506909, 0.853920, 0.117742, 
                -0.234033, 0.972124, 0.014295, -0.348033, 0.937468, 0.005277, 
                -0.384064, 0.921073,-0.064185,  0.457762,-0.717668,-0.524792, 
                 0.683347,-0.063014,-0.727369,  0.357361, 0.898186,-0.256038, 
                -0.207010, 0.947863, 0.242287, -0.314387, 0.872357, 0.374372, 
                -0.361040, 0.872819, 0.328385,  0.280225,-0.218552,-0.934724, 
                 0.261124, 0.434074,-0.862203,  0.060553, 0.978577,-0.196775, 
                -0.131809, 0.881094, 0.454203, -0.195016, 0.658858, 0.726550, 
                -0.247824, 0.630359, 0.735684,  0.008860, 0.321862,-0.946745, 
                 0.001382, 0.733189,-0.680023, -0.012720, 0.997949,-0.062734, 
                -0.011656, 0.785221, 0.619106,  0.000967, 0.344022, 0.938961, 
                -0.037360, 0.214324, 0.976048, -0.213360, 0.648838,-0.730401, 
                -0.140052, 0.865891,-0.480227, -0.000809, 0.999500, 0.031611, 
                 0.194529, 0.659081, 0.726478,  0.266832,-0.005234, 0.963729, 
                 0.219380,-0.217247, 0.951145, -0.384886, 0.827121,-0.409553, 
                -0.240915, 0.932642,-0.268588,  0.065830, 0.996786, 0.045658, 
                 0.597011, 0.507703, 0.621141,  0.613004,-0.369418, 0.698395, 
                 0.486873,-0.566787, 0.664610,  0.000000, 1.000000, 0.000000, 
                 0.395791, 0.918207, 0.015676,  0.964544, 0.263762, 0.009177, 
                 0.839041,-0.544056,-0.003654,  0.788969,-0.614430, 0.001943, 
                 0.991025,-0.133647, 0.002953,  0.732531, 0.680606,-0.013206, 
                 0.377669, 0.918491, 0.117221,  0.929557, 0.263662, 0.257694, 
                 0.811158,-0.544801, 0.212638,  0.761156,-0.615195, 0.205370, 
                 0.956515,-0.133833, 0.259168,  0.710689, 0.680955, 0.176694, 
                 0.333696, 0.918791, 0.210878,  0.830713, 0.263784, 0.490239, 
                 0.727549,-0.545809, 0.415650,  0.681011,-0.616288, 0.395491, 
                 0.856413,-0.134443, 0.498480,  0.640176, 0.681271, 0.355027, 
                 0.267591, 0.918878, 0.289928,  0.675416, 0.263955, 0.688579, 
                 0.594970,-0.546203, 0.589638,  0.555330,-0.616730, 0.557901, 
                 0.698694,-0.134804, 0.702606,  0.526898, 0.681345, 0.508082, 
                 0.183499, 0.918711, 0.349712,  0.474031, 0.264098, 0.839969, 
                 0.422194,-0.545768, 0.723802,  0.392296,-0.616276, 0.682867, 
                 0.493598,-0.134679, 0.859199,  0.378184, 0.681197, 0.626856, 
                 0.086498, 0.918378, 0.386136,  0.239605, 0.264096, 0.934261, 
                 0.219887,-0.544743, 0.809262,  0.201667,-0.615183, 0.762155, 
                 0.253529,-0.134173, 0.957977,  0.202631, 0.680866, 0.703820, 
                -0.015676, 0.918207, 0.395791, -0.009177, 0.263762, 0.964544, 
                 0.003654,-0.544057, 0.839041, -0.001943,-0.614430, 0.788969, 
                -0.002953,-0.133647, 0.991025,  0.013206, 0.680606, 0.732531, 
                -0.117221, 0.918491, 0.377669, -0.257694, 0.263662, 0.929557, 
                -0.212638,-0.544801, 0.811158, -0.205370,-0.615195, 0.761156, 
                -0.259168,-0.133833, 0.956515, -0.176694, 0.680955, 0.710689, 
                -0.210878, 0.918791, 0.333696, -0.490239, 0.263784, 0.830713, 
                -0.415650,-0.545809, 0.727549, -0.395491,-0.616288, 0.681011, 
                -0.498480,-0.134443, 0.856413, -0.355027, 0.681271, 0.640176, 
                -0.289928, 0.918878, 0.267591, -0.688579, 0.263955, 0.675416, 
                -0.589638,-0.546203, 0.594970, -0.557901,-0.616730, 0.555330, 
                -0.702606,-0.134804, 0.698694, -0.508082, 0.681345, 0.526898, 
                -0.349712, 0.918711, 0.183499, -0.839969, 0.264098, 0.474031, 
                -0.723802,-0.545768, 0.422194, -0.682867,-0.616276, 0.392296, 
                -0.859199,-0.134679, 0.493598, -0.626856, 0.681197, 0.378184, 
                -0.386136, 0.918378, 0.086498, -0.934261, 0.264096, 0.239605, 
                -0.809262,-0.544743, 0.219887, -0.762155,-0.615183, 0.201667, 
                -0.957977,-0.134173, 0.253529, -0.703820, 0.680866, 0.202631, 
                -0.395791, 0.918207,-0.015676, -0.964544, 0.263762,-0.009177, 
                -0.839041,-0.544057, 0.003654, -0.788969,-0.614430,-0.001943, 
                -0.991025,-0.133647,-0.002953, -0.732531, 0.680606, 0.013206, 
                -0.377669, 0.918491,-0.117221, -0.929557, 0.263662,-0.257694, 
                -0.811158,-0.544801,-0.212638, -0.761156,-0.615195,-0.205370, 
                -0.956515,-0.133833,-0.259168, -0.710689, 0.680955,-0.176694, 
                -0.333696, 0.918791,-0.210878, -0.830713, 0.263784,-0.490239, 
                -0.727549,-0.545809,-0.415650, -0.681011,-0.616288,-0.395491, 
                -0.856413,-0.134443,-0.498480, -0.640176, 0.681271,-0.355027, 
                -0.267591, 0.918878,-0.289928, -0.675416, 0.263955,-0.688579, 
                -0.594970,-0.546203,-0.589638, -0.555330,-0.616730,-0.557901, 
                -0.698694,-0.134804,-0.702606, -0.526898, 0.681345,-0.508082, 
                -0.183499, 0.918711,-0.349712, -0.474031, 0.264098,-0.839969, 
                -0.422194,-0.545768,-0.723802, -0.392296,-0.616276,-0.682867, 
                -0.493598,-0.134679,-0.859199, -0.378184, 0.681197,-0.626856, 
                -0.086498, 0.918378,-0.386136, -0.239605, 0.264096,-0.934261, 
                -0.219887,-0.544743,-0.809262, -0.201667,-0.615183,-0.762155, 
                -0.253529,-0.134173,-0.957977, -0.202631, 0.680866,-0.703820, 
                 0.015676, 0.918207,-0.395791,  0.009177, 0.263762,-0.964544, 
                -0.003654,-0.544057,-0.839041,  0.001943,-0.614430,-0.788969, 
                 0.002953,-0.133647,-0.991025, -0.013206, 0.680606,-0.732531, 
                 0.117221, 0.918491,-0.377669,  0.257694, 0.263662,-0.929557, 
                 0.212638,-0.544801,-0.811158,  0.205370,-0.615195,-0.761156, 
                 0.259168,-0.133833,-0.956515,  0.176694, 0.680955,-0.710689, 
                 0.210878, 0.918791,-0.333696,  0.490239, 0.263784,-0.830713, 
                 0.415650,-0.545809,-0.727549,  0.395491,-0.616288,-0.681011, 
                 0.498480,-0.134443,-0.856413,  0.355027, 0.681271,-0.640176, 
                 0.289928, 0.918878,-0.267591,  0.688579, 0.263955,-0.675416, 
                 0.589638,-0.546203,-0.594970,  0.557901,-0.616730,-0.555330, 
                 0.702606,-0.134804,-0.698694,  0.508082, 0.681345,-0.526898, 
                 0.349712, 0.918711,-0.183499,  0.839969, 0.264098,-0.474031, 
                 0.723802,-0.545768,-0.422194,  0.682867,-0.616276,-0.392296, 
                 0.859199,-0.134679,-0.493598,  0.626856, 0.681197,-0.378184, 
                 0.386136, 0.918378,-0.086498,  0.934261, 0.264096,-0.239605, 
                 0.809262,-0.544743,-0.219887,  0.762155,-0.615183,-0.201667, 
                 0.957977,-0.134173,-0.253529,  0.703820, 0.680866,-0.202631, 
                 0.299763, 0.954005,-0.004004,  0.180158, 0.983637,-0.001176, 
                 0.158462, 0.987365, 0.000232,  0.213709, 0.976895, 0.002171, 
                 0.489301, 0.872063, 0.009504,  0.686607, 0.726410,-0.029990, 
                 0.290238, 0.954117, 0.073644,  0.174086, 0.983681, 0.045452, 
                 0.152777, 0.987401, 0.041212,  0.205547, 0.976963, 0.057393, 
                 0.469598, 0.872357, 0.135911,  0.670656, 0.726754, 0.148493, 
                 0.260698, 0.954280, 0.146242,  0.156021, 0.983742, 0.088932, 
                 0.136587, 0.987448, 0.079312,  0.183282, 0.977046, 0.108577, 
                 0.417739, 0.872696, 0.252776,  0.608331, 0.727460, 0.317389, 
                 0.214008, 0.954348, 0.208377,  0.127716, 0.983767, 0.126063, 
                 0.111442, 0.987466, 0.111767,  0.149005, 0.977076, 0.152056, 
                 0.338347, 0.872812, 0.351738,  0.505565, 0.727811, 0.463351, 
                 0.153158, 0.954293, 0.256647,  0.090962, 0.983745, 0.154830, 
                 0.078913, 0.987448, 0.136822,  0.104831, 0.977040, 0.185479, 
                 0.236319, 0.872663, 0.427333,  0.369272, 0.727651, 0.578067, 
                 0.081449, 0.954136, 0.288080,  0.047744, 0.983685, 0.173450, 
                 0.040760, 0.987400, 0.152903,  0.053164, 0.976955, 0.206721, 
                 0.117360, 0.872307, 0.474665,  0.207008, 0.727038, 0.654648, 
                 0.004004, 0.954005, 0.299763,  0.001176, 0.983637, 0.180158, 
                -0.000232, 0.987365, 0.158462, -0.002171, 0.976895, 0.213709, 
                -0.009504, 0.872063, 0.489301,  0.029990, 0.726410, 0.686607, 
                -0.073644, 0.954117, 0.290238, -0.045452, 0.983681, 0.174086, 
                -0.041212, 0.987401, 0.152777, -0.057393, 0.976963, 0.205547, 
                -0.135911, 0.872357, 0.469598, -0.148493, 0.726754, 0.670656, 
                -0.146242, 0.954280, 0.260698, -0.088932, 0.983742, 0.156021, 
                -0.079312, 0.987448, 0.136587, -0.108577, 0.977046, 0.183282, 
                -0.252776, 0.872696, 0.417739, -0.317389, 0.727460, 0.608331, 
                -0.208377, 0.954348, 0.214008, -0.126063, 0.983767, 0.127716, 
                -0.111767, 0.987466, 0.111442, -0.152056, 0.977076, 0.149005, 
                -0.351738, 0.872812, 0.338347, -0.463351, 0.727811, 0.505565, 
                -0.256647, 0.954293, 0.153158, -0.154830, 0.983745, 0.090962, 
                -0.136822, 0.987448, 0.078913, -0.185479, 0.977040, 0.104831, 
                -0.427333, 0.872663, 0.236319, -0.578067, 0.727651, 0.369272, 
                -0.288080, 0.954136, 0.081449, -0.173450, 0.983685, 0.047744, 
                -0.152903, 0.987400, 0.040760, -0.206721, 0.976955, 0.053164, 
                -0.474665, 0.872307, 0.117360, -0.654648, 0.727038, 0.207008, 
                -0.299763, 0.954005, 0.004004, -0.180158, 0.983637, 0.001176, 
                -0.158462, 0.987365,-0.000232, -0.213709, 0.976895,-0.002171, 
                -0.489301, 0.872063,-0.009504, -0.686607, 0.726410, 0.029990, 
                -0.290238, 0.954117,-0.073644, -0.174086, 0.983681,-0.045452, 
                -0.152777, 0.987401,-0.041212, -0.205547, 0.976963,-0.057393, 
                -0.469598, 0.872357,-0.135911, -0.670656, 0.726754,-0.148493, 
                -0.260698, 0.954280,-0.146242, -0.156021, 0.983742,-0.088932, 
                -0.136587, 0.987448,-0.079312, -0.183282, 0.977046,-0.108577, 
                -0.417739, 0.872696,-0.252776, -0.608331, 0.727460,-0.317389, 
                -0.214008, 0.954348,-0.208377, -0.127716, 0.983767,-0.126063, 
                -0.111442, 0.987466,-0.111767, -0.149005, 0.977076,-0.152056, 
                -0.338347, 0.872812,-0.351738, -0.505565, 0.727811,-0.463351, 
                -0.153158, 0.954293,-0.256647, -0.090962, 0.983745,-0.154830, 
                -0.078913, 0.987448,-0.136822, -0.104831, 0.977040,-0.185479, 
                -0.236319, 0.872663,-0.427333, -0.369272, 0.727651,-0.578067, 
                -0.081449, 0.954136,-0.288080, -0.047744, 0.983685,-0.173450, 
                -0.040760, 0.987400,-0.152903, -0.053164, 0.976955,-0.206721, 
                -0.117360, 0.872307,-0.474665, -0.207008, 0.727038,-0.654648, 
                -0.004004, 0.954005,-0.299763, -0.001176, 0.983637,-0.180158, 
                 0.000232, 0.987365,-0.158462,  0.002171, 0.976895,-0.213709, 
                 0.009504, 0.872063,-0.489301, -0.029990, 0.726410,-0.686607, 
                 0.073644, 0.954117,-0.290238,  0.045452, 0.983681,-0.174086, 
                 0.041212, 0.987401,-0.152777,  0.057393, 0.976963,-0.205547, 
                 0.135911, 0.872357,-0.469598,  0.148493, 0.726754,-0.670656, 
                 0.146242, 0.954280,-0.260698,  0.088932, 0.983742,-0.156021, 
                 0.079312, 0.987448,-0.136587,  0.108577, 0.977046,-0.183282, 
                 0.252776, 0.872696,-0.417739,  0.317389, 0.727460,-0.608331, 
                 0.208377, 0.954348,-0.214008,  0.126063, 0.983767,-0.127716, 
                 0.111767, 0.987466,-0.111442,  0.152056, 0.977076,-0.149005, 
                 0.351738, 0.872812,-0.338347,  0.463351, 0.727811,-0.505565, 
                 0.256647, 0.954293,-0.153158,  0.154830, 0.983745,-0.090962, 
                 0.136822, 0.987448,-0.078913,  0.185479, 0.977040,-0.104831, 
                 0.427333, 0.872663,-0.236319,  0.578067, 0.727651,-0.369272, 
                 0.288080, 0.954136,-0.081449,  0.173450, 0.983685,-0.047744, 
                 0.152903, 0.987400,-0.040760,  0.206721, 0.976955,-0.053164, 
                 0.474665, 0.872307,-0.117360,  0.654648, 0.727038,-0.207008
            };
        #endregion

        /// <summary>
        ///     Identifies the TriangleRange dependency property.
        /// </summary>
        public static readonly DependencyProperty TriangleRangeProperty =
            DependencyProperty.Register("TriangleRange",
                typeof(TeapotTriangleRange),
                typeof(TeapotMesh),
                new PropertyMetadata(new TeapotTriangleRange(), PropertyChanged),
                ValidateTriangleRange);

        /// <summary>
        /// 
        /// </summary>
        public TeapotTriangleRange TriangleRange
        {
            set { SetValue(TriangleRangeProperty, value); }
            get { return (TeapotTriangleRange)GetValue(TriangleRangeProperty); }
        }

        static bool ValidateTriangleRange(object obj)
        {
            TeapotTriangleRange range = obj as TeapotTriangleRange;
            int max = TeapotTriangleRange.All.End;

            return range.Begin <= range.End && 
                   range.Begin >= 0 && range.Begin <= max &&
                   range.End >= 0 && range.End <= max;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="args"></param>
        /// <param name="vertices"></param>
        /// <param name="normals"></param>
        /// <param name="indices"></param>
        /// <param name="textures"></param>
        protected override void Triangulate(DependencyPropertyChangedEventArgs args,
                                            Point3DCollection vertices,
                                            Vector3DCollection normals,
                                            Int32Collection indices,
                                            PointCollection textures)
        {
            // Clear the indices collections.
            indices.Clear();

            // Transfer numbers in indicesTeapot array.
            int beg = TriangleRange.Begin;
            int end = TriangleRange.End;

            for (int i = 3 * beg; i < 3 * (end + 1); i++)
                indices.Add(indicesTeapot[i]);
        }

        /// <summary>
        ///     Creates a new instance of the TeapotMesh class.
        /// </summary>
        /// <returns>
        ///     A new instance of TeapotMesh.
        /// </returns>
        /// <remarks>
        ///     Overriding this method is required when deriving 
        ///     from the Freezable class.
        /// </remarks>
        protected override Freezable CreateInstanceCore()
        {
            return new SphereMesh();
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
Technical Lead Rockwell Automation
Singapore Singapore
He is a Software Engineer at Rockwell Automation Asia Pacific Business Center, working on RSLogix 5000. Prior to joining Rockwell Automation, he had worked for Sybase for 8 years and was the original architect of the PowerBuilder Native Interface and the PowerBuilder .NET Compiler that can compile PowerBuilder applications to .NET Windows Forms or Web Forms applications. The programming languages he has used or is using intensively include C#, C++, C and 8086 assembly.

Wu XueSong's Blog

Comments and Discussions