You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

108 lines
62 KiB

  1. <!DOCTYPE HTML>
  2. <!-- Pannellum 1.1, http://pannellum.sf.net/ -->
  3. <html><head><title>pannellum</title><meta charset=utf-8><style type="text/css">html{height:100%;background-color:#666;background-image:-webkit-linear-gradient(-45deg,#999 24%,#666 26%,#666 49%,#999 51%,#999 74%,#666 76%,#666);background-image:-moz-linear-gradient(-45deg,#999 24%,#666 26%,#666 49%,#999 51%,#999 74%,#666 76%,#666);background-image:-o-linear-gradient(-45deg,#999 24%,#666 26%,#666 49%,#999 51%,#999 74%,#666 76%,#666);background-image:linear-gradient(-45deg,#999 24%,#666 26%,#666 49%,#999 51%,#999 74%,#666 76%,#666);background-size:20px 20px}body{margin:0;padding:0;overflow:hidden;cursor:default;width:100%;font-family:serif}.grab{cursor:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAABfklEQVQ4y+XUuy9DURwH8O89rea299YtJkIYTBKPpWIzEGFgMBBJiUekm79BREIqBolFB5F4DEYxiH+ARAyYaEgaCQmD1+292ur9Wgy37T2DUXzPcpLz+yTnrRC/j8BfRUr1r1Eg7nsMzEoGWdKgaIfBNbSGPg/ozyOEUX3XN1ZS4+oKVBGYaTd7PsXVwDvZ+CYS9eYyK3JQZWhYKegpNbnCFOHMk+x88X1d0GZFDrobudZUFd8TvXXZyQia0ZBRAbwq/XYbTqGnaEo2QggdGyGfeCYw5K8FkAlO6MC2be9LN0JPrpMcNacs/uTMsXhL8RU6EHMwvNcUG3wl07xx6MqIXWOtOt12eNMb1WpWUT1Jcit/R3KHNceeiDDS5/RO9B0xCVIXxjNeZMsxLqFIECLBj7sy8kTDQofkcAlCXZy2ikmWUVNLSK8RQaApbBeKUMyuPHJPzQMRRvrERZbz4WtopTX+sreydN/X9YACHBTg7LZ8xJkpe2n/62OR5xuNS51tq2OATAAAAABJRU5ErkJggg==') 12 8,default}.grabbing{cursor:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAABGUlEQVQ4y2P8z0A6YGIY1TRYNDHaM2YzquKQ/I8GGTh5pgk85Tgs+jnmC9s3/nXCe1mTMNSgcBgZ/BgWGH298N/s65z////L/cj8vfK/0DcGZzyauPuUP+l+KfzxHwqO///+//9/qw8Mnjg1MfCy/nr7//t/VHDlP/MvBhvcmvg5fvz5jw78fsh+5v7OnoXTefwPT2FoevH/9/9N/wXOIKtDCfLfi6d8Rw9dcQYWhvU/fu7DGeQMAlxfHmDYdeY/10cGQZzO+8/A1ZrxDVXLj//aX5iT8QT5fwYGRaGvqJpCv/Gvwxu5/xn+M/A9PY+kpfEX/2UGdnQ1LOge5+y6b27wguEfw3+G///+r9H4mPb/J0a6HC1YIAAAFlVTMQM6+Y4AAAAASUVORK5CYII=') 12 8,default}.sprite{background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTM1IiB3aWR0aD0iODEiPjxnIHN0eWxlPSJzdHJva2Utd2lkdGg6MDtmaWxsOiNmZmYiPjxyZWN0IG9wYWNpdHk9IjAuNyIgcnk9IjkiIGhlaWdodD0iMjUiIHdpZHRoPSIyNSIgeT0iNTUiIHg9IjI4Ii8+PHJlY3Qgb3BhY2l0eT0iMC43IiByeT0iOSIgaGVpZ2h0PSIyNSIgd2lkdGg9IjI1IiB5PSI1NSIgeD0iMSIvPjxyZWN0IG9wYWNpdHk9IjAuNyIgcnk9IjkiIGhlaWdodD0iMjUiIHdpZHRoPSIyNSIgeT0iMTA5IiB4PSIyOCIvPjxyZWN0IG9wYWNpdHk9IjAuNyIgcnk9IjkiIGhlaWdodD0iMjUiIHdpZHRoPSIyNSIgeT0iMTA5IiB4PSIxIi8+PGcgc3R5bGU9ImZpbGw6IzAwMCI+PHJlY3Qgb3BhY2l0eT0iMC43IiByeT0iOSIgaGVpZ2h0PSIyNSIgd2lkdGg9IjI1IiB5PSIyOCIgeD0iMjgiLz48cmVjdCBvcGFjaXR5PSIwLjciIHJ5PSI5IiBoZWlnaHQ9IjI1IiB3aWR0aD0iMjUiIHk9IjI4IiB4PSIxIi8+PHJlY3Qgb3BhY2l0eT0iMC43IiByeT0iOSIgaGVpZ2h0PSIyNSIgd2lkdGg9IjI1IiB5PSI4MiIgeD0iMjgiLz48cmVjdCBvcGFjaXR5PSIwLjciIHJ5PSI5IiBoZWlnaHQ9IjI1IiB3aWR0aD0iMjUiIHk9IjgyIiB4PSIxIi8+PHJlY3Qgb3BhY2l0eT0iMC43IiByeT0iOSIgaGVpZ2h0PSIyNSIgd2lkdGg9Ijc5IiB5PSIxIiB4PSIxIi8+PHBhdGggZD0ibTMzLjE5NSw2NS43NzIsMTQuNjEsMCwwLDMuNDU1OS0xNC42MSwweiIvPjxwYXRoIGQ9Im02LjE5NDksNjUuNzcyLDE0LjYxLDAsMCwzLjQ1NTktMTQuNjEsMHoiLz48cGF0aCBkPSJtMTUuMjI4LDYwLjE5NSwwLDE0LjYxLTMuNDU1OSwwLDAtMTQuNjF6Ii8+PHBhdGggZD0ibTMyLjUxMywxMTMuNDksMCw3LDIuNDM3NS0yLjQzNzUsMi40Mzc1LDIuNDM3NSwyLjEyNS0yLjA5MzgtMi40Njg4LTIuNDM3NSwyLjQ2ODgtMi40Njg4LTcsMHoiLz48cGF0aCBkPSJtNDguNSwxMTMuNTEtNywwLDIuNDM3NSwyLjQzNzUtMi40Mzc1LDIuNDM3NSwyLjA5MzgsMi4xMjUsMi40Mzc1LTIuNDY4OCwyLjQ2ODgsMi40Njg4LDAtN3oiLz48cGF0aCBkPSJtNDguNSwxMjkuNTEsMC03LTIuNDM3NSwyLjQzNzUtMi40Mzc1LTIuNDM3NS0yLjEyNSwyLjA5MzgsMi40Njg4LDIuNDM3NS0yLjQ2ODgsMi40Njg4LDcsMHoiLz48cGF0aCBkPSJtMzIuNSwxMjkuNTEsNywwLTIuNDM3NS0yLjQzNzUsMi40Mzc1LTIuNDM3NS0yLjA5MzgtMi4xMjUtMi40Mzc1LDIuNDY4OC0yLjQ2ODgtMi40Njg4LDAsN3oiLz48cGF0aCBkPSJtMTIuNTEzLDEyMC40OSwwLTctMi40Mzc1LDIuNDM3NS0yLjQzNzUtMi40Mzc1LTIuMTI1LDIuMDkzOCwyLjQ2ODcsMi40Mzc1LTIuNDY4NywyLjQ2ODgsNywweiIvPjxwYXRoIGQ9Im0xNC41LDEyMC41MSw3LDAtMi40Mzc1LTIuNDM3NSwyLjQzNzUtMi40Mzc1LTIuMDkzOC0yLjEyNS0yLjQzNzUsMi40Njg4LTIuNDY4OC0yLjQ2ODgsMCw3eiIvPjxwYXRoIGQ9Im0xNC41LDEyMi41MSwwLDcsMi40Mzc1LTIuNDM3NSwyLjQzNzUsMi40Mzc1LDIuMTI1LTIuMDkzOC0yLjQ2ODgtMi40Mzc1LDIuNDY4OC0yLjQ2ODgtNywweiIvPjxwYXRoIGQ9Im0xMi41LDEyMi41MS03LDAsMi40Mzc1LDIuNDM3NS0yLjQzNzUsMi40Mzc1LDIuMDkzOCwyLjEyNSwyLjQzNzUtMi40Njg4LDIuNDY4OCwyLjQ2ODgsMC03eiIvPjwvZz48cGF0aCBkPSJtMzMuMTk1LDM4Ljc3MiwxNC42MSwwLDAsMy40NTU5LTE0LjYxLDB6Ii8+PHBhdGggZD0ibTYuMTk0OSwzOC43NzIsMTQuNjEsMCwwLDMuNDU1OS0xNC42MSwweiIvPjxwYXRoIGQ9Im0xNS4yMjgsMzMuMTk1LDAsMTQuNjEtMy40NTU5LDAsMC0xNC42MXoiLz48cGF0aCBkPSJtNS4zNTI4LDIxLjEzMiwwLTAuNTc1NjksMC44NjM3Ny0wLjA4MDEsMC4yNzE5Ny0wLjI1NTg2LDAtOS4yODAzLTEuMTM1NywwLDAtMC40OTYwOSwxLjg1Ni0wLjU3NTY4LDAuNjA3OTEsMCwwLDAuODc5ODhjMC44NDI3Ny0wLjYzOTk3LDEuNjI2OC0wLjk1OTk2LDIuMzUyLTAuOTU5OTYsMC44ODU0MSwwLDEuNjE4NywwLjM0NjY4LDIuMiwxLjA0LDAuNTgxMjEsMC42OTMzNiwwLjg3MTgyLDEuNTk0NywwLjg3MTgzLDIuNzA0MS0wLjAwMDAwOCwxLjI1ODUtMC4zNTk5NSwyLjI2NjQtMS4wNzk4LDMuMDIzNy0wLjcxOTksMC43NTczMi0xLjY3MiwxLjEzNi0yLjg1NjIsMS4xMzYtMC40MDUyOCwwLTAuOTAxMjEtMC4wNDgtMS40ODc4LTAuMTQ0MDV2Mi42NzI0bDAuMjcxOTcsMC4yNTU4NiwxLjAyMzksMC4wODAxdjAuNTc1Njl6bTIuNDYzOS00LjQxNmMwLjUxMjA0LDAuMTcwOSwwLjk2NTMzLDAuMjU2MzUsMS4zNTk5LDAuMjU2MzUsMC43ODkzOCwwLDEuNDI5NC0wLjI5MzM4LDEuOTIwMi0wLjg4MDEzLDAuNDkwNzItMC41ODY3NSwwLjczNjA4LTEuMzcwNywwLjczNjA4LTIuMzUxOC0wLjAwMDAwNy0wLjkwNjktMC4yMTMzOS0xLjYyNDQtMC42NDAxNC0yLjE1MjQtMC40MjY3Ni0wLjUyNzk5LTAuOTkyMDMtMC43OTE5OC0xLjY5NTgtMC43OTE5OS0wLjQ5MDg5LDAuMDAwMDEtMS4wNTA5LDAuMTgxMzItMS42ODAyLDAuNTQzOTR6Ii8+PHBhdGggZD0ibTE4LjM0MiwxNi43MTZjLTEuMDEzNCwwLjY5MzM2LTEuODg4LDEuMDQtMi42MjQsMS4wNC0wLjYyOTU2LDAtMS4xMjgzLTAuMTg5MjktMS40OTYzLTAuNTY3ODctMC4zNjktMC4zNzktMC41NTMtMC44NzItMC41NTMtMS40OCwwLTAuNzc4NjQsMC4zMzMzMy0xLjM1MiwxLTEuNzIsMC42NjY2Ni0wLjM2OCwxLjg5MDgtMC43NjUzOCwzLjY3MjQtMS4xOTIxdi0wLjUxMTcyYy0wLjAwMDAwNi0wLjY1MDcxLTAuMTA0MDEtMS4xMTItMC4zMTIwMS0xLjM4NC0wLjIwODAxLTAuMjcxOTctMC41OTQ3My0wLjQwNzk1LTEuMTYwMi0wLjQwNzk2LTAuMzk0ODYsMC4wMDAwMS0wLjgwMDMsMC4wODUzLTEuMjE2MywwLjI1NTg2djEuMzQ0MmgtMS4xMDRjLTAuMTgxMzIsMC0wLjMwOTI1LTAuMDM0Ny0wLjM4Mzc5LTAuMTA0MDEtMC4wNzQ1NS0wLjA2OTMtMC4xMTE4Mi0wLjIwMDAyLTAuMTExODItMC4zOTIwOS0wLjAwMDAwMS0wLjUwMTI5LDAuMjkzMjktMC45Mjc5NywwLjg3OTg4LTEuMjgsMC41ODY1OS0wLjM1MjA0LDEuMzcwNi0wLjUyODA3LDIuMzUyLTAuNTI4MDcsMC44NDI0NCwwLDEuNDUwNCwwLjE4MTMyLDEuODIzNywwLjU0Mzk0LDAuMzczMzcsMC4zNjI2NCwwLjU2MDA1LDAuOTQ5MzksMC41NjAwNiwxLjc2MDN2NC42Mzk2bDAuMjg4MDksMC4yNTYzNSwwLjg0ODE0LDAuMDc5NnYwLjU3NjE3aC0yLjI1NjN6bTAtMC41NDM5NCwwLTIuODE1OWMtMS4yMjY5LDAuMzQxNDctMi4wNzc2LDAuNjU4ODYtMi41NTIyLDAuOTUyMTUtMC40NzQ2MSwwLjI5MzI5LTAuNzExOTIsMC43MTcyOC0wLjcxMTkxLDEuMjcyLTAuMDAwMDAzLDAuMzk0NTMsMC4xMTQ2NiwwLjcxMTgzLDAuMzQzOTksMC45NTE5LDAuMjI5MzMsMC4yNDAwOCwwLjU0MTI2LDAuMzYwMTEsMC45MzU3OSwwLjM2MDExLDAuNDkwODgsMCwxLjE1MjMtMC4yNDAwNywxLjk4NDQtMC43MjAyMXoiLz48cGF0aCBkPSJtMjEuNjAyLDE3LjY0NCwwLTAuNTc2MTcsMC44NjQyNi0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1LDAtNS43OTItMS4xMzYyLDAsMC0wLjQ5NjA5LDEuODU2LTAuNTc1NjgsMC42MDc5MiwwLDAsMC44Nzk4OGMxLjE2MjgtMC42Mzk5NywyLjAyMTUtMC45NTk5NiwyLjU3NjItMC45NTk5NiwwLjcwNDA5LDAsMS4yNDAxLDAuMjA1MzMsMS42MDgyLDAuNjE1OTYsMC4zNjgsMC40MTA2NiwwLjU1MiwxLjAxNiwwLjU1MiwxLjgxNjJ2NC41MTE3bDAuMjcxOTgsMC4yNTYzNSwwLjg2Mzc3LDAuMDc5NnYwLjU3NjE3aC0zLjUwMzl2LTAuNTc2MTdsMC43NjgwNy0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1di00LjIzOTdjLTAuMDAwMDEtMC41ODY5MS0wLjEyMjY1LTEuMDA4My0wLjM2NzkyLTEuMjY0Mi0wLjI0NTI5LTAuMjU1ODUtMC42NjEzOC0wLjM4Mzc4LTEuMjQ4My0wLjM4Mzc5LTAuNTEyMDUsMC4wMDAwMS0xLjEwOTQsMC4xNzU5NS0xLjc5MiwwLjUyNzgzdjUuMzU5OWwwLjI3MTk3LDAuMjU2MzUsMC43NjgwNiwwLjA3OTZ2MC41NzYxN3oiLz48cGF0aCBkPSJtMzAuNjk2LDE3LjY0NCwwLTAuNTc2MTcsMC44NjQyNi0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1LDAtNS43OTItMS4xMzYyLDAsMC0wLjQ5NjA5LDEuODU2LTAuNTc1NjgsMC42MDc5MiwwLDAsMC44Nzk4OGMxLjE2MjgtMC42Mzk5NywyLjAyMTUtMC45NTk5NiwyLjU3NjItMC45NTk5NiwwLjcwNDA5LDAsMS4yNDAxLDAuMjA1MzMsMS42MDgyLDAuNjE1OTYsMC4zNjgsMC40MTA2NiwwLjU1MiwxLjAxNiwwLjU1MiwxLjgxNjJ2NC41MTE3bDAuMjcxOTgsMC4yNTYzNSwwLjg2Mzc3LDAuMDc5NnYwLjU3NjE3aC0zLjUwMzl2LTAuNTc2MTdsMC43NjgwNy0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1di00LjIzOTdjLTAuMDAwMDEtMC41ODY5MS0wLjEyMjY1LTEuMDA4My0wLjM2NzkyLTEuMjY0Mi0wLjI0NTI5LTAuMjU1ODUtMC42NjEzOC0wLjM4Mzc4LTEuMjQ4My0wLjM4Mzc5LTAuNTEyMDUsMC4wMDAwMS0xLjEwOTQsMC4xNzU5NS0xLjc5MiwwLjUyNzgzdjUuMzU5OWwwLjI3MTk3LDAuMjU2MzUsMC43NjgwNiwwLjA3OTZ2MC41NzYxN3oiLz48cGF0aCBkPSJtNDUuNDc3LDE1Ljk0OCwwLDAuODc5ODljLTAuOTU5OTcsMC42Mzk5Ny0xLjk2MjYsMC45NTk5Ni0zLjAwNzgsMC45NTk5Ni0xLjA1NiwwLTEuOTE0Ny0wLjM2MjcxLTIuNTc2Mi0xLjA4ODEtMC42NjE0Ni0wLjcyNTQyLTAuOTkyMTktMS42NzQ3LTAuOTkyMTktMi44NDc5LDAtMS4yMDU0LDAuMzQ2NjgtMi4xODQxLDEuMDQtMi45MzYsMC42OTMzNi0wLjc1MTk1LDEuNTc4OC0xLjEyNzksMi42NTYyLTEuMTI3OSwwLjg3NDY3LDAsMS41NzMzLDAuMjgwMDMsMi4wOTYsMC44NDAwOCwwLjUyMjYyLDAuNTYwMDcsMC43ODM5MywxLjMzMDcsMC43ODM5NCwyLjMxMTgtMC4wMDAwMSwwLjIxMzU1LTAuMDA1LDAuMzc4OTEtMC4wMTYxLDAuNDk2MWgtNS4xODQxdjAuMTc1NzhjMCwxLjAxMzQsMC4yNDI2NywxLjgxMDcsMC43MjgwMywyLjM5MjEsMC40ODUzNSwwLjU4MTM4LDEuMTM4NywwLjg3MjA3LDEuOTYsMC44NzIwNywwLjc0Njc0LDAsMS41ODQxLTAuMzA5MjUsMi41MTIyLTAuOTI3NzR6bS0xLjQyMzgtMy4xODQxLDAtMC4yNTYzNWMtMC4wMDAwMS0wLjY1MDM4LTAuMTQ0MDUtMS4xNDYzLTAuNDMyMTMtMS40ODc4LTAuMjg4MDktMC4zNDE0Ni0wLjY5ODc0LTAuNTEyMi0xLjIzMTktMC41MTIyMS0wLjUyMjc5LDAuMDAwMDEtMC45ODE1MywwLjIxMDctMS4zNzYyLDAuNjMyMDgtMC4zOTQ2OSwwLjQyMTQtMC42MTMzNiwwLjk2MjgyLTAuNjU2LDEuNjI0M3oiLz48cGF0aCBkPSJtNDUuOTAxLDE3LjY0NCwwLTAuNTc2MTcsMC45NDM4NS0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1LDAtOS43OTItMS4yMzE5LDAsMC0wLjQ5NjA5LDEuOTUxNy0wLjU3NTY4LDAuNjA4MzksMCwwLDEwLjg2NCwwLjI4NzYsMC4yNTYzNSwwLjkxMjExLDAuMDc5NiwwLDAuNTc2MTd6Ii8+PHBhdGggZD0ibTUwLjQwMSwxNy42NDQsMC0wLjU3NjE3LDAuOTQzODUtMC4wNzk2LDAuMjcxOTctMC4yNTYzNSwwLTkuNzkyLTEuMjMxOSwwLDAtMC40OTYwOSwxLjk1MTctMC41NzU2OCwwLjYwODM5LDAsMCwxMC44NjQsMC4yODc2LDAuMjU2MzUsMC45MTIxMSwwLjA3OTYsMCwwLjU3NjE3eiIvPjxwYXRoIGQ9Im01NS42MjUsOS43ODgxLDAuNjA3OTEsMCwwLDUuMjk1OWMwLDAuNTc2MTcsMC4xMjUzMiwxLjAwMjksMC4zNzU5OCwxLjI4MDMsMC4yNTA2NCwwLjI3NzM0LDAuNjQyNzMsMC40MTYwMiwxLjE3NjMsMC40MTYwMSwwLjU4NjU4LDAuMDAwMDEsMS4yMDUyLTAuMTYwMTUsMS44NTYtMC40ODA0NnYtNS40MjM4aC0xLjEzNjJ2LTAuNDk2MWwxLjg1Ni0wLjU5MTc5aDAuNjA4NHY2Ljk0MzhsMC4yODc2LDAuMjU2MzUsMC43NTE5NSwwLjA3OTZ2MC41NzYxN2gtMi4zNjc3di0wLjg5NTk5Yy0wLjk4MTQ1LDAuNzA0MS0xLjg0NTUsMS4wNTYyLTIuNTkyMywxLjA1NjItMC42OTMzNiwwLTEuMjI0LTAuMjA4MDEtMS41OTItMC42MjQwMi0wLjM2ODAxLTAuNDE2MDItMC41NTIwMS0xLjAyNDEtMC41NTItMS44MjQydi00LjQ4aC0xLjEzNTh2LTAuNDk2MXoiLz48cGF0aCBkPSJtNjkuNzExLDEwLjg2YzEuMjE1OC0wLjcxNDUxLDIuMTMzMS0xLjA3MTgsMi43NTItMS4wNzE4LDAuNjM5OTYsMCwxLjE0NCwwLjIxMDcsMS41MTIsMC42MzIwOCwwLjM2Nzk5LDAuNDIxMzksMC41NTE5OSwxLjAyMTQsMC41NTIwMSwxLjh2NC41MTE3bDAuMjcxOTcsMC4yNTYzNSwwLjg0ODE0LDAuMDc5NnYwLjU3NjE3aC0zLjQ4ODN2LTAuNTc2MTdsMC43NTE5NS0wLjA3OTYsMC4yODgwOS0wLjI1NjM1di00LjIzOTdjLTAuMDAwMDEtMS4wOTg2LTAuNDc5OTktMS42NDc5LTEuNDM5OS0xLjY0OC0wLjQ4MDE1LDAuMDAwMDEtMS4wODI4LDAuMTc1OTUtMS44MDgxLDAuNTI3ODN2NS4zNTk5bDAuMjg4MDksMC4yNTYzNSwwLjc1MTk1LDAuMDc5NnYwLjU3NjE3aC0zLjQwNzd2LTAuNTc2MTdsMC43Njc1OC0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1di00LjIzOTdjLTAuMDAwMDEtMS4wOTg2LTAuNDY5MjUtMS42NDc5LTEuNDA3Ny0xLjY0OC0wLjUxMjA0LDAuMDAwMDEtMS4xMjAxLDAuMTc1OTUtMS44MjQyLDAuNTI3ODN2NS4zNTk5bDAuMjcxOTcsMC4yNTYzNSwwLjc2ODA2LDAuMDc5NnYwLjU3NjE3aC0zLjUwMzl2LTAuNTc2MTdsMC44NjQyNi0wLjA3OTYsMC4yNzE5Ny0wLjI1NjM1di01Ljc5MmgtMS4xMzYydi0wLjQ5NjA5bDEuODU2LTAuNTc1NjhoMC42MDc5MnYwLjg3OTg4YzEuMDg4Mi0wLjYzOTk3LDEuOTQxNi0wLjk1OTk2LDIuNTYtMC45NTk5NiwwLjgwMDEzLDAsMS4zODY5LDAuMzU3MjYsMS43NjAzLDEuMDcxOHoiLz48cGF0aCBkPSJtMzIuNTEzLDg2LjQ4NiwwLDcsMi40Mzc1LTIuNDM3NSwyLjQzNzUsMi40Mzc1LDIuMTI1LTIuMDkzOC0yLjQ2ODgtMi40Mzc1LDIuNDY4OC0yLjQ2ODgtNywweiIvPjxwYXRoIGQ9Im00OC41LDg2LjUtNywwLDIuNDM3NSwyLjQzNzUtMi40Mzc1LDIuNDM3NSwyLjA5MzgsMi4xMjUsMi40Mzc1LTIuNDY4OCwyLjQ2ODgsMi40Njg4LDAtN3oiLz48cGF0aCBkPSJtNDguNSwxMDIuNSwwLTctMi40Mzc1LDIuNDM3NWwtMi40MzctMi40MzgtMi4xMjUsMi4wOTQsMi40NjksMi40MzYtMi40NjksMi40N2g3eiIvPjxwYXRoIGQ9Im0zMi41LDEwMi41LDcsMC0yLjQzNzUtMi40Mzc1bDIuNDM4LTIuNDM1LTIuMDk0LTIuMTI1LTIuNDM3LDIuNDY5LTIuNDY5LTIuNDY5djd6Ii8+PHBhdGggZD0ibTEyLjUxMyw5My40ODYsMC03LTIuNDM3NSwyLjQzNzUtMi40Mzc1LTIuNDM3NS0yLjEyNSwyLjA5MzgsMi40Njg3LDIuNDM3NS0yLjQ2ODcsMi40Njg4LDcsMHoiLz48cGF0aCBkPSJtMTQuNSw5My41LDcsMC0yLjQzNzUtMi40Mzc1LDIuNDM3NS0yLjQzNzUtMi4wOTM4LTIuMTI1LTIuNDM3NSwyLjQ2ODgtMi40Njg4LTIuNDY4OCwwLDd6Ii8+PHBhdGggZD0ibTE0LjUsOTUuNSwwLDcsMi40Mzc1LTIuNDM3NSwyLjQzNzUsMi40Mzc1LDIuMTI1LTIuMDkzOC0yLjQ2ODgtMi40Mzc1LDIuNDY4OC0yLjQ2ODgtNywweiIvPjxwYXRoIGQ9Im0xMi41LDk1LjUtNywwLDIuNDM3NSwyLjQzNzUtMi40Mzc1LDIuNDM3NSwyLjA5MzgsMi4xMjUsMi40Mzc1LTIuNDY4OCwyLjQ2ODgsMi40Njg4LDAtN3oiLz48L2c+PC9zdmc+')}.noselect{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}#container{cursor:inherit}#page{width:100%;height:100%}#zoomcontrols{position:absolute;top:2px;left:2px;width:27px;height:54px;cursor:pointer}#zoom_in{width:100%;height:50%;position:absolute;top:0;background-position:0 -27px}#zoom_in:hover{background-position:0 -54px}#zoom_out{width:100%;height:50%;position:absolute;bottom:0;background-position:-27px -27px}#zoom_out:hover{background-position:-27px -54px}#pannellum_logo{background-position:0 0;position:absolute;top:2px;right:2px;width:81px;height:27px;display:none;cursor:pointer}#pannellum_logo a:link{display:block;width:81px;height:27px}#panorama_info{position:absolute;bottom:2px;width:100%}#title_box{position:relative;width:auto;text-align:left;font-family:serif;font-size:20px;background-color:rgba(0,0,0,0.7);display:table;padding-left:5px;padding-right:15px;color:#fff;margin-bottom:3px}#author_box{position:relative;width:auto;text-align:left;font-family:serif;font-size:12px;background-color:rgba(0,0,0,0.7);display:table;padding-left:5px;padding-right:30px;color:#fff}#license{float:right;margin-left:8px;height:15px}#load_box{position:absolute;top:50%;left:50%;width:194px;height:144px;margin:-75px 0 0 -100px;background-color:#eee;background-color:rgba(255,255,255,.85);border-radius:10px;border-style:solid;border-width:3px;border-color:#000;text-align:center;font-size:20px;display:none}#load_indicator{position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCI+PHJlY3QgaGVpZ2h0PSIxMCIgd2lkdGg9IjEwIj48YW5pbWF0ZU1vdGlvbiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgcGF0aD0iTSAwIDAgTCAxMCAwIEwgMTAgMTAgTCAwIDEwIEwgMCAwIi8+PC9yZWN0Pjwvc3ZnPg==')}#load_button{position:absolute;top:50%;left:50%;width:200px;height:100px;margin:-50px 0 0 -100px;background-color:#222;background-color:rgba(0,0,0,.7);border-radius:10px;text-align:center;font-family:serif;font-size:20px;display:none;color:#fff;cursor:pointer}#load_button:hover{background-color:#eee;background-color:rgba(255,255,255,.7);color:#000}#load_button p{display:table-cell;vertical-align:middle}#nojavascript{color:#000;font-family:serif;font-size:15px;position:absolute;top:50%;left:50%;width:194px;height:144px;margin:-75px 0 0 -100px;background-color:#eee;background-color:rgba(255,255,255,.85);border-radius:10px;border-style:solid;border-width:3px;border-color:#000;display:table;text-align:center}#nojavascript p{display:table-cell;vertical-align:middle;padding:0 5px 0 5px}#pannellum_logo_about{position:relative;background-position:0 0;width:81px;height:27px;margin-left:auto;margin-right:auto}#nocanvas{color:#000;font-family:serif;font-size:15px;position:absolute;top:50%;left:50%;width:194px;height:144px;margin:-75px 0 0 -100px;background-color:#eee;background-color:rgba(255,255,255,.85);border-radius:10px;border-style:solid;border-width:3px;border-color:#000;display:none;text-align:center}#nocanvas p{display:table-cell;vertical-align:middle;padding:0 5px 0 5px}#fullwindowtoggle_button{position:absolute;bottom:2px;right:2px;width:27px;height:27px;cursor:pointer}.fullwindowtoggle_button_inactive{background-position:-27px -81px}.fullwindowtoggle_button_inactive:hover{background-position:-27px -108px}.fullwindowtoggle_button_active{background-position:0 -81px}.fullwindowtoggle_button_active:hover{background-position:0 -108px}#about{font-size:11px;line-height:11px;color:#fff;padding:5px 8px 5px 8px;background:rgba(0,0,0,0.7);border-radius:3px;position:absolute;top:50px;left:50px;display:none;opacity:0;-moz-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}#about a:link,#about a:visited{color:#fff}#about a:hover,#about a:active{color:#eee}</style></head><body class=noselect><div id=page><div id=container></div><noscript><div id=nojavascript class=noselect><p>Javascript is required to view this panorama.<br>(It could be worse; you could need a plugin.)</p></div></noscript><div id=panorama_info class=noselect><div id=title_box></div><div id=author_box></div></div><div id=zoomcontrols><div id=zoom_in onclick="zoomIn(5)" class=sprite></div><div id=zoom_out onclick="zoomOut(5)" class=sprite></div></div><div id=pannellum_logo class=sprite><a href="https://bitbucket.org/mpetroff/pannellum/" target=_blank></a></div><div id=fullwindowtoggle_button onclick="toggleFullWindow()" class="sprite fullwindowtoggle_button_inactive"></div><div id=load_box class=noselect><p>Loading...<div id=load_indicator></div></div><div id=load_button onclick="load()" class=noselect><p>Click to<br>Load<br>Panorama<p></div><div id=nocanvas class=noselect><p>A browser supporting WebGL (and the canvas element) is required to view this panorama.</p></div><span id=about style="display: none;"><a href="https://bitbucket.org/mpetroff/pannellum/" target=_blank>Pannellum</a> 1.1</span><script type="text/javascript">var THREE=THREE||{};window.Int32Array||(window.Int32Array=Array,window.Float32Array=Array);THREE.Color=function(a){this.setHex(a)};THREE.Color.prototype={autoUpdate:!0,setHex:function(a){this.hex=~~a&16777215;this.autoUpdate&&(this.updateRGB(),this.updateStyleString())},updateRGB:function(){this.r=(this.hex>>16&255)/255;this.g=(this.hex>>8&255)/255;this.b=(this.hex&255)/255},updateStyleString:function(){this.__styleString="rgb("+~~(255*this.r)+","+~~(255*this.g)+","+~~(255*this.b)+")"},clone:function(){return new THREE.Color(this.hex)}};
  4. THREE.Vector3=function(a,c,d){this.set(a||0,c||0,d||0)};
  5. THREE.Vector3.prototype={set:function(a,c,d){this.x=a;this.y=c;this.z=d;return this},copy:function(a){this.set(a.x,a.y,a.z);return this},addSelf:function(a){this.set(this.x+a.x,this.y+a.y,this.z+a.z);return this},sub:function(a,c){this.set(a.x-c.x,a.y-c.y,a.z-c.z);return this},cross:function(a,c){this.set(a.y*c.z-a.z*c.y,a.z*c.x-a.x*c.z,a.x*c.y-a.y*c.x);return this},crossSelf:function(a){var c=this.x,d=this.y,e=this.z;this.set(d*a.z-e*a.y,e*a.x-c*a.z,c*a.y-d*a.x);return this},multiplyScalar:function(a){this.set(this.x*
  6. a,this.y*a,this.z*a);return this},divideScalar:function(a){this.set(this.x/a,this.y/a,this.z/a);return this},length:function(){return Math.sqrt(this.lengthSq())},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},normalize:function(){var a=this.length();0<a?this.multiplyScalar(1/a):this.set(0,0,0);return this},isZero:function(){return 1.0E-4>Math.abs(this.x)&&1.0E-4>Math.abs(this.y)&&1.0E-4>Math.abs(this.z)},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}};
  7. THREE.Vector4=function(a,c,d,e){this.set(a||0,c||0,d||0,e||1)};THREE.Vector4.prototype={set:function(a,c,d,e){this.x=a;this.y=c;this.z=d;this.w=e;return this},copy:function(a){this.set(a.x,a.y,a.z,a.w||1);return this},divideScalar:function(a){this.set(this.x/a,this.y/a,this.z/a,this.w/a);return this}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transposeIntoArray:function(a){var c=this.m;a[0]=c[0];a[1]=c[3];a[2]=c[6];a[3]=c[1];a[4]=c[4];a[5]=c[7];a[6]=c[2];a[7]=c[5];a[8]=c[8];return this}};
  8. THREE.Matrix4=function(a,c,d,e,b,f,g,h,m,p,q,n,s,r,j,o){this.set(a||1,c||0,d||0,e||0,b||0,f||1,g||0,h||0,m||0,p||0,q||1,n||0,s||0,r||0,j||0,o||1);this.flat=Array(16);this.m33=new THREE.Matrix3};
  9. THREE.Matrix4.prototype={set:function(a,c,d,e,b,f,g,h,m,p,q,n,s,r,j,o){this.n11=a;this.n12=c;this.n13=d;this.n14=e;this.n21=b;this.n22=f;this.n23=g;this.n24=h;this.n31=m;this.n32=p;this.n33=q;this.n34=n;this.n41=s;this.n42=r;this.n43=j;this.n44=o;return this},copy:function(a){this.set(a.n11,a.n12,a.n13,a.n14,a.n21,a.n22,a.n23,a.n24,a.n31,a.n32,a.n33,a.n34,a.n41,a.n42,a.n43,a.n44);return this},lookAt:function(a,c,d){var e=THREE.Matrix4.__v1,b=THREE.Matrix4.__v2,f=THREE.Matrix4.__v3;f.sub(a,c).normalize();
  10. 0===f.length()&&(f.z=1);e.cross(d,f).normalize();0===e.length()&&(f.x+=1.0E-4,e.cross(d,f).normalize());b.cross(f,e).normalize();this.n11=e.x;this.n12=b.x;this.n13=f.x;this.n21=e.y;this.n22=b.y;this.n23=f.y;this.n31=e.z;this.n32=b.z;this.n33=f.z;return this},multiplyVector3:function(a){var c=a.x,d=a.y,e=a.z,b=1/(this.n41*c+this.n42*d+this.n43*e+this.n44);a.x=(this.n11*c+this.n12*d+this.n13*e+this.n14)*b;a.y=(this.n21*c+this.n22*d+this.n23*e+this.n24)*b;a.z=(this.n31*c+this.n32*d+this.n33*e+this.n34)*
  11. b;return a},multiply:function(a,c){var d=a.n11,e=a.n12,b=a.n13,f=a.n14,g=a.n21,h=a.n22,m=a.n23,p=a.n24,q=a.n31,n=a.n32,s=a.n33,r=a.n34,j=a.n41,o=a.n42,w=a.n43,v=a.n44,k=c.n11,F=c.n12,K=c.n13,G=c.n14,M=c.n21,N=c.n22,O=c.n23,P=c.n24,y=c.n31,t=c.n32,A=c.n33,l=c.n34;this.n11=d*k+e*M+b*y;this.n12=d*F+e*N+b*t;this.n13=d*K+e*O+b*A;this.n14=d*G+e*P+b*l+f;this.n21=g*k+h*M+m*y;this.n22=g*F+h*N+m*t;this.n23=g*K+h*O+m*A;this.n24=g*G+h*P+m*l+p;this.n31=q*k+n*M+s*y;this.n32=q*F+n*N+s*t;this.n33=q*K+n*O+s*A;this.n34=
  12. q*G+n*P+s*l+r;this.n41=j*k+o*M+w*y;this.n42=j*F+o*N+w*t;this.n43=j*K+o*O+w*A;this.n44=j*G+o*P+w*l+v;return this},multiplyToArray:function(a,c,d){this.multiply(a,c);d[0]=this.n11;d[1]=this.n21;d[2]=this.n31;d[3]=this.n41;d[4]=this.n12;d[5]=this.n22;d[6]=this.n32;d[7]=this.n42;d[8]=this.n13;d[9]=this.n23;d[10]=this.n33;d[11]=this.n43;d[12]=this.n14;d[13]=this.n24;d[14]=this.n34;d[15]=this.n44;return this},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=
  13. a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a;return this},determinant:function(){var a=this.n11,c=this.n12,d=this.n13,e=this.n14,b=this.n21,f=this.n22,g=this.n23,h=this.n24,m=this.n31,p=this.n32,q=this.n33,n=this.n34,s=this.n41,r=this.n42,j=this.n43,o=this.n44;return e*g*p*s-d*h*p*s-e*f*q*s+c*h*q*s+d*f*n*s-c*g*n*s-e*g*m*r+d*h*m*r+e*b*q*r-a*h*q*r-d*b*n*r+a*g*n*r+e*f*m*j-c*h*m*j-e*b*p*j+a*h*p*j+c*b*n*j-a*f*n*j-d*f*m*o+c*g*
  14. m*o+d*b*p*o-a*g*p*o-c*b*q*o+a*f*q*o},flattenToArray:function(a){a[0]=this.n11;a[1]=this.n21;a[2]=this.n31;a[3]=this.n41;a[4]=this.n12;a[5]=this.n22;a[6]=this.n32;a[7]=this.n42;a[8]=this.n13;a[9]=this.n23;a[10]=this.n33;a[11]=this.n43;a[12]=this.n14;a[13]=this.n24;a[14]=this.n34;a[15]=this.n44;return a},setPosition:function(a){this.n14=a.x;this.n24=a.y;this.n34=a.z;return this},setRotationFromEuler:function(a){var c=a.x,d=a.y,e=a.z,a=Math.cos(c),c=Math.sin(c),b=Math.cos(d),d=Math.sin(d),f=Math.cos(e),
  15. e=Math.sin(e),g=a*d,h=c*d;this.n11=b*f;this.n12=-b*e;this.n13=d;this.n21=h*f+a*e;this.n22=-h*e+a*f;this.n23=-c*b;this.n31=-g*f+c*e;this.n32=g*e+c*f;this.n33=a*b;return this},scale:function(a){var c=a.x,d=a.y,a=a.z;this.n11*=c;this.n12*=d;this.n13*=a;this.n21*=c;this.n22*=d;this.n23*=a;this.n31*=c;this.n32*=d;this.n33*=a;this.n41*=c;this.n42*=d;this.n43*=a;return this},extractRotation:function(a,c){var d=1/c.x,e=1/c.y,b=1/c.z;this.n11=a.n11*d;this.n21=a.n21*d;this.n31=a.n31*d;this.n12=a.n12*e;this.n22=
  16. a.n22*e;this.n32=a.n32*e;this.n13=a.n13*b;this.n23=a.n23*b;this.n33=a.n33*b}};
  17. THREE.Matrix4.makeInvert=function(a,c){var d=a.n11,e=a.n12,b=a.n13,f=a.n14,g=a.n21,h=a.n22,m=a.n23,p=a.n24,q=a.n31,n=a.n32,s=a.n33,r=a.n34,j=a.n41,o=a.n42,w=a.n43,v=a.n44;void 0===c&&(c=new THREE.Matrix4);c.n11=m*r*o-p*s*o+p*n*w-h*r*w-m*n*v+h*s*v;c.n12=f*s*o-b*r*o-f*n*w+e*r*w+b*n*v-e*s*v;c.n13=b*p*o-f*m*o+f*h*w-e*p*w-b*h*v+e*m*v;c.n14=f*m*n-b*p*n-f*h*s+e*p*s+b*h*r-e*m*r;c.n21=p*s*j-m*r*j-p*q*w+g*r*w+m*q*v-g*s*v;c.n22=b*r*j-f*s*j+f*q*w-d*r*w-b*q*v+d*s*v;c.n23=f*m*j-b*p*j-f*g*w+d*p*w+b*g*v-d*m*v;c.n24=
  18. b*p*q-f*m*q+f*g*s-d*p*s-b*g*r+d*m*r;c.n31=h*r*j-p*n*j+p*q*o-g*r*o-h*q*v+g*n*v;c.n32=f*n*j-e*r*j-f*q*o+d*r*o+e*q*v-d*n*v;c.n33=b*p*j-f*h*j+f*g*o-d*p*o-e*g*v+d*h*v;c.n34=f*h*q-e*p*q-f*g*n+d*p*n+e*g*r-d*h*r;c.n41=m*n*j-h*s*j-m*q*o+g*s*o+h*q*w-g*n*w;c.n42=e*s*j-b*n*j+b*q*o-d*s*o-e*q*w+d*n*w;c.n43=b*h*j-e*m*j-b*g*o+d*m*o+e*g*w-d*h*w;c.n44=e*m*q-b*h*q+b*g*n-d*m*n-e*g*s+d*h*s;c.multiplyScalar(1/a.determinant());return c};
  19. THREE.Matrix4.makeInvert3x3=function(a){var c=a.m33,d=c.m,e=a.n33*a.n22-a.n32*a.n23,b=-a.n33*a.n21+a.n31*a.n23,f=a.n32*a.n21-a.n31*a.n22,g=-a.n33*a.n12+a.n32*a.n13,h=a.n33*a.n11-a.n31*a.n13,m=-a.n32*a.n11+a.n31*a.n12,p=a.n23*a.n12-a.n22*a.n13,q=-a.n23*a.n11+a.n21*a.n13,n=a.n22*a.n11-a.n21*a.n12,a=a.n11*e+a.n21*g+a.n31*p;if(0==a)throw"matrix not invertible";a=1/a;d[0]=a*e;d[1]=a*b;d[2]=a*f;d[3]=a*g;d[4]=a*h;d[5]=a*m;d[6]=a*p;d[7]=a*q;d[8]=a*n;return c};
  20. THREE.Matrix4.makeFrustum=function(a,c,d,e,b,f){var g;g=new THREE.Matrix4;g.n11=2*b/(c-a);g.n12=0;g.n13=(c+a)/(c-a);g.n14=0;g.n21=0;g.n22=2*b/(e-d);g.n23=(e+d)/(e-d);g.n24=0;g.n31=0;g.n32=0;g.n33=-(f+b)/(f-b);g.n34=-2*f*b/(f-b);g.n41=0;g.n42=0;g.n43=-1;g.n44=0;return g};THREE.Matrix4.makePerspective=function(a,c,d,e){var b,a=d*Math.tan(a*Math.PI/360);b=-a;return THREE.Matrix4.makeFrustum(b*c,a*c,b,a,d,e)};THREE.Matrix4.__v1=new THREE.Vector3;THREE.Matrix4.__v2=new THREE.Vector3;
  21. THREE.Matrix4.__v3=new THREE.Vector3;
  22. THREE.Object3D=function(){this.parent=void 0;this.children=[];this.up=new THREE.Vector3(0,1,0);this.position=new THREE.Vector3;this.rotation=new THREE.Vector3;this.scale=new THREE.Vector3(1,1,1);this.rotationAutoUpdate=!0;this.matrix=new THREE.Matrix4;this.matrixWorld=new THREE.Matrix4;this.matrixRotationWorld=new THREE.Matrix4;this.matrixWorldNeedsUpdate=this.matrixAutoUpdate=!0;this.quaternion=new THREE.Quaternion;this.useQuaternion=!1;this.boundRadius=0;this.boundRadiusScale=1;this.visible=!0;
  23. this._vector=new THREE.Vector3;this.name=""};
  24. THREE.Object3D.prototype={addChild:function(a){if(-1===this.children.indexOf(a)){void 0!==a.parent&&a.parent.removeChild(a);a.parent=this;this.children.push(a);for(var c=this;void 0!==c.parent;)c=c.parent;void 0!==c&&c instanceof THREE.Scene&&c.addChildRecurse(a)}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation);if(1!==this.scale.x||1!==this.scale.y||1!==this.scale.z)this.matrix.scale(this.scale),
  25. this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,this.scale.z));this.matrixWorldNeedsUpdate=!0},update:function(a,c,d){this.matrixAutoUpdate&&this.updateMatrix();if(this.matrixWorldNeedsUpdate||c)a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixRotationWorld.extractRotation(this.matrixWorld,this.scale),this.matrixWorldNeedsUpdate=!1,c=!0;for(var a=0,e=this.children.length;a<e;a++)this.children[a].update(this.matrixWorld,c,d)}};
  26. THREE.Quaternion=function(a,c,d,e){this.set(a||0,c||0,d||0,void 0!==e?e:1)};THREE.Quaternion.prototype={set:function(a,c,d,e){this.x=a;this.y=c;this.z=d;this.w=e;return this}};THREE.Vertex=function(a){this.position=a||new THREE.Vector3};
  27. THREE.Face3=function(a,c,d,e,b,f){this.a=a;this.b=c;this.c=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=b instanceof THREE.Color?b:new THREE.Color;this.vertexColors=b instanceof Array?b:[];this.vertexTangents=[];this.materials=f instanceof Array?f:[f];this.centroid=new THREE.Vector3};THREE.UV=function(a,c){this.set(a||0,c||0)};THREE.UV.prototype={set:function(a,c){this.u=a;this.v=c;return this}};
  28. THREE.Geometry=function(){this.id="Geometry"+THREE.GeometryIdCounter++;this.vertices=[];this.colors=[];this.faces=[];this.edges=[];this.faceUvs=[[]];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1};
  29. THREE.Geometry.prototype={computeCentroids:function(){var a,c,d;a=0;for(c=this.faces.length;a<c;a++)d=this.faces[a],d.centroid.set(0,0,0),d instanceof THREE.Face3?(d.centroid.addSelf(this.vertices[d.a].position),d.centroid.addSelf(this.vertices[d.b].position),d.centroid.addSelf(this.vertices[d.c].position),d.centroid.divideScalar(3)):d instanceof THREE.Face4&&(d.centroid.addSelf(this.vertices[d.a].position),d.centroid.addSelf(this.vertices[d.b].position),d.centroid.addSelf(this.vertices[d.c].position),
  30. d.centroid.addSelf(this.vertices[d.d].position),d.centroid.divideScalar(4))},computeFaceNormals:function(a){var c,d,e,b,f,g,h=new THREE.Vector3,m=new THREE.Vector3;e=0;for(b=this.faces.length;e<b;e++){f=this.faces[e];if(a&&f.vertexNormals.length){h.set(0,0,0);c=0;for(d=f.vertexNormals.length;c<d;c++)h.addSelf(f.vertexNormals[c]);h.divideScalar(3)}else c=this.vertices[f.a],d=this.vertices[f.b],g=this.vertices[f.c],h.sub(g.position,d.position),m.sub(c.position,d.position),h.crossSelf(m);h.isZero()||
  31. h.normalize();f.normal.copy(h)}},computeVertexNormals:function(){var a,c,d,e;if(void 0==this.__tmpVertices){e=this.__tmpVertices=Array(this.vertices.length);a=0;for(c=this.vertices.length;a<c;a++)e[a]=new THREE.Vector3;a=0;for(c=this.faces.length;a<c;a++)d=this.faces[a],d instanceof THREE.Face3?d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]:d instanceof THREE.Face4&&(d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3])}else{e=this.__tmpVertices;
  32. a=0;for(c=this.vertices.length;a<c;a++)e[a].set(0,0,0)}a=0;for(c=this.faces.length;a<c;a++)d=this.faces[a],d instanceof THREE.Face3?(e[d.a].addSelf(d.normal),e[d.b].addSelf(d.normal),e[d.c].addSelf(d.normal)):d instanceof THREE.Face4&&(e[d.a].addSelf(d.normal),e[d.b].addSelf(d.normal),e[d.c].addSelf(d.normal),e[d.d].addSelf(d.normal));a=0;for(c=this.vertices.length;a<c;a++)e[a].normalize();a=0;for(c=this.faces.length;a<c;a++)d=this.faces[a],d instanceof THREE.Face3?(d.vertexNormals[0].copy(e[d.a]),
  33. d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c])):d instanceof THREE.Face4&&(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c]),d.vertexNormals[3].copy(e[d.d]))}};THREE.GeometryIdCounter=0;THREE.Camera=function(a,c,d,e,b){THREE.Object3D.call(this);this.fov=a||50;this.aspect=c||1;this.near=d||0.1;this.far=e||2E3;this.target=b||new THREE.Object3D;this.useTarget=!0;this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=null;this.updateProjectionMatrix()};
  34. THREE.Camera.prototype=new THREE.Object3D;THREE.Camera.prototype.constructor=THREE.Camera;THREE.Camera.prototype.supr=THREE.Object3D.prototype;THREE.Camera.prototype.updateProjectionMatrix=function(){this.projectionMatrix=THREE.Matrix4.makePerspective(this.fov,this.aspect,this.near,this.far)};
  35. THREE.Camera.prototype.update=function(a,c,d){if(this.useTarget)this.matrix.lookAt(this.position,this.target.position,this.up),this.matrix.setPosition(this.position),a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix),THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse),c=!0;else if(this.matrixAutoUpdate&&this.updateMatrix(),c||this.matrixWorldNeedsUpdate)a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=
  36. !1,c=!0,THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse);for(a=0;a<this.children.length;a++)this.children[a].update(this.matrixWorld,c,d)};THREE.Material=function(a){this.id=THREE.MaterialCounter.value++;a=a||{};this.opacity=void 0!==a.opacity?a.opacity:1;this.transparent=void 0!==a.transparent?a.transparent:!1;this.blending=void 0!==a.blending?a.blending:THREE.NormalBlending;this.depthTest=void 0!==a.depthTest?a.depthTest:!0};THREE.NoShading=0;THREE.FlatShading=1;
  37. THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;THREE.MultiplyBlending=3;THREE.AdditiveAlphaBlending=4;THREE.MaterialCounter={value:0};THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){};THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};
  38. THREE.UVMapping=function(){};
  39. THREE.MeshBasicMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=void 0!==a.color?new THREE.Color(a.color):new THREE.Color(16777215);this.map=void 0!==a.map?a.map:null;this.lightMap=void 0!==a.lightMap?a.lightMap:null;this.envMap=void 0!==a.envMap?a.envMap:null;this.combine=void 0!==a.combine?a.combine:THREE.MultiplyOperation;this.reflectivity=void 0!==a.reflectivity?a.reflectivity:1;this.refractionRatio=void 0!==a.refractionRatio?a.refractionRatio:0.98;this.shading=void 0!==a.shading?
  40. a.shading:THREE.SmoothShading;this.wireframe=void 0!==a.wireframe?a.wireframe:!1;this.wireframeLinewidth=void 0!==a.wireframeLinewidth?a.wireframeLinewidth:1;this.wireframeLinecap=void 0!==a.wireframeLinecap?a.wireframeLinecap:"round";this.wireframeLinejoin=void 0!==a.wireframeLinejoin?a.wireframeLinejoin:"round";this.vertexColors=void 0!==a.vertexColors?a.vertexColors:!1;this.skinning=void 0!==a.skinning?a.skinning:!1;this.morphTargets=void 0!==a.morphTargets?a.morphTargets:!1};
  41. THREE.MeshBasicMaterial.prototype=new THREE.Material;THREE.MeshBasicMaterial.prototype.constructor=THREE.MeshBasicMaterial;THREE.Texture=function(a,c,d,e,b,f){this.image=a;this.mapping=void 0!==c?c:new THREE.UVMapping;this.wrapS=void 0!==d?d:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==e?e:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==b?b:THREE.LinearFilter;this.minFilter=void 0!==f?f:THREE.LinearMipMapLinearFilter;this.needsUpdate=!1};THREE.MultiplyOperation=0;THREE.MixOperation=1;
  42. THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.ByteType=9;THREE.UnsignedByteType=10;THREE.ShortType=11;THREE.UnsignedShortType=12;THREE.IntType=13;THREE.UnsignedIntType=14;THREE.FloatType=15;THREE.AlphaFormat=16;THREE.RGBFormat=17;THREE.RGBAFormat=18;THREE.LuminanceFormat=19;
  43. THREE.LuminanceAlphaFormat=20;
  44. THREE.Mesh=function(a,c){THREE.Object3D.call(this);this.geometry=a;this.materials=c&&c.length?c:[c];this.overdraw=this.doubleSided=this.flipSided=!1;if(this.geometry&&(this.geometry.boundingSphere||this.geometry.computeBoundingSphere(),this.boundRadius=a.boundingSphere.radius,this.geometry.morphTargets.length)){this.morphTargetBase=-1;this.morphTargetForcedOrder=[];this.morphTargetInfluences=[];this.morphTargetDictionary={};for(var d=0;d<this.geometry.morphTargets.length;d++)this.morphTargetInfluences.push(0),this.morphTargetDictionary[this.geometry.morphTargets[d].name]=
  45. d}};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh;THREE.Mesh.prototype.supr=THREE.Object3D.prototype;THREE.Scene=function(){THREE.Object3D.call(this);this.matrixAutoUpdate=!1;this.objects=[];this.__objectsAdded=[]};THREE.Scene.prototype=new THREE.Object3D;THREE.Scene.prototype.constructor=THREE.Scene;THREE.Scene.prototype.supr=THREE.Object3D.prototype;THREE.Scene.prototype.addChild=function(a){this.supr.addChild.call(this,a);this.addChildRecurse(a)};
  46. THREE.Scene.prototype.addChildRecurse=function(a){!(a instanceof THREE.Camera)&&-1===this.objects.indexOf(a)&&(this.objects.push(a),this.__objectsAdded.push(a));for(var c=0;c<a.children.length;c++)this.addChildRecurse(a.children[c])};THREE.Scene.prototype.addObject=THREE.Scene.prototype.addChild;
  47. THREE.ShaderChunk={map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\n#endif",map_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv;\n#endif",default_vertex:"#ifndef USE_MORPHTARGETS\n#ifndef USE_SKINNING\ngl_Position = projectionMatrix * mvPosition;\n#endif\n#endif"};
  48. THREE.UniformsUtils={clone:function(a){var c,d,e,b={};for(c in a)for(d in b[c]={},a[c])e=a[c][d],b[c][d]=e instanceof THREE.Color||e instanceof THREE.Vector3||e instanceof THREE.Texture?e.clone():e;return b}};
  49. THREE.UniformsLib={common:{diffuse:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},map:{type:"t",value:0,texture:null},lightMap:{type:"t",value:2,texture:null},envMap:{type:"t",value:1,texture:null},useRefract:{type:"i",value:0},reflectivity:{type:"f",value:1},refractionRatio:{type:"f",value:0.98},combine:{type:"i",value:0},fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)},morphTargetInfluences:{type:"f",
  50. value:0}}};
  51. THREE.ShaderLib={basic:{uniforms:THREE.UniformsLib.common,fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;",THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,"void main() {\ngl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.envmap_fragment,"}"].join("\n"),vertexShader:[THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,
  52. "void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n")}};
  53. THREE.WebGLRenderer=function(a){function c(a,d){var c;"fragment"==a?c=b.createShader(b.FRAGMENT_SHADER):"vertex"==a&&(c=b.createShader(b.VERTEX_SHADER));b.shaderSource(c,d);b.compileShader(c);return!b.getShaderParameter(c,b.COMPILE_STATUS)?(console.error(b.getShaderInfoLog(c)),console.error(d),null):c}function d(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return b.NEAREST;default:return b.LINEAR}}var e=this,b,f=document.createElement("canvas"),
  54. g=[],h=null,m=null,p=null,q=null,n=null,s=null,r=0,j=0,o=0,w=0,v=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],k=new THREE.Matrix4,F=new Float32Array(16),K=new Float32Array(16),G=new THREE.Vector4,a=a||{};stencil=!1;antialias=void 0!==a.antialias?a.antialias:!1;clearColor=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0);clearAlpha=void 0!==a.clearAlpha?a.clearAlpha:0;this.data={vertices:0,faces:0,drawCalls:0};this.domElement=
  55. f;this.sortObjects=this.autoClear=!0;(function(a,c,d,e){try{if(!(b=f.getContext("experimental-webgl",{antialias:a,stencil:e})))throw"Error creating WebGL context.";}catch(g){console.error(g)}console.log(navigator.userAgent+" | "+b.getParameter(b.VERSION)+" | "+b.getParameter(b.VENDOR)+" | "+b.getParameter(b.RENDERER)+" | "+b.getParameter(b.SHADING_LANGUAGE_VERSION));b.clearColor(0,0,0,1);b.clearDepth(1);b.enable(b.DEPTH_TEST);b.depthFunc(b.LEQUAL);b.frontFace(b.CCW);b.cullFace(b.BACK);b.enable(b.CULL_FACE);
  56. b.enable(b.BLEND);b.blendEquation(b.FUNC_ADD);b.blendFunc(b.SRC_ALPHA,b.ONE_MINUS_SRC_ALPHA);b.clearColor(c.r,c.g,c.b,d)})(antialias,clearColor,clearAlpha,stencil);this.context=b;this.setSize=function(a,b){f.width=a;f.height=b;this.setViewport(0,0,f.width,f.height)};this.setViewport=function(a,c,d,e){r=a;j=c;o=d;w=e;b.viewport(r,j,o,w)};this.clear=function(){b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT|b.STENCIL_BUFFER_BIT)};this.initMaterial=function(a){var d,e=THREE.ShaderLib.basic;a.uniforms=
  57. THREE.UniformsUtils.clone(e.uniforms);a.vertexShader=e.vertexShader;a.fragmentShader=e.fragmentShader;a:{var f=a.fragmentShader,h=a.vertexShader,t=a.uniforms,A=a.attributes,l={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap},u,k,e=[];e.push("basic");for(u in l)e.push(u),e.push(l[u]);e=e.join();u=0;for(k=g.length;u<k;u++)if(g[u].code==e){e=g[u].program;break a}u=b.createProgram();prefix_fragment=["#ifdef GL_ES\nprecision highp float;\n#endif",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":
  58. "",l.lightMap?"#define USE_LIGHTMAP":"",l.vertexColors?"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");prefix_vertex=[0<b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?"#define VERTEX_TEXTURES":"",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":"",l.lightMap?"#define USE_LIGHTMAP":"",l.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec2 uv;\n"].join("\n");
  59. b.attachShader(u,c("fragment",prefix_fragment+f));b.attachShader(u,c("vertex",prefix_vertex+h));b.linkProgram(u);b.getProgramParameter(u,b.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+b.getProgramParameter(u,b.VALIDATE_STATUS)+", gl error ["+b.getError()+"]");u.uniforms={};u.attributes={};var j,m,f="viewMatrix,modelViewMatrix,projectionMatrix,objectMatrix,cameraPosition,cameraInverseMatrix".split(",");for(j in t)f.push(j);j=f;t=0;for(f=j.length;t<f;t++)h=j[t],u.uniforms[h]=
  60. b.getUniformLocation(u,h);f=["position","uv"];for(m in A)f.push(m);m=f;A=0;for(j=m.length;A<j;A++)t=m[A],u.attributes[t]=b.getAttribLocation(u,t);g.push({program:u,code:e});e=u}a.program=e;e=a.program.attributes;b.enableVertexAttribArray(e.position);for(d in a.attributes)0<=e[d]&&b.enableVertexAttribArray(e[d])};this.render=function(a,c,f,g){var y,t,A,l;e.data.vertices=0;e.data.faces=0;e.data.drawCalls=0;c.matrixAutoUpdate&&c.update(void 0,!0);a.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(K);
  61. c.projectionMatrix.flattenToArray(F);k.multiply(c.projectionMatrix,c.matrixWorldInverse);v[0].set(k.n41-k.n11,k.n42-k.n12,k.n43-k.n13,k.n44-k.n14);v[1].set(k.n41+k.n11,k.n42+k.n12,k.n43+k.n13,k.n44+k.n14);v[2].set(k.n41+k.n21,k.n42+k.n22,k.n43+k.n23,k.n44+k.n24);v[3].set(k.n41-k.n21,k.n42-k.n22,k.n43-k.n23,k.n44-k.n24);v[4].set(k.n41-k.n31,k.n42-k.n32,k.n43-k.n33,k.n44-k.n34);v[5].set(k.n41+k.n31,k.n42+k.n32,k.n43+k.n33,k.n44+k.n34);for(l=0;6>l;l++)t=v[l],t.divideScalar(Math.sqrt(t.x*t.x+t.y*t.y+
  62. t.z*t.z));this.initWebGLObjects(a);f&&!f.__webglFramebuffer&&(void 0===f.depthBuffer&&(f.depthBuffer=!0),void 0===f.stencilBuffer&&(f.stencilBuffer=!0),f.__webglFramebuffer=b.createFramebuffer(),f.__webglRenderbuffer=b.createRenderbuffer(),f.__webglTexture=b.createTexture(),b.bindTexture(b.TEXTURE_2D,f.__webglTexture),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,paramThreeToGL(f.wrapS)),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,paramThreeToGL(f.wrapT)),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,
  63. paramThreeToGL(f.magFilter)),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,paramThreeToGL(f.minFilter)),b.texImage2D(b.TEXTURE_2D,0,paramThreeToGL(f.format),f.width,f.height,0,paramThreeToGL(f.format),paramThreeToGL(f.type),null),b.bindRenderbuffer(b.RENDERBUFFER,f.__webglRenderbuffer),b.bindFramebuffer(b.FRAMEBUFFER,f.__webglFramebuffer),b.framebufferTexture2D(b.FRAMEBUFFER,b.COLOR_ATTACHMENT0,b.TEXTURE_2D,f.__webglTexture,0),f.depthBuffer&&!f.stencilBuffer?(b.renderbufferStorage(b.RENDERBUFFER,
  64. b.DEPTH_COMPONENT16,f.width,f.height),b.framebufferRenderbuffer(b.FRAMEBUFFER,b.DEPTH_ATTACHMENT,b.RENDERBUFFER,f.__webglRenderbuffer)):f.depthBuffer&&f.stencilBuffer?(b.renderbufferStorage(b.RENDERBUFFER,b.DEPTH_STENCIL,f.width,f.height),b.framebufferRenderbuffer(b.FRAMEBUFFER,b.DEPTH_STENCIL_ATTACHMENT,b.RENDERBUFFER,f.__webglRenderbuffer)):b.renderbufferStorage(b.RENDERBUFFER,b.RGBA4,f.width,f.height),b.bindTexture(b.TEXTURE_2D,null),b.bindRenderbuffer(b.RENDERBUFFER,null),b.bindFramebuffer(b.FRAMEBUFFER,
  65. null));f?(l=f.__webglFramebuffer,t=f.width,f=f.height):(l=null,t=o,f=w);l!=m&&(b.bindFramebuffer(b.FRAMEBUFFER,l),b.viewport(r,j,t,f),m=l);(this.autoClear||g)&&this.clear();g=a.__webglObjects.length;for(f=0;f<g;f++)if(t=a.__webglObjects[f],l=t.object,l.visible){if(!(y=!(l instanceof THREE.Mesh)))a:{A=l.matrixWorld;for(var u=-l.geometry.boundingSphere.radius*Math.max(l.scale.x,Math.max(l.scale.y,l.scale.z)),H=0;6>H;H++)if(y=v[H].x*A.n14+v[H].y*A.n24+v[H].z*A.n34+v[H].w,y<=u){y=!1;break a}y=!0}if(y){l.matrixWorld.flattenToArray(l._objectMatrixArray);
  66. y=l;y._modelViewMatrix.multiplyToArray(c.matrixWorldInverse,y.matrixWorld,y._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(y._modelViewMatrix).transposeIntoArray(y._normalMatrixArray);var C=void 0,u=t.object,H=t.opaque,L=t.transparent;L.count=0;y=H.count=0;for(A=u.materials.length;y<A;y++)if(C=u.materials[y]){var I=C.transparent?L:H;I.list[I.count]=C;I.count+=1}t.render=!0;this.sortObjects&&(G.copy(l.position),k.multiplyVector3(G),t.z=G.z)}else t.render=!1}else t.render=!1;f=THREE.NormalBlending;
  67. f!=n&&(b.blendEquationSeparate(b.FUNC_ADD,b.FUNC_ADD),b.blendFuncSeparate(b.SRC_ALPHA,b.ONE_MINUS_SRC_ALPHA,b.ONE,b.ONE_MINUS_SRC_ALPHA),n=f);for(f=0;f<g;f++)if(t=a.__webglObjects[f],t.render){l=t.object;c=t.buffer;t=t.opaque;y=l;p!=y.doubleSided&&(y.doubleSided?b.disable(b.CULL_FACE):b.enable(b.CULL_FACE),p=y.doubleSided);q!=y.flipSided&&(y.flipSided?b.frontFace(b.CW):b.frontFace(b.CCW),q=y.flipSided);for(y=0;y<t.count;y++)if(A=t.list[y],u=A.depthTest,s!=u&&(u?b.enable(b.DEPTH_TEST):b.disable(b.DEPTH_TEST),
  68. s=u),u=c,H=l,0!=A.opacity){var L=void 0,D=A,I=H;D.program||e.initMaterial(D,I);var C=D.program,R=C.uniforms,S=D.uniforms;C!=h&&(b.useProgram(C),h=C);b.uniformMatrix4fv(R.projectionMatrix,!1,F);if(D instanceof THREE.MeshBasicMaterial){var J=S;J.diffuse.value=D.color;J.opacity.value=D.opacity;J.map.texture=D.map;J.lightMap.texture=D.lightMap;J.envMap.texture=D.envMap;J.reflectivity.value=D.reflectivity;J.refractionRatio.value=D.refractionRatio;J.combine.value=D.combine;J.useRefract.value=D.envMap&&
  69. D.envMap.mapping instanceof THREE.CubeRefractionMapping}var J=C,B=D=void 0,z=void 0,x=void 0,E=void 0;for(D in S)if(E=J.uniforms[D])if(B=S[D],x=B.type,z=B.value,"i"==x)b.uniform1i(E,z);else if("f"==x)b.uniform1f(E,z);else if("fv1"==x)b.uniform1fv(E,z);else if("fv"==x)b.uniform3fv(E,z);else if("v2"==x)b.uniform2f(E,z.x,z.y);else if("v3"==x)b.uniform3f(E,z.x,z.y,z.z);else if("v4"==x)b.uniform4f(E,z.x,z.y,z.z,z.w);else if("c"==x)b.uniform3f(E,z.r,z.g,z.b);else if("t"==x&&(b.uniform1i(E,z),B=B.texture))if(B.image instanceof
  70. Array&&6==B.image.length)setCubeTexture(B,z);else{if(B.needsUpdate){B.__webglInit?(b.bindTexture(b.TEXTURE_2D,B.__webglTexture),b.texSubImage2D(b.TEXTURE_2D,0,0,0,b.RGBA,b.UNSIGNED_BYTE,B.image)):(B.__webglTexture=b.createTexture(),b.bindTexture(b.TEXTURE_2D,B.__webglTexture),b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,B.image),B.__webglInit=!0);var x=b.TEXTURE_2D,E=B,Q=B.image;0==(Q.width&Q.width-1)&&0==(Q.height&Q.height-1)?(b.texParameteri(x,b.TEXTURE_WRAP_S,paramThreeToGL(E.wrapS)),
  71. b.texParameteri(x,b.TEXTURE_WRAP_T,paramThreeToGL(E.wrapT)),b.texParameteri(x,b.TEXTURE_MAG_FILTER,paramThreeToGL(E.magFilter)),b.texParameteri(x,b.TEXTURE_MIN_FILTER,paramThreeToGL(E.minFilter)),b.generateMipmap(x)):(b.texParameteri(x,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE),b.texParameteri(x,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE),b.texParameteri(x,b.TEXTURE_MAG_FILTER,d(E.magFilter)),b.texParameteri(x,b.TEXTURE_MIN_FILTER,d(E.minFilter)));b.bindTexture(b.TEXTURE_2D,null);B.needsUpdate=!1}b.activeTexture(b.TEXTURE0+
  72. z);b.bindTexture(b.TEXTURE_2D,B.__webglTexture)}b.uniformMatrix4fv(R.modelViewMatrix,!1,I._modelViewMatrixArray);b.uniformMatrix3fv(R.normalMatrix,!1,I._normalMatrixArray);C=C.attributes;!A.morphTargets&&0<=C.position&&(b.bindBuffer(b.ARRAY_BUFFER,u.__webglVertexBuffer),b.vertexAttribPointer(C.position,3,b.FLOAT,!1,0,0));if(A.attributes)for(L in A.attributes)0<=C[L]&&(I=A.attributes[L],b.bindBuffer(b.ARRAY_BUFFER,I.buffer),b.vertexAttribPointer(C[L],I.size,b.FLOAT,!1,0,0));0<=C.uv&&(u.__webglUVBuffer?
  73. (b.bindBuffer(b.ARRAY_BUFFER,u.__webglUVBuffer),b.vertexAttribPointer(C.uv,2,b.FLOAT,!1,0,0),b.enableVertexAttribArray(C.uv)):b.disableVertexAttribArray(C.uv));H instanceof THREE.Mesh&&(b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,u.__webglFaceBuffer),b.drawElements(b.TRIANGLES,u.__webglFaceCount,b.UNSIGNED_SHORT,0),e.data.vertices+=u.__webglFaceCount,e.data.faces+=u.__webglFaceCount/3,e.data.drawCalls++)}}};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=
  74. []);for(;a.__objectsAdded.length;){var c=a.__objectsAdded[0],d=a,e=void 0,f=void 0,g=void 0;void 0==c._modelViewMatrix&&(c._modelViewMatrix=new THREE.Matrix4,c._normalMatrixArray=new Float32Array(9),c._modelViewMatrixArray=new Float32Array(16),c._objectMatrixArray=new Float32Array(16),c.matrixWorld.flattenToArray(c._objectMatrixArray));if(c instanceof THREE.Mesh){f=c.geometry;if(void 0==f.geometryGroups){var g=f,h=void 0,l=void 0,j=void 0,k=void 0,m=void 0,n=void 0,r={};g.geometryGroups={};j=0;for(k=
  75. g.faces.length;j<k;j++){for(var m=g.faces[j],o=n=m.materials,p=[],h=0,l=o.length;h<l;h++)void 0==o[h]?p.push("undefined"):p.push(o[h].id);h=p.join("_");void 0==r[h]&&(r[h]={hash:h,counter:0});l=r[h].hash+"_"+r[h].counter;void 0==g.geometryGroups[l]&&(g.geometryGroups[l]={faces:[],materials:n,vertices:0});m=m instanceof THREE.Face3?3:4;65535<g.geometryGroups[l].vertices+m&&(r[h].counter+=1,l=r[h].hash+"_"+r[h].counter,void 0==g.geometryGroups[l]&&(g.geometryGroups[l]={faces:[],materials:n,vertices:0}));
  76. g.geometryGroups[l].faces.push(j);g.geometryGroups[l].vertices+=m}}for(e in f.geometryGroups){g=f.geometryGroups[e];if(!g.__webglVertexBuffer){j=g;j.__webglVertexBuffer=b.createBuffer();j.__webglUVBuffer=b.createBuffer();j.__webglFaceBuffer=b.createBuffer();for(var j=g,k=c,q=void 0,r=n=0,m=k.geometry,o=m.faces,p=j.faces,h=0,l=p.length;h<l;h++)q=p[h],q=o[q],q instanceof THREE.Face3&&(n+=3,r+=1);h=k;q=q=void 0;p=[];l=0;for(o=h.materials.length;l<o;l++)(q=h.materials[l])&&p.push(q);h=p;a:{p=h.length;
  77. for(l=0;l<p;l++)if(o=h[l],o.map||o.lightMap||o instanceof THREE.MeshShaderMaterial){h=!0;break a}h=!1}j.__vertexArray=new Float32Array(3*n);if(h){if(0<m.faceUvs.length||0<m.faceVertexUvs.length)j.__uvArray=new Float32Array(2*n);if(1<m.faceUvs.length||1<m.faceVertexUvs.length)j.__uv2Array=new Float32Array(2*n)}j.__faceArray=new Uint16Array(3*r+(k.geometry.edgeFaces?6*k.geometry.edgeFaces.length:0));j.__uvType=h;j.__webglFaceCount=3*r+(k.geometry.edgeFaces?6*k.geometry.edgeFaces.length:0);f.__dirtyVertices=
  78. !0;f.__dirtyMorphTargets=!0;f.__dirtyElements=!0;f.__dirtyUvs=!0;f.__dirtyNormals=!0;f.__dirtyTangents=!0;f.__dirtyColors=!0}d.__webglObjects.push({buffer:g,object:c,opaque:{list:[],count:0},transparent:{list:[],count:0}})}}a.__objectsAdded.splice(0,1)}c=0;for(d=a.__webglObjects.length;c<d;c++)if(e=a.__webglObjects[c].object,j=f=void 0,e instanceof THREE.Mesh){g=e.geometry;for(f in g.geometryGroups){k=g.geometryGroups[f];n=!1;for(j in k.__webglCustomAttributes)if(k.__webglCustomAttributes[j].needsUpdate){n=
  79. !0;break}if(g.__dirtyVertices||g.__dirtyMorphTargets||g.__dirtyElements||g.__dirtyUvs||g.__dirtyNormals||g.__dirtyColors||g.__dirtyTangents||n){for(var n=b.DYNAMIC_DRAW,s=void 0,v=void 0,z=void 0,x=void 0,w=m=void 0,p=o=l=h=0,q=k.__vertexArray,G=k.__uvArray,F=k.__faceArray,r=k.__uvType,s=e.geometry,K=s.__dirtyVertices,U=s.__dirtyElements,V=s.__dirtyUvs,T=s.vertices,W=k.faces,Y=s.faces,X=s.faceVertexUvs[0],s=0,v=W.length;s<v;s++)if(z=W[s],x=Y[z],X&&(m=X[z]),x instanceof THREE.Face3){K&&(z=T[x.a].position,
  80. w=T[x.b].position,x=T[x.c].position,q[l]=z.x,q[l+1]=z.y,q[l+2]=z.z,q[l+3]=w.x,q[l+4]=w.y,q[l+5]=w.z,q[l+6]=x.x,q[l+7]=x.y,q[l+8]=x.z,l+=9);if(V&&void 0!==m&&r)for(x=0;3>x;x++)z=m[x],G[o]=z.u,G[o+1]=z.v,o+=2;U&&(F[p]=h,F[p+1]=h+1,F[p+2]=h+2,p+=3,h+=3)}K&&(b.bindBuffer(b.ARRAY_BUFFER,k.__webglVertexBuffer),b.bufferData(b.ARRAY_BUFFER,q,n));V&&0<o&&(b.bindBuffer(b.ARRAY_BUFFER,k.__webglUVBuffer),b.bufferData(b.ARRAY_BUFFER,G,n));U&&(b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,k.__webglFaceBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,
  81. F,n))}}g.__dirtyVertices=!1;g.__dirtyMorphTargets=!1;g.__dirtyElements=!1;g.__dirtyUvs=!1;g.__dirtyNormals=!1;g.__dirtyTangents=!1;g.__dirtyColors=!1}}};
  82. THREE.Sphere=function(a,c,d){THREE.Geometry.call(this);for(var d=d||6,e,b=Math.PI,f=Math.max(3,c||8),g=Math.max(2,d),d=[],c=0;c<g+1;c++){e=c/g;var h=a*Math.cos(e*b),m=a*Math.sin(e*b),p=[],q=0;for(e=0;e<f;e++){var n=2*e/f,s=m*Math.sin(n*b),n=m*Math.cos(n*b);(0==c||c==g)&&0<e||(q=this.vertices.push(new THREE.Vertex(new THREE.Vector3(n,h,s)))-1);p.push(q)}d.push(p)}for(var r,j,o,b=d.length,c=0;c<b;c++)if(f=d[c].length,0<c)for(e=0;e<f;e++){p=e==f-1;g=d[c][p?0:e+1];h=d[c][p?f-1:e];m=d[c-1][p?f-1:e];p=
  83. d[c-1][p?0:e+1];s=c/(b-1);r=(c-1)/(b-1);j=(e+1)/f;var n=e/f,q=new THREE.UV(1-j,s),s=new THREE.UV(1-n,s),n=new THREE.UV(1-n,r),w=new THREE.UV(1-j,r);c<d.length-1&&(r=this.vertices[g].position.clone(),j=this.vertices[h].position.clone(),o=this.vertices[m].position.clone(),r.normalize(),j.normalize(),o.normalize(),this.faces.push(new THREE.Face3(g,h,m,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(j.x,j.y,j.z),new THREE.Vector3(o.x,o.y,o.z)])),this.faceVertexUvs[0].push([q,s,n]));1<c&&(r=this.vertices[g].position.clone(),
  84. j=this.vertices[m].position.clone(),o=this.vertices[p].position.clone(),r.normalize(),j.normalize(),o.normalize(),this.faces.push(new THREE.Face3(g,m,p,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(j.x,j.y,j.z),new THREE.Vector3(o.x,o.y,o.z)])),this.faceVertexUvs[0].push([q,n,w]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:a}};THREE.Sphere.prototype=new THREE.Geometry;THREE.Sphere.prototype.constructor=THREE.Sphere;
  85. window.requestAnimationFrame||(window.requestAnimationFrame=function(){return window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}());try{document.addEventListener("contextmenu",onRightClick,!1)}catch(event$$3){}"yes"==getURLParameter("logo")&&(document.getElementById("pannellum_logo").style.display="inline");
  86. getURLParameter("title")&&(document.getElementById("title_box").innerHTML=getURLParameter("title"));getURLParameter("author")&&(document.getElementById("author_box").innerHTML="by "+getURLParameter("author"));
  87. if(getURLParameter("license")){var licenseType;switch(parseInt(getURLParameter("license"))){case 0:licenseType="by";break;case 1:licenseType="by-sa";break;case 2:licenseType="by-nd";break;case 3:licenseType="by-nc";break;case 4:licenseType="by-nc-sa";break;case 5:licenseType="by-nc-nd"}document.getElementById("author_box").innerHTML+='<a rel="license" target="_blank" href="http://creativecommons.org/licenses/'+licenseType+'/3.0/"><div id="license"></div></a>';var license=document.getElementById("license").style;
  88. license.backgroundImage="url('http://i.creativecommons.org/l/"+licenseType+"/3.0/80x15.png')";license.width="80px"}var popoutmode=!1;"yes"==getURLParameter("popout")&&(document.getElementById("fullwindowtoggle_button").classList.add("fullwindowtoggle_button_active"),popoutmode=!0);
  89. var camera,scene,renderer,renderGL,fov=70,texture_placeholder,isUserInteracting=!1,onMouseDownMouseX=0,onMouseDownMouseY=0,lon=0,onMouseDownLon=0,lat=0,onMouseDownLat=0,phi=0,theta=0,keysDown=Array(10),fullWindowActive=!1,loaded=!1,error=!1,isTimedOut=!1,about_box=document.getElementById("about_box");
  90. "yes"==getURLParameter("autoload")||"yes"==getURLParameter("popoutautoload")?("yes"!=getURLParameter("popoutautoload")&&(document.getElementById("load_box").style.display="inline"),init(),animate()):document.getElementById("load_button").style.display="table";
  91. function init(){var a,c;a=document.getElementById("container");camera=new THREE.Camera(fov,window.innerWidth/window.innerHeight,1,1100);scene=new THREE.Scene;var d=new Image,e=new THREE.Texture(d);d.onload=function(){e.needsUpdate=!0;c=new THREE.Mesh(new THREE.Sphere(500,60,40),new THREE.MeshBasicMaterial({map:e}));c.scale.x=-1;try{scene.addObject(c)}catch(b){document.getElementById("load_box").style.display="none",document.getElementById("nocanvas").style.display="table",error=!0}try{renderer=new THREE.WebGLRenderer,
  92. renderer.setSize(window.innerWidth,window.innerHeight),renderer.initWebGLObjects(scene)}catch(d){document.getElementById("load_box").style.display="none",document.getElementById("nocanvas").style.display="table",error=!0}a.appendChild(renderer.domElement);document.addEventListener("mousedown",onDocumentMouseDown,!1);document.addEventListener("mousemove",onDocumentMouseMove,!1);document.addEventListener("mouseup",onDocumentMouseUp,!1);document.addEventListener("mousewheel",onDocumentMouseWheel,!1);
  93. document.addEventListener("DOMMouseScroll",onDocumentMouseWheel,!1);document.addEventListener("onresize",onDocumentResize,!1);document.addEventListener("mozfullscreenchange",onFullScreenChange,!1);document.addEventListener("webkitfullscreenchange",onFullScreenChange,!1);document.addEventListener("fullscreenchange",onFullScreenChange,!1);document.addEventListener("mozfullscreenerror",fullScreenError,!1);document.addEventListener("webkitfullscreenerror",fullScreenError,!1);document.addEventListener("fullscreenerror",
  94. fullScreenError,!1);window.addEventListener("resize",onDocumentResize,!1);document.addEventListener("keydown",onDocumentKeyPress,!1);document.addEventListener("keyup",onDocumentKeyUp,!1);window.addEventListener("blur",clearKeys,!1);renderInit();setTimeout("isTimedOut = true",500);setInterval("keyRepeat()",10)};d.src=getURLParameter("panorama");document.getElementById("page").className="grab"}
  95. function onRightClick(a){document.getElementById("about").style.left=a.clientX+"px";document.getElementById("about").style.top=a.clientY+"px";clearTimeout(onRightClick.t1);clearTimeout(onRightClick.t2);document.getElementById("about").style.display="block";document.getElementById("about").style.opacity=1;onRightClick.t1=setTimeout(function(){document.getElementById("about").style.opacity=0},2E3);onRightClick.t2=setTimeout(function(){document.getElementById("about").style.display="none"},2500);a.preventDefault()}
  96. function onDocumentMouseDown(a){isUserInteracting=!0;onPointerDownPointerX=a.clientX;onPointerDownPointerY=a.clientY;onPointerDownLon=lon;onPointerDownLat=lat;document.getElementById("page").className="grabbing"}function onDocumentMouseMove(a){isUserInteracting&&(lon=0.1*(onPointerDownPointerX-a.clientX)+onPointerDownLon,lat=0.1*(a.clientY-onPointerDownPointerY)+onPointerDownLat,animate())}function onDocumentMouseUp(){isUserInteracting=!1;document.getElementById("page").className="grab"}
  97. function onDocumentMouseWheel(a){a.preventDefault();35<=fov&&105>=fov&&(a.wheelDeltaY?fov-=0.05*a.wheelDeltaY:a.wheelDelta?fov-=0.05*a.wheelDelta:a.detail&&(fov+=1.5*a.detail));35>fov?fov=35:105<fov&&(fov=105);camera.projectionMatrix=THREE.Matrix4.makePerspective(fov,window.innerWidth/window.innerHeight,1,1100);render()}
  98. function onDocumentKeyPress(a){a.preventDefault();keynumber=a.keycode;a.which&&(keynumber=a.which);if(109==keynumber||189==keynumber||17==keynumber)keysDown[0]=!0;if(107==keynumber||187==keynumber||16==keynumber)keysDown[1]=!0;27==keynumber&&(!0==fullWindowActive||!0==popoutmode)&&toggleFullWindow();38==keynumber&&(keysDown[2]=!0);87==keynumber&&(keysDown[6]=!0);40==keynumber&&(keysDown[3]=!0);83==keynumber&&(keysDown[7]=!0);37==keynumber&&(keysDown[4]=!0);65==keynumber&&(keysDown[8]=!0);39==keynumber&&
  99. (keysDown[5]=!0);68==keynumber&&(keysDown[9]=!0)}function clearKeys(){for(i=0;10>i;i++)keysDown[i]=!1}
  100. function onDocumentKeyUp(a){a.preventDefault();keynumber=a.keycode;a.which&&(keynumber=a.which);if(109==keynumber||189==keynumber||17==keynumber)keysDown[0]=!1;if(107==keynumber||187==keynumber||16==keynumber)keysDown[1]=!1;38==keynumber&&(keysDown[2]=!1);87==keynumber&&(keysDown[6]=!1);40==keynumber&&(keysDown[3]=!1);83==keynumber&&(keysDown[7]=!1);37==keynumber&&(keysDown[4]=!1);65==keynumber&&(keysDown[8]=!1);39==keynumber&&(keysDown[5]=!1);68==keynumber&&(keysDown[9]=!1)}
  101. function keyRepeat(){!0==keysDown[0]&&zoomOut(1);!0==keysDown[1]&&zoomIn(1);if(!0==keysDown[2]||!0==keysDown[6])lat+=1,animate();if(!0==keysDown[3]||!0==keysDown[7])lat-=1,animate();if(!0==keysDown[4]||!0==keysDown[8])lon-=1,animate();if(!0==keysDown[5]||!0==keysDown[9])lon+=1,animate()}
  102. function onDocumentResize(){try{camera.aspect=window.innerWidth/window.innerHeight,renderer.setSize(window.innerWidth,window.innerHeight),camera.projectionMatrix=THREE.Matrix4.makePerspective(fov,window.innerWidth/window.innerHeight,1,1100),render(),onFullScreenChange()}catch(a){}}function animate(){render();isUserInteracting&&requestAnimationFrame(animate)}
  103. function render(){try{lat=Math.max(-85,Math.min(85,lat)),phi=(90-lat)*Math.PI/180,theta=lon*Math.PI/180,camera.target.position.x=500*Math.sin(phi)*Math.cos(theta),camera.target.position.y=500*Math.cos(phi),camera.target.position.z=500*Math.sin(phi)*Math.sin(theta),renderer.render(scene,camera)}catch(a){}}
  104. function renderInit(){try{camera.target.x=0,camera.target.y=0,camera.target.z=0,renderer.render(scene,camera),isTimedOut?(document.getElementById("load_box").style.display="none",loaded=!0):requestAnimationFrame(renderInit)}catch(a){}}function getURLParameter(a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");a=RegExp("[\\?&]"+a+"=([^&#]*)").exec(unescape(window.location.href));return null==a?"":a[1]}
  105. function toggleFullWindow(){if(loaded&&!error)if(!fullWindowActive&&!popoutmode)try{var a=document.getElementById("page");a.requestFullscreen?a.requestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullScreen()}catch(c){fullScreenError()}else document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen(),"yes"==getURLParameter("popout")&&window.close()}
  106. function onFullScreenChange(){document.fullscreen||document.mozFullScreen||document.webkitIsFullScreen?(document.getElementById("fullwindowtoggle_button").classList.add("fullwindowtoggle_button_active"),fullWindowActive=!0):(document.getElementById("fullwindowtoggle_button").classList.remove("fullwindowtoggle_button_active"),fullWindowActive=!1)}
  107. function fullScreenError(){if("yes"!=getURLParameter("popout")){var a="width="+screen.width+",height="+screen.height+",left=0,top=0",c=window.location.href+"&popout=yes";try{camera.aspect=window.innerWidth/window.innerHeight,c+="&popoutautoload=yes"}catch(d){}window.open(c,null,a)}else window.close()}function zoomIn(a){40<=fov&&(fov-=a,camera.projectionMatrix=THREE.Matrix4.makePerspective(fov,window.innerWidth/window.innerHeight,1,1100),render());40>fov?fov=40:100<fov&&(fov=100)}
  108. function zoomOut(a){100>=fov&&(fov+=a,camera.projectionMatrix=THREE.Matrix4.makePerspective(fov,window.innerWidth/window.innerHeight,1,1100),render());40>fov?fov=40:100<fov&&(fov=100)}function load(){document.getElementById("load_button").style.display="none";document.getElementById("load_box").style.display="inline";init();animate()};</script></div></body></html>