From 8dda43495320536adcfcf0b50e32c763d3b603d7 Mon Sep 17 00:00:00 2001 From: Scott Nations Date: Wed, 26 Mar 2014 13:57:29 -0500 Subject: [PATCH] Now using glsloptimizer to parse and rewrite shaders. Major enhancements to the state web server. Added state-based shader instancing to avoid recompiles. Fixed issue #113 - Possible bug with REGAL_STATISTICS Corrected handling of GL_POINT_SIZE_MAX state in RegalState. Refreshed apitrace, civetweb, libpng, and GLEW from upstream. --- Makefile | 9 +- Makefile.alphatorus | 68 + Makefile.dreamtorus_static | 2 +- Makefile.glslopt => Makefile.glsloptlib | 2 +- Makefile.pcrelib | 61 + Makefile.regal | 18 +- Makefile.regaltest | 10 +- README.rst | 2 +- build/alphatorus.inc | 114 + build/android/Regal/jni/Android.mk | 34 +- build/android/Regal/jni/Application.mk | 3 + build/apitrace.inc | 1 - build/glslopt.inc | 6 +- .../ios/Regal/Regal.xcodeproj/project.pbxproj | 1088 +- .../mac/Regal/Regal.xcodeproj/project.pbxproj | 1402 +- .../apitrace.xcodeproj/project.pbxproj | 8 - build/pcre.inc | 98 + build/ppapi/vs2010/Regal/Regal.vcxproj | 4 +- build/regal.inc | 15 + build/win32/vs2010/Regal/All.sln | 48 + build/win32/vs2010/Regal/Examples.sln | 12 + build/win32/vs2010/Regal/Libraries.sln | 24 + build/win32/vs2010/Regal/Regal.sln | 28 + build/win32/vs2010/Regal/Regal.vcxproj | 33 +- build/win32/vs2010/Regal/RegalTest.sln | 26 + build/win32/vs2010/Regal/Regallib.vcxproj | 25 +- build/win32/vs2010/Regal/Regalm.vcxproj | 33 +- build/win32/vs2010/Regal/Regalmlib.vcxproj | 25 +- build/win32/vs2010/Regal/Regaltest.vcxproj | 24 +- build/win32/vs2010/Regal/Regalw.vcxproj | 25 +- build/win32/vs2010/Regal/alphatorus.vcxproj | 244 + .../vs2010/Regal/alphatorus_win32.vcxproj | 244 + build/win32/vs2010/Regal/apitracelib.vcxproj | 1 - .../vs2010/Regal/dreamtorus_static.vcxproj | 8 +- build/win32/vs2010/Regal/glsloptlib.vcxproj | 327 + build/win32/vs2010/Regal/pcrelib.vcxproj | 268 + examples/alphatorus/android/.classpath | 8 + examples/alphatorus/android/.project | 33 + .../alphatorus/android/AndroidManifest.xml | 41 + .../alphatorus/android/default.properties | 2 + examples/alphatorus/android/jni/Android.mk | 40 + .../alphatorus/android/jni/Application.mk | 6 + examples/alphatorus/android/jni/gl_code.cpp | 66 + .../alphatorus/android/project.properties | 11 + .../res/drawable-hdpi/ic_launcher_regal.png | Bin 0 -> 4985 bytes .../res/drawable-ldpi/ic_launcher_regal.png | Bin 0 -> 2195 bytes .../res/drawable-mdpi/ic_launcher_regal.png | Bin 0 -> 3398 bytes .../res/drawable-xhdpi/ic_launcher_regal.png | Bin 0 -> 8093 bytes .../alphatorus/android/res/values/strings.xml | 29 + .../regal/alphatorus/AlphatorusActivity.java | 46 + .../com/regal/alphatorus/AlphatorusLib.java | 33 + .../com/regal/alphatorus/AlphatorusView.java | 339 + examples/alphatorus/egl/Makefile | 37 + examples/alphatorus/egl/main.cpp | 431 + examples/alphatorus/glut/code/main.cpp | 187 + .../minimal_glut.xcodeproj/project.pbxproj | 260 + examples/alphatorus/glx/Makefile | 36 + examples/alphatorus/glx/main.cpp | 131 + .../osx/English.lproj/InfoPlist.strings | 2 + .../alphatorus/osx/English.lproj/MainMenu.xib | 3652 + examples/alphatorus/osx/RGLOpenGLContext.h | 39 + examples/alphatorus/osx/RGLOpenGLContext.m | 43 + examples/alphatorus/osx/RegalView.h | 38 + examples/alphatorus/osx/RegalView.mm | 109 + examples/alphatorus/osx/alphatorus-Info.plist | 34 + .../osx/alphatorus.xcodeproj/project.pbxproj | 574 + .../alphatorus/osx/alphatorusAppDelegate.h | 40 + .../alphatorus/osx/alphatorusAppDelegate.mm | 42 + examples/alphatorus/osx/alphatorus_Prefix.pch | 7 + examples/alphatorus/osx/main.mm | 37 + examples/alphatorus/osx/nv.icns | Bin 0 -> 328937 bytes examples/alphatorus/src/render.cpp | 352 + examples/alphatorus/src/render.h | 36 + examples/alphatorus/win32/minimal.cpp | 186 + include/GL/RegalGLEW.h | 44 +- include/GL/RegalGLXEW.h | 54 + scripts/Dispatch.py | 94 + scripts/EmuFilter.py | 2 +- scripts/EmuIff.py | 52 +- scripts/EmuInit.py | 4 + scripts/EmuMarker.py | 18 +- scripts/EmuPpa.py | 8 + scripts/EmuQuads.py | 4 + scripts/Export.py | 2 + scripts/api/ApiRegal.py | 12 +- scripts/js/jquery-ui.min.css | 5 + scripts/js/jquery-ui.min.js | 12 + scripts/js/jquery.min.js | 6 + scripts/js/js2c.py | 31 + scripts/js/regalweb.js | 517 + scripts/regal/Regal.py | 15 + scripts/regal/RegalContext.py | 281 +- scripts/regal/RegalDispatch.py | 2 +- scripts/regal/RegalDispatchHttp.py | 414 + scripts/regal/RegalDispatchTraceExclude.py | 1 - scripts/regal/RegalToken.py | 4 +- src/apitrace/Dalvik.markdown | 46 +- src/apitrace/README.markdown | 5 + src/apitrace/common/os.hpp | 6 - src/apitrace/common/os_posix.cpp | 9 + src/apitrace/common/trace_writer_local.cpp | 3 +- src/apitrace/dispatch/glproc.hpp | 352 +- src/apitrace/dispatch/glproc.py | 2 +- src/apitrace/specs/cglapi.py | 8 +- src/apitrace/specs/eglapi.py | 4 +- src/apitrace/specs/glapi.py | 45 +- src/apitrace/specs/glesapi.py | 9 - src/apitrace/specs/glparams.py | 311 +- src/apitrace/specs/gltypes.py | 11 + src/apitrace/specs/scripts/gltxt.py | 2 +- src/apitrace/specs/scripts/xml2glparams.py | 54 + src/apitrace/wrappers/egltrace.py | 2 +- src/apitrace/wrappers/glcaps.cpp | 3 + src/apitrace/wrappers/gltrace.py | 28 +- src/apitrace/wrappers/gltrace_state.cpp | 18 +- src/apitrace/wrappers/regaltrace.cpp | 2746 +- src/apitrace/wrappers/trace.cpp | 116 - src/apitrace/wrappers/trace.hpp | 65 - src/apitrace/wrappers/trace.py | 10 - src/civetweb/RELEASE_NOTES.md | 20 +- src/civetweb/civetweb.c | 534 +- src/civetweb/civetweb.h | 44 +- src/civetweb/main.c | 298 +- src/glew/include/GL/glew.h | 44 +- src/glew/include/GL/glxew.h | 38 + src/glew/src/glew.c | 35 + src/glew/src/glewinfo.c | 18 + src/glsl/README.md | 87 + src/glsl/contrib/glslopt/Main.cpp | 148 + src/glsl/contrib/glslopt/Makefile | 16 + src/glsl/contrib/glslopt/Readme | 13 + src/glsl/contrib/glslopt/SourceFiles | 105 + src/glsl/contrib/glslopt/glslopt.bdgcfg | 10 + src/glsl/contrib/glslopt/glslopt.sln | 26 + src/glsl/contrib/glslopt/glslopt.vcproj | 897 + src/glsl/generateParsers.sh | 11 + src/glsl/include/c99/inttypes.h | 305 + src/glsl/include/c99/stdbool.h | 46 + src/glsl/include/c99/stdint.h | 278 + src/glsl/include/c99_compat.h | 145 + src/glsl/license.txt | 21 + src/glsl/regal/regal_glsl.cpp | 435 + src/glsl/regal/regal_glsl.h | 58 + src/glsl/removeDeletedByUs.sh | 14 + src/glsl/src/getopt/SConscript | 15 + src/glsl/src/getopt/getopt.h | 82 + src/glsl/src/getopt/getopt_long.c | 511 + src/glsl/src/glsl/.dir-locals.el | 3 + src/glsl/src/glsl/Makefile | 99 + src/glsl/src/glsl/README | 228 + src/glsl/src/glsl/SConscript | 141 + src/glsl/src/glsl/TODO | 12 + src/glsl/src/glsl/ast.h | 883 + src/glsl/src/glsl/ast_array_index.cpp | 178 + src/glsl/src/glsl/ast_expr.cpp | 95 + src/glsl/src/glsl/ast_function.cpp | 1574 + src/glsl/src/glsl/ast_to_hir.cpp | 4315 ++ src/glsl/src/glsl/ast_type.cpp | 118 + .../glsl/builtin_compiler/builtin_stubs.cpp | 39 + src/glsl/src/glsl/builtin_function.cpp | 20211 +++++ src/glsl/src/glsl/builtin_types.h | 368 + src/glsl/src/glsl/builtin_variables.cpp | 1195 + .../src/glsl/builtins/glsl/determinant.glsl | 71 + src/glsl/src/glsl/builtins/glsl/inverse.glsl | 106 + src/glsl/src/glsl/builtins/ir/abs.ir | 41 + src/glsl/src/glsl/builtins/ir/acos.ir | 29 + src/glsl/src/glsl/builtins/ir/acosh.ir | 21 + src/glsl/src/glsl/builtins/ir/all.ir | 16 + src/glsl/src/glsl/builtins/ir/any.ir | 16 + src/glsl/src/glsl/builtins/ir/asin.ir | 109 + src/glsl/src/glsl/builtins/ir/asinh.ir | 53 + src/glsl/src/glsl/builtins/ir/atan.ir | 134 + src/glsl/src/glsl/builtins/ir/atanh.ir | 37 + src/glsl/src/glsl/builtins/ir/ceil.ir | 21 + src/glsl/src/glsl/builtins/ir/clamp.ir | 148 + src/glsl/src/glsl/builtins/ir/cos.ir | 21 + src/glsl/src/glsl/builtins/ir/cosh.ir | 30 + src/glsl/src/glsl/builtins/ir/cross.ir | 9 + src/glsl/src/glsl/builtins/ir/dFdx.ir | 21 + src/glsl/src/glsl/builtins/ir/dFdy.ir | 21 + src/glsl/src/glsl/builtins/ir/degrees.ir | 21 + src/glsl/src/glsl/builtins/ir/distance.ir | 31 + src/glsl/src/glsl/builtins/ir/dot.ir | 25 + src/glsl/src/glsl/builtins/ir/equal.ir | 73 + src/glsl/src/glsl/builtins/ir/exp.ir | 21 + src/glsl/src/glsl/builtins/ir/exp2.ir | 21 + src/glsl/src/glsl/builtins/ir/faceforward.ir | 37 + .../src/glsl/builtins/ir/floatBitsToInt.ir | 21 + .../src/glsl/builtins/ir/floatBitsToUint.ir | 21 + src/glsl/src/glsl/builtins/ir/floor.ir | 21 + src/glsl/src/glsl/builtins/ir/fract.ir | 22 + src/glsl/src/glsl/builtins/ir/ftransform.ir | 9 + src/glsl/src/glsl/builtins/ir/fwidth.ir | 29 + src/glsl/src/glsl/builtins/ir/greaterThan.ir | 55 + .../src/glsl/builtins/ir/greaterThanEqual.ir | 55 + .../src/glsl/builtins/ir/intBitsToFloat.ir | 21 + src/glsl/src/glsl/builtins/ir/inversesqrt.ir | 21 + src/glsl/src/glsl/builtins/ir/isinf.ir | 17 + src/glsl/src/glsl/builtins/ir/isnan.ir | 17 + src/glsl/src/glsl/builtins/ir/length.ir | 21 + src/glsl/src/glsl/builtins/ir/lessThan.ir | 55 + .../src/glsl/builtins/ir/lessThanEqual.ir | 55 + src/glsl/src/glsl/builtins/ir/log.ir | 21 + src/glsl/src/glsl/builtins/ir/log2.ir | 21 + .../src/glsl/builtins/ir/matrixCompMult.ir | 91 + src/glsl/src/glsl/builtins/ir/max.ir | 127 + src/glsl/src/glsl/builtins/ir/min.ir | 127 + src/glsl/src/glsl/builtins/ir/mix.ir | 88 + src/glsl/src/glsl/builtins/ir/mod.ir | 43 + src/glsl/src/glsl/builtins/ir/modf.ir | 37 + src/glsl/src/glsl/builtins/ir/noise1.ir | 18 + src/glsl/src/glsl/builtins/ir/noise2.ir | 61 + src/glsl/src/glsl/builtins/ir/noise3.ir | 73 + src/glsl/src/glsl/builtins/ir/noise4.ir | 97 + src/glsl/src/glsl/builtins/ir/normalize.ir | 21 + src/glsl/src/glsl/builtins/ir/not.ir | 16 + src/glsl/src/glsl/builtins/ir/notEqual.ir | 73 + src/glsl/src/glsl/builtins/ir/outerProduct.ir | 92 + src/glsl/src/glsl/builtins/ir/packHalf2x16.ir | 6 + .../src/glsl/builtins/ir/packSnorm2x16.ir | 6 + src/glsl/src/glsl/builtins/ir/packSnorm4x8.ir | 6 + .../src/glsl/builtins/ir/packUnorm2x16.ir | 6 + src/glsl/src/glsl/builtins/ir/packUnorm4x8.ir | 6 + src/glsl/src/glsl/builtins/ir/pow.ir | 25 + src/glsl/src/glsl/builtins/ir/radians.ir | 21 + src/glsl/src/glsl/builtins/ir/reflect.ir | 58 + src/glsl/src/glsl/builtins/ir/refract.ir | 102 + src/glsl/src/glsl/builtins/ir/round.ir | 21 + src/glsl/src/glsl/builtins/ir/roundEven.ir | 21 + src/glsl/src/glsl/builtins/ir/sign.ir | 42 + src/glsl/src/glsl/builtins/ir/sin.ir | 21 + src/glsl/src/glsl/builtins/ir/sinh.ir | 30 + src/glsl/src/glsl/builtins/ir/smoothstep.ir | 100 + src/glsl/src/glsl/builtins/ir/sqrt.ir | 21 + src/glsl/src/glsl/builtins/ir/step.ir | 68 + src/glsl/src/glsl/builtins/ir/tan.ir | 21 + src/glsl/src/glsl/builtins/ir/tanh.ir | 42 + src/glsl/src/glsl/builtins/ir/transpose.ir | 139 + src/glsl/src/glsl/builtins/ir/trunc.ir | 21 + .../src/glsl/builtins/ir/uintBitsToFloat.ir | 21 + .../src/glsl/builtins/ir/unpackHalf2x16.ir | 6 + .../src/glsl/builtins/ir/unpackSnorm2x16.ir | 6 + .../src/glsl/builtins/ir/unpackSnorm4x8.ir | 6 + .../src/glsl/builtins/ir/unpackUnorm2x16.ir | 6 + .../src/glsl/builtins/ir/unpackUnorm4x8.ir | 6 + .../src/glsl/builtins/profiles/100es.frag | 6 + .../src/glsl/builtins/profiles/100es.glsl | 296 + .../src/glsl/builtins/profiles/100es.vert | 6 + src/glsl/src/glsl/builtins/profiles/110.frag | 40 + src/glsl/src/glsl/builtins/profiles/110.glsl | 332 + src/glsl/src/glsl/builtins/profiles/110.vert | 25 + src/glsl/src/glsl/builtins/profiles/120.frag | 39 + src/glsl/src/glsl/builtins/profiles/120.glsl | 364 + src/glsl/src/glsl/builtins/profiles/120.vert | 21 + src/glsl/src/glsl/builtins/profiles/130.frag | 141 + src/glsl/src/glsl/builtins/profiles/130.glsl | 904 + src/glsl/src/glsl/builtins/profiles/130.vert | 2 + src/glsl/src/glsl/builtins/profiles/140.frag | 140 + src/glsl/src/glsl/builtins/profiles/140.glsl | 989 + src/glsl/src/glsl/builtins/profiles/150.frag | 140 + src/glsl/src/glsl/builtins/profiles/150.glsl | 1005 + .../src/glsl/builtins/profiles/300es.frag | 84 + .../src/glsl/builtins/profiles/300es.glsl | 749 + .../profiles/ARB_shader_bit_encoding.glsl | 22 + .../profiles/ARB_shader_texture_lod.frag | 17 + .../profiles/ARB_shader_texture_lod.glsl | 46 + .../ARB_shading_language_packing.glsl | 14 + .../profiles/ARB_texture_cube_map_array.glsl | 19 + .../profiles/ARB_texture_multisample.glsl | 18 + .../profiles/ARB_texture_query_lod.frag | 38 + .../profiles/ARB_texture_rectangle.glsl | 7 + .../profiles/EXT_shader_texture_lod.frag | 19 + .../profiles/EXT_shader_texture_lod.vert | 10 + .../profiles/EXT_shadow_samplers.frag | 2 + .../profiles/EXT_shadow_samplers.vert | 2 + .../builtins/profiles/EXT_texture_array.frag | 11 + .../builtins/profiles/EXT_texture_array.vert | 11 + .../profiles/OES_EGL_image_external.glsl | 6 + .../profiles/OES_standard_derivatives.frag | 20 + .../builtins/profiles/OES_texture_3D.frag | 7 + .../builtins/profiles/OES_texture_3D.vert | 7 + .../glsl/builtins/tools/generate_builtins.py | 303 + .../tools/generate_matrixCompMultGLSL.py | 28 + .../tools/generate_outerProductGLSL.py | 23 + .../builtins/tools/generate_transposeGLSL.py | 28 + .../glsl/builtins/tools/texture_builtins.py | 678 + src/glsl/src/glsl/glcpp/README | 30 + src/glsl/src/glsl/glcpp/glcpp-lex.c | 2565 + src/glsl/src/glsl/glcpp/glcpp-lex.l | 322 + src/glsl/src/glsl/glcpp/glcpp-parse.c | 4278 + src/glsl/src/glsl/glcpp/glcpp-parse.h | 141 + src/glsl/src/glsl/glcpp/glcpp-parse.y | 2073 + src/glsl/src/glsl/glcpp/glcpp.h | 234 + src/glsl/src/glsl/glcpp/pp.c | 160 + src/glsl/src/glsl/glsl_lexer.cpp | 4010 + src/glsl/src/glsl/glsl_lexer.ll | 584 + src/glsl/src/glsl/glsl_optimizer.cpp | 438 + src/glsl/src/glsl/glsl_optimizer.h | 49 + src/glsl/src/glsl/glsl_parser.cpp | 5595 ++ src/glsl/src/glsl/glsl_parser.h | 544 + src/glsl/src/glsl/glsl_parser.yy | 2037 + src/glsl/src/glsl/glsl_parser_extras.cpp | 1289 + src/glsl/src/glsl/glsl_parser_extras.h | 386 + src/glsl/src/glsl/glsl_symbol_table.cpp | 165 + src/glsl/src/glsl/glsl_symbol_table.h | 125 + src/glsl/src/glsl/glsl_types.cpp | 1064 + src/glsl/src/glsl/glsl_types.h | 632 + src/glsl/src/glsl/hir_field_selection.cpp | 102 + src/glsl/src/glsl/ir.cpp | 1826 + src/glsl/src/glsl/ir.h | 2044 + src/glsl/src/glsl/ir_basic_block.cpp | 133 + src/glsl/src/glsl/ir_basic_block.h | 28 + src/glsl/src/glsl/ir_builder.cpp | 365 + src/glsl/src/glsl/ir_builder.h | 183 + src/glsl/src/glsl/ir_clone.cpp | 475 + src/glsl/src/glsl/ir_constant_expression.cpp | 1720 + .../src/glsl/ir_expression_flattening.cpp | 90 + src/glsl/src/glsl/ir_expression_flattening.h | 38 + src/glsl/src/glsl/ir_function.cpp | 216 + src/glsl/src/glsl/ir_function_can_inline.cpp | 76 + .../src/glsl/ir_function_detect_recursion.cpp | 378 + src/glsl/src/glsl/ir_function_inlining.h | 30 + src/glsl/src/glsl/ir_hierarchical_visitor.cpp | 323 + src/glsl/src/glsl/ir_hierarchical_visitor.h | 188 + src/glsl/src/glsl/ir_hv_accept.cpp | 417 + src/glsl/src/glsl/ir_import_prototypes.cpp | 122 + src/glsl/src/glsl/ir_optimization.h | 113 + src/glsl/src/glsl/ir_print_glsl_visitor.cpp | 1151 + src/glsl/src/glsl/ir_print_glsl_visitor.h | 41 + src/glsl/src/glsl/ir_print_visitor.cpp | 535 + src/glsl/src/glsl/ir_print_visitor.h | 97 + src/glsl/src/glsl/ir_reader.cpp | 1037 + src/glsl/src/glsl/ir_reader.h | 34 + src/glsl/src/glsl/ir_rvalue_visitor.cpp | 254 + src/glsl/src/glsl/ir_rvalue_visitor.h | 74 + src/glsl/src/glsl/ir_uniform.h | 166 + src/glsl/src/glsl/ir_unused_structs.cpp | 140 + src/glsl/src/glsl/ir_unused_structs.h | 26 + src/glsl/src/glsl/ir_validate.cpp | 722 + src/glsl/src/glsl/ir_variable_refcount.cpp | 148 + src/glsl/src/glsl/ir_variable_refcount.h | 70 + src/glsl/src/glsl/ir_visitor.h | 87 + src/glsl/src/glsl/link_functions.cpp | 286 + .../link_uniform_block_active_visitor.cpp | 162 + .../glsl/link_uniform_block_active_visitor.h | 62 + src/glsl/src/glsl/link_uniform_blocks.cpp | 313 + .../src/glsl/link_uniform_initializers.cpp | 185 + src/glsl/src/glsl/link_uniforms.cpp | 748 + src/glsl/src/glsl/link_varyings.cpp | 1164 + src/glsl/src/glsl/link_varyings.h | 235 + src/glsl/src/glsl/linker.cpp | 1938 + src/glsl/src/glsl/linker.h | 161 + src/glsl/src/glsl/list.h | 501 + src/glsl/src/glsl/loop_analysis.cpp | 527 + src/glsl/src/glsl/loop_analysis.h | 255 + src/glsl/src/glsl/loop_controls.cpp | 311 + src/glsl/src/glsl/loop_unroll.cpp | 253 + src/glsl/src/glsl/lower_clip_distance.cpp | 348 + src/glsl/src/glsl/lower_discard.cpp | 198 + src/glsl/src/glsl/lower_discard_flow.cpp | 144 + src/glsl/src/glsl/lower_if_to_cond_assign.cpp | 252 + src/glsl/src/glsl/lower_instructions.cpp | 347 + src/glsl/src/glsl/lower_jumps.cpp | 1023 + src/glsl/src/glsl/lower_mat_op_to_vec.cpp | 428 + src/glsl/src/glsl/lower_noise.cpp | 71 + src/glsl/src/glsl/lower_output_reads.cpp | 158 + src/glsl/src/glsl/lower_packed_varyings.cpp | 465 + src/glsl/src/glsl/lower_packing_builtins.cpp | 1314 + src/glsl/src/glsl/lower_ubo_reference.cpp | 387 + .../lower_variable_index_to_cond_assign.cpp | 540 + .../glsl/lower_vec_index_to_cond_assign.cpp | 301 + .../src/glsl/lower_vec_index_to_swizzle.cpp | 175 + src/glsl/src/glsl/lower_vector.cpp | 224 + src/glsl/src/glsl/main.cpp | 292 + src/glsl/src/glsl/opt_algebraic.cpp | 475 + src/glsl/src/glsl/opt_array_splitting.cpp | 407 + src/glsl/src/glsl/opt_constant_folding.cpp | 162 + .../src/glsl/opt_constant_propagation.cpp | 473 + src/glsl/src/glsl/opt_constant_variable.cpp | 229 + src/glsl/src/glsl/opt_copy_propagation.cpp | 355 + .../glsl/opt_copy_propagation_elements.cpp | 502 + src/glsl/src/glsl/opt_dead_code.cpp | 151 + src/glsl/src/glsl/opt_dead_code_local.cpp | 323 + src/glsl/src/glsl/opt_dead_functions.cpp | 156 + .../src/glsl/opt_flatten_nested_if_blocks.cpp | 103 + src/glsl/src/glsl/opt_function_inlining.cpp | 392 + src/glsl/src/glsl/opt_if_simplification.cpp | 107 + src/glsl/src/glsl/opt_noop_swizzle.cpp | 84 + src/glsl/src/glsl/opt_redundant_jumps.cpp | 124 + src/glsl/src/glsl/opt_structure_splitting.cpp | 372 + src/glsl/src/glsl/opt_swizzle_swizzle.cpp | 97 + src/glsl/src/glsl/opt_tree_grafting.cpp | 418 + src/glsl/src/glsl/program.h | 39 + src/glsl/src/glsl/ralloc.c | 482 + src/glsl/src/glsl/ralloc.h | 407 + src/glsl/src/glsl/s_expression.cpp | 219 + src/glsl/src/glsl/s_expression.h | 180 + src/glsl/src/glsl/standalone_scaffolding.cpp | 125 + src/glsl/src/glsl/standalone_scaffolding.h | 61 + src/glsl/src/glsl/strtod.c | 79 + src/glsl/src/glsl/strtod.h | 46 + src/glsl/src/mesa/main/compiler.h | 445 + src/glsl/src/mesa/main/config.h | 282 + src/glsl/src/mesa/main/context.h | 75 + src/glsl/src/mesa/main/core.h | 55 + src/glsl/src/mesa/main/dd.h | 56 + src/glsl/src/mesa/main/glheader.h | 234 + src/glsl/src/mesa/main/glminimal.h | 419 + src/glsl/src/mesa/main/hash_table.c | 441 + src/glsl/src/mesa/main/hash_table.h | 107 + src/glsl/src/mesa/main/imports.c | 617 + src/glsl/src/mesa/main/imports.h | 579 + src/glsl/src/mesa/main/macros.h | 770 + src/glsl/src/mesa/main/mtypes.h | 1304 + src/glsl/src/mesa/main/set.c | 347 + src/glsl/src/mesa/main/set.h | 94 + src/glsl/src/mesa/main/simple_list.h | 205 + src/glsl/src/mesa/program/hash_table.h | 288 + src/glsl/src/mesa/program/prog_hash_table.c | 235 + src/glsl/src/mesa/program/prog_instruction.h | 433 + src/glsl/src/mesa/program/prog_parameter.h | 58 + src/glsl/src/mesa/program/prog_statevars.h | 139 + src/glsl/src/mesa/program/symbol_table.c | 489 + src/glsl/src/mesa/program/symbol_table.h | 62 + src/libpng/ANNOUNCE | 136 +- src/libpng/CHANGES | 182 + src/libpng/INSTALL | 41 +- src/libpng/LICENSE | 6 +- src/libpng/README | 4 +- src/libpng/doc/png.5 | 2 +- src/libpng/include/png.h | 37 +- src/libpng/include/pngconf.h | 37 +- src/libpng/src/arm/arm_init.c | 21 +- src/libpng/src/arm/filter_neon.S | 13 +- src/libpng/src/arm/filter_neon_intrinsics.c | 372 + src/libpng/src/png.c | 125 +- src/libpng/src/pngconf.h | 37 +- src/libpng/src/pngdebug.h | 21 +- src/libpng/src/pngerror.c | 32 +- src/libpng/src/pngmem.c | 8 +- src/libpng/src/pngpread.c | 6 +- src/libpng/src/pngpriv.h | 185 +- src/libpng/src/pngread.c | 289 +- src/libpng/src/pngrio.c | 6 +- src/libpng/src/pngrtran.c | 780 +- src/libpng/src/pngrutil.c | 21 +- src/libpng/src/pngset.c | 4 +- src/libpng/src/pngtest.c | 93 +- src/libpng/src/pngtrans.c | 8 +- src/libpng/src/pngwio.c | 8 +- src/libpng/src/pngwrite.c | 104 +- src/libpng/src/pngwtran.c | 203 +- src/lookup3/lookup3.h | 7 +- src/regal/Regal.cpp | 12303 ++- src/regal/RegalConfig.cpp | 6 + src/regal/RegalConfig.h | 1 + src/regal/RegalContext.cpp | 637 +- src/regal/RegalContext.h | 20 +- src/regal/RegalDispatchEmu.cpp | 3581 +- src/regal/RegalDispatchHttp.cpp | 64670 ++++++++++++++++ src/regal/RegalDispatchHttp.h | 206 + src/regal/RegalDispatchTrace.cpp | 131 + src/regal/RegalDispatcherGL.cpp | 8 +- src/regal/RegalDispatcherGL.h | 5 + src/regal/RegalDispatcherGlobal.cpp | 5 + src/regal/RegalDispatcherGlobal.h | 5 + src/regal/RegalFavicon.cpp | 2 +- src/regal/RegalFavicon.h | 2 +- src/regal/RegalHttp.cpp | 1488 +- src/regal/RegalHttp.h | 18 +- src/regal/RegalIff.cpp | 1180 +- src/regal/RegalIff.h | 264 +- src/regal/RegalInit.cpp | 80 +- src/regal/RegalInit.h | 2 + src/regal/RegalLayerInfo.h | 320 + src/regal/RegalLog.cpp | 17 +- src/regal/RegalMutex.h | 69 +- src/regal/RegalObj.h | 2 +- src/regal/RegalPpa.h | 70 + src/regal/RegalQuads.cpp | 17 +- src/regal/RegalQuads.h | 4 +- src/regal/RegalShader.cpp | 549 + src/regal/RegalShader.h | 82 + src/regal/RegalShaderInstance.cpp | 648 + src/regal/RegalShaderInstance.h | 117 + src/regal/RegalState.h | 20 +- src/regal/RegalTexC.cpp | 2 +- src/regal/RegalUtil.h | 16 + src/regal/RegalVao.h | 11 +- src/regal/RegalWebJs.h | 559 + src/regal/stb_image_write.h | 516 + 491 files changed, 214691 insertions(+), 4419 deletions(-) create mode 100644 Makefile.alphatorus rename Makefile.glslopt => Makefile.glsloptlib (93%) create mode 100644 Makefile.pcrelib create mode 100644 build/alphatorus.inc create mode 100644 build/pcre.inc create mode 100644 build/win32/vs2010/Regal/alphatorus.vcxproj create mode 100644 build/win32/vs2010/Regal/alphatorus_win32.vcxproj create mode 100644 build/win32/vs2010/Regal/glsloptlib.vcxproj create mode 100644 build/win32/vs2010/Regal/pcrelib.vcxproj create mode 100644 examples/alphatorus/android/.classpath create mode 100644 examples/alphatorus/android/.project create mode 100644 examples/alphatorus/android/AndroidManifest.xml create mode 100644 examples/alphatorus/android/default.properties create mode 100644 examples/alphatorus/android/jni/Android.mk create mode 100644 examples/alphatorus/android/jni/Application.mk create mode 100644 examples/alphatorus/android/jni/gl_code.cpp create mode 100644 examples/alphatorus/android/project.properties create mode 100644 examples/alphatorus/android/res/drawable-hdpi/ic_launcher_regal.png create mode 100644 examples/alphatorus/android/res/drawable-ldpi/ic_launcher_regal.png create mode 100644 examples/alphatorus/android/res/drawable-mdpi/ic_launcher_regal.png create mode 100644 examples/alphatorus/android/res/drawable-xhdpi/ic_launcher_regal.png create mode 100644 examples/alphatorus/android/res/values/strings.xml create mode 100644 examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusActivity.java create mode 100644 examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusLib.java create mode 100644 examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusView.java create mode 100644 examples/alphatorus/egl/Makefile create mode 100644 examples/alphatorus/egl/main.cpp create mode 100644 examples/alphatorus/glut/code/main.cpp create mode 100644 examples/alphatorus/glut/minimal_glut.xcodeproj/project.pbxproj create mode 100644 examples/alphatorus/glx/Makefile create mode 100644 examples/alphatorus/glx/main.cpp create mode 100644 examples/alphatorus/osx/English.lproj/InfoPlist.strings create mode 100644 examples/alphatorus/osx/English.lproj/MainMenu.xib create mode 100644 examples/alphatorus/osx/RGLOpenGLContext.h create mode 100755 examples/alphatorus/osx/RGLOpenGLContext.m create mode 100644 examples/alphatorus/osx/RegalView.h create mode 100644 examples/alphatorus/osx/RegalView.mm create mode 100644 examples/alphatorus/osx/alphatorus-Info.plist create mode 100644 examples/alphatorus/osx/alphatorus.xcodeproj/project.pbxproj create mode 100644 examples/alphatorus/osx/alphatorusAppDelegate.h create mode 100644 examples/alphatorus/osx/alphatorusAppDelegate.mm create mode 100644 examples/alphatorus/osx/alphatorus_Prefix.pch create mode 100644 examples/alphatorus/osx/main.mm create mode 100644 examples/alphatorus/osx/nv.icns create mode 100644 examples/alphatorus/src/render.cpp create mode 100644 examples/alphatorus/src/render.h create mode 100644 examples/alphatorus/win32/minimal.cpp create mode 100644 scripts/Dispatch.py create mode 100644 scripts/js/jquery-ui.min.css create mode 100644 scripts/js/jquery-ui.min.js create mode 100644 scripts/js/jquery.min.js create mode 100755 scripts/js/js2c.py create mode 100644 scripts/js/regalweb.js create mode 100755 scripts/regal/RegalDispatchHttp.py create mode 100644 src/apitrace/specs/scripts/xml2glparams.py delete mode 100644 src/apitrace/wrappers/trace.cpp delete mode 100644 src/apitrace/wrappers/trace.hpp create mode 100644 src/glsl/README.md create mode 100644 src/glsl/contrib/glslopt/Main.cpp create mode 100644 src/glsl/contrib/glslopt/Makefile create mode 100644 src/glsl/contrib/glslopt/Readme create mode 100644 src/glsl/contrib/glslopt/SourceFiles create mode 100644 src/glsl/contrib/glslopt/glslopt.bdgcfg create mode 100644 src/glsl/contrib/glslopt/glslopt.sln create mode 100644 src/glsl/contrib/glslopt/glslopt.vcproj create mode 100755 src/glsl/generateParsers.sh create mode 100644 src/glsl/include/c99/inttypes.h create mode 100644 src/glsl/include/c99/stdbool.h create mode 100644 src/glsl/include/c99/stdint.h create mode 100644 src/glsl/include/c99_compat.h create mode 100644 src/glsl/license.txt create mode 100644 src/glsl/regal/regal_glsl.cpp create mode 100644 src/glsl/regal/regal_glsl.h create mode 100644 src/glsl/removeDeletedByUs.sh create mode 100644 src/glsl/src/getopt/SConscript create mode 100644 src/glsl/src/getopt/getopt.h create mode 100644 src/glsl/src/getopt/getopt_long.c create mode 100644 src/glsl/src/glsl/.dir-locals.el create mode 100644 src/glsl/src/glsl/Makefile create mode 100644 src/glsl/src/glsl/README create mode 100644 src/glsl/src/glsl/SConscript create mode 100644 src/glsl/src/glsl/TODO create mode 100644 src/glsl/src/glsl/ast.h create mode 100644 src/glsl/src/glsl/ast_array_index.cpp create mode 100644 src/glsl/src/glsl/ast_expr.cpp create mode 100644 src/glsl/src/glsl/ast_function.cpp create mode 100644 src/glsl/src/glsl/ast_to_hir.cpp create mode 100644 src/glsl/src/glsl/ast_type.cpp create mode 100644 src/glsl/src/glsl/builtin_compiler/builtin_stubs.cpp create mode 100644 src/glsl/src/glsl/builtin_function.cpp create mode 100644 src/glsl/src/glsl/builtin_types.h create mode 100644 src/glsl/src/glsl/builtin_variables.cpp create mode 100644 src/glsl/src/glsl/builtins/glsl/determinant.glsl create mode 100644 src/glsl/src/glsl/builtins/glsl/inverse.glsl create mode 100644 src/glsl/src/glsl/builtins/ir/abs.ir create mode 100644 src/glsl/src/glsl/builtins/ir/acos.ir create mode 100644 src/glsl/src/glsl/builtins/ir/acosh.ir create mode 100644 src/glsl/src/glsl/builtins/ir/all.ir create mode 100644 src/glsl/src/glsl/builtins/ir/any.ir create mode 100644 src/glsl/src/glsl/builtins/ir/asin.ir create mode 100644 src/glsl/src/glsl/builtins/ir/asinh.ir create mode 100644 src/glsl/src/glsl/builtins/ir/atan.ir create mode 100644 src/glsl/src/glsl/builtins/ir/atanh.ir create mode 100644 src/glsl/src/glsl/builtins/ir/ceil.ir create mode 100644 src/glsl/src/glsl/builtins/ir/clamp.ir create mode 100644 src/glsl/src/glsl/builtins/ir/cos.ir create mode 100644 src/glsl/src/glsl/builtins/ir/cosh.ir create mode 100644 src/glsl/src/glsl/builtins/ir/cross.ir create mode 100644 src/glsl/src/glsl/builtins/ir/dFdx.ir create mode 100644 src/glsl/src/glsl/builtins/ir/dFdy.ir create mode 100644 src/glsl/src/glsl/builtins/ir/degrees.ir create mode 100644 src/glsl/src/glsl/builtins/ir/distance.ir create mode 100644 src/glsl/src/glsl/builtins/ir/dot.ir create mode 100644 src/glsl/src/glsl/builtins/ir/equal.ir create mode 100644 src/glsl/src/glsl/builtins/ir/exp.ir create mode 100644 src/glsl/src/glsl/builtins/ir/exp2.ir create mode 100644 src/glsl/src/glsl/builtins/ir/faceforward.ir create mode 100644 src/glsl/src/glsl/builtins/ir/floatBitsToInt.ir create mode 100644 src/glsl/src/glsl/builtins/ir/floatBitsToUint.ir create mode 100644 src/glsl/src/glsl/builtins/ir/floor.ir create mode 100644 src/glsl/src/glsl/builtins/ir/fract.ir create mode 100644 src/glsl/src/glsl/builtins/ir/ftransform.ir create mode 100644 src/glsl/src/glsl/builtins/ir/fwidth.ir create mode 100644 src/glsl/src/glsl/builtins/ir/greaterThan.ir create mode 100644 src/glsl/src/glsl/builtins/ir/greaterThanEqual.ir create mode 100644 src/glsl/src/glsl/builtins/ir/intBitsToFloat.ir create mode 100644 src/glsl/src/glsl/builtins/ir/inversesqrt.ir create mode 100644 src/glsl/src/glsl/builtins/ir/isinf.ir create mode 100644 src/glsl/src/glsl/builtins/ir/isnan.ir create mode 100644 src/glsl/src/glsl/builtins/ir/length.ir create mode 100644 src/glsl/src/glsl/builtins/ir/lessThan.ir create mode 100644 src/glsl/src/glsl/builtins/ir/lessThanEqual.ir create mode 100644 src/glsl/src/glsl/builtins/ir/log.ir create mode 100644 src/glsl/src/glsl/builtins/ir/log2.ir create mode 100644 src/glsl/src/glsl/builtins/ir/matrixCompMult.ir create mode 100644 src/glsl/src/glsl/builtins/ir/max.ir create mode 100644 src/glsl/src/glsl/builtins/ir/min.ir create mode 100644 src/glsl/src/glsl/builtins/ir/mix.ir create mode 100644 src/glsl/src/glsl/builtins/ir/mod.ir create mode 100644 src/glsl/src/glsl/builtins/ir/modf.ir create mode 100644 src/glsl/src/glsl/builtins/ir/noise1.ir create mode 100644 src/glsl/src/glsl/builtins/ir/noise2.ir create mode 100644 src/glsl/src/glsl/builtins/ir/noise3.ir create mode 100644 src/glsl/src/glsl/builtins/ir/noise4.ir create mode 100644 src/glsl/src/glsl/builtins/ir/normalize.ir create mode 100644 src/glsl/src/glsl/builtins/ir/not.ir create mode 100644 src/glsl/src/glsl/builtins/ir/notEqual.ir create mode 100644 src/glsl/src/glsl/builtins/ir/outerProduct.ir create mode 100644 src/glsl/src/glsl/builtins/ir/packHalf2x16.ir create mode 100644 src/glsl/src/glsl/builtins/ir/packSnorm2x16.ir create mode 100644 src/glsl/src/glsl/builtins/ir/packSnorm4x8.ir create mode 100644 src/glsl/src/glsl/builtins/ir/packUnorm2x16.ir create mode 100644 src/glsl/src/glsl/builtins/ir/packUnorm4x8.ir create mode 100644 src/glsl/src/glsl/builtins/ir/pow.ir create mode 100644 src/glsl/src/glsl/builtins/ir/radians.ir create mode 100644 src/glsl/src/glsl/builtins/ir/reflect.ir create mode 100644 src/glsl/src/glsl/builtins/ir/refract.ir create mode 100644 src/glsl/src/glsl/builtins/ir/round.ir create mode 100644 src/glsl/src/glsl/builtins/ir/roundEven.ir create mode 100644 src/glsl/src/glsl/builtins/ir/sign.ir create mode 100644 src/glsl/src/glsl/builtins/ir/sin.ir create mode 100644 src/glsl/src/glsl/builtins/ir/sinh.ir create mode 100644 src/glsl/src/glsl/builtins/ir/smoothstep.ir create mode 100644 src/glsl/src/glsl/builtins/ir/sqrt.ir create mode 100644 src/glsl/src/glsl/builtins/ir/step.ir create mode 100644 src/glsl/src/glsl/builtins/ir/tan.ir create mode 100644 src/glsl/src/glsl/builtins/ir/tanh.ir create mode 100644 src/glsl/src/glsl/builtins/ir/transpose.ir create mode 100644 src/glsl/src/glsl/builtins/ir/trunc.ir create mode 100644 src/glsl/src/glsl/builtins/ir/uintBitsToFloat.ir create mode 100644 src/glsl/src/glsl/builtins/ir/unpackHalf2x16.ir create mode 100644 src/glsl/src/glsl/builtins/ir/unpackSnorm2x16.ir create mode 100644 src/glsl/src/glsl/builtins/ir/unpackSnorm4x8.ir create mode 100644 src/glsl/src/glsl/builtins/ir/unpackUnorm2x16.ir create mode 100644 src/glsl/src/glsl/builtins/ir/unpackUnorm4x8.ir create mode 100644 src/glsl/src/glsl/builtins/profiles/100es.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/100es.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/100es.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/110.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/110.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/110.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/120.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/120.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/120.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/130.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/130.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/130.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/140.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/140.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/150.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/150.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/300es.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/300es.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_shader_bit_encoding.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_shader_texture_lod.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_shader_texture_lod.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_shading_language_packing.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_texture_cube_map_array.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_texture_multisample.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_texture_query_lod.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/ARB_texture_rectangle.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/EXT_shader_texture_lod.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/EXT_shader_texture_lod.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/EXT_shadow_samplers.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/EXT_shadow_samplers.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/EXT_texture_array.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/EXT_texture_array.vert create mode 100644 src/glsl/src/glsl/builtins/profiles/OES_EGL_image_external.glsl create mode 100644 src/glsl/src/glsl/builtins/profiles/OES_standard_derivatives.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/OES_texture_3D.frag create mode 100644 src/glsl/src/glsl/builtins/profiles/OES_texture_3D.vert create mode 100755 src/glsl/src/glsl/builtins/tools/generate_builtins.py create mode 100755 src/glsl/src/glsl/builtins/tools/generate_matrixCompMultGLSL.py create mode 100755 src/glsl/src/glsl/builtins/tools/generate_outerProductGLSL.py create mode 100755 src/glsl/src/glsl/builtins/tools/generate_transposeGLSL.py create mode 100755 src/glsl/src/glsl/builtins/tools/texture_builtins.py create mode 100644 src/glsl/src/glsl/glcpp/README create mode 100644 src/glsl/src/glsl/glcpp/glcpp-lex.c create mode 100644 src/glsl/src/glsl/glcpp/glcpp-lex.l create mode 100644 src/glsl/src/glsl/glcpp/glcpp-parse.c create mode 100644 src/glsl/src/glsl/glcpp/glcpp-parse.h create mode 100644 src/glsl/src/glsl/glcpp/glcpp-parse.y create mode 100644 src/glsl/src/glsl/glcpp/glcpp.h create mode 100644 src/glsl/src/glsl/glcpp/pp.c create mode 100644 src/glsl/src/glsl/glsl_lexer.cpp create mode 100644 src/glsl/src/glsl/glsl_lexer.ll create mode 100644 src/glsl/src/glsl/glsl_optimizer.cpp create mode 100644 src/glsl/src/glsl/glsl_optimizer.h create mode 100644 src/glsl/src/glsl/glsl_parser.cpp create mode 100644 src/glsl/src/glsl/glsl_parser.h create mode 100644 src/glsl/src/glsl/glsl_parser.yy create mode 100644 src/glsl/src/glsl/glsl_parser_extras.cpp create mode 100644 src/glsl/src/glsl/glsl_parser_extras.h create mode 100644 src/glsl/src/glsl/glsl_symbol_table.cpp create mode 100644 src/glsl/src/glsl/glsl_symbol_table.h create mode 100644 src/glsl/src/glsl/glsl_types.cpp create mode 100644 src/glsl/src/glsl/glsl_types.h create mode 100644 src/glsl/src/glsl/hir_field_selection.cpp create mode 100644 src/glsl/src/glsl/ir.cpp create mode 100644 src/glsl/src/glsl/ir.h create mode 100644 src/glsl/src/glsl/ir_basic_block.cpp create mode 100644 src/glsl/src/glsl/ir_basic_block.h create mode 100644 src/glsl/src/glsl/ir_builder.cpp create mode 100644 src/glsl/src/glsl/ir_builder.h create mode 100644 src/glsl/src/glsl/ir_clone.cpp create mode 100644 src/glsl/src/glsl/ir_constant_expression.cpp create mode 100644 src/glsl/src/glsl/ir_expression_flattening.cpp create mode 100644 src/glsl/src/glsl/ir_expression_flattening.h create mode 100644 src/glsl/src/glsl/ir_function.cpp create mode 100644 src/glsl/src/glsl/ir_function_can_inline.cpp create mode 100644 src/glsl/src/glsl/ir_function_detect_recursion.cpp create mode 100644 src/glsl/src/glsl/ir_function_inlining.h create mode 100644 src/glsl/src/glsl/ir_hierarchical_visitor.cpp create mode 100644 src/glsl/src/glsl/ir_hierarchical_visitor.h create mode 100644 src/glsl/src/glsl/ir_hv_accept.cpp create mode 100644 src/glsl/src/glsl/ir_import_prototypes.cpp create mode 100644 src/glsl/src/glsl/ir_optimization.h create mode 100644 src/glsl/src/glsl/ir_print_glsl_visitor.cpp create mode 100644 src/glsl/src/glsl/ir_print_glsl_visitor.h create mode 100644 src/glsl/src/glsl/ir_print_visitor.cpp create mode 100644 src/glsl/src/glsl/ir_print_visitor.h create mode 100644 src/glsl/src/glsl/ir_reader.cpp create mode 100644 src/glsl/src/glsl/ir_reader.h create mode 100644 src/glsl/src/glsl/ir_rvalue_visitor.cpp create mode 100644 src/glsl/src/glsl/ir_rvalue_visitor.h create mode 100644 src/glsl/src/glsl/ir_uniform.h create mode 100644 src/glsl/src/glsl/ir_unused_structs.cpp create mode 100644 src/glsl/src/glsl/ir_unused_structs.h create mode 100644 src/glsl/src/glsl/ir_validate.cpp create mode 100644 src/glsl/src/glsl/ir_variable_refcount.cpp create mode 100644 src/glsl/src/glsl/ir_variable_refcount.h create mode 100644 src/glsl/src/glsl/ir_visitor.h create mode 100644 src/glsl/src/glsl/link_functions.cpp create mode 100644 src/glsl/src/glsl/link_uniform_block_active_visitor.cpp create mode 100644 src/glsl/src/glsl/link_uniform_block_active_visitor.h create mode 100644 src/glsl/src/glsl/link_uniform_blocks.cpp create mode 100644 src/glsl/src/glsl/link_uniform_initializers.cpp create mode 100644 src/glsl/src/glsl/link_uniforms.cpp create mode 100644 src/glsl/src/glsl/link_varyings.cpp create mode 100644 src/glsl/src/glsl/link_varyings.h create mode 100644 src/glsl/src/glsl/linker.cpp create mode 100644 src/glsl/src/glsl/linker.h create mode 100644 src/glsl/src/glsl/list.h create mode 100644 src/glsl/src/glsl/loop_analysis.cpp create mode 100644 src/glsl/src/glsl/loop_analysis.h create mode 100644 src/glsl/src/glsl/loop_controls.cpp create mode 100644 src/glsl/src/glsl/loop_unroll.cpp create mode 100644 src/glsl/src/glsl/lower_clip_distance.cpp create mode 100644 src/glsl/src/glsl/lower_discard.cpp create mode 100644 src/glsl/src/glsl/lower_discard_flow.cpp create mode 100644 src/glsl/src/glsl/lower_if_to_cond_assign.cpp create mode 100644 src/glsl/src/glsl/lower_instructions.cpp create mode 100644 src/glsl/src/glsl/lower_jumps.cpp create mode 100644 src/glsl/src/glsl/lower_mat_op_to_vec.cpp create mode 100644 src/glsl/src/glsl/lower_noise.cpp create mode 100644 src/glsl/src/glsl/lower_output_reads.cpp create mode 100644 src/glsl/src/glsl/lower_packed_varyings.cpp create mode 100644 src/glsl/src/glsl/lower_packing_builtins.cpp create mode 100644 src/glsl/src/glsl/lower_ubo_reference.cpp create mode 100644 src/glsl/src/glsl/lower_variable_index_to_cond_assign.cpp create mode 100644 src/glsl/src/glsl/lower_vec_index_to_cond_assign.cpp create mode 100644 src/glsl/src/glsl/lower_vec_index_to_swizzle.cpp create mode 100644 src/glsl/src/glsl/lower_vector.cpp create mode 100644 src/glsl/src/glsl/main.cpp create mode 100644 src/glsl/src/glsl/opt_algebraic.cpp create mode 100644 src/glsl/src/glsl/opt_array_splitting.cpp create mode 100644 src/glsl/src/glsl/opt_constant_folding.cpp create mode 100644 src/glsl/src/glsl/opt_constant_propagation.cpp create mode 100644 src/glsl/src/glsl/opt_constant_variable.cpp create mode 100644 src/glsl/src/glsl/opt_copy_propagation.cpp create mode 100644 src/glsl/src/glsl/opt_copy_propagation_elements.cpp create mode 100644 src/glsl/src/glsl/opt_dead_code.cpp create mode 100644 src/glsl/src/glsl/opt_dead_code_local.cpp create mode 100644 src/glsl/src/glsl/opt_dead_functions.cpp create mode 100644 src/glsl/src/glsl/opt_flatten_nested_if_blocks.cpp create mode 100644 src/glsl/src/glsl/opt_function_inlining.cpp create mode 100644 src/glsl/src/glsl/opt_if_simplification.cpp create mode 100644 src/glsl/src/glsl/opt_noop_swizzle.cpp create mode 100644 src/glsl/src/glsl/opt_redundant_jumps.cpp create mode 100644 src/glsl/src/glsl/opt_structure_splitting.cpp create mode 100644 src/glsl/src/glsl/opt_swizzle_swizzle.cpp create mode 100644 src/glsl/src/glsl/opt_tree_grafting.cpp create mode 100644 src/glsl/src/glsl/program.h create mode 100644 src/glsl/src/glsl/ralloc.c create mode 100644 src/glsl/src/glsl/ralloc.h create mode 100644 src/glsl/src/glsl/s_expression.cpp create mode 100644 src/glsl/src/glsl/s_expression.h create mode 100644 src/glsl/src/glsl/standalone_scaffolding.cpp create mode 100644 src/glsl/src/glsl/standalone_scaffolding.h create mode 100644 src/glsl/src/glsl/strtod.c create mode 100644 src/glsl/src/glsl/strtod.h create mode 100644 src/glsl/src/mesa/main/compiler.h create mode 100644 src/glsl/src/mesa/main/config.h create mode 100644 src/glsl/src/mesa/main/context.h create mode 100644 src/glsl/src/mesa/main/core.h create mode 100644 src/glsl/src/mesa/main/dd.h create mode 100644 src/glsl/src/mesa/main/glheader.h create mode 100644 src/glsl/src/mesa/main/glminimal.h create mode 100644 src/glsl/src/mesa/main/hash_table.c create mode 100644 src/glsl/src/mesa/main/hash_table.h create mode 100644 src/glsl/src/mesa/main/imports.c create mode 100644 src/glsl/src/mesa/main/imports.h create mode 100644 src/glsl/src/mesa/main/macros.h create mode 100644 src/glsl/src/mesa/main/mtypes.h create mode 100644 src/glsl/src/mesa/main/set.c create mode 100644 src/glsl/src/mesa/main/set.h create mode 100644 src/glsl/src/mesa/main/simple_list.h create mode 100644 src/glsl/src/mesa/program/hash_table.h create mode 100644 src/glsl/src/mesa/program/prog_hash_table.c create mode 100644 src/glsl/src/mesa/program/prog_instruction.h create mode 100644 src/glsl/src/mesa/program/prog_parameter.h create mode 100644 src/glsl/src/mesa/program/prog_statevars.h create mode 100644 src/glsl/src/mesa/program/symbol_table.c create mode 100644 src/glsl/src/mesa/program/symbol_table.h create mode 100644 src/libpng/src/arm/filter_neon_intrinsics.c create mode 100644 src/regal/RegalDispatchHttp.cpp create mode 100644 src/regal/RegalDispatchHttp.h create mode 100644 src/regal/RegalLayerInfo.h create mode 100644 src/regal/RegalShader.cpp create mode 100644 src/regal/RegalShader.h create mode 100644 src/regal/RegalShaderInstance.cpp create mode 100644 src/regal/RegalShaderInstance.h create mode 100644 src/regal/RegalWebJs.h create mode 100644 src/regal/stb_image_write.h diff --git a/Makefile b/Makefile index 720cbdd..911a3c6 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,8 @@ include Makefile.zlib include Makefile.libpng include Makefile.snappy include Makefile.apitrace -# include Makefile.glslopt +include Makefile.glsloptlib +include Makefile.pcrelib include Makefile.regal include Makefile.regalw include Makefile.glu @@ -36,6 +37,7 @@ include Makefile.glewinfo include Makefile.dreamtorus include Makefile.dreamtorus_static +include Makefile.alphatorus include Makefile.tiger # Testing @@ -56,4 +58,9 @@ clobber: $(RM) -r lib $(RM) -r bin +# Disable the built-in yacc & lex rules + +%.c: %.y +%.c: %.l + .PHONY: all clean clobber diff --git a/Makefile.alphatorus b/Makefile.alphatorus new file mode 100644 index 0000000..7019514 --- /dev/null +++ b/Makefile.alphatorus @@ -0,0 +1,68 @@ +ifndef MAKEFILE_ALPHATORUS_INCLUDED +MAKEFILE_ALPHATORUS_INCLUDED := 1 + +.PHONY: alphatorus.bin alphatorus.clean + +include build/common.inc + +# Not supported for NaCL or emscripten - Revisit + +ifeq ($(filter nacl% emscripten%,$(SYSTEM)),) + +# +# alphatorus +# + +include Makefile.regal +include Makefile.glut + +ifndef REGAL.STATIC +$(error alphatorus needs Regal.) +endif + +all:: alphatorus.bin + +clean:: alphatorus.clean + +alphatorus.bin: bin/$(SYSTEM)/alphatorus + +alphatorus.clean: + $(RM) -r tmp/$(SYSTEM)/alphatorus/static + $(RM) -r bin/$(SYSTEM)/alphatorus + +ALPHATORUS.SRCS += examples/alphatorus/src/render.cpp +ALPHATORUS.SRCS += examples/alphatorus/glut/code/main.cpp +ALPHATORUS.SRCS.NAMES := $(notdir $(ALPHATORUS.SRCS)) +ALPHATORUS.OBJS := $(addprefix tmp/$(SYSTEM)/alphatorus/static/,$(ALPHATORUS.SRCS.NAMES)) +ALPHATORUS.OBJS := $(ALPHATORUS.OBJS:.cpp=.o) +ALPHATORUS.DEPS := $(ALPHATORUS.DEPS:.o=.d) +ALPHATORUS.CFLAGS := -Iinclude -Iexamples/alphatorus/src +ALPHATORUS.LIBS += -Llib/$(SYSTEM) $(LDFLAGS.GLUT) $(LDFLAGS.GLU) $(LDFLAGS.X11) +ALPHATORUS.LIBS += -lm -pthread + +-include $(ALPHATORUS.DEPS) + +tmp/$(SYSTEM)/alphatorus/static/%.o: examples/alphatorus/src/%.cpp + @mkdir -p $(dir $@) + $(LOG_CXX)$(CCACHE) $(CXX) $(ALPHATORUS.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $< + +tmp/$(SYSTEM)/alphatorus/static/%.o: examples/alphatorus/glut/code/%.cpp + @mkdir -p $(dir $@) + $(LOG_CXX)$(CCACHE) $(CXX) $(ALPHATORUS.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $< + +ALPHATORUS.DEPEND := +ALPHATORUS.DEPEND += lib/$(SYSTEM)/$(REGAL.SHARED) + +ifdef GLUT.SHARED +bin/$(SYSTEM)/alphatorus: lib/$(SYSTEM)/$(GLUT.SHARED) lib/$(SYSTEM)/$(GLU.SHARED) +endif + +bin/$(SYSTEM)/alphatorus: $(ALPHATORUS.OBJS) lib/$(SYSTEM)/$(REGAL.SHARED) + @mkdir -p $(dir $@) + $(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(ALPHATORUS.OBJS) lib/$(SYSTEM)/$(REGAL.SHARED) $(ALPHATORUS.LIBS) $(REGAL.LDFLAGS) +ifneq ($(STRIP),) + $(LOG_STRIP)$(STRIP) -x $@ +endif + +endif +endif diff --git a/Makefile.dreamtorus_static b/Makefile.dreamtorus_static index e2b7254..73eb32b 100644 --- a/Makefile.dreamtorus_static +++ b/Makefile.dreamtorus_static @@ -67,7 +67,7 @@ tmp/$(SYSTEM)/dreamtorus_static/static/%.o: examples/dreamtorus/glut/code/%.cpp $(LOG_CXX)$(CCACHE) $(CXX) $(DREAMTORUS_STATIC.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $< DREAMTORUS_STATIC.DEPEND := -DREAMTORUS_STATIC.DEPEND += lib/$(SYSTEM)/$(REGAL.STATIC) +DREAMTORUS_STATIC.DEPEND += lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) ifdef GLUT.STATIC DREAMTORUS_STATIC.DEPEND += lib/$(SYSTEM)/$(GLUT.STATIC) lib/$(SYSTEM)/$(GLU.STATIC) diff --git a/Makefile.glslopt b/Makefile.glsloptlib similarity index 93% rename from Makefile.glslopt rename to Makefile.glsloptlib index 20b7d24..a712eed 100644 --- a/Makefile.glslopt +++ b/Makefile.glsloptlib @@ -28,7 +28,7 @@ GLSLOPT.OBJS := $(filter %.o,$(GLSLOPT.OBJS)) GLSLOPT.DEPS := $(GLSLOPT.OBJS:.o=.d) GLSLOPT.CFLAGS := $(GLSLOPT.INCLUDE) # quiet build for this thirdparty code for now -GLSLOPT.CFLAGS += -Wno-ignored-qualifiers -Wno-sign-compare -Wno-unneeded-internal-declaration -Wno-overloaded-virtual -Wno-unused-private-field +GLSLOPT.CFLAGS += -Wno-sign-compare ifeq ($(MODE),release) GLSLOPT.CFLAGS += -DNDEBUG diff --git a/Makefile.pcrelib b/Makefile.pcrelib new file mode 100644 index 0000000..2f97aec --- /dev/null +++ b/Makefile.pcrelib @@ -0,0 +1,61 @@ +# +# Makefile for the GLSL Optimizer component of the Regal runtime. +# The GLSL Optimizer is always build into Regal, but you can build +# just this target static library with: +# make -f Makefile.pcrelib +# + +ifndef MAKEFILE_PCRE_INCLUDED +MAKEFILE_PCRE_INCLUDED := 1 + +.PHONY: pcre.lib pcre.clean + +include build/common.inc + +include build/pcre.inc + +ifdef PCRE.STATIC + +all:: pcre.lib + +clean:: pcre.clean + +PCRE.SRCS := $(PCRE.C) +PCRE.SRCS := $(filter %.c,$(PCRE.SRCS)) $(filter %.cc,$(PCRE.SRCS)) $(filter %.cpp,$(PCRE.SRCS)) +PCRE.SRCS.NAMES := $(notdir $(PCRE.SRCS)) +PCRE.OBJS := $(addprefix tmp/$(SYSTEM)/pcre/static/,$(PCRE.SRCS.NAMES)) +PCRE.OBJS := $(PCRE.OBJS:.c=.o) $(PCRE.OBJS:.cpp=.o) +PCRE.OBJS := $(filter %.o,$(PCRE.OBJS)) +PCRE.DEPS := $(PCRE.OBJS:.o=.d) +PCRE.CFLAGS := $(PCRE.INCLUDE) +PCRE.CFLAGS += -DHAVE_CONFIG_H + +ifeq ($(MODE),release) +PCRE.CFLAGS += -DNDEBUG +PCRE.CFLAGS += -DREGAL_NO_ASSERT=1 +endif + +-include $(PCRE.DEPS) + +pcre.lib: lib/$(SYSTEM)/$(PCRE.STATIC) + +pcre.clean: + $(RM) -r tmp/$(SYSTEM)/pcre/static + $(RM) -r lib/$(SYSTEM)/$(PCRE.STATIC) + +tmp/$(SYSTEM)/pcre/static/%.o: src/pcre/%.c + @mkdir -p $(dir $@) + $(LOG_CC)$(CCACHE) $(CC) $(CFLAGS) $(PCRE.CFLAGS) $(PICFLAG) -o $@ -c $< + +lib/$(SYSTEM)/$(PCRE.STATIC): $(PCRE.OBJS) + @mkdir -p $(dir $@) + $(LOG_AR)$(CCACHE) $(AR) cr $@ $(PCRE.OBJS) +ifneq ($(RANLIB),) + $(LOG_RANLIB)$(RANLIB) $@ +endif +ifneq ($(STRIP),) + $(LOG_STRIP)$(STRIP) -x $@ +endif + +endif +endif diff --git a/Makefile.regal b/Makefile.regal index dfec0bf..6ba7fa2 100644 --- a/Makefile.regal +++ b/Makefile.regal @@ -28,6 +28,8 @@ ifdef REGAL.STATIC include Makefile.apitrace include Makefile.libpng +include Makefile.glsloptlib +include Makefile.pcrelib all:: regal.lib @@ -66,7 +68,7 @@ REGAL.SRCS += src/jsonsl/jsonsl.c ifeq ($(MODE),debug) #REGAL.CFLAGS += -DREGAL_ASSERT_VERBOSE=1 -#REGAL.CFLAGS += -DREGAL_NO_ASSERT=1 +#REGAL.CFLAGS += -DREGAL_NO_ASSERT=1 endif # @@ -80,7 +82,7 @@ REGAL.CFLAGS += -DREGAL_DECL_EXPORT=1 REGAL.CFLAGS += -DREGAL_LOG_ALL=0 REGAL.CFLAGS += -DREGAL_LOG_ONCE=0 REGAL.CFLAGS += -DREGAL_LOG_JSON=0 -REGAL.CFLAGS += -DREGAL_NO_HTTP=1 +REGAL.CFLAGS += -DREGAL_HTTP=0 REGAL.CFLAGS += -DREGAL_NO_ASSERT=1 REGAL.CFLAGS += -DREGAL_NO_PNG=1 REGAL.CFLAGS += -DREGAL_STATISTICS=0 @@ -105,7 +107,7 @@ endif ifneq ($(filter nacl% emscripten%,$(SYSTEM)),) REGAL.CFLAGS += -DREGAL_SYS_EMSCRIPTEN=1 -DREGAL_SYS_EGL=1 -DREGAL_SYS_ES2=1 -REGAL.CFLAGS += -DREGAL_NO_HTTP=1 +REGAL.CFLAGS += -DREGAL_HTTP=0 REGAL.CFLAGS += -DREGAL_STATISTICS=0 REGAL.CFLAGS += -Wno-constant-logical-operand REGAL.CFLAGS += -DREGAL_PLUGIN=0 @@ -128,7 +130,7 @@ endif ifneq ($(filter emscripten%,$(SYSTEM)),) REGAL.CFLAGS += -DREGAL_SYS_EMSCRIPTEN=1 -DREGAL_SYS_EGL=1 -DREGAL_SYS_ES2=1 -REGAL.CFLAGS += -DREGAL_NO_HTTP=1 +REGAL.CFLAGS += -DREGAL_HTTP=0 REGAL.CFLAGS += -Wno-constant-logical-operand REGAL.CFLAGS += -DREGAL_PLUGIN=0 REGAL.CFLAGS += -DREGAL_TRACE=0 @@ -236,7 +238,7 @@ regal.lib: lib/$(SYSTEM)/$(REGAL.SHARED) endif endif -lib/$(SYSTEM)/$(REGAL.STATIC): lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) $(REGAL.OBJS) +lib/$(SYSTEM)/$(REGAL.STATIC): lib/$(SYSTEM)/$(GLSLOPT.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) $(REGAL.OBJS) @mkdir -p $(dir $@) $(LOG_AR)$(CCACHE) $(AR) cr $@ $(REGAL.OBJS) ifneq ($(RANLIB),) @@ -247,7 +249,7 @@ ifneq ($(STRIP),) endif REGAL.SHARED.DEPEND := -REGAL.SHARED.DEPEND += lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) +REGAL.SHARED.DEPEND += lib/$(SYSTEM)/$(GLSLOPT.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) ifdef APITRACE.STATIC REGAL.SHARED.DEPEND += lib/$(SYSTEM)/$(APITRACE.STATIC) lib/$(SYSTEM)/$(SNAPPY.STATIC) @@ -274,11 +276,11 @@ endif tmp/$(SYSTEM)/regal/static/%.o: src/regal/%.cpp $(REGAL.HEADERS) @mkdir -p $(dir $@) - $(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $< + $(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(GLSLOPT.INCLUDE) $(REGAL.INCLUDE) -o $@ -c $< tmp/$(SYSTEM)/regal/shared/%.o: src/regal/%.cpp $(REGAL.HEADERS) @mkdir -p $(dir $@) - $(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $< + $(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(GLSLOPT.INCLUDE) $(REGAL.INCLUDE) -o $@ -c $< tmp/$(SYSTEM)/regal/static/%.o: src/civetweb/%.c $(REGAL.HEADERS) @mkdir -p $(dir $@) diff --git a/Makefile.regaltest b/Makefile.regaltest index ce084cf..fdebf3a 100644 --- a/Makefile.regaltest +++ b/Makefile.regaltest @@ -16,6 +16,8 @@ include build/regaltest.inc # include Makefile.regal +include Makefile.pcrelib +include Makefile.glsloptlib include Makefile.gtest ifndef REGAL.STATIC @@ -41,7 +43,7 @@ REGALTEST.SRCS.NAMES := $(notdir $(REGALTEST.SRCS)) REGALTEST.OBJS := $(addprefix tmp/$(SYSTEM)/regaltest/static/,$(REGALTEST.SRCS.NAMES)) REGALTEST.OBJS := $(REGALTEST.OBJS:.cpp=.o) REGALTEST.DEPS := $(REGALTEST.DEPS:.o=.d) -REGALTEST.CFLAGS := -Isrc/googletest/include -Isrc/googlemock/include -Isrc/regal -Isrc/boost -Isrc/lookup3 +REGALTEST.CFLAGS := -Isrc/googletest/include -Isrc/googlemock/include -Isrc/regal -Isrc/boost -Isrc/lookup3 -Isrc/pcre REGALTEST.LIBS := -Llib/$(SYSTEM) $(LDFLAGS.X11) -lm ifeq ($(filter nacl%,$(SYSTEM)),) @@ -56,12 +58,12 @@ tmp/$(SYSTEM)/regaltest/static/%.o: tests/%.cpp @mkdir -p $(dir $@) $(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(REGALTEST.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $< -bin/$(SYSTEM)/regaltest$(BIN_EXTENSION): $(REGALTEST.OBJS) lib/$(SYSTEM)/$(GTEST.STATIC) lib/$(SYSTEM)/$(REGAL.STATIC) $(REGAL.SHARED.DEPEND) +bin/$(SYSTEM)/regaltest$(BIN_EXTENSION): $(REGALTEST.OBJS) lib/$(SYSTEM)/$(GTEST.STATIC) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) $(REGAL.SHARED.DEPEND) @mkdir -p $(dir $@) ifdef APITRACE.STATIC - $(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) $(LDFLAGS.STARTGROUP) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(APITRACE.STATIC) $(LDFLAGS.ENDGROUP) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS) + $(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) $(LDFLAGS.STARTGROUP) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(APITRACE.STATIC) $(LDFLAGS.ENDGROUP) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS) else - $(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) lib/$(SYSTEM)/$(REGAL.STATIC) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS) + $(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS) endif ifneq ($(STRIP),) $(LOG_STRIP)$(STRIP) -x $@ diff --git a/README.rst b/README.rst index 660e6f4..a8d5d84 100644 --- a/README.rst +++ b/README.rst @@ -242,7 +242,7 @@ Browser-based interface - Enabled by default. -- **REGAL_NO_HTTP** --- Build-time and environment variable enable/disable. +- **REGAL_HTTP** --- Build-time and environment variable enable/disable. - **REGAL_HTTP_PORT** --- Port for HTTP connections (8080 by default) - **REGAL_HTTP_LOG_LIMIT** --- Number of lines of logging buffered diff --git a/build/alphatorus.inc b/build/alphatorus.inc new file mode 100644 index 0000000..65d3563 --- /dev/null +++ b/build/alphatorus.inc @@ -0,0 +1,114 @@ +# glu.inc +# +# Generic gnumake .inc for building GLU +# + +# Sources + +GLU.C += src/glu/libtess/dict.c +GLU.C += src/glu/libtess/geom.c +GLU.C += src/glu/libtess/memalloc.c +GLU.C += src/glu/libtess/mesh.c +GLU.C += src/glu/libtess/normal.c +#GLU.C += src/glu/libtess/priorityq-heap.c +GLU.C += src/glu/libtess/priorityq.c +GLU.C += src/glu/libtess/render.c +GLU.C += src/glu/libtess/sweep.c +GLU.C += src/glu/libtess/tess.c +GLU.C += src/glu/libtess/tessmono.c +GLU.C += src/glu/libutil/error.c +GLU.C += src/glu/libutil/glue.c +GLU.C += src/glu/libutil/mipmap.c +GLU.C += src/glu/libutil/project.c +GLU.C += src/glu/libutil/quad.c +GLU.C += src/glu/libutil/registry.c + +GLU.CXX += src/glu/libnurbs/interface/bezierEval.cc +GLU.CXX += src/glu/libnurbs/interface/bezierPatch.cc +GLU.CXX += src/glu/libnurbs/interface/bezierPatchMesh.cc +GLU.CXX += src/glu/libnurbs/interface/glcurveval.cc +GLU.CXX += src/glu/libnurbs/interface/glinterface.cc +GLU.CXX += src/glu/libnurbs/interface/glrenderer.cc +GLU.CXX += src/glu/libnurbs/interface/glsurfeval.cc +GLU.CXX += src/glu/libnurbs/interface/incurveeval.cc +GLU.CXX += src/glu/libnurbs/interface/insurfeval.cc +GLU.CXX += src/glu/libnurbs/internals/arc.cc +GLU.CXX += src/glu/libnurbs/internals/arcsorter.cc +GLU.CXX += src/glu/libnurbs/internals/arctess.cc +GLU.CXX += src/glu/libnurbs/internals/backend.cc +GLU.CXX += src/glu/libnurbs/internals/basiccrveval.cc +GLU.CXX += src/glu/libnurbs/internals/basicsurfeval.cc +GLU.CXX += src/glu/libnurbs/internals/bin.cc +GLU.CXX += src/glu/libnurbs/internals/bufpool.cc +GLU.CXX += src/glu/libnurbs/internals/cachingeval.cc +GLU.CXX += src/glu/libnurbs/internals/ccw.cc +GLU.CXX += src/glu/libnurbs/internals/coveandtiler.cc +GLU.CXX += src/glu/libnurbs/internals/curve.cc +GLU.CXX += src/glu/libnurbs/internals/curvelist.cc +GLU.CXX += src/glu/libnurbs/internals/curvesub.cc +GLU.CXX += src/glu/libnurbs/internals/dataTransform.cc +GLU.CXX += src/glu/libnurbs/internals/displaylist.cc +GLU.CXX += src/glu/libnurbs/internals/flist.cc +GLU.CXX += src/glu/libnurbs/internals/flistsorter.cc +GLU.CXX += src/glu/libnurbs/internals/hull.cc +GLU.CXX += src/glu/libnurbs/internals/intersect.cc +GLU.CXX += src/glu/libnurbs/internals/knotvector.cc +GLU.CXX += src/glu/libnurbs/internals/mapdesc.cc +GLU.CXX += src/glu/libnurbs/internals/mapdescv.cc +GLU.CXX += src/glu/libnurbs/internals/maplist.cc +GLU.CXX += src/glu/libnurbs/internals/mesher.cc +GLU.CXX += src/glu/libnurbs/internals/monotonizer.cc +GLU.CXX += src/glu/libnurbs/internals/monoTriangulationBackend.cc +GLU.CXX += src/glu/libnurbs/internals/mycode.cc +GLU.CXX += src/glu/libnurbs/internals/nurbsinterfac.cc +GLU.CXX += src/glu/libnurbs/internals/nurbstess.cc +GLU.CXX += src/glu/libnurbs/internals/patch.cc +GLU.CXX += src/glu/libnurbs/internals/patchlist.cc +GLU.CXX += src/glu/libnurbs/internals/quilt.cc +GLU.CXX += src/glu/libnurbs/internals/reader.cc +GLU.CXX += src/glu/libnurbs/internals/renderhints.cc +GLU.CXX += src/glu/libnurbs/internals/slicer.cc +GLU.CXX += src/glu/libnurbs/internals/sorter.cc +GLU.CXX += src/glu/libnurbs/internals/splitarcs.cc +GLU.CXX += src/glu/libnurbs/internals/subdivider.cc +GLU.CXX += src/glu/libnurbs/internals/tobezier.cc +GLU.CXX += src/glu/libnurbs/internals/trimline.cc +GLU.CXX += src/glu/libnurbs/internals/trimregion.cc +GLU.CXX += src/glu/libnurbs/internals/trimvertpool.cc +GLU.CXX += src/glu/libnurbs/internals/uarray.cc +GLU.CXX += src/glu/libnurbs/internals/varray.cc +GLU.CXX += src/glu/libnurbs/nurbtess/directedLine.cc +GLU.CXX += src/glu/libnurbs/nurbtess/gridWrap.cc +GLU.CXX += src/glu/libnurbs/nurbtess/monoChain.cc +GLU.CXX += src/glu/libnurbs/nurbtess/monoPolyPart.cc +GLU.CXX += src/glu/libnurbs/nurbtess/monoTriangulation.cc +GLU.CXX += src/glu/libnurbs/nurbtess/partitionX.cc +GLU.CXX += src/glu/libnurbs/nurbtess/partitionY.cc +GLU.CXX += src/glu/libnurbs/nurbtess/polyDBG.cc +GLU.CXX += src/glu/libnurbs/nurbtess/polyUtil.cc +GLU.CXX += src/glu/libnurbs/nurbtess/primitiveStream.cc +GLU.CXX += src/glu/libnurbs/nurbtess/quicksort.cc +GLU.CXX += src/glu/libnurbs/nurbtess/rectBlock.cc +GLU.CXX += src/glu/libnurbs/nurbtess/sampleComp.cc +GLU.CXX += src/glu/libnurbs/nurbtess/sampleCompBot.cc +GLU.CXX += src/glu/libnurbs/nurbtess/sampleCompRight.cc +GLU.CXX += src/glu/libnurbs/nurbtess/sampleCompTop.cc +GLU.CXX += src/glu/libnurbs/nurbtess/sampledLine.cc +GLU.CXX += src/glu/libnurbs/nurbtess/sampleMonoPoly.cc +GLU.CXX += src/glu/libnurbs/nurbtess/searchTree.cc + +# + +GLU.CFLAGS := -Isrc/glu/include -Isrc/glu/libnurbs/interface -Isrc/glu/libnurbs/internals -Isrc/glu/libnurbs/nurbtess +GLU.CFLAGS += -DLIBRARYBUILD + +GLU.SHARED := libRegalGLU.so +GLU.STATIC := libRegalGLUlib.a + +ifneq ($(filter darwin%,$(SYSTEM)),) +GLU.SHARED := libRegalGLU.dylib +endif + +ifneq ($(filter nacl%,$(SYSTEM)),) +GLU.SHARED := +endif diff --git a/build/android/Regal/jni/Android.mk b/build/android/Regal/jni/Android.mk index 31bb666..ff87958 100644 --- a/build/android/Regal/jni/Android.mk +++ b/build/android/Regal/jni/Android.mk @@ -23,6 +23,7 @@ include $(regal_path)/build/zlib.inc include $(regal_path)/build/snappy.inc include $(regal_path)/build/apitrace.inc include $(regal_path)/build/glslopt.inc +include $(regal_path)/build/pcre.inc include $(regal_path)/build/regal.inc # @@ -65,15 +66,20 @@ apitrace_c_includes := $(patsubst $(LOCAL_PATH)/../%,%,$(apitrace_c_includes)) apitrace_export_c_includes := $(regal_path)/include -# # # glsl optimizer # - glslopt_src_files := $(patsubst %,$(regal_path)/%,$(GLSLOPT.CXX)) glslopt_src_files := $(patsubst $(LOCAL_PATH)/%,%,$(glslopt_src_files)) glslopt_c_includes := $(patsubst -I%,$(regal_path)/%,$(GLSLOPT.INCLUDE)) +# +# pcre +# +pcre_src_files := $(patsubst %,$(regal_path)/%,$(PCRE.C)) +pcre_src_files := $(patsubst $(LOCAL_PATH)/%,%,$(pcre_src_files)) +pcre_c_includes := $(patsubst -I%,$(regal_path)/%,$(PCRE.INCLUDE)) + # # regal # @@ -82,7 +88,7 @@ regal_src_files := $(patsubst %,$(regal_path)/%,$(REGAL.CXX)) regal_src_files += $(regal_path)/src/civetweb/civetweb.c $(regal_path)/src/md5/src/md5.c $(regal_path)/src/jsonsl/jsonsl.c regal_src_files := $(patsubst $(LOCAL_PATH)/%,%,$(regal_src_files)) -regal_c_includes := $(regal_path)/include $(regal_path)/src/regal $(regal_path)/src/boost $(regal_path)/src/civetweb $(regal_path)/src/md5/include $(regal_path)/src/lookup3 $(regal_path)/src/jsonsl +regal_c_includes := $(regal_path)/include $(regal_path)/src/regal $(regal_path)/src/path $(regal_path)/src/boost $(regal_path)/src/civetweb $(regal_path)/src/md5/include $(regal_path)/src/lookup3 $(regal_path)/src/jsonsl $(regal_path)/src/glsl/include $(regal_path)/src/glsl/src/glsl $(regal_path)/src/glsl/src/mesa $(regal_path)/src/pcre regal_c_includes := $(patsubst $(LOCAL_PATH)/../%,%,$(regal_c_includes)) regal_export_c_includes := $(regal_path)/include @@ -139,7 +145,7 @@ LOCAL_ARM_MODE := arm include $(BUILD_STATIC_LIBRARY) # include $(CLEAR_VARS) -# LOCAL_MODULE := glslopt +# LOCAL_MODULE := glslopt # LOCAL_SRC_FILES := $(glslopt_src_files) # LOCAL_CFLAGS := $(regal_cflags) # LOCAL_C_INCLUDES := $(glslopt_c_includes) @@ -147,12 +153,31 @@ include $(BUILD_STATIC_LIBRARY) # LOCAL_ARM_MODE := arm # include $(BUILD_STATIC_LIBRARY) +include $(CLEAR_VARS) +LOCAL_MODULE := glslopt +LOCAL_SRC_FILES := $(glslopt_src_files) +LOCAL_CFLAGS := $(regal_cflags) -Wno-redefinitions +LOCAL_C_INCLUDES := $(glslopt_c_includes) +LOCAL_EXPORT_LDLIBS := +LOCAL_ARM_MODE := arm +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) +LOCAL_MODULE := pcre +LOCAL_SRC_FILES := $(pcre_src_files) +LOCAL_CFLAGS := $(regal_cflags) -DHAVE_CONFIG_H=1 -DPCRE_STATIC=1 +LOCAL_C_INCLUDES := $(pcre_c_includes) +LOCAL_EXPORT_LDLIBS := +LOCAL_ARM_MODE := arm +include $(BUILD_STATIC_LIBRARY) + include $(CLEAR_VARS) LOCAL_MODULE := Regal_static LOCAL_SRC_FILES := $(regal_src_files) LOCAL_CFLAGS := $(regal_cflags) LOCAL_C_INCLUDES := $(regal_c_includes) LOCAL_EXPORT_C_INCLUDES := $(regal_export_c_includes) +LOCAL_STATIC_LIBRARIES := glslopt pcre LOCAL_EXPORT_LDLIBS := -llog LOCAL_ARM_MODE := arm include $(BUILD_STATIC_LIBRARY) @@ -164,6 +189,7 @@ LOCAL_CFLAGS := $(regal_cflags) LOCAL_C_INCLUDES := $(regal_c_includes) LOCAL_EXPORT_C_INCLUDES := $(regal_export_c_includes) LOCAL_STATIC_LIBRARIES := apitrace zlib snappy +LOCAL_STATIC_LIBRARIES += glslopt pcre LOCAL_LDLIBS := -llog LOCAL_EXPORT_LDLIBS := -llog LOCAL_ARM_MODE := arm diff --git a/build/android/Regal/jni/Application.mk b/build/android/Regal/jni/Application.mk index 51d58ec..9b19c26 100644 --- a/build/android/Regal/jni/Application.mk +++ b/build/android/Regal/jni/Application.mk @@ -1,3 +1,6 @@ +#seth: need to specify this manually to get the latest +NDK_TOOLCHAIN_VERSION := 4.8 + APP_MODULES := Regal_static Regal APP_STL := stlport_static APP_PLATFORM := android-9 diff --git a/build/apitrace.inc b/build/apitrace.inc index 3cbe34a..06e0cce 100644 --- a/build/apitrace.inc +++ b/build/apitrace.inc @@ -33,7 +33,6 @@ APITRACE.CXX += src/apitrace/dispatch/glproc_regal.cpp APITRACE.CXX += src/apitrace/helpers/eglsize.cpp APITRACE.CXX += src/apitrace/wrappers/glcaps.cpp APITRACE.CXX += src/apitrace/wrappers/gltrace_state.cpp -APITRACE.CXX += src/apitrace/wrappers/trace.cpp APITRACE.CXX += src/apitrace/wrappers/regaltrace.cpp # diff --git a/build/glslopt.inc b/build/glslopt.inc index ec08b38..bb4b68d 100644 --- a/build/glslopt.inc +++ b/build/glslopt.inc @@ -62,7 +62,6 @@ GLSLOPT.CXX += src/glsl/src/glsl/lower_variable_index_to_cond_assign.cpp GLSLOPT.CXX += src/glsl/src/glsl/lower_vec_index_to_cond_assign.cpp GLSLOPT.CXX += src/glsl/src/glsl/lower_vec_index_to_swizzle.cpp GLSLOPT.CXX += src/glsl/src/glsl/lower_vector.cpp -#GLSLOPT.CXX += src/glsl/src/glsl/main.cpp GLSLOPT.CXX += src/glsl/src/glsl/opt_algebraic.cpp GLSLOPT.CXX += src/glsl/src/glsl/opt_array_splitting.cpp GLSLOPT.CXX += src/glsl/src/glsl/opt_constant_folding.cpp @@ -102,10 +101,15 @@ GLSLOPT.H := GLSLOPT.H.OTHER := # +# Includes GLSLOPT.INCLUDE := GLSLOPT.INCLUDE += -Isrc/glsl/include GLSLOPT.INCLUDE += -Isrc/glsl/src/glsl GLSLOPT.INCLUDE += -Isrc/glsl/src/mesa +ifeq ($(PROFILE_OS),Windows) +GLSLOPT.INCLUDES += -Isrc/glsl/include/c99 +endif + GLSLOPT.STATIC ?= libglslopt.a diff --git a/build/ios/Regal/Regal.xcodeproj/project.pbxproj b/build/ios/Regal/Regal.xcodeproj/project.pbxproj index 48c20c6..3b5bbac 100644 --- a/build/ios/Regal/Regal.xcodeproj/project.pbxproj +++ b/build/ios/Regal/Regal.xcodeproj/project.pbxproj @@ -7,6 +7,11 @@ objects = { /* Begin PBXBuildFile section */ + 435914FD182FF3A3002CB92C /* RegalLayerInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914F8182FF3A3002CB92C /* RegalLayerInfo.h */; }; + 435914FE182FF3A3002CB92C /* RegalShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914F9182FF3A3002CB92C /* RegalShader.cpp */; }; + 435914FF182FF3A3002CB92C /* RegalShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914FA182FF3A3002CB92C /* RegalShader.h */; }; + 43591500182FF3A3002CB92C /* RegalShaderInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914FB182FF3A3002CB92C /* RegalShaderInstance.cpp */; }; + 43591501182FF3A3002CB92C /* RegalShaderInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914FC182FF3A3002CB92C /* RegalShaderInstance.h */; }; 4366EEEE15C9B54E00211205 /* RegalEnum.h in Headers */ = {isa = PBXBuildFile; fileRef = 4366EEEA15C9B54E00211205 /* RegalEnum.h */; }; 4366EEEF15C9B54E00211205 /* RegalFavicon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4366EEEB15C9B54E00211205 /* RegalFavicon.cpp */; }; 4366EEF015C9B54E00211205 /* RegalFavicon.h in Headers */ = {isa = PBXBuildFile; fileRef = 4366EEEC15C9B54E00211205 /* RegalFavicon.h */; }; @@ -62,6 +67,241 @@ 43FC5FA415C4619B00D0177C /* RegalVao.h in Headers */ = {isa = PBXBuildFile; fileRef = 43FC5F7715C4619B00D0177C /* RegalVao.h */; }; 43FC5FA715C461AC00D0177C /* civetweb.c in Sources */ = {isa = PBXBuildFile; fileRef = 43FC5FA615C461AC00D0177C /* civetweb.c */; }; 754D3C9517CFFD7200E4C0E0 /* RegalEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 754D3C9417CFFD7200E4C0E0 /* RegalEmu.cpp */; }; + 7558DB3D18C6795A008985A7 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DAE918C6795A008985A7 /* config.h */; }; + 7558DB3E18C6795A008985A7 /* dftables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAEA18C6795A008985A7 /* dftables.c */; }; + 7558DB3F18C6795A008985A7 /* pcre.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DAEC18C6795A008985A7 /* pcre.h */; }; + 7558DB4018C6795A008985A7 /* pcre16_byte_order.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAED18C6795A008985A7 /* pcre16_byte_order.c */; }; + 7558DB4118C6795A008985A7 /* pcre16_chartables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAEE18C6795A008985A7 /* pcre16_chartables.c */; }; + 7558DB4218C6795A008985A7 /* pcre16_compile.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAEF18C6795A008985A7 /* pcre16_compile.c */; }; + 7558DB4318C6795A008985A7 /* pcre16_config.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF018C6795A008985A7 /* pcre16_config.c */; }; + 7558DB4418C6795A008985A7 /* pcre16_dfa_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF118C6795A008985A7 /* pcre16_dfa_exec.c */; }; + 7558DB4518C6795A008985A7 /* pcre16_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF218C6795A008985A7 /* pcre16_exec.c */; }; + 7558DB4618C6795A008985A7 /* pcre16_fullinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF318C6795A008985A7 /* pcre16_fullinfo.c */; }; + 7558DB4718C6795A008985A7 /* pcre16_get.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF418C6795A008985A7 /* pcre16_get.c */; }; + 7558DB4818C6795A008985A7 /* pcre16_globals.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF518C6795A008985A7 /* pcre16_globals.c */; }; + 7558DB4918C6795A008985A7 /* pcre16_jit_compile.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF618C6795A008985A7 /* pcre16_jit_compile.c */; }; + 7558DB4A18C6795A008985A7 /* pcre16_maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF718C6795A008985A7 /* pcre16_maketables.c */; }; + 7558DB4B18C6795A008985A7 /* pcre16_newline.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF818C6795A008985A7 /* pcre16_newline.c */; }; + 7558DB4C18C6795A008985A7 /* pcre16_ord2utf16.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAF918C6795A008985A7 /* pcre16_ord2utf16.c */; }; + 7558DB4D18C6795A008985A7 /* pcre16_printint.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAFA18C6795A008985A7 /* pcre16_printint.c */; }; + 7558DB4E18C6795A008985A7 /* pcre16_refcount.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAFB18C6795A008985A7 /* pcre16_refcount.c */; }; + 7558DB4F18C6795A008985A7 /* pcre16_string_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAFC18C6795A008985A7 /* pcre16_string_utils.c */; }; + 7558DB5018C6795A008985A7 /* pcre16_study.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAFD18C6795A008985A7 /* pcre16_study.c */; }; + 7558DB5118C6795A008985A7 /* pcre16_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAFE18C6795A008985A7 /* pcre16_tables.c */; }; + 7558DB5218C6795A008985A7 /* pcre16_ucd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DAFF18C6795A008985A7 /* pcre16_ucd.c */; }; + 7558DB5318C6795A008985A7 /* pcre16_utf16_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0018C6795A008985A7 /* pcre16_utf16_utils.c */; }; + 7558DB5418C6795A008985A7 /* pcre16_valid_utf16.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0118C6795A008985A7 /* pcre16_valid_utf16.c */; }; + 7558DB5518C6795A008985A7 /* pcre16_version.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0218C6795A008985A7 /* pcre16_version.c */; }; + 7558DB5618C6795A008985A7 /* pcre16_xclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0318C6795A008985A7 /* pcre16_xclass.c */; }; + 7558DB5718C6795A008985A7 /* pcre32_byte_order.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0418C6795A008985A7 /* pcre32_byte_order.c */; }; + 7558DB5818C6795A008985A7 /* pcre32_chartables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0518C6795A008985A7 /* pcre32_chartables.c */; }; + 7558DB5918C6795A008985A7 /* pcre32_compile.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0618C6795A008985A7 /* pcre32_compile.c */; }; + 7558DB5A18C6795A008985A7 /* pcre32_config.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0718C6795A008985A7 /* pcre32_config.c */; }; + 7558DB5B18C6795A008985A7 /* pcre32_dfa_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0818C6795A008985A7 /* pcre32_dfa_exec.c */; }; + 7558DB5C18C6795A008985A7 /* pcre32_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0918C6795A008985A7 /* pcre32_exec.c */; }; + 7558DB5D18C6795A008985A7 /* pcre32_fullinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0A18C6795A008985A7 /* pcre32_fullinfo.c */; }; + 7558DB5E18C6795A008985A7 /* pcre32_get.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0B18C6795A008985A7 /* pcre32_get.c */; }; + 7558DB5F18C6795A008985A7 /* pcre32_globals.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0C18C6795A008985A7 /* pcre32_globals.c */; }; + 7558DB6018C6795A008985A7 /* pcre32_jit_compile.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0D18C6795A008985A7 /* pcre32_jit_compile.c */; }; + 7558DB6118C6795A008985A7 /* pcre32_maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0E18C6795A008985A7 /* pcre32_maketables.c */; }; + 7558DB6218C6795A008985A7 /* pcre32_newline.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB0F18C6795A008985A7 /* pcre32_newline.c */; }; + 7558DB6318C6795A008985A7 /* pcre32_ord2utf32.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1018C6795A008985A7 /* pcre32_ord2utf32.c */; }; + 7558DB6418C6795A008985A7 /* pcre32_printint.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1118C6795A008985A7 /* pcre32_printint.c */; }; + 7558DB6518C6795A008985A7 /* pcre32_refcount.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1218C6795A008985A7 /* pcre32_refcount.c */; }; + 7558DB6618C6795A008985A7 /* pcre32_string_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1318C6795A008985A7 /* pcre32_string_utils.c */; }; + 7558DB6718C6795A008985A7 /* pcre32_study.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1418C6795A008985A7 /* pcre32_study.c */; }; + 7558DB6818C6795A008985A7 /* pcre32_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1518C6795A008985A7 /* pcre32_tables.c */; }; + 7558DB6918C6795A008985A7 /* pcre32_ucd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1618C6795A008985A7 /* pcre32_ucd.c */; }; + 7558DB6A18C6795A008985A7 /* pcre32_utf32_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1718C6795A008985A7 /* pcre32_utf32_utils.c */; }; + 7558DB6B18C6795A008985A7 /* pcre32_valid_utf32.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1818C6795A008985A7 /* pcre32_valid_utf32.c */; }; + 7558DB6C18C6795A008985A7 /* pcre32_version.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1918C6795A008985A7 /* pcre32_version.c */; }; + 7558DB6D18C6795A008985A7 /* pcre32_xclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1A18C6795A008985A7 /* pcre32_xclass.c */; }; + 7558DB6E18C6795A008985A7 /* pcre_byte_order.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1B18C6795A008985A7 /* pcre_byte_order.c */; }; + 7558DB6F18C6795A008985A7 /* pcre_chartables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1C18C6795A008985A7 /* pcre_chartables.c */; }; + 7558DB7018C6795A008985A7 /* pcre_compile.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1D18C6795A008985A7 /* pcre_compile.c */; }; + 7558DB7118C6795A008985A7 /* pcre_config.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1E18C6795A008985A7 /* pcre_config.c */; }; + 7558DB7218C6795A008985A7 /* pcre_dfa_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB1F18C6795A008985A7 /* pcre_dfa_exec.c */; }; + 7558DB7318C6795A008985A7 /* pcre_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2018C6795A008985A7 /* pcre_exec.c */; }; + 7558DB7418C6795A008985A7 /* pcre_fullinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2118C6795A008985A7 /* pcre_fullinfo.c */; }; + 7558DB7518C6795A008985A7 /* pcre_get.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2218C6795A008985A7 /* pcre_get.c */; }; + 7558DB7618C6795A008985A7 /* pcre_globals.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2318C6795A008985A7 /* pcre_globals.c */; }; + 7558DB7718C6795A008985A7 /* pcre_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DB2418C6795A008985A7 /* pcre_internal.h */; }; + 7558DB7818C6795A008985A7 /* pcre_jit_compile.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2518C6795A008985A7 /* pcre_jit_compile.c */; }; + 7558DB7918C6795A008985A7 /* pcre_jit_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2618C6795A008985A7 /* pcre_jit_test.c */; }; + 7558DB7A18C6795A008985A7 /* pcre_maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2718C6795A008985A7 /* pcre_maketables.c */; }; + 7558DB7B18C6795A008985A7 /* pcre_newline.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2818C6795A008985A7 /* pcre_newline.c */; }; + 7558DB7C18C6795A008985A7 /* pcre_ord2utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2918C6795A008985A7 /* pcre_ord2utf8.c */; }; + 7558DB7D18C6795A008985A7 /* pcre_printint.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2A18C6795A008985A7 /* pcre_printint.c */; }; + 7558DB7E18C6795A008985A7 /* pcre_refcount.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2B18C6795A008985A7 /* pcre_refcount.c */; }; + 7558DB7F18C6795A008985A7 /* pcre_scanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DB2C18C6795A008985A7 /* pcre_scanner.h */; }; + 7558DB8018C6795A008985A7 /* pcre_string_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2D18C6795A008985A7 /* pcre_string_utils.c */; }; + 7558DB8118C6795A008985A7 /* pcre_study.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2E18C6795A008985A7 /* pcre_study.c */; }; + 7558DB8218C6795A008985A7 /* pcre_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB2F18C6795A008985A7 /* pcre_tables.c */; }; + 7558DB8318C6795A008985A7 /* pcre_ucd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3018C6795A008985A7 /* pcre_ucd.c */; }; + 7558DB8418C6795A008985A7 /* pcre_valid_utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3118C6795A008985A7 /* pcre_valid_utf8.c */; }; + 7558DB8518C6795A008985A7 /* pcre_version.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3218C6795A008985A7 /* pcre_version.c */; }; + 7558DB8618C6795A008985A7 /* pcre_xclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3318C6795A008985A7 /* pcre_xclass.c */; }; + 7558DB8718C6795A008985A7 /* pcrecpp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DB3418C6795A008985A7 /* pcrecpp.h */; }; + 7558DB8818C6795A008985A7 /* pcrecpp_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DB3518C6795A008985A7 /* pcrecpp_internal.h */; }; + 7558DB8918C6795A008985A7 /* pcredemo.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3618C6795A008985A7 /* pcredemo.c */; }; + 7558DB8A18C6795A008985A7 /* pcregrep.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3718C6795A008985A7 /* pcregrep.c */; }; + 7558DB8B18C6795A008985A7 /* pcreposix.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3818C6795A008985A7 /* pcreposix.c */; }; + 7558DB8C18C6795A008985A7 /* pcreposix.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DB3918C6795A008985A7 /* pcreposix.h */; }; + 7558DB8D18C6795A008985A7 /* pcretest.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DB3A18C6795A008985A7 /* pcretest.c */; }; + 7558DB8E18C6795A008985A7 /* ucp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DB3C18C6795A008985A7 /* ucp.h */; }; + 7558DECD18C67E0F008985A7 /* stdbool.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DD7918C67E0E008985A7 /* stdbool.h */; }; + 7558DECF18C67E0F008985A7 /* c99_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DD7B18C67E0E008985A7 /* c99_compat.h */; }; + 7558DED018C67E0F008985A7 /* regal_glsl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DD9B18C67E0E008985A7 /* regal_glsl.cpp */; }; + 7558DED118C67E0F008985A7 /* regal_glsl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DD9C18C67E0E008985A7 /* regal_glsl.h */; }; + 7558DED218C67E0F008985A7 /* getopt.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DDA018C67E0E008985A7 /* getopt.h */; }; + 7558DED318C67E0F008985A7 /* getopt_long.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDA118C67E0E008985A7 /* getopt_long.c */; }; + 7558DED418C67E0F008985A7 /* ast.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DDA618C67E0E008985A7 /* ast.h */; }; + 7558DED518C67E0F008985A7 /* ast_array_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDA718C67E0E008985A7 /* ast_array_index.cpp */; }; + 7558DED618C67E0F008985A7 /* ast_expr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDA818C67E0E008985A7 /* ast_expr.cpp */; }; + 7558DED718C67E0F008985A7 /* ast_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDA918C67E0E008985A7 /* ast_function.cpp */; }; + 7558DED818C67E0F008985A7 /* ast_to_hir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDAA18C67E0E008985A7 /* ast_to_hir.cpp */; }; + 7558DED918C67E0F008985A7 /* ast_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDAB18C67E0E008985A7 /* ast_type.cpp */; }; + 7558DEDA18C67E0F008985A7 /* builtin_stubs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDAE18C67E0E008985A7 /* builtin_stubs.cpp */; }; + 7558DEDB18C67E0F008985A7 /* builtin_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDAF18C67E0E008985A7 /* builtin_function.cpp */; }; + 7558DEDC18C67E0F008985A7 /* builtin_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DDB018C67E0E008985A7 /* builtin_types.h */; }; + 7558DEDD18C67E0F008985A7 /* builtin_variables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DDB118C67E0E008985A7 /* builtin_variables.cpp */; }; + 7558DEF418C67E0F008985A7 /* glcpp-lex.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE3518C67E0E008985A7 /* glcpp-lex.c */; }; + 7558DEF618C67E0F008985A7 /* glcpp-parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE3718C67E0E008985A7 /* glcpp-parse.c */; }; + 7558DEF718C67E0F008985A7 /* glcpp-parse.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE3818C67E0E008985A7 /* glcpp-parse.h */; }; + 7558DEF918C67E0F008985A7 /* glcpp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE3B18C67E0E008985A7 /* glcpp.h */; }; + 7558DEFA18C67E0F008985A7 /* pp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE3C18C67E0E008985A7 /* pp.c */; }; + 7558DEFB18C67E0F008985A7 /* glsl_lexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE3E18C67E0E008985A7 /* glsl_lexer.cpp */; }; + 7558DEFD18C67E0F008985A7 /* glsl_optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4018C67E0E008985A7 /* glsl_optimizer.cpp */; }; + 7558DEFE18C67E0F008985A7 /* glsl_optimizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE4118C67E0E008985A7 /* glsl_optimizer.h */; }; + 7558DEFF18C67E0F008985A7 /* glsl_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4218C67E0E008985A7 /* glsl_parser.cpp */; }; + 7558DF0018C67E0F008985A7 /* glsl_parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE4318C67E0E008985A7 /* glsl_parser.h */; }; + 7558DF0118C67E0F008985A7 /* glsl_parser_extras.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4618C67E0E008985A7 /* glsl_parser_extras.cpp */; }; + 7558DF0218C67E0F008985A7 /* glsl_parser_extras.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE4718C67E0E008985A7 /* glsl_parser_extras.h */; }; + 7558DF0318C67E0F008985A7 /* glsl_symbol_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4818C67E0E008985A7 /* glsl_symbol_table.cpp */; }; + 7558DF0418C67E0F008985A7 /* glsl_symbol_table.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE4918C67E0E008985A7 /* glsl_symbol_table.h */; }; + 7558DF0518C67E0F008985A7 /* glsl_types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4A18C67E0E008985A7 /* glsl_types.cpp */; }; + 7558DF0618C67E0F008985A7 /* glsl_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE4B18C67E0E008985A7 /* glsl_types.h */; }; + 7558DF0718C67E0F008985A7 /* hir_field_selection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4C18C67E0E008985A7 /* hir_field_selection.cpp */; }; + 7558DF0818C67E0F008985A7 /* ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4D18C67E0E008985A7 /* ir.cpp */; }; + 7558DF0918C67E0F008985A7 /* ir.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE4E18C67E0E008985A7 /* ir.h */; }; + 7558DF0A18C67E0F008985A7 /* ir_basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE4F18C67E0E008985A7 /* ir_basic_block.cpp */; }; + 7558DF0B18C67E0F008985A7 /* ir_basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE5018C67E0E008985A7 /* ir_basic_block.h */; }; + 7558DF0C18C67E0F008985A7 /* ir_builder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5118C67E0E008985A7 /* ir_builder.cpp */; }; + 7558DF0D18C67E0F008985A7 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE5218C67E0E008985A7 /* ir_builder.h */; }; + 7558DF0E18C67E0F008985A7 /* ir_clone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5318C67E0E008985A7 /* ir_clone.cpp */; }; + 7558DF0F18C67E0F008985A7 /* ir_constant_expression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5418C67E0E008985A7 /* ir_constant_expression.cpp */; }; + 7558DF1018C67E0F008985A7 /* ir_expression_flattening.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5518C67E0E008985A7 /* ir_expression_flattening.cpp */; }; + 7558DF1118C67E0F008985A7 /* ir_expression_flattening.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE5618C67E0E008985A7 /* ir_expression_flattening.h */; }; + 7558DF1218C67E0F008985A7 /* ir_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5718C67E0E008985A7 /* ir_function.cpp */; }; + 7558DF1318C67E0F008985A7 /* ir_function_can_inline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5818C67E0E008985A7 /* ir_function_can_inline.cpp */; }; + 7558DF1418C67E0F008985A7 /* ir_function_detect_recursion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5918C67E0E008985A7 /* ir_function_detect_recursion.cpp */; }; + 7558DF1518C67E0F008985A7 /* ir_function_inlining.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE5A18C67E0E008985A7 /* ir_function_inlining.h */; }; + 7558DF1618C67E0F008985A7 /* ir_hierarchical_visitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5B18C67E0E008985A7 /* ir_hierarchical_visitor.cpp */; }; + 7558DF1718C67E0F008985A7 /* ir_hierarchical_visitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE5C18C67E0E008985A7 /* ir_hierarchical_visitor.h */; }; + 7558DF1818C67E0F008985A7 /* ir_hv_accept.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5D18C67E0E008985A7 /* ir_hv_accept.cpp */; }; + 7558DF1918C67E0F008985A7 /* ir_import_prototypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE5E18C67E0E008985A7 /* ir_import_prototypes.cpp */; }; + 7558DF1A18C67E0F008985A7 /* ir_optimization.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE5F18C67E0E008985A7 /* ir_optimization.h */; }; + 7558DF1B18C67E0F008985A7 /* ir_print_glsl_visitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6018C67E0E008985A7 /* ir_print_glsl_visitor.cpp */; }; + 7558DF1C18C67E0F008985A7 /* ir_print_glsl_visitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6118C67E0E008985A7 /* ir_print_glsl_visitor.h */; }; + 7558DF1D18C67E0F008985A7 /* ir_print_visitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6218C67E0E008985A7 /* ir_print_visitor.cpp */; }; + 7558DF1E18C67E0F008985A7 /* ir_print_visitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6318C67E0E008985A7 /* ir_print_visitor.h */; }; + 7558DF1F18C67E0F008985A7 /* ir_reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6418C67E0E008985A7 /* ir_reader.cpp */; }; + 7558DF2018C67E0F008985A7 /* ir_reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6518C67E0E008985A7 /* ir_reader.h */; }; + 7558DF2118C67E0F008985A7 /* ir_rvalue_visitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6618C67E0E008985A7 /* ir_rvalue_visitor.cpp */; }; + 7558DF2218C67E0F008985A7 /* ir_rvalue_visitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6718C67E0E008985A7 /* ir_rvalue_visitor.h */; }; + 7558DF2318C67E0F008985A7 /* ir_uniform.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6818C67E0E008985A7 /* ir_uniform.h */; }; + 7558DF2418C67E0F008985A7 /* ir_unused_structs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6918C67E0E008985A7 /* ir_unused_structs.cpp */; }; + 7558DF2518C67E0F008985A7 /* ir_unused_structs.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6A18C67E0E008985A7 /* ir_unused_structs.h */; }; + 7558DF2618C67E0F008985A7 /* ir_validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6B18C67E0E008985A7 /* ir_validate.cpp */; }; + 7558DF2718C67E0F008985A7 /* ir_variable_refcount.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6C18C67E0E008985A7 /* ir_variable_refcount.cpp */; }; + 7558DF2818C67E0F008985A7 /* ir_variable_refcount.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6D18C67E0E008985A7 /* ir_variable_refcount.h */; }; + 7558DF2918C67E0F008985A7 /* ir_visitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE6E18C67E0E008985A7 /* ir_visitor.h */; }; + 7558DF2A18C67E0F008985A7 /* link_functions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE6F18C67E0E008985A7 /* link_functions.cpp */; }; + 7558DF2B18C67E0F008985A7 /* link_uniform_block_active_visitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7018C67E0E008985A7 /* link_uniform_block_active_visitor.cpp */; }; + 7558DF2C18C67E0F008985A7 /* link_uniform_block_active_visitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE7118C67E0E008985A7 /* link_uniform_block_active_visitor.h */; }; + 7558DF2D18C67E0F008985A7 /* link_uniform_blocks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7218C67E0E008985A7 /* link_uniform_blocks.cpp */; }; + 7558DF2E18C67E0F008985A7 /* link_uniform_initializers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7318C67E0E008985A7 /* link_uniform_initializers.cpp */; }; + 7558DF2F18C67E0F008985A7 /* link_uniforms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7418C67E0E008985A7 /* link_uniforms.cpp */; }; + 7558DF3018C67E0F008985A7 /* link_varyings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7518C67E0E008985A7 /* link_varyings.cpp */; }; + 7558DF3118C67E0F008985A7 /* link_varyings.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE7618C67E0E008985A7 /* link_varyings.h */; }; + 7558DF3218C67E0F008985A7 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7718C67E0E008985A7 /* linker.cpp */; }; + 7558DF3318C67E0F008985A7 /* linker.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE7818C67E0E008985A7 /* linker.h */; }; + 7558DF3418C67E0F008985A7 /* list.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE7918C67E0E008985A7 /* list.h */; }; + 7558DF3518C67E0F008985A7 /* loop_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7A18C67E0E008985A7 /* loop_analysis.cpp */; }; + 7558DF3618C67E0F008985A7 /* loop_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DE7B18C67E0E008985A7 /* loop_analysis.h */; }; + 7558DF3718C67E0F008985A7 /* loop_controls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7C18C67E0E008985A7 /* loop_controls.cpp */; }; + 7558DF3818C67E0F008985A7 /* loop_unroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7D18C67E0E008985A7 /* loop_unroll.cpp */; }; + 7558DF3918C67E0F008985A7 /* lower_clip_distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7E18C67E0E008985A7 /* lower_clip_distance.cpp */; }; + 7558DF3A18C67E0F008985A7 /* lower_discard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE7F18C67E0E008985A7 /* lower_discard.cpp */; }; + 7558DF3B18C67E0F008985A7 /* lower_discard_flow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8018C67E0E008985A7 /* lower_discard_flow.cpp */; }; + 7558DF3C18C67E0F008985A7 /* lower_if_to_cond_assign.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8118C67E0E008985A7 /* lower_if_to_cond_assign.cpp */; }; + 7558DF3D18C67E0F008985A7 /* lower_instructions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8218C67E0E008985A7 /* lower_instructions.cpp */; }; + 7558DF3E18C67E0F008985A7 /* lower_jumps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8318C67E0E008985A7 /* lower_jumps.cpp */; }; + 7558DF3F18C67E0F008985A7 /* lower_mat_op_to_vec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8418C67E0E008985A7 /* lower_mat_op_to_vec.cpp */; }; + 7558DF4018C67E0F008985A7 /* lower_noise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8518C67E0E008985A7 /* lower_noise.cpp */; }; + 7558DF4118C67E0F008985A7 /* lower_output_reads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8618C67E0E008985A7 /* lower_output_reads.cpp */; }; + 7558DF4218C67E0F008985A7 /* lower_packed_varyings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8718C67E0F008985A7 /* lower_packed_varyings.cpp */; }; + 7558DF4318C67E0F008985A7 /* lower_packing_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8818C67E0F008985A7 /* lower_packing_builtins.cpp */; }; + 7558DF4418C67E0F008985A7 /* lower_ubo_reference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8918C67E0F008985A7 /* lower_ubo_reference.cpp */; }; + 7558DF4518C67E0F008985A7 /* lower_variable_index_to_cond_assign.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8A18C67E0F008985A7 /* lower_variable_index_to_cond_assign.cpp */; }; + 7558DF4618C67E0F008985A7 /* lower_vec_index_to_cond_assign.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8B18C67E0F008985A7 /* lower_vec_index_to_cond_assign.cpp */; }; + 7558DF4718C67E0F008985A7 /* lower_vec_index_to_swizzle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8C18C67E0F008985A7 /* lower_vec_index_to_swizzle.cpp */; }; + 7558DF4818C67E0F008985A7 /* lower_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8D18C67E0F008985A7 /* lower_vector.cpp */; }; + 7558DF4918C67E0F008985A7 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE8E18C67E0F008985A7 /* main.cpp */; }; + 7558DF4B18C67E0F008985A7 /* opt_algebraic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9018C67E0F008985A7 /* opt_algebraic.cpp */; }; + 7558DF4C18C67E0F008985A7 /* opt_array_splitting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9118C67E0F008985A7 /* opt_array_splitting.cpp */; }; + 7558DF4D18C67E0F008985A7 /* opt_constant_folding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9218C67E0F008985A7 /* opt_constant_folding.cpp */; }; + 7558DF4E18C67E0F008985A7 /* opt_constant_propagation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9318C67E0F008985A7 /* opt_constant_propagation.cpp */; }; + 7558DF4F18C67E0F008985A7 /* opt_constant_variable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9418C67E0F008985A7 /* opt_constant_variable.cpp */; }; + 7558DF5018C67E0F008985A7 /* opt_copy_propagation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9518C67E0F008985A7 /* opt_copy_propagation.cpp */; }; + 7558DF5118C67E0F008985A7 /* opt_copy_propagation_elements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9618C67E0F008985A7 /* opt_copy_propagation_elements.cpp */; }; + 7558DF5218C67E0F008985A7 /* opt_dead_code.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9718C67E0F008985A7 /* opt_dead_code.cpp */; }; + 7558DF5318C67E0F008985A7 /* opt_dead_code_local.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9818C67E0F008985A7 /* opt_dead_code_local.cpp */; }; + 7558DF5418C67E0F008985A7 /* opt_dead_functions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9918C67E0F008985A7 /* opt_dead_functions.cpp */; }; + 7558DF5518C67E0F008985A7 /* opt_flatten_nested_if_blocks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9A18C67E0F008985A7 /* opt_flatten_nested_if_blocks.cpp */; }; + 7558DF5618C67E0F008985A7 /* opt_function_inlining.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9B18C67E0F008985A7 /* opt_function_inlining.cpp */; }; + 7558DF5718C67E0F008985A7 /* opt_if_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9C18C67E0F008985A7 /* opt_if_simplification.cpp */; }; + 7558DF5818C67E0F008985A7 /* opt_noop_swizzle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9D18C67E0F008985A7 /* opt_noop_swizzle.cpp */; }; + 7558DF5918C67E0F008985A7 /* opt_redundant_jumps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9E18C67E0F008985A7 /* opt_redundant_jumps.cpp */; }; + 7558DF5A18C67E0F008985A7 /* opt_structure_splitting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DE9F18C67E0F008985A7 /* opt_structure_splitting.cpp */; }; + 7558DF5B18C67E0F008985A7 /* opt_swizzle_swizzle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEA018C67E0F008985A7 /* opt_swizzle_swizzle.cpp */; }; + 7558DF5C18C67E0F008985A7 /* opt_tree_grafting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEA118C67E0F008985A7 /* opt_tree_grafting.cpp */; }; + 7558DF5D18C67E0F008985A7 /* program.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEA218C67E0F008985A7 /* program.h */; }; + 7558DF5E18C67E0F008985A7 /* ralloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEA318C67E0F008985A7 /* ralloc.c */; }; + 7558DF5F18C67E0F008985A7 /* ralloc.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEA418C67E0F008985A7 /* ralloc.h */; }; + 7558DF6018C67E0F008985A7 /* s_expression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEA618C67E0F008985A7 /* s_expression.cpp */; }; + 7558DF6118C67E0F008985A7 /* s_expression.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEA718C67E0F008985A7 /* s_expression.h */; }; + 7558DF6218C67E0F008985A7 /* standalone_scaffolding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEA918C67E0F008985A7 /* standalone_scaffolding.cpp */; }; + 7558DF6318C67E0F008985A7 /* standalone_scaffolding.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEAA18C67E0F008985A7 /* standalone_scaffolding.h */; }; + 7558DF6418C67E0F008985A7 /* strtod.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEAB18C67E0F008985A7 /* strtod.c */; }; + 7558DF6518C67E0F008985A7 /* strtod.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEAC18C67E0F008985A7 /* strtod.h */; }; + 7558DF6618C67E0F008985A7 /* compiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB118C67E0F008985A7 /* compiler.h */; }; + 7558DF6718C67E0F008985A7 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB218C67E0F008985A7 /* config.h */; }; + 7558DF6818C67E0F008985A7 /* context.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB318C67E0F008985A7 /* context.h */; }; + 7558DF6918C67E0F008985A7 /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB418C67E0F008985A7 /* core.h */; }; + 7558DF6A18C67E0F008985A7 /* dd.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB518C67E0F008985A7 /* dd.h */; }; + 7558DF6B18C67E0F008985A7 /* glheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB618C67E0F008985A7 /* glheader.h */; }; + 7558DF6C18C67E0F008985A7 /* glminimal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB718C67E0F008985A7 /* glminimal.h */; }; + 7558DF6D18C67E0F008985A7 /* hash_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEB818C67E0F008985A7 /* hash_table.c */; }; + 7558DF6E18C67E0F008985A7 /* hash_table.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEB918C67E0F008985A7 /* hash_table.h */; }; + 7558DF6F18C67E0F008985A7 /* imports.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEBA18C67E0F008985A7 /* imports.c */; }; + 7558DF7018C67E0F008985A7 /* imports.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEBB18C67E0F008985A7 /* imports.h */; }; + 7558DF7118C67E0F008985A7 /* macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEBC18C67E0F008985A7 /* macros.h */; }; + 7558DF7218C67E0F008985A7 /* mtypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEBD18C67E0F008985A7 /* mtypes.h */; }; + 7558DF7318C67E0F008985A7 /* set.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEBE18C67E0F008985A7 /* set.c */; }; + 7558DF7418C67E0F008985A7 /* set.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEBF18C67E0F008985A7 /* set.h */; }; + 7558DF7518C67E0F008985A7 /* simple_list.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEC018C67E0F008985A7 /* simple_list.h */; }; + 7558DF7618C67E0F008985A7 /* hash_table.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEC318C67E0F008985A7 /* hash_table.h */; }; + 7558DF7718C67E0F008985A7 /* prog_hash_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEC418C67E0F008985A7 /* prog_hash_table.c */; }; + 7558DF7818C67E0F008985A7 /* prog_instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEC518C67E0F008985A7 /* prog_instruction.h */; }; + 7558DF7918C67E0F008985A7 /* prog_parameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEC618C67E0F008985A7 /* prog_parameter.h */; }; + 7558DF7A18C67E0F008985A7 /* prog_statevars.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEC718C67E0F008985A7 /* prog_statevars.h */; }; + 7558DF7B18C67E0F008985A7 /* symbol_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 7558DEC818C67E0F008985A7 /* symbol_table.c */; }; + 7558DF7C18C67E0F008985A7 /* symbol_table.h in Headers */ = {isa = PBXBuildFile; fileRef = 7558DEC918C67E0F008985A7 /* symbol_table.h */; }; + 755DED9018C692CA00B417E0 /* RegalDispatchHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 755DED8C18C692CA00B417E0 /* RegalDispatchHttp.cpp */; }; + 755DED9118C692CA00B417E0 /* RegalDispatchHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 755DED8D18C692CA00B417E0 /* RegalDispatchHttp.h */; }; + 755DED9218C692CA00B417E0 /* RegalWebJs.h in Headers */ = {isa = PBXBuildFile; fileRef = 755DED8E18C692CA00B417E0 /* RegalWebJs.h */; }; + 755DED9318C692CA00B417E0 /* stb_image_write.h in Headers */ = {isa = PBXBuildFile; fileRef = 755DED8F18C692CA00B417E0 /* stb_image_write.h */; }; 75694C8E17EB913B00B8AD9D /* RegalQuads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75694C8C17EB913B00B8AD9D /* RegalQuads.cpp */; }; 75694C8F17EB913B00B8AD9D /* RegalQuads.h in Headers */ = {isa = PBXBuildFile; fileRef = 75694C8D17EB913B00B8AD9D /* RegalQuads.h */; }; BC020947160D1919003FAB99 /* RegalMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC020946160D1919003FAB99 /* RegalMarker.cpp */; }; @@ -177,11 +417,14 @@ BCDF670D178F179800EE9569 /* gltrace_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDF6707178F179800EE9569 /* gltrace_state.cpp */; }; BCDF670E178F179800EE9569 /* gltrace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BCDF6708178F179800EE9569 /* gltrace.hpp */; }; BCDF670F178F179800EE9569 /* regaltrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDF6709178F179800EE9569 /* regaltrace.cpp */; }; - BCDF6710178F179800EE9569 /* trace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDF670A178F179800EE9569 /* trace.cpp */; }; - BCDF6711178F179800EE9569 /* trace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BCDF670B178F179800EE9569 /* trace.hpp */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 435914F8182FF3A3002CB92C /* RegalLayerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalLayerInfo.h; path = ../../../src/regal/RegalLayerInfo.h; sourceTree = ""; }; + 435914F9182FF3A3002CB92C /* RegalShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalShader.cpp; path = ../../../src/regal/RegalShader.cpp; sourceTree = ""; }; + 435914FA182FF3A3002CB92C /* RegalShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalShader.h; path = ../../../src/regal/RegalShader.h; sourceTree = ""; }; + 435914FB182FF3A3002CB92C /* RegalShaderInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalShaderInstance.cpp; path = ../../../src/regal/RegalShaderInstance.cpp; sourceTree = ""; }; + 435914FC182FF3A3002CB92C /* RegalShaderInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalShaderInstance.h; path = ../../../src/regal/RegalShaderInstance.h; sourceTree = ""; }; 4366EEEA15C9B54E00211205 /* RegalEnum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalEnum.h; path = ../../../src/regal/RegalEnum.h; sourceTree = ""; }; 4366EEEB15C9B54E00211205 /* RegalFavicon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalFavicon.cpp; path = ../../../src/regal/RegalFavicon.cpp; sourceTree = ""; }; 4366EEEC15C9B54E00211205 /* RegalFavicon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalFavicon.h; path = ../../../src/regal/RegalFavicon.h; sourceTree = ""; }; @@ -238,6 +481,241 @@ 43FC5F7715C4619B00D0177C /* RegalVao.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalVao.h; path = ../../../src/regal/RegalVao.h; sourceTree = ""; }; 43FC5FA615C461AC00D0177C /* civetweb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = civetweb.c; path = ../../../src/civetweb/civetweb.c; sourceTree = ""; }; 754D3C9417CFFD7200E4C0E0 /* RegalEmu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalEmu.cpp; path = ../../../src/regal/RegalEmu.cpp; sourceTree = ""; }; + 7558DAE918C6795A008985A7 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 7558DAEA18C6795A008985A7 /* dftables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dftables.c; sourceTree = ""; }; + 7558DAEC18C6795A008985A7 /* pcre.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pcre.h; sourceTree = ""; }; + 7558DAED18C6795A008985A7 /* pcre16_byte_order.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_byte_order.c; sourceTree = ""; }; + 7558DAEE18C6795A008985A7 /* pcre16_chartables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_chartables.c; sourceTree = ""; }; + 7558DAEF18C6795A008985A7 /* pcre16_compile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_compile.c; sourceTree = ""; }; + 7558DAF018C6795A008985A7 /* pcre16_config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_config.c; sourceTree = ""; }; + 7558DAF118C6795A008985A7 /* pcre16_dfa_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_dfa_exec.c; sourceTree = ""; }; + 7558DAF218C6795A008985A7 /* pcre16_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_exec.c; sourceTree = ""; }; + 7558DAF318C6795A008985A7 /* pcre16_fullinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_fullinfo.c; sourceTree = ""; }; + 7558DAF418C6795A008985A7 /* pcre16_get.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_get.c; sourceTree = ""; }; + 7558DAF518C6795A008985A7 /* pcre16_globals.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_globals.c; sourceTree = ""; }; + 7558DAF618C6795A008985A7 /* pcre16_jit_compile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_jit_compile.c; sourceTree = ""; }; + 7558DAF718C6795A008985A7 /* pcre16_maketables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_maketables.c; sourceTree = ""; }; + 7558DAF818C6795A008985A7 /* pcre16_newline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_newline.c; sourceTree = ""; }; + 7558DAF918C6795A008985A7 /* pcre16_ord2utf16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_ord2utf16.c; sourceTree = ""; }; + 7558DAFA18C6795A008985A7 /* pcre16_printint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_printint.c; sourceTree = ""; }; + 7558DAFB18C6795A008985A7 /* pcre16_refcount.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_refcount.c; sourceTree = ""; }; + 7558DAFC18C6795A008985A7 /* pcre16_string_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_string_utils.c; sourceTree = ""; }; + 7558DAFD18C6795A008985A7 /* pcre16_study.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_study.c; sourceTree = ""; }; + 7558DAFE18C6795A008985A7 /* pcre16_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_tables.c; sourceTree = ""; }; + 7558DAFF18C6795A008985A7 /* pcre16_ucd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_ucd.c; sourceTree = ""; }; + 7558DB0018C6795A008985A7 /* pcre16_utf16_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_utf16_utils.c; sourceTree = ""; }; + 7558DB0118C6795A008985A7 /* pcre16_valid_utf16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_valid_utf16.c; sourceTree = ""; }; + 7558DB0218C6795A008985A7 /* pcre16_version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_version.c; sourceTree = ""; }; + 7558DB0318C6795A008985A7 /* pcre16_xclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre16_xclass.c; sourceTree = ""; }; + 7558DB0418C6795A008985A7 /* pcre32_byte_order.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_byte_order.c; sourceTree = ""; }; + 7558DB0518C6795A008985A7 /* pcre32_chartables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_chartables.c; sourceTree = ""; }; + 7558DB0618C6795A008985A7 /* pcre32_compile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_compile.c; sourceTree = ""; }; + 7558DB0718C6795A008985A7 /* pcre32_config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_config.c; sourceTree = ""; }; + 7558DB0818C6795A008985A7 /* pcre32_dfa_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_dfa_exec.c; sourceTree = ""; }; + 7558DB0918C6795A008985A7 /* pcre32_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_exec.c; sourceTree = ""; }; + 7558DB0A18C6795A008985A7 /* pcre32_fullinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_fullinfo.c; sourceTree = ""; }; + 7558DB0B18C6795A008985A7 /* pcre32_get.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_get.c; sourceTree = ""; }; + 7558DB0C18C6795A008985A7 /* pcre32_globals.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_globals.c; sourceTree = ""; }; + 7558DB0D18C6795A008985A7 /* pcre32_jit_compile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_jit_compile.c; sourceTree = ""; }; + 7558DB0E18C6795A008985A7 /* pcre32_maketables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_maketables.c; sourceTree = ""; }; + 7558DB0F18C6795A008985A7 /* pcre32_newline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_newline.c; sourceTree = ""; }; + 7558DB1018C6795A008985A7 /* pcre32_ord2utf32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_ord2utf32.c; sourceTree = ""; }; + 7558DB1118C6795A008985A7 /* pcre32_printint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_printint.c; sourceTree = ""; }; + 7558DB1218C6795A008985A7 /* pcre32_refcount.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_refcount.c; sourceTree = ""; }; + 7558DB1318C6795A008985A7 /* pcre32_string_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_string_utils.c; sourceTree = ""; }; + 7558DB1418C6795A008985A7 /* pcre32_study.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_study.c; sourceTree = ""; }; + 7558DB1518C6795A008985A7 /* pcre32_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_tables.c; sourceTree = ""; }; + 7558DB1618C6795A008985A7 /* pcre32_ucd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_ucd.c; sourceTree = ""; }; + 7558DB1718C6795A008985A7 /* pcre32_utf32_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_utf32_utils.c; sourceTree = ""; }; + 7558DB1818C6795A008985A7 /* pcre32_valid_utf32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_valid_utf32.c; sourceTree = ""; }; + 7558DB1918C6795A008985A7 /* pcre32_version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_version.c; sourceTree = ""; }; + 7558DB1A18C6795A008985A7 /* pcre32_xclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre32_xclass.c; sourceTree = ""; }; + 7558DB1B18C6795A008985A7 /* pcre_byte_order.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_byte_order.c; sourceTree = ""; }; + 7558DB1C18C6795A008985A7 /* pcre_chartables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_chartables.c; sourceTree = ""; }; + 7558DB1D18C6795A008985A7 /* pcre_compile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_compile.c; sourceTree = ""; }; + 7558DB1E18C6795A008985A7 /* pcre_config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_config.c; sourceTree = ""; }; + 7558DB1F18C6795A008985A7 /* pcre_dfa_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_dfa_exec.c; sourceTree = ""; }; + 7558DB2018C6795A008985A7 /* pcre_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_exec.c; sourceTree = ""; }; + 7558DB2118C6795A008985A7 /* pcre_fullinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_fullinfo.c; sourceTree = ""; }; + 7558DB2218C6795A008985A7 /* pcre_get.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_get.c; sourceTree = ""; }; + 7558DB2318C6795A008985A7 /* pcre_globals.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_globals.c; sourceTree = ""; }; + 7558DB2418C6795A008985A7 /* pcre_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pcre_internal.h; sourceTree = ""; }; + 7558DB2518C6795A008985A7 /* pcre_jit_compile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_jit_compile.c; sourceTree = ""; }; + 7558DB2618C6795A008985A7 /* pcre_jit_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_jit_test.c; sourceTree = ""; }; + 7558DB2718C6795A008985A7 /* pcre_maketables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_maketables.c; sourceTree = ""; }; + 7558DB2818C6795A008985A7 /* pcre_newline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_newline.c; sourceTree = ""; }; + 7558DB2918C6795A008985A7 /* pcre_ord2utf8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_ord2utf8.c; sourceTree = ""; }; + 7558DB2A18C6795A008985A7 /* pcre_printint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_printint.c; sourceTree = ""; }; + 7558DB2B18C6795A008985A7 /* pcre_refcount.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_refcount.c; sourceTree = ""; }; + 7558DB2C18C6795A008985A7 /* pcre_scanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pcre_scanner.h; sourceTree = ""; }; + 7558DB2D18C6795A008985A7 /* pcre_string_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_string_utils.c; sourceTree = ""; }; + 7558DB2E18C6795A008985A7 /* pcre_study.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_study.c; sourceTree = ""; }; + 7558DB2F18C6795A008985A7 /* pcre_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_tables.c; sourceTree = ""; }; + 7558DB3018C6795A008985A7 /* pcre_ucd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_ucd.c; sourceTree = ""; }; + 7558DB3118C6795A008985A7 /* pcre_valid_utf8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_valid_utf8.c; sourceTree = ""; }; + 7558DB3218C6795A008985A7 /* pcre_version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_version.c; sourceTree = ""; }; + 7558DB3318C6795A008985A7 /* pcre_xclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre_xclass.c; sourceTree = ""; }; + 7558DB3418C6795A008985A7 /* pcrecpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pcrecpp.h; sourceTree = ""; }; + 7558DB3518C6795A008985A7 /* pcrecpp_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pcrecpp_internal.h; sourceTree = ""; }; + 7558DB3618C6795A008985A7 /* pcredemo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcredemo.c; sourceTree = ""; }; + 7558DB3718C6795A008985A7 /* pcregrep.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcregrep.c; sourceTree = ""; }; + 7558DB3818C6795A008985A7 /* pcreposix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcreposix.c; sourceTree = ""; }; + 7558DB3918C6795A008985A7 /* pcreposix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pcreposix.h; sourceTree = ""; }; + 7558DB3A18C6795A008985A7 /* pcretest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcretest.c; sourceTree = ""; }; + 7558DB3C18C6795A008985A7 /* ucp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ucp.h; sourceTree = ""; }; + 7558DD7918C67E0E008985A7 /* stdbool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stdbool.h; sourceTree = ""; }; + 7558DD7B18C67E0E008985A7 /* c99_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = c99_compat.h; sourceTree = ""; }; + 7558DD9B18C67E0E008985A7 /* regal_glsl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = regal_glsl.cpp; sourceTree = ""; }; + 7558DD9C18C67E0E008985A7 /* regal_glsl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = regal_glsl.h; sourceTree = ""; }; + 7558DDA018C67E0E008985A7 /* getopt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + 7558DDA118C67E0E008985A7 /* getopt_long.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = getopt_long.c; sourceTree = ""; }; + 7558DDA618C67E0E008985A7 /* ast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ast.h; sourceTree = ""; }; + 7558DDA718C67E0E008985A7 /* ast_array_index.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ast_array_index.cpp; sourceTree = ""; }; + 7558DDA818C67E0E008985A7 /* ast_expr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ast_expr.cpp; sourceTree = ""; }; + 7558DDA918C67E0E008985A7 /* ast_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ast_function.cpp; sourceTree = ""; }; + 7558DDAA18C67E0E008985A7 /* ast_to_hir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ast_to_hir.cpp; sourceTree = ""; }; + 7558DDAB18C67E0E008985A7 /* ast_type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ast_type.cpp; sourceTree = ""; }; + 7558DDAE18C67E0E008985A7 /* builtin_stubs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = builtin_stubs.cpp; sourceTree = ""; }; + 7558DDAF18C67E0E008985A7 /* builtin_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = builtin_function.cpp; sourceTree = ""; }; + 7558DDB018C67E0E008985A7 /* builtin_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_types.h; sourceTree = ""; }; + 7558DDB118C67E0E008985A7 /* builtin_variables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = builtin_variables.cpp; sourceTree = ""; }; + 7558DE3518C67E0E008985A7 /* glcpp-lex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "glcpp-lex.c"; sourceTree = ""; }; + 7558DE3718C67E0E008985A7 /* glcpp-parse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "glcpp-parse.c"; sourceTree = ""; }; + 7558DE3818C67E0E008985A7 /* glcpp-parse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "glcpp-parse.h"; sourceTree = ""; }; + 7558DE3B18C67E0E008985A7 /* glcpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glcpp.h; sourceTree = ""; }; + 7558DE3C18C67E0E008985A7 /* pp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pp.c; sourceTree = ""; }; + 7558DE3E18C67E0E008985A7 /* glsl_lexer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_lexer.cpp; sourceTree = ""; }; + 7558DE4018C67E0E008985A7 /* glsl_optimizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_optimizer.cpp; sourceTree = ""; }; + 7558DE4118C67E0E008985A7 /* glsl_optimizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glsl_optimizer.h; sourceTree = ""; }; + 7558DE4218C67E0E008985A7 /* glsl_parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_parser.cpp; sourceTree = ""; }; + 7558DE4318C67E0E008985A7 /* glsl_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glsl_parser.h; sourceTree = ""; }; + 7558DE4618C67E0E008985A7 /* glsl_parser_extras.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_parser_extras.cpp; sourceTree = ""; }; + 7558DE4718C67E0E008985A7 /* glsl_parser_extras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glsl_parser_extras.h; sourceTree = ""; }; + 7558DE4818C67E0E008985A7 /* glsl_symbol_table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_symbol_table.cpp; sourceTree = ""; }; + 7558DE4918C67E0E008985A7 /* glsl_symbol_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glsl_symbol_table.h; sourceTree = ""; }; + 7558DE4A18C67E0E008985A7 /* glsl_types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_types.cpp; sourceTree = ""; }; + 7558DE4B18C67E0E008985A7 /* glsl_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glsl_types.h; sourceTree = ""; }; + 7558DE4C18C67E0E008985A7 /* hir_field_selection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hir_field_selection.cpp; sourceTree = ""; }; + 7558DE4D18C67E0E008985A7 /* ir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir.cpp; sourceTree = ""; }; + 7558DE4E18C67E0E008985A7 /* ir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir.h; sourceTree = ""; }; + 7558DE4F18C67E0E008985A7 /* ir_basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_basic_block.cpp; sourceTree = ""; }; + 7558DE5018C67E0E008985A7 /* ir_basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_basic_block.h; sourceTree = ""; }; + 7558DE5118C67E0E008985A7 /* ir_builder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_builder.cpp; sourceTree = ""; }; + 7558DE5218C67E0E008985A7 /* ir_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_builder.h; sourceTree = ""; }; + 7558DE5318C67E0E008985A7 /* ir_clone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_clone.cpp; sourceTree = ""; }; + 7558DE5418C67E0E008985A7 /* ir_constant_expression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_constant_expression.cpp; sourceTree = ""; }; + 7558DE5518C67E0E008985A7 /* ir_expression_flattening.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_expression_flattening.cpp; sourceTree = ""; }; + 7558DE5618C67E0E008985A7 /* ir_expression_flattening.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_expression_flattening.h; sourceTree = ""; }; + 7558DE5718C67E0E008985A7 /* ir_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_function.cpp; sourceTree = ""; }; + 7558DE5818C67E0E008985A7 /* ir_function_can_inline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_function_can_inline.cpp; sourceTree = ""; }; + 7558DE5918C67E0E008985A7 /* ir_function_detect_recursion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_function_detect_recursion.cpp; sourceTree = ""; }; + 7558DE5A18C67E0E008985A7 /* ir_function_inlining.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_function_inlining.h; sourceTree = ""; }; + 7558DE5B18C67E0E008985A7 /* ir_hierarchical_visitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_hierarchical_visitor.cpp; sourceTree = ""; }; + 7558DE5C18C67E0E008985A7 /* ir_hierarchical_visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_hierarchical_visitor.h; sourceTree = ""; }; + 7558DE5D18C67E0E008985A7 /* ir_hv_accept.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_hv_accept.cpp; sourceTree = ""; }; + 7558DE5E18C67E0E008985A7 /* ir_import_prototypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_import_prototypes.cpp; sourceTree = ""; }; + 7558DE5F18C67E0E008985A7 /* ir_optimization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_optimization.h; sourceTree = ""; }; + 7558DE6018C67E0E008985A7 /* ir_print_glsl_visitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_print_glsl_visitor.cpp; sourceTree = ""; }; + 7558DE6118C67E0E008985A7 /* ir_print_glsl_visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_print_glsl_visitor.h; sourceTree = ""; }; + 7558DE6218C67E0E008985A7 /* ir_print_visitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_print_visitor.cpp; sourceTree = ""; }; + 7558DE6318C67E0E008985A7 /* ir_print_visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_print_visitor.h; sourceTree = ""; }; + 7558DE6418C67E0E008985A7 /* ir_reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_reader.cpp; sourceTree = ""; }; + 7558DE6518C67E0E008985A7 /* ir_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_reader.h; sourceTree = ""; }; + 7558DE6618C67E0E008985A7 /* ir_rvalue_visitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_rvalue_visitor.cpp; sourceTree = ""; }; + 7558DE6718C67E0E008985A7 /* ir_rvalue_visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_rvalue_visitor.h; sourceTree = ""; }; + 7558DE6818C67E0E008985A7 /* ir_uniform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_uniform.h; sourceTree = ""; }; + 7558DE6918C67E0E008985A7 /* ir_unused_structs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_unused_structs.cpp; sourceTree = ""; }; + 7558DE6A18C67E0E008985A7 /* ir_unused_structs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_unused_structs.h; sourceTree = ""; }; + 7558DE6B18C67E0E008985A7 /* ir_validate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_validate.cpp; sourceTree = ""; }; + 7558DE6C18C67E0E008985A7 /* ir_variable_refcount.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_variable_refcount.cpp; sourceTree = ""; }; + 7558DE6D18C67E0E008985A7 /* ir_variable_refcount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_variable_refcount.h; sourceTree = ""; }; + 7558DE6E18C67E0E008985A7 /* ir_visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_visitor.h; sourceTree = ""; }; + 7558DE6F18C67E0E008985A7 /* link_functions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = link_functions.cpp; sourceTree = ""; }; + 7558DE7018C67E0E008985A7 /* link_uniform_block_active_visitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = link_uniform_block_active_visitor.cpp; sourceTree = ""; }; + 7558DE7118C67E0E008985A7 /* link_uniform_block_active_visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = link_uniform_block_active_visitor.h; sourceTree = ""; }; + 7558DE7218C67E0E008985A7 /* link_uniform_blocks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = link_uniform_blocks.cpp; sourceTree = ""; }; + 7558DE7318C67E0E008985A7 /* link_uniform_initializers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = link_uniform_initializers.cpp; sourceTree = ""; }; + 7558DE7418C67E0E008985A7 /* link_uniforms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = link_uniforms.cpp; sourceTree = ""; }; + 7558DE7518C67E0E008985A7 /* link_varyings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = link_varyings.cpp; sourceTree = ""; }; + 7558DE7618C67E0E008985A7 /* link_varyings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = link_varyings.h; sourceTree = ""; }; + 7558DE7718C67E0E008985A7 /* linker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linker.cpp; sourceTree = ""; }; + 7558DE7818C67E0E008985A7 /* linker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linker.h; sourceTree = ""; }; + 7558DE7918C67E0E008985A7 /* list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = ""; }; + 7558DE7A18C67E0E008985A7 /* loop_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_analysis.cpp; sourceTree = ""; }; + 7558DE7B18C67E0E008985A7 /* loop_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_analysis.h; sourceTree = ""; }; + 7558DE7C18C67E0E008985A7 /* loop_controls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_controls.cpp; sourceTree = ""; }; + 7558DE7D18C67E0E008985A7 /* loop_unroll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unroll.cpp; sourceTree = ""; }; + 7558DE7E18C67E0E008985A7 /* lower_clip_distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_clip_distance.cpp; sourceTree = ""; }; + 7558DE7F18C67E0E008985A7 /* lower_discard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_discard.cpp; sourceTree = ""; }; + 7558DE8018C67E0E008985A7 /* lower_discard_flow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_discard_flow.cpp; sourceTree = ""; }; + 7558DE8118C67E0E008985A7 /* lower_if_to_cond_assign.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_if_to_cond_assign.cpp; sourceTree = ""; }; + 7558DE8218C67E0E008985A7 /* lower_instructions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_instructions.cpp; sourceTree = ""; }; + 7558DE8318C67E0E008985A7 /* lower_jumps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_jumps.cpp; sourceTree = ""; }; + 7558DE8418C67E0E008985A7 /* lower_mat_op_to_vec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_mat_op_to_vec.cpp; sourceTree = ""; }; + 7558DE8518C67E0E008985A7 /* lower_noise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_noise.cpp; sourceTree = ""; }; + 7558DE8618C67E0E008985A7 /* lower_output_reads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_output_reads.cpp; sourceTree = ""; }; + 7558DE8718C67E0F008985A7 /* lower_packed_varyings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_packed_varyings.cpp; sourceTree = ""; }; + 7558DE8818C67E0F008985A7 /* lower_packing_builtins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_packing_builtins.cpp; sourceTree = ""; }; + 7558DE8918C67E0F008985A7 /* lower_ubo_reference.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_ubo_reference.cpp; sourceTree = ""; }; + 7558DE8A18C67E0F008985A7 /* lower_variable_index_to_cond_assign.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_variable_index_to_cond_assign.cpp; sourceTree = ""; }; + 7558DE8B18C67E0F008985A7 /* lower_vec_index_to_cond_assign.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_vec_index_to_cond_assign.cpp; sourceTree = ""; }; + 7558DE8C18C67E0F008985A7 /* lower_vec_index_to_swizzle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_vec_index_to_swizzle.cpp; sourceTree = ""; }; + 7558DE8D18C67E0F008985A7 /* lower_vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lower_vector.cpp; sourceTree = ""; }; + 7558DE8E18C67E0F008985A7 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 7558DE9018C67E0F008985A7 /* opt_algebraic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_algebraic.cpp; sourceTree = ""; }; + 7558DE9118C67E0F008985A7 /* opt_array_splitting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_array_splitting.cpp; sourceTree = ""; }; + 7558DE9218C67E0F008985A7 /* opt_constant_folding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_constant_folding.cpp; sourceTree = ""; }; + 7558DE9318C67E0F008985A7 /* opt_constant_propagation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_constant_propagation.cpp; sourceTree = ""; }; + 7558DE9418C67E0F008985A7 /* opt_constant_variable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_constant_variable.cpp; sourceTree = ""; }; + 7558DE9518C67E0F008985A7 /* opt_copy_propagation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_copy_propagation.cpp; sourceTree = ""; }; + 7558DE9618C67E0F008985A7 /* opt_copy_propagation_elements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_copy_propagation_elements.cpp; sourceTree = ""; }; + 7558DE9718C67E0F008985A7 /* opt_dead_code.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_dead_code.cpp; sourceTree = ""; }; + 7558DE9818C67E0F008985A7 /* opt_dead_code_local.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_dead_code_local.cpp; sourceTree = ""; }; + 7558DE9918C67E0F008985A7 /* opt_dead_functions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_dead_functions.cpp; sourceTree = ""; }; + 7558DE9A18C67E0F008985A7 /* opt_flatten_nested_if_blocks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_flatten_nested_if_blocks.cpp; sourceTree = ""; }; + 7558DE9B18C67E0F008985A7 /* opt_function_inlining.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_function_inlining.cpp; sourceTree = ""; }; + 7558DE9C18C67E0F008985A7 /* opt_if_simplification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_if_simplification.cpp; sourceTree = ""; }; + 7558DE9D18C67E0F008985A7 /* opt_noop_swizzle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_noop_swizzle.cpp; sourceTree = ""; }; + 7558DE9E18C67E0F008985A7 /* opt_redundant_jumps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_redundant_jumps.cpp; sourceTree = ""; }; + 7558DE9F18C67E0F008985A7 /* opt_structure_splitting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_structure_splitting.cpp; sourceTree = ""; }; + 7558DEA018C67E0F008985A7 /* opt_swizzle_swizzle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_swizzle_swizzle.cpp; sourceTree = ""; }; + 7558DEA118C67E0F008985A7 /* opt_tree_grafting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opt_tree_grafting.cpp; sourceTree = ""; }; + 7558DEA218C67E0F008985A7 /* program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = program.h; sourceTree = ""; }; + 7558DEA318C67E0F008985A7 /* ralloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ralloc.c; sourceTree = ""; }; + 7558DEA418C67E0F008985A7 /* ralloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ralloc.h; sourceTree = ""; }; + 7558DEA618C67E0F008985A7 /* s_expression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = s_expression.cpp; sourceTree = ""; }; + 7558DEA718C67E0F008985A7 /* s_expression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = s_expression.h; sourceTree = ""; }; + 7558DEA918C67E0F008985A7 /* standalone_scaffolding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = standalone_scaffolding.cpp; sourceTree = ""; }; + 7558DEAA18C67E0F008985A7 /* standalone_scaffolding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = standalone_scaffolding.h; sourceTree = ""; }; + 7558DEAB18C67E0F008985A7 /* strtod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = strtod.c; sourceTree = ""; }; + 7558DEAC18C67E0F008985A7 /* strtod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strtod.h; sourceTree = ""; }; + 7558DEB118C67E0F008985A7 /* compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = ""; }; + 7558DEB218C67E0F008985A7 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 7558DEB318C67E0F008985A7 /* context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = context.h; sourceTree = ""; }; + 7558DEB418C67E0F008985A7 /* core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; + 7558DEB518C67E0F008985A7 /* dd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dd.h; sourceTree = ""; }; + 7558DEB618C67E0F008985A7 /* glheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glheader.h; sourceTree = ""; }; + 7558DEB718C67E0F008985A7 /* glminimal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glminimal.h; sourceTree = ""; }; + 7558DEB818C67E0F008985A7 /* hash_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hash_table.c; sourceTree = ""; }; + 7558DEB918C67E0F008985A7 /* hash_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash_table.h; sourceTree = ""; }; + 7558DEBA18C67E0F008985A7 /* imports.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = imports.c; sourceTree = ""; }; + 7558DEBB18C67E0F008985A7 /* imports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imports.h; sourceTree = ""; }; + 7558DEBC18C67E0F008985A7 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = ""; }; + 7558DEBD18C67E0F008985A7 /* mtypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mtypes.h; sourceTree = ""; }; + 7558DEBE18C67E0F008985A7 /* set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = set.c; sourceTree = ""; }; + 7558DEBF18C67E0F008985A7 /* set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = set.h; sourceTree = ""; }; + 7558DEC018C67E0F008985A7 /* simple_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_list.h; sourceTree = ""; }; + 7558DEC318C67E0F008985A7 /* hash_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash_table.h; sourceTree = ""; }; + 7558DEC418C67E0F008985A7 /* prog_hash_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prog_hash_table.c; sourceTree = ""; }; + 7558DEC518C67E0F008985A7 /* prog_instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prog_instruction.h; sourceTree = ""; }; + 7558DEC618C67E0F008985A7 /* prog_parameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prog_parameter.h; sourceTree = ""; }; + 7558DEC718C67E0F008985A7 /* prog_statevars.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prog_statevars.h; sourceTree = ""; }; + 7558DEC818C67E0F008985A7 /* symbol_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = symbol_table.c; sourceTree = ""; }; + 7558DEC918C67E0F008985A7 /* symbol_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = symbol_table.h; sourceTree = ""; }; + 755DED8C18C692CA00B417E0 /* RegalDispatchHttp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalDispatchHttp.cpp; path = ../../../src/regal/RegalDispatchHttp.cpp; sourceTree = ""; }; + 755DED8D18C692CA00B417E0 /* RegalDispatchHttp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalDispatchHttp.h; path = ../../../src/regal/RegalDispatchHttp.h; sourceTree = ""; }; + 755DED8E18C692CA00B417E0 /* RegalWebJs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalWebJs.h; path = ../../../src/regal/RegalWebJs.h; sourceTree = ""; }; + 755DED8F18C692CA00B417E0 /* stb_image_write.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_image_write.h; path = ../../../src/regal/stb_image_write.h; sourceTree = ""; }; 75694C8C17EB913B00B8AD9D /* RegalQuads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalQuads.cpp; path = ../../../src/regal/RegalQuads.cpp; sourceTree = ""; }; 75694C8D17EB913B00B8AD9D /* RegalQuads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalQuads.h; path = ../../../src/regal/RegalQuads.h; sourceTree = ""; }; BC020946160D1919003FAB99 /* RegalMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalMarker.cpp; path = ../../../src/regal/RegalMarker.cpp; sourceTree = ""; }; @@ -357,8 +835,6 @@ BCDF6707178F179800EE9569 /* gltrace_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gltrace_state.cpp; path = ../../../src/apitrace/wrappers/gltrace_state.cpp; sourceTree = ""; }; BCDF6708178F179800EE9569 /* gltrace.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = gltrace.hpp; path = ../../../src/apitrace/wrappers/gltrace.hpp; sourceTree = ""; }; BCDF6709178F179800EE9569 /* regaltrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = regaltrace.cpp; path = ../../../src/apitrace/wrappers/regaltrace.cpp; sourceTree = ""; }; - BCDF670A178F179800EE9569 /* trace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = trace.cpp; path = ../../../src/apitrace/wrappers/trace.cpp; sourceTree = ""; }; - BCDF670B178F179800EE9569 /* trace.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = trace.hpp; path = ../../../src/apitrace/wrappers/trace.hpp; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -401,8 +877,13 @@ 43FC5F4A15C4617A00D0177C /* Regal */ = { isa = PBXGroup; children = ( + 755DED8C18C692CA00B417E0 /* RegalDispatchHttp.cpp */, + 755DED8D18C692CA00B417E0 /* RegalDispatchHttp.h */, + 755DED8E18C692CA00B417E0 /* RegalWebJs.h */, + 755DED8F18C692CA00B417E0 /* stb_image_write.h */, + 7558DD6B18C67E0E008985A7 /* glsl */, + 7558DAE718C6795A008985A7 /* pcre */, BCDF66A5178F170800EE9569 /* apitrace */, - BCDF6697178F16E100EE9569 /* apitrace */, 43FC5F4B15C4619B00D0177C /* linear.h */, BC020956160D1C65003FAB99 /* md5 */, 43FC5FA515C461A100D0177C /* civetweb */, @@ -473,6 +954,7 @@ BC60A6B4170330700055437B /* RegalJson.cpp */, BC60A6B5170330700055437B /* RegalJson.h */, BC60A6B6170330700055437B /* RegalJson.inl */, + 435914F8182FF3A3002CB92C /* RegalLayerInfo.h */, 43FC5F6815C4619B00D0177C /* RegalLog.cpp */, 43FC5F6915C4619B00D0177C /* RegalLog.h */, 43FC5F6A15C4619B00D0177C /* RegalLookup.cpp */, @@ -497,6 +979,10 @@ 75694C8D17EB913B00B8AD9D /* RegalQuads.h */, BC59F9CE174809EE004BC2AC /* RegalRect.h */, BC59F9D5174809EE004BC2AC /* RegalScopedPtr.h */, + 435914F9182FF3A3002CB92C /* RegalShader.cpp */, + 435914FA182FF3A3002CB92C /* RegalShader.h */, + 435914FB182FF3A3002CB92C /* RegalShaderInstance.cpp */, + 435914FC182FF3A3002CB92C /* RegalShaderInstance.h */, BCBEC6EF167AD69D00B38E16 /* RegalSharedList.h */, BCBEC6F0167AD69D00B38E16 /* RegalSharedMap.h */, BCBEC6F1167AD69D00B38E16 /* RegalSharedPtr.h */, @@ -532,6 +1018,341 @@ name = civetweb; sourceTree = ""; }; + 7558DAE718C6795A008985A7 /* pcre */ = { + isa = PBXGroup; + children = ( + 7558DAE918C6795A008985A7 /* config.h */, + 7558DAEA18C6795A008985A7 /* dftables.c */, + 7558DAEC18C6795A008985A7 /* pcre.h */, + 7558DAED18C6795A008985A7 /* pcre16_byte_order.c */, + 7558DAEE18C6795A008985A7 /* pcre16_chartables.c */, + 7558DAEF18C6795A008985A7 /* pcre16_compile.c */, + 7558DAF018C6795A008985A7 /* pcre16_config.c */, + 7558DAF118C6795A008985A7 /* pcre16_dfa_exec.c */, + 7558DAF218C6795A008985A7 /* pcre16_exec.c */, + 7558DAF318C6795A008985A7 /* pcre16_fullinfo.c */, + 7558DAF418C6795A008985A7 /* pcre16_get.c */, + 7558DAF518C6795A008985A7 /* pcre16_globals.c */, + 7558DAF618C6795A008985A7 /* pcre16_jit_compile.c */, + 7558DAF718C6795A008985A7 /* pcre16_maketables.c */, + 7558DAF818C6795A008985A7 /* pcre16_newline.c */, + 7558DAF918C6795A008985A7 /* pcre16_ord2utf16.c */, + 7558DAFA18C6795A008985A7 /* pcre16_printint.c */, + 7558DAFB18C6795A008985A7 /* pcre16_refcount.c */, + 7558DAFC18C6795A008985A7 /* pcre16_string_utils.c */, + 7558DAFD18C6795A008985A7 /* pcre16_study.c */, + 7558DAFE18C6795A008985A7 /* pcre16_tables.c */, + 7558DAFF18C6795A008985A7 /* pcre16_ucd.c */, + 7558DB0018C6795A008985A7 /* pcre16_utf16_utils.c */, + 7558DB0118C6795A008985A7 /* pcre16_valid_utf16.c */, + 7558DB0218C6795A008985A7 /* pcre16_version.c */, + 7558DB0318C6795A008985A7 /* pcre16_xclass.c */, + 7558DB0418C6795A008985A7 /* pcre32_byte_order.c */, + 7558DB0518C6795A008985A7 /* pcre32_chartables.c */, + 7558DB0618C6795A008985A7 /* pcre32_compile.c */, + 7558DB0718C6795A008985A7 /* pcre32_config.c */, + 7558DB0818C6795A008985A7 /* pcre32_dfa_exec.c */, + 7558DB0918C6795A008985A7 /* pcre32_exec.c */, + 7558DB0A18C6795A008985A7 /* pcre32_fullinfo.c */, + 7558DB0B18C6795A008985A7 /* pcre32_get.c */, + 7558DB0C18C6795A008985A7 /* pcre32_globals.c */, + 7558DB0D18C6795A008985A7 /* pcre32_jit_compile.c */, + 7558DB0E18C6795A008985A7 /* pcre32_maketables.c */, + 7558DB0F18C6795A008985A7 /* pcre32_newline.c */, + 7558DB1018C6795A008985A7 /* pcre32_ord2utf32.c */, + 7558DB1118C6795A008985A7 /* pcre32_printint.c */, + 7558DB1218C6795A008985A7 /* pcre32_refcount.c */, + 7558DB1318C6795A008985A7 /* pcre32_string_utils.c */, + 7558DB1418C6795A008985A7 /* pcre32_study.c */, + 7558DB1518C6795A008985A7 /* pcre32_tables.c */, + 7558DB1618C6795A008985A7 /* pcre32_ucd.c */, + 7558DB1718C6795A008985A7 /* pcre32_utf32_utils.c */, + 7558DB1818C6795A008985A7 /* pcre32_valid_utf32.c */, + 7558DB1918C6795A008985A7 /* pcre32_version.c */, + 7558DB1A18C6795A008985A7 /* pcre32_xclass.c */, + 7558DB1B18C6795A008985A7 /* pcre_byte_order.c */, + 7558DB1C18C6795A008985A7 /* pcre_chartables.c */, + 7558DB1D18C6795A008985A7 /* pcre_compile.c */, + 7558DB1E18C6795A008985A7 /* pcre_config.c */, + 7558DB1F18C6795A008985A7 /* pcre_dfa_exec.c */, + 7558DB2018C6795A008985A7 /* pcre_exec.c */, + 7558DB2118C6795A008985A7 /* pcre_fullinfo.c */, + 7558DB2218C6795A008985A7 /* pcre_get.c */, + 7558DB2318C6795A008985A7 /* pcre_globals.c */, + 7558DB2418C6795A008985A7 /* pcre_internal.h */, + 7558DB2518C6795A008985A7 /* pcre_jit_compile.c */, + 7558DB2618C6795A008985A7 /* pcre_jit_test.c */, + 7558DB2718C6795A008985A7 /* pcre_maketables.c */, + 7558DB2818C6795A008985A7 /* pcre_newline.c */, + 7558DB2918C6795A008985A7 /* pcre_ord2utf8.c */, + 7558DB2A18C6795A008985A7 /* pcre_printint.c */, + 7558DB2B18C6795A008985A7 /* pcre_refcount.c */, + 7558DB2C18C6795A008985A7 /* pcre_scanner.h */, + 7558DB2D18C6795A008985A7 /* pcre_string_utils.c */, + 7558DB2E18C6795A008985A7 /* pcre_study.c */, + 7558DB2F18C6795A008985A7 /* pcre_tables.c */, + 7558DB3018C6795A008985A7 /* pcre_ucd.c */, + 7558DB3118C6795A008985A7 /* pcre_valid_utf8.c */, + 7558DB3218C6795A008985A7 /* pcre_version.c */, + 7558DB3318C6795A008985A7 /* pcre_xclass.c */, + 7558DB3418C6795A008985A7 /* pcrecpp.h */, + 7558DB3518C6795A008985A7 /* pcrecpp_internal.h */, + 7558DB3618C6795A008985A7 /* pcredemo.c */, + 7558DB3718C6795A008985A7 /* pcregrep.c */, + 7558DB3818C6795A008985A7 /* pcreposix.c */, + 7558DB3918C6795A008985A7 /* pcreposix.h */, + 7558DB3A18C6795A008985A7 /* pcretest.c */, + 7558DB3C18C6795A008985A7 /* ucp.h */, + ); + name = pcre; + path = ../../../src/pcre; + sourceTree = ""; + }; + 7558DD6B18C67E0E008985A7 /* glsl */ = { + isa = PBXGroup; + children = ( + 7558DD7618C67E0E008985A7 /* include */, + 7558DD9A18C67E0E008985A7 /* regal */, + 7558DD9E18C67E0E008985A7 /* src */, + ); + name = glsl; + path = ../../../src/glsl; + sourceTree = ""; + }; + 7558DD7618C67E0E008985A7 /* include */ = { + isa = PBXGroup; + children = ( + 7558DD7718C67E0E008985A7 /* c99 */, + 7558DD7B18C67E0E008985A7 /* c99_compat.h */, + ); + path = include; + sourceTree = ""; + }; + 7558DD7718C67E0E008985A7 /* c99 */ = { + isa = PBXGroup; + children = ( + 7558DD7918C67E0E008985A7 /* stdbool.h */, + ); + path = c99; + sourceTree = ""; + }; + 7558DD9A18C67E0E008985A7 /* regal */ = { + isa = PBXGroup; + children = ( + 7558DD9B18C67E0E008985A7 /* regal_glsl.cpp */, + 7558DD9C18C67E0E008985A7 /* regal_glsl.h */, + ); + path = regal; + sourceTree = ""; + }; + 7558DD9E18C67E0E008985A7 /* src */ = { + isa = PBXGroup; + children = ( + 7558DD9F18C67E0E008985A7 /* getopt */, + 7558DDA318C67E0E008985A7 /* glsl */, + 7558DEAE18C67E0F008985A7 /* mesa */, + ); + path = src; + sourceTree = ""; + }; + 7558DD9F18C67E0E008985A7 /* getopt */ = { + isa = PBXGroup; + children = ( + 7558DDA018C67E0E008985A7 /* getopt.h */, + 7558DDA118C67E0E008985A7 /* getopt_long.c */, + ); + path = getopt; + sourceTree = ""; + }; + 7558DDA318C67E0E008985A7 /* glsl */ = { + isa = PBXGroup; + children = ( + 7558DDA618C67E0E008985A7 /* ast.h */, + 7558DDA718C67E0E008985A7 /* ast_array_index.cpp */, + 7558DDA818C67E0E008985A7 /* ast_expr.cpp */, + 7558DDA918C67E0E008985A7 /* ast_function.cpp */, + 7558DDAA18C67E0E008985A7 /* ast_to_hir.cpp */, + 7558DDAB18C67E0E008985A7 /* ast_type.cpp */, + 7558DDAC18C67E0E008985A7 /* builtin_compiler */, + 7558DDAF18C67E0E008985A7 /* builtin_function.cpp */, + 7558DDB018C67E0E008985A7 /* builtin_types.h */, + 7558DDB118C67E0E008985A7 /* builtin_variables.cpp */, + 7558DE3318C67E0E008985A7 /* glcpp */, + 7558DE3E18C67E0E008985A7 /* glsl_lexer.cpp */, + 7558DE4018C67E0E008985A7 /* glsl_optimizer.cpp */, + 7558DE4118C67E0E008985A7 /* glsl_optimizer.h */, + 7558DE4218C67E0E008985A7 /* glsl_parser.cpp */, + 7558DE4318C67E0E008985A7 /* glsl_parser.h */, + 7558DE4618C67E0E008985A7 /* glsl_parser_extras.cpp */, + 7558DE4718C67E0E008985A7 /* glsl_parser_extras.h */, + 7558DE4818C67E0E008985A7 /* glsl_symbol_table.cpp */, + 7558DE4918C67E0E008985A7 /* glsl_symbol_table.h */, + 7558DE4A18C67E0E008985A7 /* glsl_types.cpp */, + 7558DE4B18C67E0E008985A7 /* glsl_types.h */, + 7558DE4C18C67E0E008985A7 /* hir_field_selection.cpp */, + 7558DE4D18C67E0E008985A7 /* ir.cpp */, + 7558DE4E18C67E0E008985A7 /* ir.h */, + 7558DE4F18C67E0E008985A7 /* ir_basic_block.cpp */, + 7558DE5018C67E0E008985A7 /* ir_basic_block.h */, + 7558DE5118C67E0E008985A7 /* ir_builder.cpp */, + 7558DE5218C67E0E008985A7 /* ir_builder.h */, + 7558DE5318C67E0E008985A7 /* ir_clone.cpp */, + 7558DE5418C67E0E008985A7 /* ir_constant_expression.cpp */, + 7558DE5518C67E0E008985A7 /* ir_expression_flattening.cpp */, + 7558DE5618C67E0E008985A7 /* ir_expression_flattening.h */, + 7558DE5718C67E0E008985A7 /* ir_function.cpp */, + 7558DE5818C67E0E008985A7 /* ir_function_can_inline.cpp */, + 7558DE5918C67E0E008985A7 /* ir_function_detect_recursion.cpp */, + 7558DE5A18C67E0E008985A7 /* ir_function_inlining.h */, + 7558DE5B18C67E0E008985A7 /* ir_hierarchical_visitor.cpp */, + 7558DE5C18C67E0E008985A7 /* ir_hierarchical_visitor.h */, + 7558DE5D18C67E0E008985A7 /* ir_hv_accept.cpp */, + 7558DE5E18C67E0E008985A7 /* ir_import_prototypes.cpp */, + 7558DE5F18C67E0E008985A7 /* ir_optimization.h */, + 7558DE6018C67E0E008985A7 /* ir_print_glsl_visitor.cpp */, + 7558DE6118C67E0E008985A7 /* ir_print_glsl_visitor.h */, + 7558DE6218C67E0E008985A7 /* ir_print_visitor.cpp */, + 7558DE6318C67E0E008985A7 /* ir_print_visitor.h */, + 7558DE6418C67E0E008985A7 /* ir_reader.cpp */, + 7558DE6518C67E0E008985A7 /* ir_reader.h */, + 7558DE6618C67E0E008985A7 /* ir_rvalue_visitor.cpp */, + 7558DE6718C67E0E008985A7 /* ir_rvalue_visitor.h */, + 7558DE6818C67E0E008985A7 /* ir_uniform.h */, + 7558DE6918C67E0E008985A7 /* ir_unused_structs.cpp */, + 7558DE6A18C67E0E008985A7 /* ir_unused_structs.h */, + 7558DE6B18C67E0E008985A7 /* ir_validate.cpp */, + 7558DE6C18C67E0E008985A7 /* ir_variable_refcount.cpp */, + 7558DE6D18C67E0E008985A7 /* ir_variable_refcount.h */, + 7558DE6E18C67E0E008985A7 /* ir_visitor.h */, + 7558DE6F18C67E0E008985A7 /* link_functions.cpp */, + 7558DE7018C67E0E008985A7 /* link_uniform_block_active_visitor.cpp */, + 7558DE7118C67E0E008985A7 /* link_uniform_block_active_visitor.h */, + 7558DE7218C67E0E008985A7 /* link_uniform_blocks.cpp */, + 7558DE7318C67E0E008985A7 /* link_uniform_initializers.cpp */, + 7558DE7418C67E0E008985A7 /* link_uniforms.cpp */, + 7558DE7518C67E0E008985A7 /* link_varyings.cpp */, + 7558DE7618C67E0E008985A7 /* link_varyings.h */, + 7558DE7718C67E0E008985A7 /* linker.cpp */, + 7558DE7818C67E0E008985A7 /* linker.h */, + 7558DE7918C67E0E008985A7 /* list.h */, + 7558DE7A18C67E0E008985A7 /* loop_analysis.cpp */, + 7558DE7B18C67E0E008985A7 /* loop_analysis.h */, + 7558DE7C18C67E0E008985A7 /* loop_controls.cpp */, + 7558DE7D18C67E0E008985A7 /* loop_unroll.cpp */, + 7558DE7E18C67E0E008985A7 /* lower_clip_distance.cpp */, + 7558DE7F18C67E0E008985A7 /* lower_discard.cpp */, + 7558DE8018C67E0E008985A7 /* lower_discard_flow.cpp */, + 7558DE8118C67E0E008985A7 /* lower_if_to_cond_assign.cpp */, + 7558DE8218C67E0E008985A7 /* lower_instructions.cpp */, + 7558DE8318C67E0E008985A7 /* lower_jumps.cpp */, + 7558DE8418C67E0E008985A7 /* lower_mat_op_to_vec.cpp */, + 7558DE8518C67E0E008985A7 /* lower_noise.cpp */, + 7558DE8618C67E0E008985A7 /* lower_output_reads.cpp */, + 7558DE8718C67E0F008985A7 /* lower_packed_varyings.cpp */, + 7558DE8818C67E0F008985A7 /* lower_packing_builtins.cpp */, + 7558DE8918C67E0F008985A7 /* lower_ubo_reference.cpp */, + 7558DE8A18C67E0F008985A7 /* lower_variable_index_to_cond_assign.cpp */, + 7558DE8B18C67E0F008985A7 /* lower_vec_index_to_cond_assign.cpp */, + 7558DE8C18C67E0F008985A7 /* lower_vec_index_to_swizzle.cpp */, + 7558DE8D18C67E0F008985A7 /* lower_vector.cpp */, + 7558DE8E18C67E0F008985A7 /* main.cpp */, + 7558DE9018C67E0F008985A7 /* opt_algebraic.cpp */, + 7558DE9118C67E0F008985A7 /* opt_array_splitting.cpp */, + 7558DE9218C67E0F008985A7 /* opt_constant_folding.cpp */, + 7558DE9318C67E0F008985A7 /* opt_constant_propagation.cpp */, + 7558DE9418C67E0F008985A7 /* opt_constant_variable.cpp */, + 7558DE9518C67E0F008985A7 /* opt_copy_propagation.cpp */, + 7558DE9618C67E0F008985A7 /* opt_copy_propagation_elements.cpp */, + 7558DE9718C67E0F008985A7 /* opt_dead_code.cpp */, + 7558DE9818C67E0F008985A7 /* opt_dead_code_local.cpp */, + 7558DE9918C67E0F008985A7 /* opt_dead_functions.cpp */, + 7558DE9A18C67E0F008985A7 /* opt_flatten_nested_if_blocks.cpp */, + 7558DE9B18C67E0F008985A7 /* opt_function_inlining.cpp */, + 7558DE9C18C67E0F008985A7 /* opt_if_simplification.cpp */, + 7558DE9D18C67E0F008985A7 /* opt_noop_swizzle.cpp */, + 7558DE9E18C67E0F008985A7 /* opt_redundant_jumps.cpp */, + 7558DE9F18C67E0F008985A7 /* opt_structure_splitting.cpp */, + 7558DEA018C67E0F008985A7 /* opt_swizzle_swizzle.cpp */, + 7558DEA118C67E0F008985A7 /* opt_tree_grafting.cpp */, + 7558DEA218C67E0F008985A7 /* program.h */, + 7558DEA318C67E0F008985A7 /* ralloc.c */, + 7558DEA418C67E0F008985A7 /* ralloc.h */, + 7558DEA618C67E0F008985A7 /* s_expression.cpp */, + 7558DEA718C67E0F008985A7 /* s_expression.h */, + 7558DEA918C67E0F008985A7 /* standalone_scaffolding.cpp */, + 7558DEAA18C67E0F008985A7 /* standalone_scaffolding.h */, + 7558DEAB18C67E0F008985A7 /* strtod.c */, + 7558DEAC18C67E0F008985A7 /* strtod.h */, + ); + path = glsl; + sourceTree = ""; + }; + 7558DDAC18C67E0E008985A7 /* builtin_compiler */ = { + isa = PBXGroup; + children = ( + 7558DDAE18C67E0E008985A7 /* builtin_stubs.cpp */, + ); + path = builtin_compiler; + sourceTree = ""; + }; + 7558DE3318C67E0E008985A7 /* glcpp */ = { + isa = PBXGroup; + children = ( + 7558DE3518C67E0E008985A7 /* glcpp-lex.c */, + 7558DE3718C67E0E008985A7 /* glcpp-parse.c */, + 7558DE3818C67E0E008985A7 /* glcpp-parse.h */, + 7558DE3B18C67E0E008985A7 /* glcpp.h */, + 7558DE3C18C67E0E008985A7 /* pp.c */, + ); + path = glcpp; + sourceTree = ""; + }; + 7558DEAE18C67E0F008985A7 /* mesa */ = { + isa = PBXGroup; + children = ( + 7558DEAF18C67E0F008985A7 /* main */, + 7558DEC118C67E0F008985A7 /* program */, + ); + path = mesa; + sourceTree = ""; + }; + 7558DEAF18C67E0F008985A7 /* main */ = { + isa = PBXGroup; + children = ( + 7558DEB118C67E0F008985A7 /* compiler.h */, + 7558DEB218C67E0F008985A7 /* config.h */, + 7558DEB318C67E0F008985A7 /* context.h */, + 7558DEB418C67E0F008985A7 /* core.h */, + 7558DEB518C67E0F008985A7 /* dd.h */, + 7558DEB618C67E0F008985A7 /* glheader.h */, + 7558DEB718C67E0F008985A7 /* glminimal.h */, + 7558DEB818C67E0F008985A7 /* hash_table.c */, + 7558DEB918C67E0F008985A7 /* hash_table.h */, + 7558DEBA18C67E0F008985A7 /* imports.c */, + 7558DEBB18C67E0F008985A7 /* imports.h */, + 7558DEBC18C67E0F008985A7 /* macros.h */, + 7558DEBD18C67E0F008985A7 /* mtypes.h */, + 7558DEBE18C67E0F008985A7 /* set.c */, + 7558DEBF18C67E0F008985A7 /* set.h */, + 7558DEC018C67E0F008985A7 /* simple_list.h */, + ); + path = main; + sourceTree = ""; + }; + 7558DEC118C67E0F008985A7 /* program */ = { + isa = PBXGroup; + children = ( + 7558DEC318C67E0F008985A7 /* hash_table.h */, + 7558DEC418C67E0F008985A7 /* prog_hash_table.c */, + 7558DEC518C67E0F008985A7 /* prog_instruction.h */, + 7558DEC618C67E0F008985A7 /* prog_parameter.h */, + 7558DEC718C67E0F008985A7 /* prog_statevars.h */, + 7558DEC818C67E0F008985A7 /* symbol_table.c */, + 7558DEC918C67E0F008985A7 /* symbol_table.h */, + ); + path = program; + sourceTree = ""; + }; BC020956160D1C65003FAB99 /* md5 */ = { isa = PBXGroup; children = ( @@ -540,13 +1361,6 @@ name = md5; sourceTree = ""; }; - BCDF6697178F16E100EE9569 /* apitrace */ = { - isa = PBXGroup; - children = ( - ); - name = apitrace; - sourceTree = ""; - }; BCDF6698178F16E900EE9569 /* snappy */ = { isa = PBXGroup; children = ( @@ -584,8 +1398,6 @@ BCDF66AE178F172A00EE9569 /* os_time.hpp */, BCDF66AF178F172A00EE9569 /* os_win32.cpp */, BCDF6709178F179800EE9569 /* regaltrace.cpp */, - BCDF670A178F179800EE9569 /* trace.cpp */, - BCDF670B178F179800EE9569 /* trace.hpp */, BCDF66B1178F172A00EE9569 /* trace_api.hpp */, BCDF66B4178F172A00EE9569 /* trace_callset.cpp */, BCDF66B5178F172A00EE9569 /* trace_callset.hpp */, @@ -629,55 +1441,89 @@ files = ( 43FC5F7815C4619B00D0177C /* linear.h in Headers */, 43FC5F7A15C4619B00D0177C /* RegalBin.h in Headers */, + 7558DF6518C67E0F008985A7 /* strtod.h in Headers */, 43FC5F7C15C4619B00D0177C /* RegalConfig.h in Headers */, + 7558DF0018C67E0F008985A7 /* glsl_parser.h in Headers */, 43FC5F7E15C4619B00D0177C /* RegalContext.h in Headers */, + 7558DF7A18C67E0F008985A7 /* prog_statevars.h in Headers */, 43FC5F8015C4619B00D0177C /* RegalContextInfo.h in Headers */, + 7558DED118C67E0F008985A7 /* regal_glsl.h in Headers */, 43FC5F8115C4619B00D0177C /* RegalDebugInfo.h in Headers */, 43FC5F8215C4619B00D0177C /* RegalDispatch.h in Headers */, + 7558DF6318C67E0F008985A7 /* standalone_scaffolding.h in Headers */, 43FC5F8615C4619B00D0177C /* RegalDispatchError.h in Headers */, 43FC5F8B15C4619B00D0177C /* RegalDsa.h in Headers */, 43FC5F8C15C4619B00D0177C /* RegalEmu.h in Headers */, + 7558DECF18C67E0F008985A7 /* c99_compat.h in Headers */, 43FC5F8E15C4619B00D0177C /* RegalHelper.h in Headers */, 43FC5F9015C4619B00D0177C /* RegalHttp.h in Headers */, 43FC5F9215C4619B00D0177C /* RegalIff.h in Headers */, 43FC5F9415C4619B00D0177C /* RegalInit.h in Headers */, + 7558DED418C67E0F008985A7 /* ast.h in Headers */, + 7558DF6718C67E0F008985A7 /* config.h in Headers */, + 7558DF6818C67E0F008985A7 /* context.h in Headers */, 43FC5F9615C4619B00D0177C /* RegalLog.h in Headers */, 43FC5F9815C4619B00D0177C /* RegalLookup.h in Headers */, 43FC5F9915C4619B00D0177C /* RegalMarker.h in Headers */, 43FC5F9A15C4619B00D0177C /* RegalObj.h in Headers */, 43FC5F9B15C4619B00D0177C /* RegalPpa.h in Headers */, + 7558DEFE18C67E0F008985A7 /* glsl_optimizer.h in Headers */, + 7558DEDC18C67E0F008985A7 /* builtin_types.h in Headers */, 43FC5F9D15C4619B00D0177C /* RegalPrecompile.h in Headers */, 43FC5F9E15C4619B00D0177C /* RegalPrivate.h in Headers */, + 755DED9118C692CA00B417E0 /* RegalDispatchHttp.h in Headers */, 43FC5F9F15C4619B00D0177C /* RegalState.h in Headers */, + 7558DF6C18C67E0F008985A7 /* glminimal.h in Headers */, + 755DED9318C692CA00B417E0 /* stb_image_write.h in Headers */, 43FC5FA115C4619B00D0177C /* RegalToken.h in Headers */, 43FC5FA315C4619B00D0177C /* RegalUtil.h in Headers */, + 7558DB3D18C6795A008985A7 /* config.h in Headers */, + 7558DF7518C67E0F008985A7 /* simple_list.h in Headers */, 43FC5FA415C4619B00D0177C /* RegalVao.h in Headers */, 4366EEEE15C9B54E00211205 /* RegalEnum.h in Headers */, + 7558DB8E18C6795A008985A7 /* ucp.h in Headers */, 4366EEF015C9B54E00211205 /* RegalFavicon.h in Headers */, 43EFD6FA15EAADAC004080CE /* RegalDispatcher.h in Headers */, + 7558DF1E18C67E0F008985A7 /* ir_print_visitor.h in Headers */, 43EFD6FD15EAADAC004080CE /* RegalSystem.h in Headers */, + 7558DF6118C67E0F008985A7 /* s_expression.h in Headers */, + 7558DF7618C67E0F008985A7 /* hash_table.h in Headers */, + 7558DEF918C67E0F008985A7 /* glcpp.h in Headers */, + 7558DF6A18C67E0F008985A7 /* dd.h in Headers */, BC640CA516554AA4007DEF69 /* RegalFrame.h in Headers */, BCBEC6F4167AD69D00B38E16 /* RegalPush.h in Headers */, BCBEC6F7167AD69D00B38E16 /* RegalSharedList.h in Headers */, BCBEC6F8167AD69D00B38E16 /* RegalSharedMap.h in Headers */, BCBEC6F9167AD69D00B38E16 /* RegalSharedPtr.h in Headers */, + 7558DF7018C67E0F008985A7 /* imports.h in Headers */, BCBEC6FB167AD69D00B38E16 /* RegalSo.h in Headers */, BC94B99016DFDD6D00116D55 /* RegalBreak.h in Headers */, BC94B99416DFDDA000116D55 /* RegalFilt.h in Headers */, + 7558DF7218C67E0F008985A7 /* mtypes.h in Headers */, + 7558DF7818C67E0F008985A7 /* prog_instruction.h in Headers */, BC3209D516F3A0E600D1A9E0 /* RegalCacheShader.h in Headers */, + 7558DF7918C67E0F008985A7 /* prog_parameter.h in Headers */, BC3209D716F3A0E600D1A9E0 /* RegalCacheTexture.h in Headers */, BC59F9DB174809EE004BC2AC /* RegalBaseVertex.h in Headers */, BC59F9DC174809EE004BC2AC /* RegalMutex.h in Headers */, + 7558DF7C18C67E0F008985A7 /* symbol_table.h in Headers */, BC59F9DE174809EE004BC2AC /* RegalPpca.h in Headers */, BC59F9DF174809EE004BC2AC /* RegalRect.h in Headers */, + 7558DF2818C67E0F008985A7 /* ir_variable_refcount.h in Headers */, BC59F9E0174809EE004BC2AC /* RegalTexC.h in Headers */, + 7558DB7F18C6795A008985A7 /* pcre_scanner.h in Headers */, + 7558DF3418C67E0F008985A7 /* list.h in Headers */, BC59F9E1174809EE004BC2AC /* RegalTexSto.h in Headers */, BC59F9E2174809EE004BC2AC /* RegalThread.h in Headers */, BC59F9E3174809EE004BC2AC /* RegalTimer.h in Headers */, + 7558DF0218C67E0F008985A7 /* glsl_parser_extras.h in Headers */, BC59F9E4174809EE004BC2AC /* RegalMac.h in Headers */, BC59F9E5174809EE004BC2AC /* RegalPixelConversions.h in Headers */, BC59F9E6174809EE004BC2AC /* RegalScopedPtr.h in Headers */, BC59F9E7174809EE004BC2AC /* RegalXfer.h in Headers */, + 7558DF1718C67E0F008985A7 /* ir_hierarchical_visitor.h in Headers */, + 7558DF2318C67E0F008985A7 /* ir_uniform.h in Headers */, + 7558DF6E18C67E0F008985A7 /* hash_table.h in Headers */, BC59F9E8174809EE004BC2AC /* RegalFloat4.h in Headers */, BCBF184B175EBB3000CB653A /* RegalDispatcherGL.h in Headers */, BCBF184D175EBB3000CB653A /* RegalDispatcherGlobal.h in Headers */, @@ -686,38 +1532,74 @@ BCDF66A2178F170300EE9569 /* snappy-sinksource.h in Headers */, BCDF66A4178F170300EE9569 /* snappy.h in Headers */, BCDF66D2178F172A00EE9569 /* formatter.hpp in Headers */, + 7558DF2518C67E0F008985A7 /* ir_unused_structs.h in Headers */, + 7558DF2918C67E0F008985A7 /* ir_visitor.h in Headers */, + 7558DECD18C67E0F008985A7 /* stdbool.h in Headers */, + 7558DF2C18C67E0F008985A7 /* link_uniform_block_active_visitor.h in Headers */, BCDF66D3178F172A00EE9569 /* os_binary.hpp in Headers */, + 7558DB7718C6795A008985A7 /* pcre_internal.h in Headers */, + 7558DF5F18C67E0F008985A7 /* ralloc.h in Headers */, BCDF66D4178F172A00EE9569 /* os_dl.hpp in Headers */, + 7558DF0618C67E0F008985A7 /* glsl_types.h in Headers */, + 7558DF3318C67E0F008985A7 /* linker.h in Headers */, + 7558DF0B18C67E0F008985A7 /* ir_basic_block.h in Headers */, + 7558DF0418C67E0F008985A7 /* glsl_symbol_table.h in Headers */, + 755DED9218C692CA00B417E0 /* RegalWebJs.h in Headers */, BCDF66D5178F172A00EE9569 /* os_memory.hpp in Headers */, BCDF66D7178F172A00EE9569 /* os_process.hpp in Headers */, + 7558DF0918C67E0F008985A7 /* ir.h in Headers */, BCDF66D8178F172A00EE9569 /* os_string.hpp in Headers */, BCDF66D9178F172A00EE9569 /* os_thread.hpp in Headers */, BCDF66DA178F172A00EE9569 /* os_time.hpp in Headers */, + 7558DF6B18C67E0F008985A7 /* glheader.h in Headers */, + 7558DF6918C67E0F008985A7 /* core.h in Headers */, BCDF66DC178F172A00EE9569 /* os.hpp in Headers */, BCDF66DD178F172A00EE9569 /* trace_api.hpp in Headers */, BCDF66E1178F172A00EE9569 /* trace_callset.hpp in Headers */, + 7558DB3F18C6795A008985A7 /* pcre.h in Headers */, BCDF66E3178F172A00EE9569 /* trace_dump.hpp in Headers */, BCDF66E5178F172A00EE9569 /* trace_fast_callset.hpp in Headers */, + 7558DF2018C67E0F008985A7 /* ir_reader.h in Headers */, BCDF66EB178F172A00EE9569 /* trace_file.hpp in Headers */, BCDF66EC178F172A00EE9569 /* trace_format.hpp in Headers */, + 7558DB8818C6795A008985A7 /* pcrecpp_internal.h in Headers */, + 7558DF1518C67E0F008985A7 /* ir_function_inlining.h in Headers */, + 7558DF2218C67E0F008985A7 /* ir_rvalue_visitor.h in Headers */, + 7558DB8718C6795A008985A7 /* pcrecpp.h in Headers */, + 7558DF1A18C67E0F008985A7 /* ir_optimization.h in Headers */, + 7558DEF718C67E0F008985A7 /* glcpp-parse.h in Headers */, BCDF66EE178F172A00EE9569 /* trace_loader.hpp in Headers */, + 7558DF3618C67E0F008985A7 /* loop_analysis.h in Headers */, BCDF66EF178F172A00EE9569 /* trace_lookup.hpp in Headers */, BCDF66F1178F172A00EE9569 /* trace_model.hpp in Headers */, BCDF66F3178F172A00EE9569 /* trace_option.hpp in Headers */, + 7558DF6618C67E0F008985A7 /* compiler.h in Headers */, BCDF66F6178F172A00EE9569 /* trace_parser.hpp in Headers */, + 7558DF1C18C67E0F008985A7 /* ir_print_glsl_visitor.h in Headers */, + 7558DED218C67E0F008985A7 /* getopt.h in Headers */, BCDF66F8178F172A00EE9569 /* trace_profiler.hpp in Headers */, BCDF66FB178F172A00EE9569 /* trace_writer_regal.hpp in Headers */, BCDF66FD178F172A00EE9569 /* trace_writer.hpp in Headers */, BCDF6704178F176300EE9569 /* eglsize.hpp in Headers */, BCDF6705178F176300EE9569 /* glsize.hpp in Headers */, + 7558DF0D18C67E0F008985A7 /* ir_builder.h in Headers */, BCDF670E178F179800EE9569 /* gltrace.hpp in Headers */, + 7558DF3118C67E0F008985A7 /* link_varyings.h in Headers */, BCDF6711178F179800EE9569 /* trace.hpp in Headers */, BCBA1FD717DF848800CB6E19 /* RegalEmuInfo.h in Headers */, BCBA1FD817DF848800CB6E19 /* RegalClientState.h in Headers */, BCBA1FD917DF848800CB6E19 /* RegalHint.h in Headers */, + 7558DF7418C67E0F008985A7 /* set.h in Headers */, BCBA1FDB17DF848800CB6E19 /* RegalNamespace.h in Headers */, + 7558DF1118C67E0F008985A7 /* ir_expression_flattening.h in Headers */, + 7558DF5D18C67E0F008985A7 /* program.h in Headers */, 75694C8F17EB913B00B8AD9D /* RegalQuads.h in Headers */, BC4935041804FD53004385CA /* os_backtrace.hpp in Headers */, + 7558DF7118C67E0F008985A7 /* macros.h in Headers */, + 435914FD182FF3A3002CB92C /* RegalLayerInfo.h in Headers */, + 435914FF182FF3A3002CB92C /* RegalShader.h in Headers */, + 43591501182FF3A3002CB92C /* RegalShaderInstance.h in Headers */, + 7558DB8C18C6795A008985A7 /* pcreposix.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -772,86 +1654,256 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7558DF1218C67E0F008985A7 /* ir_function.cpp in Sources */, + 7558DB4C18C6795A008985A7 /* pcre16_ord2utf16.c in Sources */, + 7558DF2F18C67E0F008985A7 /* link_uniforms.cpp in Sources */, + 7558DF0718C67E0F008985A7 /* hir_field_selection.cpp in Sources */, 43FC5F7915C4619B00D0177C /* Regal.cpp in Sources */, + 7558DF5918C67E0F008985A7 /* opt_redundant_jumps.cpp in Sources */, + 7558DF4918C67E0F008985A7 /* main.cpp in Sources */, 43FC5F7B15C4619B00D0177C /* RegalConfig.cpp in Sources */, + 7558DF5418C67E0F008985A7 /* opt_dead_functions.cpp in Sources */, 43FC5F7D15C4619B00D0177C /* RegalContext.cpp in Sources */, + 7558DB5B18C6795A008985A7 /* pcre32_dfa_exec.c in Sources */, 43FC5F7F15C4619B00D0177C /* RegalContextInfo.cpp in Sources */, + 7558DB8218C6795A008985A7 /* pcre_tables.c in Sources */, + 7558DED518C67E0F008985A7 /* ast_array_index.cpp in Sources */, 43FC5F8315C4619B00D0177C /* RegalDispatchDebug.cpp in Sources */, + 7558DF0A18C67E0F008985A7 /* ir_basic_block.cpp in Sources */, + 7558DB6D18C6795A008985A7 /* pcre32_xclass.c in Sources */, 43FC5F8415C4619B00D0177C /* RegalDispatchEmu.cpp in Sources */, 43FC5F8515C4619B00D0177C /* RegalDispatchError.cpp in Sources */, + 7558DEF418C67E0F008985A7 /* glcpp-lex.c in Sources */, + 7558DF3918C67E0F008985A7 /* lower_clip_distance.cpp in Sources */, 43FC5F8715C4619B00D0177C /* RegalDispatchLoader.cpp in Sources */, 43FC5F8815C4619B00D0177C /* RegalDispatchLog.cpp in Sources */, 43FC5F8A15C4619B00D0177C /* RegalDllMain.cpp in Sources */, + 7558DF1F18C67E0F008985A7 /* ir_reader.cpp in Sources */, 43FC5F8D15C4619B00D0177C /* RegalHelper.cpp in Sources */, + 7558DB6E18C6795A008985A7 /* pcre_byte_order.c in Sources */, + 7558DF3A18C67E0F008985A7 /* lower_discard.cpp in Sources */, + 7558DB5618C6795A008985A7 /* pcre16_xclass.c in Sources */, + 7558DB8418C6795A008985A7 /* pcre_valid_utf8.c in Sources */, + 7558DB4B18C6795A008985A7 /* pcre16_newline.c in Sources */, + 7558DF5618C67E0F008985A7 /* opt_function_inlining.cpp in Sources */, 43FC5F8F15C4619B00D0177C /* RegalHttp.cpp in Sources */, 43FC5F9115C4619B00D0177C /* RegalIff.cpp in Sources */, + 7558DF3818C67E0F008985A7 /* loop_unroll.cpp in Sources */, + 7558DB4318C6795A008985A7 /* pcre16_config.c in Sources */, 43FC5F9315C4619B00D0177C /* RegalInit.cpp in Sources */, 43FC5F9515C4619B00D0177C /* RegalLog.cpp in Sources */, + 7558DB4518C6795A008985A7 /* pcre16_exec.c in Sources */, + 7558DB8D18C6795A008985A7 /* pcretest.c in Sources */, + 7558DB6C18C6795A008985A7 /* pcre32_version.c in Sources */, 43FC5F9715C4619B00D0177C /* RegalLookup.cpp in Sources */, + 7558DB5118C6795A008985A7 /* pcre16_tables.c in Sources */, + 7558DF6F18C67E0F008985A7 /* imports.c in Sources */, + 7558DF4118C67E0F008985A7 /* lower_output_reads.cpp in Sources */, 43FC5FA015C4619B00D0177C /* RegalToken.cpp in Sources */, + 7558DF3F18C67E0F008985A7 /* lower_mat_op_to_vec.cpp in Sources */, + 7558DF1818C67E0F008985A7 /* ir_hv_accept.cpp in Sources */, + 7558DF4818C67E0F008985A7 /* lower_vector.cpp in Sources */, + 7558DF1018C67E0F008985A7 /* ir_expression_flattening.cpp in Sources */, 43FC5FA215C4619B00D0177C /* RegalUtil.cpp in Sources */, + 7558DB5F18C6795A008985A7 /* pcre32_globals.c in Sources */, + 7558DED318C67E0F008985A7 /* getopt_long.c in Sources */, + 7558DB8A18C6795A008985A7 /* pcregrep.c in Sources */, 43FC5FA715C461AC00D0177C /* civetweb.c in Sources */, 4366EEEF15C9B54E00211205 /* RegalFavicon.cpp in Sources */, 4366EEF115C9B54E00211205 /* RegalMac.cpp in Sources */, + 7558DF2B18C67E0F008985A7 /* link_uniform_block_active_visitor.cpp in Sources */, + 7558DF5818C67E0F008985A7 /* opt_noop_swizzle.cpp in Sources */, BC921A5E15D5624600E52C91 /* RegalDispatchMissing.cpp in Sources */, + 7558DB7018C6795A008985A7 /* pcre_compile.c in Sources */, + 7558DB7C18C6795A008985A7 /* pcre_ord2utf8.c in Sources */, BC921A5F15D5624600E52C91 /* RegalDispatchPpapi.cpp in Sources */, + 7558DF4E18C67E0F008985A7 /* opt_constant_propagation.cpp in Sources */, + 7558DF3518C67E0F008985A7 /* loop_analysis.cpp in Sources */, + 7558DF1318C67E0F008985A7 /* ir_function_can_inline.cpp in Sources */, + 7558DB8318C6795A008985A7 /* pcre_ucd.c in Sources */, + 7558DF1D18C67E0F008985A7 /* ir_print_visitor.cpp in Sources */, 43EFD6F915EAADAC004080CE /* RegalDispatcher.cpp in Sources */, + 7558DF4618C67E0F008985A7 /* lower_vec_index_to_cond_assign.cpp in Sources */, + 7558DF1418C67E0F008985A7 /* ir_function_detect_recursion.cpp in Sources */, + 7558DB7318C6795A008985A7 /* pcre_exec.c in Sources */, + 7558DB6418C6795A008985A7 /* pcre32_printint.c in Sources */, + 7558DB6A18C6795A008985A7 /* pcre32_utf32_utils.c in Sources */, 43EFD6FB15EAADAC004080CE /* RegalDispatchStaticEGL.cpp in Sources */, 43EFD6FC15EAADAC004080CE /* RegalDispatchStaticES2.cpp in Sources */, + 7558DB5C18C6795A008985A7 /* pcre32_exec.c in Sources */, + 7558DEDA18C67E0F008985A7 /* builtin_stubs.cpp in Sources */, + 7558DF6218C67E0F008985A7 /* standalone_scaffolding.cpp in Sources */, + 7558DF5718C67E0F008985A7 /* opt_if_simplification.cpp in Sources */, BC6C912A15EE3DC60056E4F7 /* RegalDispatchGlobal.cpp in Sources */, + 7558DB6618C6795A008985A7 /* pcre32_string_utils.c in Sources */, + 7558DB7618C6795A008985A7 /* pcre_globals.c in Sources */, BC020947160D1919003FAB99 /* RegalMarker.cpp in Sources */, + 7558DED818C67E0F008985A7 /* ast_to_hir.cpp in Sources */, + 7558DB7B18C6795A008985A7 /* pcre_newline.c in Sources */, BC020958160D1C73003FAB99 /* md5.c in Sources */, + 7558DB6918C6795A008985A7 /* pcre32_ucd.c in Sources */, BC640CA416554AA4007DEF69 /* RegalFrame.cpp in Sources */, BCBEC6E9167AD66F00B38E16 /* RegalDispatchCache.cpp in Sources */, + 7558DF5218C67E0F008985A7 /* opt_dead_code.cpp in Sources */, + 7558DB8B18C6795A008985A7 /* pcreposix.c in Sources */, + 7558DF0318C67E0F008985A7 /* glsl_symbol_table.cpp in Sources */, + 7558DB5E18C6795A008985A7 /* pcre32_get.c in Sources */, BCBEC6EA167AD66F00B38E16 /* RegalDispatchCode.cpp in Sources */, BCBEC6FA167AD69D00B38E16 /* RegalSo.cpp in Sources */, BC94B98F16DFDD6D00116D55 /* RegalBreak.cpp in Sources */, + 7558DF1618C67E0F008985A7 /* ir_hierarchical_visitor.cpp in Sources */, + 7558DED618C67E0F008985A7 /* ast_expr.cpp in Sources */, BC94B99316DFDDA000116D55 /* RegalFilt.cpp in Sources */, + 7558DB4818C6795A008985A7 /* pcre16_globals.c in Sources */, + 7558DB8618C6795A008985A7 /* pcre_xclass.c in Sources */, + 7558DB6018C6795A008985A7 /* pcre32_jit_compile.c in Sources */, + 7558DED918C67E0F008985A7 /* ast_type.cpp in Sources */, + 7558DB6818C6795A008985A7 /* pcre32_tables.c in Sources */, + 7558DB5918C6795A008985A7 /* pcre32_compile.c in Sources */, + 7558DB5218C6795A008985A7 /* pcre16_ucd.c in Sources */, + 7558DB8018C6795A008985A7 /* pcre_string_utils.c in Sources */, + 7558DF4F18C67E0F008985A7 /* opt_constant_variable.cpp in Sources */, + 7558DB5018C6795A008985A7 /* pcre16_study.c in Sources */, + 7558DB4018C6795A008985A7 /* pcre16_byte_order.c in Sources */, + 7558DF4D18C67E0F008985A7 /* opt_constant_folding.cpp in Sources */, BC3209D416F3A0E600D1A9E0 /* RegalCacheShader.cpp in Sources */, + 7558DF4318C67E0F008985A7 /* lower_packing_builtins.cpp in Sources */, + 7558DF0818C67E0F008985A7 /* ir.cpp in Sources */, + 7558DB3E18C6795A008985A7 /* dftables.c in Sources */, + 7558DB4218C6795A008985A7 /* pcre16_compile.c in Sources */, BC3209D616F3A0E600D1A9E0 /* RegalCacheTexture.cpp in Sources */, + 7558DB7518C6795A008985A7 /* pcre_get.c in Sources */, + 7558DB5718C6795A008985A7 /* pcre32_byte_order.c in Sources */, BC59F9E9174809EE004BC2AC /* RegalPixelConversions.cpp in Sources */, + 7558DF2E18C67E0F008985A7 /* link_uniform_initializers.cpp in Sources */, + 7558DB7118C6795A008985A7 /* pcre_config.c in Sources */, + 7558DF5E18C67E0F008985A7 /* ralloc.c in Sources */, + 7558DF6418C67E0F008985A7 /* strtod.c in Sources */, + 7558DB8918C6795A008985A7 /* pcredemo.c in Sources */, + 7558DF3218C67E0F008985A7 /* linker.cpp in Sources */, BC59F9EA174809EE004BC2AC /* RegalTexC.cpp in Sources */, BC59F9EB174809EE004BC2AC /* RegalXfer.cpp in Sources */, BCBF184A175EBB3000CB653A /* RegalDispatcherGL.cpp in Sources */, BCBF184C175EBB3000CB653A /* RegalDispatcherGlobal.cpp in Sources */, + 7558DF1918C67E0F008985A7 /* ir_import_prototypes.cpp in Sources */, + 7558DF4518C67E0F008985A7 /* lower_variable_index_to_cond_assign.cpp in Sources */, + 7558DB5818C6795A008985A7 /* pcre32_chartables.c in Sources */, BCBF184E175EBB3000CB653A /* RegalDispatchStatistics.cpp in Sources */, + 7558DB8518C6795A008985A7 /* pcre_version.c in Sources */, BCBF184F175EBB3000CB653A /* RegalDispatchTrace.cpp in Sources */, BCBF1850175EBB3000CB653A /* RegalPlugin.cpp in Sources */, + 7558DF6D18C67E0F008985A7 /* hash_table.c in Sources */, + 7558DF7318C67E0F008985A7 /* set.c in Sources */, + 7558DB5D18C6795A008985A7 /* pcre32_fullinfo.c in Sources */, + 7558DF7718C67E0F008985A7 /* prog_hash_table.c in Sources */, + 7558DB4A18C6795A008985A7 /* pcre16_maketables.c in Sources */, BCBF1851175EBB3000CB653A /* RegalStatistics.cpp in Sources */, + 7558DB5318C6795A008985A7 /* pcre16_utf16_utils.c in Sources */, + 7558DB7418C6795A008985A7 /* pcre_fullinfo.c in Sources */, BCDF669F178F170300EE9569 /* snappy-c.cc in Sources */, + 7558DB4D18C6795A008985A7 /* pcre16_printint.c in Sources */, BCDF66A1178F170300EE9569 /* snappy-sinksource.cc in Sources */, BCDF66A3178F170300EE9569 /* snappy.cc in Sources */, + 7558DB7918C6795A008985A7 /* pcre_jit_test.c in Sources */, + 7558DEFF18C67E0F008985A7 /* glsl_parser.cpp in Sources */, + 7558DF7B18C67E0F008985A7 /* symbol_table.c in Sources */, BCDF66D6178F172A00EE9569 /* os_posix.cpp in Sources */, + 7558DF2618C67E0F008985A7 /* ir_validate.cpp in Sources */, + 7558DF5C18C67E0F008985A7 /* opt_tree_grafting.cpp in Sources */, + 7558DF6018C67E0F008985A7 /* s_expression.cpp in Sources */, BCDF66DB178F172A00EE9569 /* os_win32.cpp in Sources */, + 7558DF3718C67E0F008985A7 /* loop_controls.cpp in Sources */, BCDF66E0178F172A00EE9569 /* trace_callset.cpp in Sources */, + 7558DEDB18C67E0F008985A7 /* builtin_function.cpp in Sources */, + 7558DB7E18C6795A008985A7 /* pcre_refcount.c in Sources */, + 7558DB7A18C6795A008985A7 /* pcre_maketables.c in Sources */, + 755DED9018C692CA00B417E0 /* RegalDispatchHttp.cpp in Sources */, + 7558DF2718C67E0F008985A7 /* ir_variable_refcount.cpp in Sources */, + 7558DED718C67E0F008985A7 /* ast_function.cpp in Sources */, + 7558DB4F18C6795A008985A7 /* pcre16_string_utils.c in Sources */, + 7558DB4E18C6795A008985A7 /* pcre16_refcount.c in Sources */, + 7558DF5B18C67E0F008985A7 /* opt_swizzle_swizzle.cpp in Sources */, BCDF66E2178F172A00EE9569 /* trace_dump.cpp in Sources */, + 7558DF3018C67E0F008985A7 /* link_varyings.cpp in Sources */, + 7558DB4418C6795A008985A7 /* pcre16_dfa_exec.c in Sources */, + 7558DB7218C6795A008985A7 /* pcre_dfa_exec.c in Sources */, BCDF66E4178F172A00EE9569 /* trace_fast_callset.cpp in Sources */, + 7558DB6B18C6795A008985A7 /* pcre32_valid_utf32.c in Sources */, BCDF66E6178F172A00EE9569 /* trace_file_read.cpp in Sources */, BCDF66E7178F172A00EE9569 /* trace_file_snappy.cpp in Sources */, BCDF66E8178F172A00EE9569 /* trace_file_write.cpp in Sources */, + 7558DB4118C6795A008985A7 /* pcre16_chartables.c in Sources */, + 7558DF3E18C67E0F008985A7 /* lower_jumps.cpp in Sources */, + 7558DF4B18C67E0F008985A7 /* opt_algebraic.cpp in Sources */, BCDF66EA178F172A00EE9569 /* trace_file.cpp in Sources */, + 7558DF2D18C67E0F008985A7 /* link_uniform_blocks.cpp in Sources */, BCDF66ED178F172A00EE9569 /* trace_loader.cpp in Sources */, BCDF66F0178F172A00EE9569 /* trace_model.cpp in Sources */, BCDF66F2178F172A00EE9569 /* trace_option.cpp in Sources */, BCDF66F4178F172A00EE9569 /* trace_parser_flags.cpp in Sources */, + 7558DF2A18C67E0F008985A7 /* link_functions.cpp in Sources */, + 7558DF4418C67E0F008985A7 /* lower_ubo_reference.cpp in Sources */, BCDF66F5178F172A00EE9569 /* trace_parser.cpp in Sources */, BCDF66F7178F172A00EE9569 /* trace_profiler.cpp in Sources */, + 7558DF3B18C67E0F008985A7 /* lower_discard_flow.cpp in Sources */, BCDF66F9178F172A00EE9569 /* trace_writer_model.cpp in Sources */, + 7558DF2418C67E0F008985A7 /* ir_unused_structs.cpp in Sources */, + 7558DF3C18C67E0F008985A7 /* lower_if_to_cond_assign.cpp in Sources */, BCDF66FA178F172A00EE9569 /* trace_writer_regal.cpp in Sources */, BCDF66FC178F172A00EE9569 /* trace_writer.cpp in Sources */, BCDF66FF178F174A00EE9569 /* glproc_regal.cpp in Sources */, + 7558DF1B18C67E0F008985A7 /* ir_print_glsl_visitor.cpp in Sources */, + 7558DF4218C67E0F008985A7 /* lower_packed_varyings.cpp in Sources */, BCDF6703178F176300EE9569 /* eglsize.cpp in Sources */, BCDF670C178F179800EE9569 /* glcaps.cpp in Sources */, + 7558DEFD18C67E0F008985A7 /* glsl_optimizer.cpp in Sources */, + 7558DB8118C6795A008985A7 /* pcre_study.c in Sources */, + 7558DEFA18C67E0F008985A7 /* pp.c in Sources */, + 7558DB6F18C6795A008985A7 /* pcre_chartables.c in Sources */, BCDF670D178F179800EE9569 /* gltrace_state.cpp in Sources */, BCDF670F178F179800EE9569 /* regaltrace.cpp in Sources */, + 7558DB5418C6795A008985A7 /* pcre16_valid_utf16.c in Sources */, BCDF6710178F179800EE9569 /* trace.cpp in Sources */, + 7558DB7818C6795A008985A7 /* pcre_jit_compile.c in Sources */, + 7558DB6518C6795A008985A7 /* pcre32_refcount.c in Sources */, + 7558DB5A18C6795A008985A7 /* pcre32_config.c in Sources */, 754D3C9517CFFD7200E4C0E0 /* RegalEmu.cpp in Sources */, + 7558DF4C18C67E0F008985A7 /* opt_array_splitting.cpp in Sources */, BCBA1FD617DF848800CB6E19 /* RegalEmuInfo.cpp in Sources */, + 7558DF4718C67E0F008985A7 /* lower_vec_index_to_swizzle.cpp in Sources */, + 7558DF0E18C67E0F008985A7 /* ir_clone.cpp in Sources */, + 7558DB4718C6795A008985A7 /* pcre16_get.c in Sources */, + 7558DB7D18C6795A008985A7 /* pcre_printint.c in Sources */, BCBA1FDA17DF848800CB6E19 /* RegalX11.cpp in Sources */, + 7558DB6318C6795A008985A7 /* pcre32_ord2utf32.c in Sources */, + 7558DB4918C6795A008985A7 /* pcre16_jit_compile.c in Sources */, + 7558DB6118C6795A008985A7 /* pcre32_maketables.c in Sources */, + 7558DEF618C67E0F008985A7 /* glcpp-parse.c in Sources */, + 7558DF0518C67E0F008985A7 /* glsl_types.cpp in Sources */, + 7558DB6218C6795A008985A7 /* pcre32_newline.c in Sources */, + 7558DF0F18C67E0F008985A7 /* ir_constant_expression.cpp in Sources */, + 7558DEDD18C67E0F008985A7 /* builtin_variables.cpp in Sources */, BCBA1FDC17DF848800CB6E19 /* RegalDispatchGLX.cpp in Sources */, + 7558DED018C67E0F008985A7 /* regal_glsl.cpp in Sources */, + 7558DF0118C67E0F008985A7 /* glsl_parser_extras.cpp in Sources */, 75694C8E17EB913B00B8AD9D /* RegalQuads.cpp in Sources */, + 7558DB4618C6795A008985A7 /* pcre16_fullinfo.c in Sources */, + 7558DF5A18C67E0F008985A7 /* opt_structure_splitting.cpp in Sources */, + 7558DF3D18C67E0F008985A7 /* lower_instructions.cpp in Sources */, + 7558DF0C18C67E0F008985A7 /* ir_builder.cpp in Sources */, + 7558DEFB18C67E0F008985A7 /* glsl_lexer.cpp in Sources */, + 7558DF5118C67E0F008985A7 /* opt_copy_propagation_elements.cpp in Sources */, + 7558DF4018C67E0F008985A7 /* lower_noise.cpp in Sources */, BC4935031804FD53004385CA /* os_backtrace.cpp in Sources */, BC4935061804FDEE004385CA /* RegalDispatch.cpp in Sources */, + 7558DF5018C67E0F008985A7 /* opt_copy_propagation.cpp in Sources */, + 7558DF5518C67E0F008985A7 /* opt_flatten_nested_if_blocks.cpp in Sources */, + 435914FE182FF3A3002CB92C /* RegalShader.cpp in Sources */, + 7558DF2118C67E0F008985A7 /* ir_rvalue_visitor.cpp in Sources */, + 7558DF5318C67E0F008985A7 /* opt_dead_code_local.cpp in Sources */, + 7558DB6718C6795A008985A7 /* pcre32_study.c in Sources */, + 43591500182FF3A3002CB92C /* RegalShaderInstance.cpp in Sources */, + 7558DB5518C6795A008985A7 /* pcre16_version.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -934,7 +1986,11 @@ ../../../src/apitrace, ../../../src/snappy, ../../../src/apitrace/thirdparty/khronos, + ../../../src/glsl/include, + ../../../src/glsl/src/glsl, + ../../../src/glsl/src/mesa, ); + OTHER_CFLAGS = "-DHAVE_CONFIG_H=1"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -966,7 +2022,11 @@ ../../../src/apitrace, ../../../src/snappy, ../../../src/apitrace/thirdparty/khronos, + ../../../src/glsl/include, + ../../../src/glsl/src/glsl, + ../../../src/glsl/src/mesa, ); + OTHER_CFLAGS = "-DHAVE_CONFIG_H=1"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/build/mac/Regal/Regal.xcodeproj/project.pbxproj b/build/mac/Regal/Regal.xcodeproj/project.pbxproj index 42c7928..df95f72 100644 --- a/build/mac/Regal/Regal.xcodeproj/project.pbxproj +++ b/build/mac/Regal/Regal.xcodeproj/project.pbxproj @@ -23,6 +23,382 @@ 4359148318293B32002CB92C /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146F18293A9C002CB92C /* libsnappy.a */; }; 4359148418293B32002CB92C /* libsquish.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359147518293AAA002CB92C /* libsquish.a */; }; 4359148518293B32002CB92C /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359147B18293AB2002CB92C /* libzlib.a */; }; + 435914B5182945FE002CB92C /* libglsl_optimizer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 435914AA182945F0002CB92C /* libglsl_optimizer.a */; }; + 435914DB182BF69F002CB92C /* RegalLayerInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914D7182BF69F002CB92C /* RegalLayerInfo.h */; }; + 435914DC182BF69F002CB92C /* RegalShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914D8182BF69F002CB92C /* RegalShader.cpp */; }; + 435914DD182BF69F002CB92C /* RegalShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914D9182BF69F002CB92C /* RegalShader.h */; }; + 435914DE182BF69F002CB92C /* RegalShaderInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914DA182BF69F002CB92C /* RegalShaderInstance.cpp */; }; + 435914EB182BFBDB002CB92C /* RegalShaderInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914EA182BFBDB002CB92C /* RegalShaderInstance.h */; }; + 435915921836766E002CB92C /* linear.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D215C48D1F0063667E /* linear.h */; }; + 435915931836766E002CB92C /* Regal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D315C48D1F0063667E /* Regal.cpp */; }; + 435915941836766E002CB92C /* Regal.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C3616DE6699005E03F6 /* Regal.h */; }; + 435915951836766E002CB92C /* RegalBaseVertex.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182F175EB49D00CB653A /* RegalBaseVertex.h */; }; + 435915961836766E002CB92C /* RegalBin.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D415C48D1F0063667E /* RegalBin.h */; }; + 435915971836766E002CB92C /* RegalBreak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94B98916DFDC6200116D55 /* RegalBreak.cpp */; }; + 435915981836766E002CB92C /* RegalBreak.h in Sources */ = {isa = PBXBuildFile; fileRef = BC94B98A16DFDC6200116D55 /* RegalBreak.h */; }; + 435915991836766E002CB92C /* RegalCacheShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209D816F3A28900D1A9E0 /* RegalCacheShader.cpp */; }; + 4359159A1836766E002CB92C /* RegalCacheShader.h in Sources */ = {isa = PBXBuildFile; fileRef = BC3209D916F3A28900D1A9E0 /* RegalCacheShader.h */; }; + 4359159B1836766E002CB92C /* RegalCacheTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209DA16F3A28900D1A9E0 /* RegalCacheTexture.cpp */; }; + 4359159C1836766E002CB92C /* RegalCacheTexture.h in Sources */ = {isa = PBXBuildFile; fileRef = BC3209DB16F3A28900D1A9E0 /* RegalCacheTexture.h */; }; + 4359159D1836766E002CB92C /* RegalClientState.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1830175EB49D00CB653A /* RegalClientState.h */; }; + 4359159E1836766E002CB92C /* RegalConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D515C48D1F0063667E /* RegalConfig.cpp */; }; + 4359159F1836766E002CB92C /* RegalConfig.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D615C48D1F0063667E /* RegalConfig.h */; }; + 435915A01836766E002CB92C /* RegalContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D715C48D1F0063667E /* RegalContext.cpp */; }; + 435915A11836766E002CB92C /* RegalContext.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D815C48D1F0063667E /* RegalContext.h */; }; + 435915A21836766E002CB92C /* RegalContextInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D915C48D1F0063667E /* RegalContextInfo.cpp */; }; + 435915A31836766E002CB92C /* RegalContextInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DA15C48D1F0063667E /* RegalContextInfo.h */; }; + 435915A41836766E002CB92C /* RegalDebugInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DB15C48D1F0063667E /* RegalDebugInfo.h */; }; + 435915A51836766E002CB92C /* RegalDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB6107017F21E6500BA0A06 /* RegalDispatch.cpp */; }; + 435915A61836766E002CB92C /* RegalDispatch.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DC15C48D1F0063667E /* RegalDispatch.h */; }; + 435915A71836766E002CB92C /* RegalDispatchCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC710167AD74400B38E16 /* RegalDispatchCache.cpp */; }; + 435915A81836766E002CB92C /* RegalDispatchCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC711167AD74400B38E16 /* RegalDispatchCode.cpp */; }; + 435915A91836766E002CB92C /* RegalDispatchDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DD15C48D1F0063667E /* RegalDispatchDebug.cpp */; }; + 435915AA1836766E002CB92C /* RegalDispatchEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DE15C48D1F0063667E /* RegalDispatchEmu.cpp */; }; + 435915AB1836766E002CB92C /* RegalDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A515E079C20093B7D5 /* RegalDispatcher.cpp */; }; + 435915AC1836766E002CB92C /* RegalDispatcher.h in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A615E079C20093B7D5 /* RegalDispatcher.h */; }; + 435915AD1836766E002CB92C /* RegalDispatcherGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1823175EB40600CB653A /* RegalDispatcherGL.cpp */; }; + 435915AE1836766E002CB92C /* RegalDispatcherGL.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1824175EB40600CB653A /* RegalDispatcherGL.h */; }; + 435915AF1836766E002CB92C /* RegalDispatcherGlobal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1825175EB40600CB653A /* RegalDispatcherGlobal.cpp */; }; + 435915B01836766E002CB92C /* RegalDispatcherGlobal.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1826175EB40600CB653A /* RegalDispatcherGlobal.h */; }; + 435915B11836766E002CB92C /* RegalDispatchError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DF15C48D1F0063667E /* RegalDispatchError.cpp */; }; + 435915B21836766E002CB92C /* RegalDispatchError.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E015C48D1F0063667E /* RegalDispatchError.h */; }; + 435915B31836766E002CB92C /* RegalDispatchGlobal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6C911C15EE3CDF0056E4F7 /* RegalDispatchGlobal.cpp */; }; + 435915B41836766E002CB92C /* RegalDispatchGLX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB717C5AF870005C418 /* RegalDispatchGLX.cpp */; }; + 435915B51836766E002CB92C /* RegalDispatchLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E115C48D1F0063667E /* RegalDispatchLoader.cpp */; }; + 435915B61836766E002CB92C /* RegalDispatchLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E215C48D1F0063667E /* RegalDispatchLog.cpp */; }; + 435915B71836766E002CB92C /* RegalDispatchMissing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC456F1015D55F8E0080B420 /* RegalDispatchMissing.cpp */; }; + 435915B81836766E002CB92C /* RegalDispatchPpapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC456F1115D55F8E0080B420 /* RegalDispatchPpapi.cpp */; }; + 435915B91836766E002CB92C /* RegalDispatchStaticEGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB917C5AF880005C418 /* RegalDispatchStaticEGL.cpp */; }; + 435915BA1836766E002CB92C /* RegalDispatchStaticES2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A915E079D80093B7D5 /* RegalDispatchStaticES2.cpp */; }; + 435915BB1836766E002CB92C /* RegalDispatchStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1831175EB49D00CB653A /* RegalDispatchStatistics.cpp */; }; + 435915BC1836766E002CB92C /* RegalDispatchTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1832175EB49D00CB653A /* RegalDispatchTrace.cpp */; }; + 435915BD1836766E002CB92C /* RegalDllMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E415C48D1F0063667E /* RegalDllMain.cpp */; }; + 435915BE1836766E002CB92C /* RegalDsa.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E515C48D1F0063667E /* RegalDsa.h */; }; + 435915BF1836766E002CB92C /* RegalEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC917DF836700CB6E19 /* RegalEmu.cpp */; }; + 435915C01836766E002CB92C /* RegalEmu.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E615C48D200063667E /* RegalEmu.h */; }; + 435915C11836766E002CB92C /* RegalEmuInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC717DF836700CB6E19 /* RegalEmuInfo.cpp */; }; + 435915C21836766E002CB92C /* RegalEmuInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC817DF836700CB6E19 /* RegalEmuInfo.h */; }; + 435915C31836766E002CB92C /* RegalEnum.h in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0915C9B6F0009DD04F /* RegalEnum.h */; }; + 435915C41836766E002CB92C /* RegalFavicon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0A15C9B6F0009DD04F /* RegalFavicon.cpp */; }; + 435915C51836766E002CB92C /* RegalFavicon.h in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0B15C9B6F0009DD04F /* RegalFavicon.h */; }; + 435915C61836766E002CB92C /* RegalFilt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94B99516DFDF1F00116D55 /* RegalFilt.cpp */; }; + 435915C71836766E002CB92C /* RegalFilt.h in Sources */ = {isa = PBXBuildFile; fileRef = BC94B99616DFDF1F00116D55 /* RegalFilt.h */; }; + 435915C81836766E002CB92C /* RegalFloat4.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1833175EB49D00CB653A /* RegalFloat4.h */; }; + 435915C91836766E002CB92C /* RegalFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC640C9A16554A52007DEF69 /* RegalFrame.cpp */; }; + 435915CA1836766E002CB92C /* RegalFrame.h in Sources */ = {isa = PBXBuildFile; fileRef = BC640C9B16554A52007DEF69 /* RegalFrame.h */; }; + 435915CB1836766E002CB92C /* RegalHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E715C48D200063667E /* RegalHelper.cpp */; }; + 435915CC1836766E002CB92C /* RegalHelper.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E815C48D200063667E /* RegalHelper.h */; }; + 435915CD1836766E002CB92C /* RegalHint.h in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CBA17C5AF880005C418 /* RegalHint.h */; }; + 435915CE1836766E002CB92C /* RegalHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E915C48D200063667E /* RegalHttp.cpp */; }; + 435915CF1836766E002CB92C /* RegalHttp.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EA15C48D200063667E /* RegalHttp.h */; }; + 435915D01836766E002CB92C /* RegalIff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EB15C48D200063667E /* RegalIff.cpp */; }; + 435915D11836766E002CB92C /* RegalIff.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EC15C48D200063667E /* RegalIff.h */; }; + 435915D21836766E002CB92C /* RegalInit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1ED15C48D200063667E /* RegalInit.cpp */; }; + 435915D31836766E002CB92C /* RegalInit.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EE15C48D200063667E /* RegalInit.h */; }; + 435915D41836766E002CB92C /* RegalJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */; }; + 435915D51836766E002CB92C /* RegalJson.h in Sources */ = {isa = PBXBuildFile; fileRef = BC60A6B117032F1A0055437B /* RegalJson.h */; }; + 435915D61836766E002CB92C /* RegalJson.inl in Sources */ = {isa = PBXBuildFile; fileRef = 436E18CA17020027005BE93E /* RegalJson.inl */; }; + 435915D71836766E002CB92C /* RegalLayerInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = 435914D7182BF69F002CB92C /* RegalLayerInfo.h */; }; + 435915D81836766E002CB92C /* RegalLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EF15C48D200063667E /* RegalLog.cpp */; }; + 435915D91836766E002CB92C /* RegalLog.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F015C48D200063667E /* RegalLog.h */; }; + 435915DA1836766E002CB92C /* RegalLookup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F115C48D200063667E /* RegalLookup.cpp */; }; + 435915DB1836766E002CB92C /* RegalLookup.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F215C48D200063667E /* RegalLookup.h */; }; + 435915DC1836766E002CB92C /* RegalMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0C15C9B6F0009DD04F /* RegalMac.cpp */; }; + 435915DD1836766E002CB92C /* RegalMac.h in Sources */ = {isa = PBXBuildFile; fileRef = 430443F216F1658F0078C0F9 /* RegalMac.h */; }; + 435915DE1836766E002CB92C /* RegalMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02094D160D1BA3003FAB99 /* RegalMarker.cpp */; }; + 435915DF1836766E002CB92C /* RegalMarker.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F315C48D200063667E /* RegalMarker.h */; }; + 435915E01836766E002CB92C /* RegalMutex.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1834175EB49D00CB653A /* RegalMutex.h */; }; + 435915E11836766E002CB92C /* RegalNamespace.h in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CBB17C5AF880005C418 /* RegalNamespace.h */; }; + 435915E21836766E002CB92C /* RegalObj.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F415C48D200063667E /* RegalObj.h */; }; + 435915E31836766E002CB92C /* RegalPixelConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */; }; + 435915E41836766E002CB92C /* RegalPixelConversions.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2216DE668A005E03F6 /* RegalPixelConversions.h */; }; + 435915E51836766E002CB92C /* RegalPixelConversions.inl in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2316DE668A005E03F6 /* RegalPixelConversions.inl */; }; + 435915E61836766E002CB92C /* RegalPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1835175EB49D00CB653A /* RegalPlugin.cpp */; }; + 435915E71836766E002CB92C /* RegalPpa.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F515C48D200063667E /* RegalPpa.h */; }; + 435915E81836766E002CB92C /* RegalPpca.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2516DE668A005E03F6 /* RegalPpca.h */; }; + 435915E91836766E002CB92C /* RegalPrecompile.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F715C48D200063667E /* RegalPrecompile.h */; }; + 435915EA1836766E002CB92C /* RegalPrivate.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F815C48D200063667E /* RegalPrivate.h */; }; + 435915EB1836766E002CB92C /* RegalPush.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC6FF167AD72700B38E16 /* RegalPush.h */; }; + 435915EC1836766E002CB92C /* RegalQuads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4DBEC11804FB0600F6D226 /* RegalQuads.cpp */; }; + 435915ED1836766E002CB92C /* RegalQuads.h in Sources */ = {isa = PBXBuildFile; fileRef = BC4DBEC21804FB0600F6D226 /* RegalQuads.h */; }; + 435915EE1836766E002CB92C /* RegalRect.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1836175EB49D00CB653A /* RegalRect.h */; }; + 435915EF1836766E002CB92C /* RegalScopedPtr.h in Sources */ = {isa = PBXBuildFile; fileRef = 430443F316F1658F0078C0F9 /* RegalScopedPtr.h */; }; + 435915F01836766E002CB92C /* RegalShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914D8182BF69F002CB92C /* RegalShader.cpp */; }; + 435915F11836766E002CB92C /* RegalShader.h in Sources */ = {isa = PBXBuildFile; fileRef = 435914D9182BF69F002CB92C /* RegalShader.h */; }; + 435915F21836766E002CB92C /* RegalShaderInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914DA182BF69F002CB92C /* RegalShaderInstance.cpp */; }; + 435915F31836766E002CB92C /* RegalShaderInstance.h in Sources */ = {isa = PBXBuildFile; fileRef = 435914EA182BFBDB002CB92C /* RegalShaderInstance.h */; }; + 435915F41836766E002CB92C /* RegalSharedList.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC702167AD72700B38E16 /* RegalSharedList.h */; }; + 435915F51836766E002CB92C /* RegalSharedMap.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC703167AD72700B38E16 /* RegalSharedMap.h */; }; + 435915F61836766E002CB92C /* RegalSharedPtr.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC704167AD72700B38E16 /* RegalSharedPtr.h */; }; + 435915F71836766E002CB92C /* RegalSo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC705167AD72700B38E16 /* RegalSo.cpp */; }; + 435915F81836766E002CB92C /* RegalSo.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC706167AD72700B38E16 /* RegalSo.h */; }; + 435915F91836766E002CB92C /* RegalState.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F915C48D200063667E /* RegalState.h */; }; + 435915FA1836766E002CB92C /* RegalStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182B175EB46800CB653A /* RegalStatistics.cpp */; }; + 435915FB1836766E002CB92C /* RegalStatistics.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182C175EB46800CB653A /* RegalStatistics.h */; }; + 435915FC1836766E002CB92C /* RegalSystem.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2616DE668A005E03F6 /* RegalSystem.h */; }; + 435915FD1836766E002CB92C /* RegalTexC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2716DE668A005E03F6 /* RegalTexC.cpp */; }; + 435915FE1836766E002CB92C /* RegalTexC.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2816DE668A005E03F6 /* RegalTexC.h */; }; + 435915FF1836766E002CB92C /* RegalTexSto.h in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CBC17C5AF880005C418 /* RegalTexSto.h */; }; + 435916001836766E002CB92C /* RegalThread.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2916DE668A005E03F6 /* RegalThread.h */; }; + 435916011836766E002CB92C /* RegalTimer.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2A16DE668A005E03F6 /* RegalTimer.h */; }; + 435916021836766E002CB92C /* RegalToken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FA15C48D200063667E /* RegalToken.cpp */; }; + 435916031836766E002CB92C /* RegalToken.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FB15C48D200063667E /* RegalToken.h */; }; + 435916041836766E002CB92C /* RegalUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FC15C48D200063667E /* RegalUtil.cpp */; }; + 435916051836766E002CB92C /* RegalUtil.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FD15C48D200063667E /* RegalUtil.h */; }; + 435916061836766E002CB92C /* RegalVao.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FE15C48D200063667E /* RegalVao.h */; }; + 435916071836766E002CB92C /* RegalX11.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB817C5AF870005C418 /* RegalX11.cpp */; }; + 435916081836766E002CB92C /* RegalXfer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 430443EE16F1656A0078C0F9 /* RegalXfer.cpp */; }; + 435916091836766E002CB92C /* RegalXfer.h in Sources */ = {isa = PBXBuildFile; fileRef = 430443EF16F1656A0078C0F9 /* RegalXfer.h */; }; + 4359160A183677E8002CB92C /* libapitrace.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359144B18293A5C002CB92C /* libapitrace.a */; }; + 4359160B183677E8002CB92C /* libglsl_optimizer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 435914AA182945F0002CB92C /* libglsl_optimizer.a */; }; + 4359160C183677E8002CB92C /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145118293A68002CB92C /* libjsonsl.a */; }; + 4359160D183677E8002CB92C /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145718293A74002CB92C /* libmd5.a */; }; + 4359160E183677E8002CB92C /* libmongoose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145D18293A7D002CB92C /* libmongoose.a */; }; + 4359160F183677E8002CB92C /* libpcre.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146318293A8B002CB92C /* libpcre.a */; }; + 43591610183677E8002CB92C /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146918293A94002CB92C /* libpng.a */; }; + 43591611183677E8002CB92C /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146F18293A9C002CB92C /* libsnappy.a */; }; + 43591612183677E8002CB92C /* libsquish.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359147518293AAA002CB92C /* libsquish.a */; }; + 43591613183677E8002CB92C /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359147B18293AB2002CB92C /* libzlib.a */; }; + 4359165518367DEE002CB92C /* Regal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D315C48D1F0063667E /* Regal.cpp */; }; + 4359165618367DEE002CB92C /* RegalConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D515C48D1F0063667E /* RegalConfig.cpp */; }; + 4359165718367DEE002CB92C /* RegalContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D715C48D1F0063667E /* RegalContext.cpp */; }; + 4359165818367DEE002CB92C /* RegalContextInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D915C48D1F0063667E /* RegalContextInfo.cpp */; }; + 4359165918367DEE002CB92C /* RegalDispatchDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DD15C48D1F0063667E /* RegalDispatchDebug.cpp */; }; + 4359165A18367DEE002CB92C /* RegalDispatchEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DE15C48D1F0063667E /* RegalDispatchEmu.cpp */; }; + 4359165B18367DEE002CB92C /* RegalDispatchError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DF15C48D1F0063667E /* RegalDispatchError.cpp */; }; + 4359165C18367DEE002CB92C /* RegalDispatchLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E115C48D1F0063667E /* RegalDispatchLoader.cpp */; }; + 4359165D18367DEE002CB92C /* RegalDispatchLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E215C48D1F0063667E /* RegalDispatchLog.cpp */; }; + 4359165E18367DEE002CB92C /* RegalDllMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E415C48D1F0063667E /* RegalDllMain.cpp */; }; + 4359165F18367DEE002CB92C /* RegalHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E715C48D200063667E /* RegalHelper.cpp */; }; + 4359166018367DEE002CB92C /* RegalHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E915C48D200063667E /* RegalHttp.cpp */; }; + 4359166118367DEE002CB92C /* RegalIff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EB15C48D200063667E /* RegalIff.cpp */; }; + 4359166218367DEE002CB92C /* RegalInit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1ED15C48D200063667E /* RegalInit.cpp */; }; + 4359166318367DEE002CB92C /* RegalLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EF15C48D200063667E /* RegalLog.cpp */; }; + 4359166418367DEE002CB92C /* RegalLookup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F115C48D200063667E /* RegalLookup.cpp */; }; + 4359166518367DEE002CB92C /* RegalToken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FA15C48D200063667E /* RegalToken.cpp */; }; + 4359166618367DEE002CB92C /* RegalUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FC15C48D200063667E /* RegalUtil.cpp */; }; + 4359166718367DEE002CB92C /* RegalFavicon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0A15C9B6F0009DD04F /* RegalFavicon.cpp */; }; + 4359166818367DEE002CB92C /* RegalMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0C15C9B6F0009DD04F /* RegalMac.cpp */; }; + 4359166918367DEE002CB92C /* RegalDispatchMissing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC456F1015D55F8E0080B420 /* RegalDispatchMissing.cpp */; }; + 4359166A18367DEE002CB92C /* RegalDispatchPpapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC456F1115D55F8E0080B420 /* RegalDispatchPpapi.cpp */; }; + 4359166B18367DEE002CB92C /* RegalDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A515E079C20093B7D5 /* RegalDispatcher.cpp */; }; + 4359166C18367DEE002CB92C /* RegalDispatchStaticES2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A915E079D80093B7D5 /* RegalDispatchStaticES2.cpp */; }; + 4359166D18367DEE002CB92C /* RegalDispatchGlobal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6C911C15EE3CDF0056E4F7 /* RegalDispatchGlobal.cpp */; }; + 4359166E18367DEE002CB92C /* RegalMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02094D160D1BA3003FAB99 /* RegalMarker.cpp */; }; + 4359166F18367DEE002CB92C /* RegalFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC640C9A16554A52007DEF69 /* RegalFrame.cpp */; }; + 4359167018367DEE002CB92C /* RegalSo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC705167AD72700B38E16 /* RegalSo.cpp */; }; + 4359167118367DEE002CB92C /* RegalDispatchCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC710167AD74400B38E16 /* RegalDispatchCache.cpp */; }; + 4359167218367DEE002CB92C /* RegalDispatchCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC711167AD74400B38E16 /* RegalDispatchCode.cpp */; }; + 4359167318367DEE002CB92C /* RegalJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */; }; + 4359167418367DEE002CB92C /* RegalPixelConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */; }; + 4359167518367DEE002CB92C /* RegalTexC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2716DE668A005E03F6 /* RegalTexC.cpp */; }; + 4359167618367DEE002CB92C /* RegalBreak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94B98916DFDC6200116D55 /* RegalBreak.cpp */; }; + 4359167718367DEE002CB92C /* RegalFilt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94B99516DFDF1F00116D55 /* RegalFilt.cpp */; }; + 4359167818367DEE002CB92C /* RegalXfer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 430443EE16F1656A0078C0F9 /* RegalXfer.cpp */; }; + 4359167918367DEE002CB92C /* RegalCacheShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209D816F3A28900D1A9E0 /* RegalCacheShader.cpp */; }; + 4359167A18367DEE002CB92C /* RegalCacheTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209DA16F3A28900D1A9E0 /* RegalCacheTexture.cpp */; }; + 4359167B18367DEE002CB92C /* RegalDispatcherGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1823175EB40600CB653A /* RegalDispatcherGL.cpp */; }; + 4359167C18367DEE002CB92C /* RegalDispatcherGlobal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1825175EB40600CB653A /* RegalDispatcherGlobal.cpp */; }; + 4359167D18367DEE002CB92C /* RegalStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182B175EB46800CB653A /* RegalStatistics.cpp */; }; + 4359167E18367DEE002CB92C /* RegalDispatchStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1831175EB49D00CB653A /* RegalDispatchStatistics.cpp */; }; + 4359167F18367DEE002CB92C /* RegalDispatchTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1832175EB49D00CB653A /* RegalDispatchTrace.cpp */; }; + 4359168018367DEE002CB92C /* RegalPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1835175EB49D00CB653A /* RegalPlugin.cpp */; }; + 4359168118367DEE002CB92C /* RegalDispatchGLX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB717C5AF870005C418 /* RegalDispatchGLX.cpp */; }; + 4359168218367DEE002CB92C /* RegalX11.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB817C5AF870005C418 /* RegalX11.cpp */; }; + 4359168318367DEE002CB92C /* RegalDispatchStaticEGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB917C5AF880005C418 /* RegalDispatchStaticEGL.cpp */; }; + 4359168418367DEE002CB92C /* RegalEmuInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC717DF836700CB6E19 /* RegalEmuInfo.cpp */; }; + 4359168518367DEE002CB92C /* RegalEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC917DF836700CB6E19 /* RegalEmu.cpp */; }; + 4359168618367DEE002CB92C /* RegalDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB6107017F21E6500BA0A06 /* RegalDispatch.cpp */; }; + 4359168718367DEE002CB92C /* RegalQuads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4DBEC11804FB0600F6D226 /* RegalQuads.cpp */; }; + 4359168818367DEE002CB92C /* RegalShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914D8182BF69F002CB92C /* RegalShader.cpp */; }; + 4359168918367DEE002CB92C /* RegalShaderInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914DA182BF69F002CB92C /* RegalShaderInstance.cpp */; }; + 4359168D18367DEE002CB92C /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145118293A68002CB92C /* libjsonsl.a */; }; + 4359169618367DEE002CB92C /* linear.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1D215C48D1F0063667E /* linear.h */; }; + 4359169718367DEE002CB92C /* RegalBin.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1D415C48D1F0063667E /* RegalBin.h */; }; + 4359169818367DEE002CB92C /* RegalConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1D615C48D1F0063667E /* RegalConfig.h */; }; + 4359169918367DEE002CB92C /* RegalContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1D815C48D1F0063667E /* RegalContext.h */; }; + 4359169A18367DEE002CB92C /* RegalContextInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1DA15C48D1F0063667E /* RegalContextInfo.h */; }; + 4359169B18367DEE002CB92C /* RegalDebugInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1DB15C48D1F0063667E /* RegalDebugInfo.h */; }; + 4359169C18367DEE002CB92C /* RegalDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1DC15C48D1F0063667E /* RegalDispatch.h */; }; + 4359169D18367DEE002CB92C /* RegalDispatchError.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1E015C48D1F0063667E /* RegalDispatchError.h */; }; + 4359169E18367DEE002CB92C /* RegalDsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1E515C48D1F0063667E /* RegalDsa.h */; }; + 4359169F18367DEE002CB92C /* RegalEmu.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1E615C48D200063667E /* RegalEmu.h */; }; + 435916A018367DEE002CB92C /* RegalHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1E815C48D200063667E /* RegalHelper.h */; }; + 435916A118367DEE002CB92C /* RegalHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1EA15C48D200063667E /* RegalHttp.h */; }; + 435916A218367DEE002CB92C /* RegalIff.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1EC15C48D200063667E /* RegalIff.h */; }; + 435916A318367DEE002CB92C /* RegalInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1EE15C48D200063667E /* RegalInit.h */; }; + 435916A418367DEE002CB92C /* RegalLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F015C48D200063667E /* RegalLog.h */; }; + 435916A518367DEE002CB92C /* RegalLookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F215C48D200063667E /* RegalLookup.h */; }; + 435916A618367DEE002CB92C /* RegalMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F315C48D200063667E /* RegalMarker.h */; }; + 435916A718367DEE002CB92C /* RegalObj.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F415C48D200063667E /* RegalObj.h */; }; + 435916A818367DEE002CB92C /* RegalPpa.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F515C48D200063667E /* RegalPpa.h */; }; + 435916A918367DEE002CB92C /* RegalPrecompile.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F715C48D200063667E /* RegalPrecompile.h */; }; + 435916AA18367DEE002CB92C /* RegalPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F815C48D200063667E /* RegalPrivate.h */; }; + 435916AB18367DEE002CB92C /* RegalState.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1F915C48D200063667E /* RegalState.h */; }; + 435916AC18367DEE002CB92C /* RegalToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1FB15C48D200063667E /* RegalToken.h */; }; + 435916AD18367DEE002CB92C /* RegalUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1FD15C48D200063667E /* RegalUtil.h */; }; + 435916AE18367DEE002CB92C /* RegalVao.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1FE15C48D200063667E /* RegalVao.h */; }; + 435916AF18367DEE002CB92C /* RegalEnum.h in Headers */ = {isa = PBXBuildFile; fileRef = 431D3C0915C9B6F0009DD04F /* RegalEnum.h */; }; + 435916B018367DEE002CB92C /* RegalFavicon.h in Headers */ = {isa = PBXBuildFile; fileRef = 431D3C0B15C9B6F0009DD04F /* RegalFavicon.h */; }; + 435916B118367DEE002CB92C /* RegalDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF889A615E079C20093B7D5 /* RegalDispatcher.h */; }; + 435916B218367DEE002CB92C /* RegalFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = BC640C9B16554A52007DEF69 /* RegalFrame.h */; }; + 435916B318367DEE002CB92C /* RegalPush.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBEC6FF167AD72700B38E16 /* RegalPush.h */; }; + 435916B418367DEE002CB92C /* RegalSharedList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBEC702167AD72700B38E16 /* RegalSharedList.h */; }; + 435916B518367DEE002CB92C /* RegalSharedMap.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBEC703167AD72700B38E16 /* RegalSharedMap.h */; }; + 435916B618367DEE002CB92C /* RegalSharedPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBEC704167AD72700B38E16 /* RegalSharedPtr.h */; }; + 435916B718367DEE002CB92C /* RegalSo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBEC706167AD72700B38E16 /* RegalSo.h */; }; + 435916B818367DEE002CB92C /* RegalPixelConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2216DE668A005E03F6 /* RegalPixelConversions.h */; }; + 435916B918367DEE002CB92C /* RegalPpca.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2516DE668A005E03F6 /* RegalPpca.h */; }; + 435916BA18367DEE002CB92C /* RegalSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2616DE668A005E03F6 /* RegalSystem.h */; }; + 435916BB18367DEE002CB92C /* RegalTexC.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2816DE668A005E03F6 /* RegalTexC.h */; }; + 435916BC18367DEE002CB92C /* RegalThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2916DE668A005E03F6 /* RegalThread.h */; }; + 435916BD18367DEE002CB92C /* RegalTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2A16DE668A005E03F6 /* RegalTimer.h */; }; + 435916BE18367DEE002CB92C /* Regal.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C3616DE6699005E03F6 /* Regal.h */; }; + 435916BF18367DEE002CB92C /* RegalBreak.h in Headers */ = {isa = PBXBuildFile; fileRef = BC94B98A16DFDC6200116D55 /* RegalBreak.h */; }; + 435916C018367DEE002CB92C /* RegalFilt.h in Headers */ = {isa = PBXBuildFile; fileRef = BC94B99616DFDF1F00116D55 /* RegalFilt.h */; }; + 435916C118367DEE002CB92C /* RegalXfer.h in Headers */ = {isa = PBXBuildFile; fileRef = 430443EF16F1656A0078C0F9 /* RegalXfer.h */; }; + 435916C218367DEE002CB92C /* RegalMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 430443F216F1658F0078C0F9 /* RegalMac.h */; }; + 435916C318367DEE002CB92C /* RegalScopedPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 430443F316F1658F0078C0F9 /* RegalScopedPtr.h */; }; + 435916C418367DEE002CB92C /* RegalCacheShader.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3209D916F3A28900D1A9E0 /* RegalCacheShader.h */; }; + 435916C518367DEE002CB92C /* RegalCacheTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3209DB16F3A28900D1A9E0 /* RegalCacheTexture.h */; }; + 435916C618367DEE002CB92C /* RegalJson.h in Headers */ = {isa = PBXBuildFile; fileRef = BC60A6B117032F1A0055437B /* RegalJson.h */; }; + 435916C718367DEE002CB92C /* RegalDispatcherGL.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF1824175EB40600CB653A /* RegalDispatcherGL.h */; }; + 435916C818367DEE002CB92C /* RegalDispatcherGlobal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF1826175EB40600CB653A /* RegalDispatcherGlobal.h */; }; + 435916C918367DEE002CB92C /* RegalStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF182C175EB46800CB653A /* RegalStatistics.h */; }; + 435916CA18367DEE002CB92C /* RegalBaseVertex.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF182F175EB49D00CB653A /* RegalBaseVertex.h */; }; + 435916CB18367DEE002CB92C /* RegalClientState.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF1830175EB49D00CB653A /* RegalClientState.h */; }; + 435916CC18367DEE002CB92C /* RegalFloat4.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF1833175EB49D00CB653A /* RegalFloat4.h */; }; + 435916CD18367DEE002CB92C /* RegalMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF1834175EB49D00CB653A /* RegalMutex.h */; }; + 435916CE18367DEE002CB92C /* RegalRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBF1836175EB49D00CB653A /* RegalRect.h */; }; + 435916CF18367DEE002CB92C /* RegalHint.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8E9CBA17C5AF880005C418 /* RegalHint.h */; }; + 435916D018367DEE002CB92C /* RegalNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8E9CBB17C5AF880005C418 /* RegalNamespace.h */; }; + 435916D118367DEE002CB92C /* RegalTexSto.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8E9CBC17C5AF880005C418 /* RegalTexSto.h */; }; + 435916D218367DEE002CB92C /* RegalEmuInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBA1FC817DF836700CB6E19 /* RegalEmuInfo.h */; }; + 435916D318367DEE002CB92C /* RegalQuads.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4DBEC21804FB0600F6D226 /* RegalQuads.h */; }; + 435916D418367DEE002CB92C /* RegalLayerInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914D7182BF69F002CB92C /* RegalLayerInfo.h */; }; + 435916D518367DEE002CB92C /* RegalShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914D9182BF69F002CB92C /* RegalShader.h */; }; + 435916D618367DEE002CB92C /* RegalShaderInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 435914EA182BFBDB002CB92C /* RegalShaderInstance.h */; }; + 435916E818367E05002CB92C /* linear.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D215C48D1F0063667E /* linear.h */; }; + 435916E918367E05002CB92C /* Regal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D315C48D1F0063667E /* Regal.cpp */; }; + 435916EA18367E05002CB92C /* Regal.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C3616DE6699005E03F6 /* Regal.h */; }; + 435916EB18367E05002CB92C /* RegalBaseVertex.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182F175EB49D00CB653A /* RegalBaseVertex.h */; }; + 435916EC18367E05002CB92C /* RegalBin.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D415C48D1F0063667E /* RegalBin.h */; }; + 435916ED18367E05002CB92C /* RegalBreak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94B98916DFDC6200116D55 /* RegalBreak.cpp */; }; + 435916EE18367E05002CB92C /* RegalBreak.h in Sources */ = {isa = PBXBuildFile; fileRef = BC94B98A16DFDC6200116D55 /* RegalBreak.h */; }; + 435916EF18367E05002CB92C /* RegalCacheShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209D816F3A28900D1A9E0 /* RegalCacheShader.cpp */; }; + 435916F018367E05002CB92C /* RegalCacheShader.h in Sources */ = {isa = PBXBuildFile; fileRef = BC3209D916F3A28900D1A9E0 /* RegalCacheShader.h */; }; + 435916F118367E05002CB92C /* RegalCacheTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209DA16F3A28900D1A9E0 /* RegalCacheTexture.cpp */; }; + 435916F218367E05002CB92C /* RegalCacheTexture.h in Sources */ = {isa = PBXBuildFile; fileRef = BC3209DB16F3A28900D1A9E0 /* RegalCacheTexture.h */; }; + 435916F318367E05002CB92C /* RegalClientState.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1830175EB49D00CB653A /* RegalClientState.h */; }; + 435916F418367E05002CB92C /* RegalConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D515C48D1F0063667E /* RegalConfig.cpp */; }; + 435916F518367E05002CB92C /* RegalConfig.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D615C48D1F0063667E /* RegalConfig.h */; }; + 435916F618367E05002CB92C /* RegalContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D715C48D1F0063667E /* RegalContext.cpp */; }; + 435916F718367E05002CB92C /* RegalContext.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D815C48D1F0063667E /* RegalContext.h */; }; + 435916F818367E05002CB92C /* RegalContextInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1D915C48D1F0063667E /* RegalContextInfo.cpp */; }; + 435916F918367E05002CB92C /* RegalContextInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DA15C48D1F0063667E /* RegalContextInfo.h */; }; + 435916FA18367E05002CB92C /* RegalDebugInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DB15C48D1F0063667E /* RegalDebugInfo.h */; }; + 435916FB18367E05002CB92C /* RegalDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB6107017F21E6500BA0A06 /* RegalDispatch.cpp */; }; + 435916FC18367E05002CB92C /* RegalDispatch.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DC15C48D1F0063667E /* RegalDispatch.h */; }; + 435916FD18367E05002CB92C /* RegalDispatchCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC710167AD74400B38E16 /* RegalDispatchCache.cpp */; }; + 435916FE18367E05002CB92C /* RegalDispatchCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC711167AD74400B38E16 /* RegalDispatchCode.cpp */; }; + 435916FF18367E05002CB92C /* RegalDispatchDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DD15C48D1F0063667E /* RegalDispatchDebug.cpp */; }; + 4359170018367E05002CB92C /* RegalDispatchEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DE15C48D1F0063667E /* RegalDispatchEmu.cpp */; }; + 4359170118367E05002CB92C /* RegalDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A515E079C20093B7D5 /* RegalDispatcher.cpp */; }; + 4359170218367E05002CB92C /* RegalDispatcher.h in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A615E079C20093B7D5 /* RegalDispatcher.h */; }; + 4359170318367E05002CB92C /* RegalDispatcherGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1823175EB40600CB653A /* RegalDispatcherGL.cpp */; }; + 4359170418367E05002CB92C /* RegalDispatcherGL.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1824175EB40600CB653A /* RegalDispatcherGL.h */; }; + 4359170518367E05002CB92C /* RegalDispatcherGlobal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1825175EB40600CB653A /* RegalDispatcherGlobal.cpp */; }; + 4359170618367E05002CB92C /* RegalDispatcherGlobal.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1826175EB40600CB653A /* RegalDispatcherGlobal.h */; }; + 4359170718367E05002CB92C /* RegalDispatchError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1DF15C48D1F0063667E /* RegalDispatchError.cpp */; }; + 4359170818367E05002CB92C /* RegalDispatchError.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E015C48D1F0063667E /* RegalDispatchError.h */; }; + 4359170918367E05002CB92C /* RegalDispatchGlobal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6C911C15EE3CDF0056E4F7 /* RegalDispatchGlobal.cpp */; }; + 4359170A18367E05002CB92C /* RegalDispatchGLX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB717C5AF870005C418 /* RegalDispatchGLX.cpp */; }; + 4359170B18367E05002CB92C /* RegalDispatchLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E115C48D1F0063667E /* RegalDispatchLoader.cpp */; }; + 4359170C18367E05002CB92C /* RegalDispatchLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E215C48D1F0063667E /* RegalDispatchLog.cpp */; }; + 4359170D18367E05002CB92C /* RegalDispatchMissing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC456F1015D55F8E0080B420 /* RegalDispatchMissing.cpp */; }; + 4359170E18367E05002CB92C /* RegalDispatchPpapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC456F1115D55F8E0080B420 /* RegalDispatchPpapi.cpp */; }; + 4359170F18367E05002CB92C /* RegalDispatchStaticEGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB917C5AF880005C418 /* RegalDispatchStaticEGL.cpp */; }; + 4359171018367E05002CB92C /* RegalDispatchStaticES2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A915E079D80093B7D5 /* RegalDispatchStaticES2.cpp */; }; + 4359171118367E05002CB92C /* RegalDispatchStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1831175EB49D00CB653A /* RegalDispatchStatistics.cpp */; }; + 4359171218367E05002CB92C /* RegalDispatchTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1832175EB49D00CB653A /* RegalDispatchTrace.cpp */; }; + 4359171318367E05002CB92C /* RegalDllMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E415C48D1F0063667E /* RegalDllMain.cpp */; }; + 4359171418367E05002CB92C /* RegalDsa.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E515C48D1F0063667E /* RegalDsa.h */; }; + 4359171518367E05002CB92C /* RegalEmu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC917DF836700CB6E19 /* RegalEmu.cpp */; }; + 4359171618367E05002CB92C /* RegalEmu.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E615C48D200063667E /* RegalEmu.h */; }; + 4359171718367E05002CB92C /* RegalEmuInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC717DF836700CB6E19 /* RegalEmuInfo.cpp */; }; + 4359171818367E05002CB92C /* RegalEmuInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBA1FC817DF836700CB6E19 /* RegalEmuInfo.h */; }; + 4359171918367E05002CB92C /* RegalEnum.h in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0915C9B6F0009DD04F /* RegalEnum.h */; }; + 4359171A18367E05002CB92C /* RegalFavicon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0A15C9B6F0009DD04F /* RegalFavicon.cpp */; }; + 4359171B18367E05002CB92C /* RegalFavicon.h in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0B15C9B6F0009DD04F /* RegalFavicon.h */; }; + 4359171C18367E05002CB92C /* RegalFilt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC94B99516DFDF1F00116D55 /* RegalFilt.cpp */; }; + 4359171D18367E05002CB92C /* RegalFilt.h in Sources */ = {isa = PBXBuildFile; fileRef = BC94B99616DFDF1F00116D55 /* RegalFilt.h */; }; + 4359171E18367E05002CB92C /* RegalFloat4.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1833175EB49D00CB653A /* RegalFloat4.h */; }; + 4359171F18367E05002CB92C /* RegalFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC640C9A16554A52007DEF69 /* RegalFrame.cpp */; }; + 4359172018367E05002CB92C /* RegalFrame.h in Sources */ = {isa = PBXBuildFile; fileRef = BC640C9B16554A52007DEF69 /* RegalFrame.h */; }; + 4359172118367E05002CB92C /* RegalHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E715C48D200063667E /* RegalHelper.cpp */; }; + 4359172218367E05002CB92C /* RegalHelper.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E815C48D200063667E /* RegalHelper.h */; }; + 4359172318367E05002CB92C /* RegalHint.h in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CBA17C5AF880005C418 /* RegalHint.h */; }; + 4359172418367E05002CB92C /* RegalHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1E915C48D200063667E /* RegalHttp.cpp */; }; + 4359172518367E05002CB92C /* RegalHttp.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EA15C48D200063667E /* RegalHttp.h */; }; + 4359172618367E05002CB92C /* RegalIff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EB15C48D200063667E /* RegalIff.cpp */; }; + 4359172718367E05002CB92C /* RegalIff.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EC15C48D200063667E /* RegalIff.h */; }; + 4359172818367E05002CB92C /* RegalInit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1ED15C48D200063667E /* RegalInit.cpp */; }; + 4359172918367E05002CB92C /* RegalInit.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EE15C48D200063667E /* RegalInit.h */; }; + 4359172A18367E05002CB92C /* RegalJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */; }; + 4359172B18367E05002CB92C /* RegalJson.h in Sources */ = {isa = PBXBuildFile; fileRef = BC60A6B117032F1A0055437B /* RegalJson.h */; }; + 4359172C18367E05002CB92C /* RegalJson.inl in Sources */ = {isa = PBXBuildFile; fileRef = 436E18CA17020027005BE93E /* RegalJson.inl */; }; + 4359172D18367E05002CB92C /* RegalLayerInfo.h in Sources */ = {isa = PBXBuildFile; fileRef = 435914D7182BF69F002CB92C /* RegalLayerInfo.h */; }; + 4359172E18367E05002CB92C /* RegalLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1EF15C48D200063667E /* RegalLog.cpp */; }; + 4359172F18367E05002CB92C /* RegalLog.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F015C48D200063667E /* RegalLog.h */; }; + 4359173018367E05002CB92C /* RegalLookup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F115C48D200063667E /* RegalLookup.cpp */; }; + 4359173118367E05002CB92C /* RegalLookup.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F215C48D200063667E /* RegalLookup.h */; }; + 4359173218367E05002CB92C /* RegalMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0C15C9B6F0009DD04F /* RegalMac.cpp */; }; + 4359173318367E05002CB92C /* RegalMac.h in Sources */ = {isa = PBXBuildFile; fileRef = 430443F216F1658F0078C0F9 /* RegalMac.h */; }; + 4359173418367E05002CB92C /* RegalMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02094D160D1BA3003FAB99 /* RegalMarker.cpp */; }; + 4359173518367E05002CB92C /* RegalMarker.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F315C48D200063667E /* RegalMarker.h */; }; + 4359173618367E05002CB92C /* RegalMutex.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1834175EB49D00CB653A /* RegalMutex.h */; }; + 4359173718367E05002CB92C /* RegalNamespace.h in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CBB17C5AF880005C418 /* RegalNamespace.h */; }; + 4359173818367E05002CB92C /* RegalObj.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F415C48D200063667E /* RegalObj.h */; }; + 4359173918367E05002CB92C /* RegalPixelConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */; }; + 4359173A18367E05002CB92C /* RegalPixelConversions.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2216DE668A005E03F6 /* RegalPixelConversions.h */; }; + 4359173B18367E05002CB92C /* RegalPixelConversions.inl in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2316DE668A005E03F6 /* RegalPixelConversions.inl */; }; + 4359173C18367E05002CB92C /* RegalPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1835175EB49D00CB653A /* RegalPlugin.cpp */; }; + 4359173D18367E05002CB92C /* RegalPpa.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F515C48D200063667E /* RegalPpa.h */; }; + 4359173E18367E05002CB92C /* RegalPpca.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2516DE668A005E03F6 /* RegalPpca.h */; }; + 4359173F18367E05002CB92C /* RegalPrecompile.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F715C48D200063667E /* RegalPrecompile.h */; }; + 4359174018367E05002CB92C /* RegalPrivate.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F815C48D200063667E /* RegalPrivate.h */; }; + 4359174118367E05002CB92C /* RegalPush.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC6FF167AD72700B38E16 /* RegalPush.h */; }; + 4359174218367E05002CB92C /* RegalQuads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4DBEC11804FB0600F6D226 /* RegalQuads.cpp */; }; + 4359174318367E05002CB92C /* RegalQuads.h in Sources */ = {isa = PBXBuildFile; fileRef = BC4DBEC21804FB0600F6D226 /* RegalQuads.h */; }; + 4359174418367E05002CB92C /* RegalRect.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF1836175EB49D00CB653A /* RegalRect.h */; }; + 4359174518367E05002CB92C /* RegalScopedPtr.h in Sources */ = {isa = PBXBuildFile; fileRef = 430443F316F1658F0078C0F9 /* RegalScopedPtr.h */; }; + 4359174618367E05002CB92C /* RegalShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914D8182BF69F002CB92C /* RegalShader.cpp */; }; + 4359174718367E05002CB92C /* RegalShader.h in Sources */ = {isa = PBXBuildFile; fileRef = 435914D9182BF69F002CB92C /* RegalShader.h */; }; + 4359174818367E05002CB92C /* RegalShaderInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435914DA182BF69F002CB92C /* RegalShaderInstance.cpp */; }; + 4359174918367E05002CB92C /* RegalShaderInstance.h in Sources */ = {isa = PBXBuildFile; fileRef = 435914EA182BFBDB002CB92C /* RegalShaderInstance.h */; }; + 4359174A18367E05002CB92C /* RegalSharedList.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC702167AD72700B38E16 /* RegalSharedList.h */; }; + 4359174B18367E05002CB92C /* RegalSharedMap.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC703167AD72700B38E16 /* RegalSharedMap.h */; }; + 4359174C18367E05002CB92C /* RegalSharedPtr.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC704167AD72700B38E16 /* RegalSharedPtr.h */; }; + 4359174D18367E05002CB92C /* RegalSo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC705167AD72700B38E16 /* RegalSo.cpp */; }; + 4359174E18367E05002CB92C /* RegalSo.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBEC706167AD72700B38E16 /* RegalSo.h */; }; + 4359174F18367E05002CB92C /* RegalState.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1F915C48D200063667E /* RegalState.h */; }; + 4359175018367E05002CB92C /* RegalStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182B175EB46800CB653A /* RegalStatistics.cpp */; }; + 4359175118367E05002CB92C /* RegalStatistics.h in Sources */ = {isa = PBXBuildFile; fileRef = BCBF182C175EB46800CB653A /* RegalStatistics.h */; }; + 4359175218367E05002CB92C /* RegalSystem.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2616DE668A005E03F6 /* RegalSystem.h */; }; + 4359175318367E05002CB92C /* RegalTexC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2716DE668A005E03F6 /* RegalTexC.cpp */; }; + 4359175418367E05002CB92C /* RegalTexC.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2816DE668A005E03F6 /* RegalTexC.h */; }; + 4359175518367E05002CB92C /* RegalTexSto.h in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CBC17C5AF880005C418 /* RegalTexSto.h */; }; + 4359175618367E05002CB92C /* RegalThread.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2916DE668A005E03F6 /* RegalThread.h */; }; + 4359175718367E05002CB92C /* RegalTimer.h in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2A16DE668A005E03F6 /* RegalTimer.h */; }; + 4359175818367E05002CB92C /* RegalToken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FA15C48D200063667E /* RegalToken.cpp */; }; + 4359175918367E05002CB92C /* RegalToken.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FB15C48D200063667E /* RegalToken.h */; }; + 4359175A18367E05002CB92C /* RegalUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FC15C48D200063667E /* RegalUtil.cpp */; }; + 4359175B18367E05002CB92C /* RegalUtil.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FD15C48D200063667E /* RegalUtil.h */; }; + 4359175C18367E05002CB92C /* RegalVao.h in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FE15C48D200063667E /* RegalVao.h */; }; + 4359175D18367E05002CB92C /* RegalX11.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8E9CB817C5AF870005C418 /* RegalX11.cpp */; }; + 4359175E18367E05002CB92C /* RegalXfer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 430443EE16F1656A0078C0F9 /* RegalXfer.cpp */; }; + 4359175F18367E05002CB92C /* RegalXfer.h in Sources */ = {isa = PBXBuildFile; fileRef = 430443EF16F1656A0078C0F9 /* RegalXfer.h */; }; + 4359176318367E05002CB92C /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145118293A68002CB92C /* libjsonsl.a */; }; 438D2C2B16DE668A005E03F6 /* RegalJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */; }; 438D2C2D16DE668A005E03F6 /* RegalPixelConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */; }; 438D2C2E16DE668A005E03F6 /* RegalPixelConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2216DE668A005E03F6 /* RegalPixelConversions.h */; }; @@ -76,6 +452,16 @@ 43A6C22915C48D200063667E /* RegalUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43A6C1FC15C48D200063667E /* RegalUtil.cpp */; }; 43A6C22A15C48D200063667E /* RegalUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1FD15C48D200063667E /* RegalUtil.h */; }; 43A6C22B15C48D200063667E /* RegalVao.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A6C1FE15C48D200063667E /* RegalVao.h */; }; + 43C7580C184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43C7580B184B69E2007E765F /* RegalDispatchHttp.cpp */; }; + 43C7580D184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43C7580B184B69E2007E765F /* RegalDispatchHttp.cpp */; }; + 43C7580E184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43C7580B184B69E2007E765F /* RegalDispatchHttp.cpp */; }; + 43C7580F184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43C7580B184B69E2007E765F /* RegalDispatchHttp.cpp */; }; + 43C7583B184DB9C0007E765F /* RegalDispatchHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C7583A184DB9BF007E765F /* RegalDispatchHttp.h */; }; + 43C7583C184DB9C0007E765F /* RegalDispatchHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C7583A184DB9BF007E765F /* RegalDispatchHttp.h */; }; + 43C7583D184DB9C0007E765F /* RegalDispatchHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C7583A184DB9BF007E765F /* RegalDispatchHttp.h */; }; + 43C7583E184DB9C0007E765F /* RegalDispatchHttp.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C7583A184DB9BF007E765F /* RegalDispatchHttp.h */; }; + 43FE2CFB18368078009A9311 /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145718293A74002CB92C /* libmd5.a */; }; + 43FE2D1C18368169009A9311 /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145718293A74002CB92C /* libmd5.a */; }; BC02094E160D1BA3003FAB99 /* RegalMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02094D160D1BA3003FAB99 /* RegalMarker.cpp */; }; BC3209DC16F3A28900D1A9E0 /* RegalCacheShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3209D816F3A28900D1A9E0 /* RegalCacheShader.cpp */; }; BC3209DD16F3A28900D1A9E0 /* RegalCacheShader.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3209D916F3A28900D1A9E0 /* RegalCacheShader.h */; }; @@ -187,6 +573,188 @@ remoteGlobalIDString = 4336661617C56A0800D45AD9; remoteInfo = zlib; }; + 435914A9182945F0002CB92C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2AAC046055464E500DB518D; + remoteInfo = glsl_optimizer; + }; + 435914AB182945F0002CB92C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2BA0803D1352EB9300A1C074; + remoteInfo = builtin_compiler; + }; + 43CEAE78183BFFEF002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC045055464E500DB518D; + remoteInfo = glsl_optimizer; + }; + 43CEAE85183BFFF4002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359144618293A5B002CB92C /* apitrace.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 433667A817C56F3500D45AD9; + remoteInfo = apitrace; + }; + 43CEAE87183C0000002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336679317C56EF900D45AD9; + remoteInfo = jsonsl; + }; + 43CEAE89183C0009002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145218293A73002CB92C /* md5.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336678017C56DFD00D45AD9; + remoteInfo = md5; + }; + 43CEAE8B183C0009002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145818293A7C002CB92C /* mongoose.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336676D17C56DC700D45AD9; + remoteInfo = mongoose; + }; + 43CEAE8D183C0011002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145E18293A8A002CB92C /* pcre.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 433666B817C56BC000D45AD9; + remoteInfo = pcre; + }; + 43CEAE8F183C0011002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359146418293A93002CB92C /* png.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 433665D417C5632600D45AD9; + remoteInfo = png; + }; + 43CEAE91183C0011002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359146A18293A9C002CB92C /* snappy.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336665717C56AA300D45AD9; + remoteInfo = snappy; + }; + 43CEAE93183C0011002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359147018293AAA002CB92C /* squish.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336667817C56B5200D45AD9; + remoteInfo = squish; + }; + 43CEAE95183C0011002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359147618293AB1002CB92C /* zlib.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336661517C56A0800D45AD9; + remoteInfo = zlib; + }; + 43CEAEA2183C01E2002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC045055464E500DB518D; + remoteInfo = glsl_optimizer; + }; + 43CEAEA4183C01E2002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359144618293A5B002CB92C /* apitrace.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 433667A817C56F3500D45AD9; + remoteInfo = apitrace; + }; + 43CEAEA6183C01E2002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336679317C56EF900D45AD9; + remoteInfo = jsonsl; + }; + 43CEAEA8183C01E2002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145218293A73002CB92C /* md5.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336678017C56DFD00D45AD9; + remoteInfo = md5; + }; + 43CEAEAB183C01ED002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145818293A7C002CB92C /* mongoose.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336676D17C56DC700D45AD9; + remoteInfo = mongoose; + }; + 43CEAEAD183C01ED002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145E18293A8A002CB92C /* pcre.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 433666B817C56BC000D45AD9; + remoteInfo = pcre; + }; + 43CEAEAF183C01ED002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359146418293A93002CB92C /* png.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 433665D417C5632600D45AD9; + remoteInfo = png; + }; + 43CEAEB1183C01ED002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359146A18293A9C002CB92C /* snappy.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336665717C56AA300D45AD9; + remoteInfo = snappy; + }; + 43CEAEB3183C01ED002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359147018293AAA002CB92C /* squish.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336667817C56B5200D45AD9; + remoteInfo = squish; + }; + 43CEAEB5183C01ED002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359147618293AB1002CB92C /* zlib.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336661517C56A0800D45AD9; + remoteInfo = zlib; + }; + 43CEAEB7183C01FF002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336679317C56EF900D45AD9; + remoteInfo = jsonsl; + }; + 43CEAEB9183C01FF002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145218293A73002CB92C /* md5.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336678017C56DFD00D45AD9; + remoteInfo = md5; + }; + 43CEAEBB183C0207002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336679317C56EF900D45AD9; + remoteInfo = jsonsl; + }; + 43CEAEBD183C0207002CE35E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4359145218293A73002CB92C /* md5.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 4336678017C56DFD00D45AD9; + remoteInfo = md5; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -206,6 +774,15 @@ 4359146A18293A9C002CB92C /* snappy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = snappy.xcodeproj; path = ../snappy/snappy.xcodeproj; sourceTree = ""; }; 4359147018293AAA002CB92C /* squish.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = squish.xcodeproj; path = ../squish/squish.xcodeproj; sourceTree = ""; }; 4359147618293AB1002CB92C /* zlib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = zlib.xcodeproj; path = ../zlib/zlib.xcodeproj; sourceTree = ""; }; + 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = glsl_optimizer_lib.xcodeproj; path = ../../../src/glsl/projects/xcode4/glsl_optimizer_lib.xcodeproj; sourceTree = ""; }; + 435914D7182BF69F002CB92C /* RegalLayerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalLayerInfo.h; path = ../../../src/regal/RegalLayerInfo.h; sourceTree = ""; }; + 435914D8182BF69F002CB92C /* RegalShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalShader.cpp; path = ../../../src/regal/RegalShader.cpp; sourceTree = ""; }; + 435914D9182BF69F002CB92C /* RegalShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalShader.h; path = ../../../src/regal/RegalShader.h; sourceTree = ""; }; + 435914DA182BF69F002CB92C /* RegalShaderInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalShaderInstance.cpp; path = ../../../src/regal/RegalShaderInstance.cpp; sourceTree = ""; }; + 435914EA182BFBDB002CB92C /* RegalShaderInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalShaderInstance.h; path = ../../../src/regal/RegalShaderInstance.h; sourceTree = ""; }; + 4359158318367621002CB92C /* libRegal.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libRegal.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 435916DA18367DEE002CB92C /* libRegalW.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRegalW.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 4359176F18367E05002CB92C /* libRegalW.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libRegalW.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 436E18CA17020027005BE93E /* RegalJson.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = RegalJson.inl; path = ../../../src/regal/RegalJson.inl; sourceTree = ""; }; 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalJson.cpp; path = ../../../src/regal/RegalJson.cpp; sourceTree = ""; }; 438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalPixelConversions.cpp; path = ../../../src/regal/RegalPixelConversions.cpp; sourceTree = ""; }; @@ -262,6 +839,8 @@ 43A6C1FC15C48D200063667E /* RegalUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalUtil.cpp; path = ../../../src/regal/RegalUtil.cpp; sourceTree = ""; }; 43A6C1FD15C48D200063667E /* RegalUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalUtil.h; path = ../../../src/regal/RegalUtil.h; sourceTree = ""; }; 43A6C1FE15C48D200063667E /* RegalVao.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalVao.h; path = ../../../src/regal/RegalVao.h; sourceTree = ""; }; + 43C7580B184B69E2007E765F /* RegalDispatchHttp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalDispatchHttp.cpp; path = ../../../src/regal/RegalDispatchHttp.cpp; sourceTree = ""; }; + 43C7583A184DB9BF007E765F /* RegalDispatchHttp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalDispatchHttp.h; path = ../../../src/regal/RegalDispatchHttp.h; sourceTree = ""; }; BC02094D160D1BA3003FAB99 /* RegalMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalMarker.cpp; path = ../../../src/regal/RegalMarker.cpp; sourceTree = ""; }; BC3209D816F3A28900D1A9E0 /* RegalCacheShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalCacheShader.cpp; path = ../../../src/regal/RegalCacheShader.cpp; sourceTree = ""; }; BC3209D916F3A28900D1A9E0 /* RegalCacheShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalCacheShader.h; path = ../../../src/regal/RegalCacheShader.h; sourceTree = ""; }; @@ -317,10 +896,46 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 4359158018367621002CB92C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4359160A183677E8002CB92C /* libapitrace.a in Frameworks */, + 4359160B183677E8002CB92C /* libglsl_optimizer.a in Frameworks */, + 4359160C183677E8002CB92C /* libjsonsl.a in Frameworks */, + 4359160D183677E8002CB92C /* libmd5.a in Frameworks */, + 4359160E183677E8002CB92C /* libmongoose.a in Frameworks */, + 4359160F183677E8002CB92C /* libpcre.a in Frameworks */, + 43591610183677E8002CB92C /* libpng.a in Frameworks */, + 43591611183677E8002CB92C /* libsnappy.a in Frameworks */, + 43591612183677E8002CB92C /* libsquish.a in Frameworks */, + 43591613183677E8002CB92C /* libzlib.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4359168A18367DEE002CB92C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 43FE2CFB18368078009A9311 /* libmd5.a in Frameworks */, + 4359168D18367DEE002CB92C /* libjsonsl.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4359176018367E05002CB92C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 43FE2D1C18368169009A9311 /* libmd5.a in Frameworks */, + 4359176318367E05002CB92C /* libjsonsl.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 43A6C1C315C48CD90063667E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 435914B5182945FE002CB92C /* libglsl_optimizer.a in Frameworks */, 4359147D18293B32002CB92C /* libapitrace.a in Frameworks */, 4359147E18293B32002CB92C /* libjsonsl.a in Frameworks */, 4359147F18293B32002CB92C /* libmd5.a in Frameworks */, @@ -402,6 +1017,7 @@ 4359147C18293AF6002CB92C /* subprojects */ = { isa = PBXGroup; children = ( + 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */, 4359144618293A5B002CB92C /* apitrace.xcodeproj */, 4359144C18293A68002CB92C /* jsonsl.xcodeproj */, 4359145218293A73002CB92C /* md5.xcodeproj */, @@ -414,6 +1030,15 @@ name = subprojects; sourceTree = ""; }; + 435914A4182945EF002CB92C /* Products */ = { + isa = PBXGroup; + children = ( + 435914AA182945F0002CB92C /* libglsl_optimizer.a */, + 435914AC182945F0002CB92C /* builtincompiler */, + ); + name = Products; + sourceTree = ""; + }; 43A6C1BB15C48CD90063667E = { isa = PBXGroup; children = ( @@ -427,6 +1052,9 @@ isa = PBXGroup; children = ( 43A6C1C615C48CD90063667E /* libRegal.a */, + 4359158318367621002CB92C /* libRegal.dylib */, + 435916DA18367DEE002CB92C /* libRegalW.a */, + 4359176F18367E05002CB92C /* libRegalW.dylib */, ); name = Products; sourceTree = ""; @@ -469,6 +1097,8 @@ 43A6C1E015C48D1F0063667E /* RegalDispatchError.h */, BC6C911C15EE3CDF0056E4F7 /* RegalDispatchGlobal.cpp */, BC8E9CB717C5AF870005C418 /* RegalDispatchGLX.cpp */, + 43C7580B184B69E2007E765F /* RegalDispatchHttp.cpp */, + 43C7583A184DB9BF007E765F /* RegalDispatchHttp.h */, 43A6C1E115C48D1F0063667E /* RegalDispatchLoader.cpp */, 43A6C1E215C48D1F0063667E /* RegalDispatchLog.cpp */, BC456F1015D55F8E0080B420 /* RegalDispatchMissing.cpp */, @@ -503,6 +1133,7 @@ 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */, BC60A6B117032F1A0055437B /* RegalJson.h */, 436E18CA17020027005BE93E /* RegalJson.inl */, + 435914D7182BF69F002CB92C /* RegalLayerInfo.h */, 43A6C1EF15C48D200063667E /* RegalLog.cpp */, 43A6C1F015C48D200063667E /* RegalLog.h */, 43A6C1F115C48D200063667E /* RegalLookup.cpp */, @@ -527,6 +1158,10 @@ BC4DBEC21804FB0600F6D226 /* RegalQuads.h */, BCBF1836175EB49D00CB653A /* RegalRect.h */, 430443F316F1658F0078C0F9 /* RegalScopedPtr.h */, + 435914D8182BF69F002CB92C /* RegalShader.cpp */, + 435914D9182BF69F002CB92C /* RegalShader.h */, + 435914DA182BF69F002CB92C /* RegalShaderInstance.cpp */, + 435914EA182BFBDB002CB92C /* RegalShaderInstance.h */, BCBEC702167AD72700B38E16 /* RegalSharedList.h */, BCBEC703167AD72700B38E16 /* RegalSharedMap.h */, BCBEC704167AD72700B38E16 /* RegalSharedPtr.h */, @@ -556,6 +1191,95 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 4359158118367621002CB92C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 43C7583C184DB9C0007E765F /* RegalDispatchHttp.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4359169518367DEE002CB92C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4359169618367DEE002CB92C /* linear.h in Headers */, + 4359169718367DEE002CB92C /* RegalBin.h in Headers */, + 4359169818367DEE002CB92C /* RegalConfig.h in Headers */, + 4359169918367DEE002CB92C /* RegalContext.h in Headers */, + 4359169A18367DEE002CB92C /* RegalContextInfo.h in Headers */, + 4359169B18367DEE002CB92C /* RegalDebugInfo.h in Headers */, + 4359169C18367DEE002CB92C /* RegalDispatch.h in Headers */, + 4359169D18367DEE002CB92C /* RegalDispatchError.h in Headers */, + 4359169E18367DEE002CB92C /* RegalDsa.h in Headers */, + 4359169F18367DEE002CB92C /* RegalEmu.h in Headers */, + 435916A018367DEE002CB92C /* RegalHelper.h in Headers */, + 435916A118367DEE002CB92C /* RegalHttp.h in Headers */, + 435916A218367DEE002CB92C /* RegalIff.h in Headers */, + 435916A318367DEE002CB92C /* RegalInit.h in Headers */, + 435916A418367DEE002CB92C /* RegalLog.h in Headers */, + 435916A518367DEE002CB92C /* RegalLookup.h in Headers */, + 435916A618367DEE002CB92C /* RegalMarker.h in Headers */, + 435916A718367DEE002CB92C /* RegalObj.h in Headers */, + 435916A818367DEE002CB92C /* RegalPpa.h in Headers */, + 435916A918367DEE002CB92C /* RegalPrecompile.h in Headers */, + 435916AA18367DEE002CB92C /* RegalPrivate.h in Headers */, + 435916AB18367DEE002CB92C /* RegalState.h in Headers */, + 435916AC18367DEE002CB92C /* RegalToken.h in Headers */, + 435916AD18367DEE002CB92C /* RegalUtil.h in Headers */, + 435916AE18367DEE002CB92C /* RegalVao.h in Headers */, + 435916AF18367DEE002CB92C /* RegalEnum.h in Headers */, + 435916B018367DEE002CB92C /* RegalFavicon.h in Headers */, + 435916B118367DEE002CB92C /* RegalDispatcher.h in Headers */, + 435916B218367DEE002CB92C /* RegalFrame.h in Headers */, + 435916B318367DEE002CB92C /* RegalPush.h in Headers */, + 435916B418367DEE002CB92C /* RegalSharedList.h in Headers */, + 435916B518367DEE002CB92C /* RegalSharedMap.h in Headers */, + 435916B618367DEE002CB92C /* RegalSharedPtr.h in Headers */, + 435916B718367DEE002CB92C /* RegalSo.h in Headers */, + 435916B818367DEE002CB92C /* RegalPixelConversions.h in Headers */, + 435916B918367DEE002CB92C /* RegalPpca.h in Headers */, + 435916BA18367DEE002CB92C /* RegalSystem.h in Headers */, + 435916BB18367DEE002CB92C /* RegalTexC.h in Headers */, + 435916BC18367DEE002CB92C /* RegalThread.h in Headers */, + 435916BD18367DEE002CB92C /* RegalTimer.h in Headers */, + 435916BE18367DEE002CB92C /* Regal.h in Headers */, + 435916BF18367DEE002CB92C /* RegalBreak.h in Headers */, + 435916C018367DEE002CB92C /* RegalFilt.h in Headers */, + 435916C118367DEE002CB92C /* RegalXfer.h in Headers */, + 435916C218367DEE002CB92C /* RegalMac.h in Headers */, + 435916C318367DEE002CB92C /* RegalScopedPtr.h in Headers */, + 435916C418367DEE002CB92C /* RegalCacheShader.h in Headers */, + 435916C518367DEE002CB92C /* RegalCacheTexture.h in Headers */, + 435916C618367DEE002CB92C /* RegalJson.h in Headers */, + 435916C718367DEE002CB92C /* RegalDispatcherGL.h in Headers */, + 435916C818367DEE002CB92C /* RegalDispatcherGlobal.h in Headers */, + 435916C918367DEE002CB92C /* RegalStatistics.h in Headers */, + 435916CA18367DEE002CB92C /* RegalBaseVertex.h in Headers */, + 435916CB18367DEE002CB92C /* RegalClientState.h in Headers */, + 435916CC18367DEE002CB92C /* RegalFloat4.h in Headers */, + 435916CD18367DEE002CB92C /* RegalMutex.h in Headers */, + 435916CE18367DEE002CB92C /* RegalRect.h in Headers */, + 435916CF18367DEE002CB92C /* RegalHint.h in Headers */, + 435916D018367DEE002CB92C /* RegalNamespace.h in Headers */, + 435916D118367DEE002CB92C /* RegalTexSto.h in Headers */, + 435916D218367DEE002CB92C /* RegalEmuInfo.h in Headers */, + 435916D318367DEE002CB92C /* RegalQuads.h in Headers */, + 435916D418367DEE002CB92C /* RegalLayerInfo.h in Headers */, + 435916D518367DEE002CB92C /* RegalShader.h in Headers */, + 435916D618367DEE002CB92C /* RegalShaderInstance.h in Headers */, + 43C7583D184DB9C0007E765F /* RegalDispatchHttp.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4359176B18367E05002CB92C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 43C7583E184DB9C0007E765F /* RegalDispatchHttp.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 43A6C1C415C48CD90063667E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -622,12 +1346,81 @@ BC8E9CC217C5AF880005C418 /* RegalTexSto.h in Headers */, BCBA1FCB17DF836700CB6E19 /* RegalEmuInfo.h in Headers */, BC4DBEC41804FB0600F6D226 /* RegalQuads.h in Headers */, + 435914DB182BF69F002CB92C /* RegalLayerInfo.h in Headers */, + 435914DD182BF69F002CB92C /* RegalShader.h in Headers */, + 435914EB182BFBDB002CB92C /* RegalShaderInstance.h in Headers */, + 43C7583B184DB9C0007E765F /* RegalDispatchHttp.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 4359158218367621002CB92C /* RegalDynamic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4359159118367621002CB92C /* Build configuration list for PBXNativeTarget "RegalDynamic" */; + buildPhases = ( + 4359157F18367621002CB92C /* Sources */, + 4359158018367621002CB92C /* Frameworks */, + 4359158118367621002CB92C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 43CEAE8E183C0011002CE35E /* PBXTargetDependency */, + 43CEAE90183C0011002CE35E /* PBXTargetDependency */, + 43CEAE92183C0011002CE35E /* PBXTargetDependency */, + 43CEAE94183C0011002CE35E /* PBXTargetDependency */, + 43CEAE96183C0011002CE35E /* PBXTargetDependency */, + 43CEAE8A183C0009002CE35E /* PBXTargetDependency */, + 43CEAE8C183C0009002CE35E /* PBXTargetDependency */, + 43CEAE88183C0000002CE35E /* PBXTargetDependency */, + 43CEAE86183BFFF4002CE35E /* PBXTargetDependency */, + 43CEAE79183BFFEF002CE35E /* PBXTargetDependency */, + ); + name = RegalDynamic; + productName = RegalDynamic; + productReference = 4359158318367621002CB92C /* libRegal.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 4359165318367DEE002CB92C /* RegalWrangler */ = { + isa = PBXNativeTarget; + buildConfigurationList = 435916D718367DEE002CB92C /* Build configuration list for PBXNativeTarget "RegalWrangler" */; + buildPhases = ( + 4359165418367DEE002CB92C /* Sources */, + 4359168A18367DEE002CB92C /* Frameworks */, + 4359169518367DEE002CB92C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 43CEAEB8183C01FF002CE35E /* PBXTargetDependency */, + 43CEAEBA183C01FF002CE35E /* PBXTargetDependency */, + ); + name = RegalWrangler; + productName = Regal; + productReference = 435916DA18367DEE002CB92C /* libRegalW.a */; + productType = "com.apple.product-type.library.static"; + }; + 435916E618367E05002CB92C /* RegalWranglerDynamic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4359176C18367E05002CB92C /* Build configuration list for PBXNativeTarget "RegalWranglerDynamic" */; + buildPhases = ( + 435916E718367E05002CB92C /* Sources */, + 4359176018367E05002CB92C /* Frameworks */, + 4359176B18367E05002CB92C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 43CEAEBC183C0207002CE35E /* PBXTargetDependency */, + 43CEAEBE183C0207002CE35E /* PBXTargetDependency */, + ); + name = RegalWranglerDynamic; + productName = RegalDynamic; + productReference = 4359176F18367E05002CB92C /* libRegalW.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; 43A6C1C515C48CD90063667E /* Regal */ = { isa = PBXNativeTarget; buildConfigurationList = 43A6C1CA15C48CD90063667E /* Build configuration list for PBXNativeTarget "Regal" */; @@ -639,6 +1432,16 @@ buildRules = ( ); dependencies = ( + 43CEAEAC183C01ED002CE35E /* PBXTargetDependency */, + 43CEAEAE183C01ED002CE35E /* PBXTargetDependency */, + 43CEAEB0183C01ED002CE35E /* PBXTargetDependency */, + 43CEAEB2183C01ED002CE35E /* PBXTargetDependency */, + 43CEAEB4183C01ED002CE35E /* PBXTargetDependency */, + 43CEAEB6183C01ED002CE35E /* PBXTargetDependency */, + 43CEAEA3183C01E2002CE35E /* PBXTargetDependency */, + 43CEAEA5183C01E2002CE35E /* PBXTargetDependency */, + 43CEAEA7183C01E2002CE35E /* PBXTargetDependency */, + 43CEAEA9183C01E2002CE35E /* PBXTargetDependency */, ); name = Regal; productName = Regal; @@ -669,6 +1472,10 @@ ProductGroup = 4359144718293A5B002CB92C /* Products */; ProjectRef = 4359144618293A5B002CB92C /* apitrace.xcodeproj */; }, + { + ProductGroup = 435914A4182945EF002CB92C /* Products */; + ProjectRef = 435914A3182945EF002CB92C /* glsl_optimizer_lib.xcodeproj */; + }, { ProductGroup = 4359144D18293A68002CB92C /* Products */; ProjectRef = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */; @@ -701,6 +1508,9 @@ projectRoot = ""; targets = ( 43A6C1C515C48CD90063667E /* Regal */, + 4359158218367621002CB92C /* RegalDynamic */, + 4359165318367DEE002CB92C /* RegalWrangler */, + 435916E618367E05002CB92C /* RegalWranglerDynamic */, ); }; /* End PBXProject section */ @@ -762,9 +1572,340 @@ remoteRef = 4359147A18293AB2002CB92C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 435914AA182945F0002CB92C /* libglsl_optimizer.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libglsl_optimizer.a; + remoteRef = 435914A9182945F0002CB92C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 435914AC182945F0002CB92C /* builtincompiler */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = builtincompiler; + remoteRef = 435914AB182945F0002CB92C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXSourcesBuildPhase section */ + 4359157F18367621002CB92C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 435915921836766E002CB92C /* linear.h in Sources */, + 435915931836766E002CB92C /* Regal.cpp in Sources */, + 435915941836766E002CB92C /* Regal.h in Sources */, + 435915951836766E002CB92C /* RegalBaseVertex.h in Sources */, + 435915961836766E002CB92C /* RegalBin.h in Sources */, + 435915971836766E002CB92C /* RegalBreak.cpp in Sources */, + 435915981836766E002CB92C /* RegalBreak.h in Sources */, + 435915991836766E002CB92C /* RegalCacheShader.cpp in Sources */, + 4359159A1836766E002CB92C /* RegalCacheShader.h in Sources */, + 4359159B1836766E002CB92C /* RegalCacheTexture.cpp in Sources */, + 4359159C1836766E002CB92C /* RegalCacheTexture.h in Sources */, + 4359159D1836766E002CB92C /* RegalClientState.h in Sources */, + 4359159E1836766E002CB92C /* RegalConfig.cpp in Sources */, + 4359159F1836766E002CB92C /* RegalConfig.h in Sources */, + 435915A01836766E002CB92C /* RegalContext.cpp in Sources */, + 435915A11836766E002CB92C /* RegalContext.h in Sources */, + 435915A21836766E002CB92C /* RegalContextInfo.cpp in Sources */, + 435915A31836766E002CB92C /* RegalContextInfo.h in Sources */, + 435915A41836766E002CB92C /* RegalDebugInfo.h in Sources */, + 435915A51836766E002CB92C /* RegalDispatch.cpp in Sources */, + 435915A61836766E002CB92C /* RegalDispatch.h in Sources */, + 435915A71836766E002CB92C /* RegalDispatchCache.cpp in Sources */, + 435915A81836766E002CB92C /* RegalDispatchCode.cpp in Sources */, + 435915A91836766E002CB92C /* RegalDispatchDebug.cpp in Sources */, + 435915AA1836766E002CB92C /* RegalDispatchEmu.cpp in Sources */, + 435915AB1836766E002CB92C /* RegalDispatcher.cpp in Sources */, + 435915AC1836766E002CB92C /* RegalDispatcher.h in Sources */, + 435915AD1836766E002CB92C /* RegalDispatcherGL.cpp in Sources */, + 435915AE1836766E002CB92C /* RegalDispatcherGL.h in Sources */, + 435915AF1836766E002CB92C /* RegalDispatcherGlobal.cpp in Sources */, + 435915B01836766E002CB92C /* RegalDispatcherGlobal.h in Sources */, + 435915B11836766E002CB92C /* RegalDispatchError.cpp in Sources */, + 435915B21836766E002CB92C /* RegalDispatchError.h in Sources */, + 435915B31836766E002CB92C /* RegalDispatchGlobal.cpp in Sources */, + 435915B41836766E002CB92C /* RegalDispatchGLX.cpp in Sources */, + 435915B51836766E002CB92C /* RegalDispatchLoader.cpp in Sources */, + 435915B61836766E002CB92C /* RegalDispatchLog.cpp in Sources */, + 435915B71836766E002CB92C /* RegalDispatchMissing.cpp in Sources */, + 435915B81836766E002CB92C /* RegalDispatchPpapi.cpp in Sources */, + 435915B91836766E002CB92C /* RegalDispatchStaticEGL.cpp in Sources */, + 435915BA1836766E002CB92C /* RegalDispatchStaticES2.cpp in Sources */, + 435915BB1836766E002CB92C /* RegalDispatchStatistics.cpp in Sources */, + 435915BC1836766E002CB92C /* RegalDispatchTrace.cpp in Sources */, + 435915BD1836766E002CB92C /* RegalDllMain.cpp in Sources */, + 435915BE1836766E002CB92C /* RegalDsa.h in Sources */, + 435915BF1836766E002CB92C /* RegalEmu.cpp in Sources */, + 435915C01836766E002CB92C /* RegalEmu.h in Sources */, + 435915C11836766E002CB92C /* RegalEmuInfo.cpp in Sources */, + 435915C21836766E002CB92C /* RegalEmuInfo.h in Sources */, + 435915C31836766E002CB92C /* RegalEnum.h in Sources */, + 435915C41836766E002CB92C /* RegalFavicon.cpp in Sources */, + 435915C51836766E002CB92C /* RegalFavicon.h in Sources */, + 435915C61836766E002CB92C /* RegalFilt.cpp in Sources */, + 435915C71836766E002CB92C /* RegalFilt.h in Sources */, + 435915C81836766E002CB92C /* RegalFloat4.h in Sources */, + 435915C91836766E002CB92C /* RegalFrame.cpp in Sources */, + 435915CA1836766E002CB92C /* RegalFrame.h in Sources */, + 435915CB1836766E002CB92C /* RegalHelper.cpp in Sources */, + 435915CC1836766E002CB92C /* RegalHelper.h in Sources */, + 435915CD1836766E002CB92C /* RegalHint.h in Sources */, + 435915CE1836766E002CB92C /* RegalHttp.cpp in Sources */, + 435915CF1836766E002CB92C /* RegalHttp.h in Sources */, + 435915D01836766E002CB92C /* RegalIff.cpp in Sources */, + 435915D11836766E002CB92C /* RegalIff.h in Sources */, + 435915D21836766E002CB92C /* RegalInit.cpp in Sources */, + 435915D31836766E002CB92C /* RegalInit.h in Sources */, + 435915D41836766E002CB92C /* RegalJson.cpp in Sources */, + 435915D51836766E002CB92C /* RegalJson.h in Sources */, + 435915D61836766E002CB92C /* RegalJson.inl in Sources */, + 435915D71836766E002CB92C /* RegalLayerInfo.h in Sources */, + 435915D81836766E002CB92C /* RegalLog.cpp in Sources */, + 435915D91836766E002CB92C /* RegalLog.h in Sources */, + 435915DA1836766E002CB92C /* RegalLookup.cpp in Sources */, + 435915DB1836766E002CB92C /* RegalLookup.h in Sources */, + 435915DC1836766E002CB92C /* RegalMac.cpp in Sources */, + 435915DD1836766E002CB92C /* RegalMac.h in Sources */, + 435915DE1836766E002CB92C /* RegalMarker.cpp in Sources */, + 435915DF1836766E002CB92C /* RegalMarker.h in Sources */, + 435915E01836766E002CB92C /* RegalMutex.h in Sources */, + 435915E11836766E002CB92C /* RegalNamespace.h in Sources */, + 435915E21836766E002CB92C /* RegalObj.h in Sources */, + 435915E31836766E002CB92C /* RegalPixelConversions.cpp in Sources */, + 435915E41836766E002CB92C /* RegalPixelConversions.h in Sources */, + 435915E51836766E002CB92C /* RegalPixelConversions.inl in Sources */, + 435915E61836766E002CB92C /* RegalPlugin.cpp in Sources */, + 435915E71836766E002CB92C /* RegalPpa.h in Sources */, + 435915E81836766E002CB92C /* RegalPpca.h in Sources */, + 435915E91836766E002CB92C /* RegalPrecompile.h in Sources */, + 435915EA1836766E002CB92C /* RegalPrivate.h in Sources */, + 435915EB1836766E002CB92C /* RegalPush.h in Sources */, + 435915EC1836766E002CB92C /* RegalQuads.cpp in Sources */, + 435915ED1836766E002CB92C /* RegalQuads.h in Sources */, + 435915EE1836766E002CB92C /* RegalRect.h in Sources */, + 435915EF1836766E002CB92C /* RegalScopedPtr.h in Sources */, + 435915F01836766E002CB92C /* RegalShader.cpp in Sources */, + 435915F11836766E002CB92C /* RegalShader.h in Sources */, + 435915F21836766E002CB92C /* RegalShaderInstance.cpp in Sources */, + 435915F31836766E002CB92C /* RegalShaderInstance.h in Sources */, + 435915F41836766E002CB92C /* RegalSharedList.h in Sources */, + 435915F51836766E002CB92C /* RegalSharedMap.h in Sources */, + 435915F61836766E002CB92C /* RegalSharedPtr.h in Sources */, + 435915F71836766E002CB92C /* RegalSo.cpp in Sources */, + 435915F81836766E002CB92C /* RegalSo.h in Sources */, + 435915F91836766E002CB92C /* RegalState.h in Sources */, + 435915FA1836766E002CB92C /* RegalStatistics.cpp in Sources */, + 435915FB1836766E002CB92C /* RegalStatistics.h in Sources */, + 435915FC1836766E002CB92C /* RegalSystem.h in Sources */, + 435915FD1836766E002CB92C /* RegalTexC.cpp in Sources */, + 435915FE1836766E002CB92C /* RegalTexC.h in Sources */, + 435915FF1836766E002CB92C /* RegalTexSto.h in Sources */, + 435916001836766E002CB92C /* RegalThread.h in Sources */, + 435916011836766E002CB92C /* RegalTimer.h in Sources */, + 435916021836766E002CB92C /* RegalToken.cpp in Sources */, + 435916031836766E002CB92C /* RegalToken.h in Sources */, + 435916041836766E002CB92C /* RegalUtil.cpp in Sources */, + 435916051836766E002CB92C /* RegalUtil.h in Sources */, + 435916061836766E002CB92C /* RegalVao.h in Sources */, + 435916071836766E002CB92C /* RegalX11.cpp in Sources */, + 435916081836766E002CB92C /* RegalXfer.cpp in Sources */, + 435916091836766E002CB92C /* RegalXfer.h in Sources */, + 43C7580D184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4359165418367DEE002CB92C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4359165518367DEE002CB92C /* Regal.cpp in Sources */, + 4359165618367DEE002CB92C /* RegalConfig.cpp in Sources */, + 4359165718367DEE002CB92C /* RegalContext.cpp in Sources */, + 4359165818367DEE002CB92C /* RegalContextInfo.cpp in Sources */, + 4359165918367DEE002CB92C /* RegalDispatchDebug.cpp in Sources */, + 4359165A18367DEE002CB92C /* RegalDispatchEmu.cpp in Sources */, + 4359165B18367DEE002CB92C /* RegalDispatchError.cpp in Sources */, + 4359165C18367DEE002CB92C /* RegalDispatchLoader.cpp in Sources */, + 4359165D18367DEE002CB92C /* RegalDispatchLog.cpp in Sources */, + 4359165E18367DEE002CB92C /* RegalDllMain.cpp in Sources */, + 4359165F18367DEE002CB92C /* RegalHelper.cpp in Sources */, + 4359166018367DEE002CB92C /* RegalHttp.cpp in Sources */, + 4359166118367DEE002CB92C /* RegalIff.cpp in Sources */, + 4359166218367DEE002CB92C /* RegalInit.cpp in Sources */, + 4359166318367DEE002CB92C /* RegalLog.cpp in Sources */, + 4359166418367DEE002CB92C /* RegalLookup.cpp in Sources */, + 4359166518367DEE002CB92C /* RegalToken.cpp in Sources */, + 4359166618367DEE002CB92C /* RegalUtil.cpp in Sources */, + 4359166718367DEE002CB92C /* RegalFavicon.cpp in Sources */, + 4359166818367DEE002CB92C /* RegalMac.cpp in Sources */, + 4359166918367DEE002CB92C /* RegalDispatchMissing.cpp in Sources */, + 4359166A18367DEE002CB92C /* RegalDispatchPpapi.cpp in Sources */, + 4359166B18367DEE002CB92C /* RegalDispatcher.cpp in Sources */, + 4359166C18367DEE002CB92C /* RegalDispatchStaticES2.cpp in Sources */, + 4359166D18367DEE002CB92C /* RegalDispatchGlobal.cpp in Sources */, + 4359166E18367DEE002CB92C /* RegalMarker.cpp in Sources */, + 4359166F18367DEE002CB92C /* RegalFrame.cpp in Sources */, + 4359167018367DEE002CB92C /* RegalSo.cpp in Sources */, + 4359167118367DEE002CB92C /* RegalDispatchCache.cpp in Sources */, + 4359167218367DEE002CB92C /* RegalDispatchCode.cpp in Sources */, + 4359167318367DEE002CB92C /* RegalJson.cpp in Sources */, + 4359167418367DEE002CB92C /* RegalPixelConversions.cpp in Sources */, + 4359167518367DEE002CB92C /* RegalTexC.cpp in Sources */, + 4359167618367DEE002CB92C /* RegalBreak.cpp in Sources */, + 4359167718367DEE002CB92C /* RegalFilt.cpp in Sources */, + 4359167818367DEE002CB92C /* RegalXfer.cpp in Sources */, + 4359167918367DEE002CB92C /* RegalCacheShader.cpp in Sources */, + 4359167A18367DEE002CB92C /* RegalCacheTexture.cpp in Sources */, + 4359167B18367DEE002CB92C /* RegalDispatcherGL.cpp in Sources */, + 4359167C18367DEE002CB92C /* RegalDispatcherGlobal.cpp in Sources */, + 4359167D18367DEE002CB92C /* RegalStatistics.cpp in Sources */, + 4359167E18367DEE002CB92C /* RegalDispatchStatistics.cpp in Sources */, + 4359167F18367DEE002CB92C /* RegalDispatchTrace.cpp in Sources */, + 4359168018367DEE002CB92C /* RegalPlugin.cpp in Sources */, + 4359168118367DEE002CB92C /* RegalDispatchGLX.cpp in Sources */, + 4359168218367DEE002CB92C /* RegalX11.cpp in Sources */, + 4359168318367DEE002CB92C /* RegalDispatchStaticEGL.cpp in Sources */, + 4359168418367DEE002CB92C /* RegalEmuInfo.cpp in Sources */, + 4359168518367DEE002CB92C /* RegalEmu.cpp in Sources */, + 4359168618367DEE002CB92C /* RegalDispatch.cpp in Sources */, + 4359168718367DEE002CB92C /* RegalQuads.cpp in Sources */, + 4359168818367DEE002CB92C /* RegalShader.cpp in Sources */, + 4359168918367DEE002CB92C /* RegalShaderInstance.cpp in Sources */, + 43C7580E184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 435916E718367E05002CB92C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 435916E818367E05002CB92C /* linear.h in Sources */, + 435916E918367E05002CB92C /* Regal.cpp in Sources */, + 435916EA18367E05002CB92C /* Regal.h in Sources */, + 435916EB18367E05002CB92C /* RegalBaseVertex.h in Sources */, + 435916EC18367E05002CB92C /* RegalBin.h in Sources */, + 435916ED18367E05002CB92C /* RegalBreak.cpp in Sources */, + 435916EE18367E05002CB92C /* RegalBreak.h in Sources */, + 435916EF18367E05002CB92C /* RegalCacheShader.cpp in Sources */, + 435916F018367E05002CB92C /* RegalCacheShader.h in Sources */, + 435916F118367E05002CB92C /* RegalCacheTexture.cpp in Sources */, + 435916F218367E05002CB92C /* RegalCacheTexture.h in Sources */, + 435916F318367E05002CB92C /* RegalClientState.h in Sources */, + 435916F418367E05002CB92C /* RegalConfig.cpp in Sources */, + 435916F518367E05002CB92C /* RegalConfig.h in Sources */, + 435916F618367E05002CB92C /* RegalContext.cpp in Sources */, + 435916F718367E05002CB92C /* RegalContext.h in Sources */, + 435916F818367E05002CB92C /* RegalContextInfo.cpp in Sources */, + 435916F918367E05002CB92C /* RegalContextInfo.h in Sources */, + 435916FA18367E05002CB92C /* RegalDebugInfo.h in Sources */, + 435916FB18367E05002CB92C /* RegalDispatch.cpp in Sources */, + 435916FC18367E05002CB92C /* RegalDispatch.h in Sources */, + 435916FD18367E05002CB92C /* RegalDispatchCache.cpp in Sources */, + 435916FE18367E05002CB92C /* RegalDispatchCode.cpp in Sources */, + 435916FF18367E05002CB92C /* RegalDispatchDebug.cpp in Sources */, + 4359170018367E05002CB92C /* RegalDispatchEmu.cpp in Sources */, + 4359170118367E05002CB92C /* RegalDispatcher.cpp in Sources */, + 4359170218367E05002CB92C /* RegalDispatcher.h in Sources */, + 4359170318367E05002CB92C /* RegalDispatcherGL.cpp in Sources */, + 4359170418367E05002CB92C /* RegalDispatcherGL.h in Sources */, + 4359170518367E05002CB92C /* RegalDispatcherGlobal.cpp in Sources */, + 4359170618367E05002CB92C /* RegalDispatcherGlobal.h in Sources */, + 4359170718367E05002CB92C /* RegalDispatchError.cpp in Sources */, + 4359170818367E05002CB92C /* RegalDispatchError.h in Sources */, + 4359170918367E05002CB92C /* RegalDispatchGlobal.cpp in Sources */, + 4359170A18367E05002CB92C /* RegalDispatchGLX.cpp in Sources */, + 4359170B18367E05002CB92C /* RegalDispatchLoader.cpp in Sources */, + 4359170C18367E05002CB92C /* RegalDispatchLog.cpp in Sources */, + 4359170D18367E05002CB92C /* RegalDispatchMissing.cpp in Sources */, + 4359170E18367E05002CB92C /* RegalDispatchPpapi.cpp in Sources */, + 4359170F18367E05002CB92C /* RegalDispatchStaticEGL.cpp in Sources */, + 4359171018367E05002CB92C /* RegalDispatchStaticES2.cpp in Sources */, + 4359171118367E05002CB92C /* RegalDispatchStatistics.cpp in Sources */, + 4359171218367E05002CB92C /* RegalDispatchTrace.cpp in Sources */, + 4359171318367E05002CB92C /* RegalDllMain.cpp in Sources */, + 4359171418367E05002CB92C /* RegalDsa.h in Sources */, + 4359171518367E05002CB92C /* RegalEmu.cpp in Sources */, + 4359171618367E05002CB92C /* RegalEmu.h in Sources */, + 4359171718367E05002CB92C /* RegalEmuInfo.cpp in Sources */, + 4359171818367E05002CB92C /* RegalEmuInfo.h in Sources */, + 4359171918367E05002CB92C /* RegalEnum.h in Sources */, + 4359171A18367E05002CB92C /* RegalFavicon.cpp in Sources */, + 4359171B18367E05002CB92C /* RegalFavicon.h in Sources */, + 4359171C18367E05002CB92C /* RegalFilt.cpp in Sources */, + 4359171D18367E05002CB92C /* RegalFilt.h in Sources */, + 4359171E18367E05002CB92C /* RegalFloat4.h in Sources */, + 4359171F18367E05002CB92C /* RegalFrame.cpp in Sources */, + 4359172018367E05002CB92C /* RegalFrame.h in Sources */, + 4359172118367E05002CB92C /* RegalHelper.cpp in Sources */, + 4359172218367E05002CB92C /* RegalHelper.h in Sources */, + 4359172318367E05002CB92C /* RegalHint.h in Sources */, + 4359172418367E05002CB92C /* RegalHttp.cpp in Sources */, + 4359172518367E05002CB92C /* RegalHttp.h in Sources */, + 4359172618367E05002CB92C /* RegalIff.cpp in Sources */, + 4359172718367E05002CB92C /* RegalIff.h in Sources */, + 4359172818367E05002CB92C /* RegalInit.cpp in Sources */, + 4359172918367E05002CB92C /* RegalInit.h in Sources */, + 4359172A18367E05002CB92C /* RegalJson.cpp in Sources */, + 4359172B18367E05002CB92C /* RegalJson.h in Sources */, + 4359172C18367E05002CB92C /* RegalJson.inl in Sources */, + 4359172D18367E05002CB92C /* RegalLayerInfo.h in Sources */, + 4359172E18367E05002CB92C /* RegalLog.cpp in Sources */, + 4359172F18367E05002CB92C /* RegalLog.h in Sources */, + 4359173018367E05002CB92C /* RegalLookup.cpp in Sources */, + 4359173118367E05002CB92C /* RegalLookup.h in Sources */, + 4359173218367E05002CB92C /* RegalMac.cpp in Sources */, + 4359173318367E05002CB92C /* RegalMac.h in Sources */, + 4359173418367E05002CB92C /* RegalMarker.cpp in Sources */, + 4359173518367E05002CB92C /* RegalMarker.h in Sources */, + 4359173618367E05002CB92C /* RegalMutex.h in Sources */, + 4359173718367E05002CB92C /* RegalNamespace.h in Sources */, + 4359173818367E05002CB92C /* RegalObj.h in Sources */, + 4359173918367E05002CB92C /* RegalPixelConversions.cpp in Sources */, + 4359173A18367E05002CB92C /* RegalPixelConversions.h in Sources */, + 4359173B18367E05002CB92C /* RegalPixelConversions.inl in Sources */, + 4359173C18367E05002CB92C /* RegalPlugin.cpp in Sources */, + 4359173D18367E05002CB92C /* RegalPpa.h in Sources */, + 4359173E18367E05002CB92C /* RegalPpca.h in Sources */, + 4359173F18367E05002CB92C /* RegalPrecompile.h in Sources */, + 4359174018367E05002CB92C /* RegalPrivate.h in Sources */, + 4359174118367E05002CB92C /* RegalPush.h in Sources */, + 4359174218367E05002CB92C /* RegalQuads.cpp in Sources */, + 4359174318367E05002CB92C /* RegalQuads.h in Sources */, + 4359174418367E05002CB92C /* RegalRect.h in Sources */, + 4359174518367E05002CB92C /* RegalScopedPtr.h in Sources */, + 4359174618367E05002CB92C /* RegalShader.cpp in Sources */, + 4359174718367E05002CB92C /* RegalShader.h in Sources */, + 4359174818367E05002CB92C /* RegalShaderInstance.cpp in Sources */, + 4359174918367E05002CB92C /* RegalShaderInstance.h in Sources */, + 4359174A18367E05002CB92C /* RegalSharedList.h in Sources */, + 4359174B18367E05002CB92C /* RegalSharedMap.h in Sources */, + 4359174C18367E05002CB92C /* RegalSharedPtr.h in Sources */, + 4359174D18367E05002CB92C /* RegalSo.cpp in Sources */, + 4359174E18367E05002CB92C /* RegalSo.h in Sources */, + 4359174F18367E05002CB92C /* RegalState.h in Sources */, + 4359175018367E05002CB92C /* RegalStatistics.cpp in Sources */, + 4359175118367E05002CB92C /* RegalStatistics.h in Sources */, + 4359175218367E05002CB92C /* RegalSystem.h in Sources */, + 4359175318367E05002CB92C /* RegalTexC.cpp in Sources */, + 4359175418367E05002CB92C /* RegalTexC.h in Sources */, + 4359175518367E05002CB92C /* RegalTexSto.h in Sources */, + 4359175618367E05002CB92C /* RegalThread.h in Sources */, + 4359175718367E05002CB92C /* RegalTimer.h in Sources */, + 4359175818367E05002CB92C /* RegalToken.cpp in Sources */, + 4359175918367E05002CB92C /* RegalToken.h in Sources */, + 4359175A18367E05002CB92C /* RegalUtil.cpp in Sources */, + 4359175B18367E05002CB92C /* RegalUtil.h in Sources */, + 4359175C18367E05002CB92C /* RegalVao.h in Sources */, + 4359175D18367E05002CB92C /* RegalX11.cpp in Sources */, + 4359175E18367E05002CB92C /* RegalXfer.cpp in Sources */, + 4359175F18367E05002CB92C /* RegalXfer.h in Sources */, + 43C7580F184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 43A6C1C215C48CD90063667E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -820,12 +1961,230 @@ BCBA1FCC17DF836700CB6E19 /* RegalEmu.cpp in Sources */, BCB6107117F21E6500BA0A06 /* RegalDispatch.cpp in Sources */, BC4DBEC31804FB0600F6D226 /* RegalQuads.cpp in Sources */, + 435914DC182BF69F002CB92C /* RegalShader.cpp in Sources */, + 435914DE182BF69F002CB92C /* RegalShaderInstance.cpp in Sources */, + 43C7580C184B69E2007E765F /* RegalDispatchHttp.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 43CEAE79183BFFEF002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = glsl_optimizer; + targetProxy = 43CEAE78183BFFEF002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE86183BFFF4002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = apitrace; + targetProxy = 43CEAE85183BFFF4002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE88183C0000002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = jsonsl; + targetProxy = 43CEAE87183C0000002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE8A183C0009002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = md5; + targetProxy = 43CEAE89183C0009002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE8C183C0009002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = mongoose; + targetProxy = 43CEAE8B183C0009002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE8E183C0011002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = pcre; + targetProxy = 43CEAE8D183C0011002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE90183C0011002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = png; + targetProxy = 43CEAE8F183C0011002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE92183C0011002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = snappy; + targetProxy = 43CEAE91183C0011002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE94183C0011002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = squish; + targetProxy = 43CEAE93183C0011002CE35E /* PBXContainerItemProxy */; + }; + 43CEAE96183C0011002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = zlib; + targetProxy = 43CEAE95183C0011002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEA3183C01E2002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = glsl_optimizer; + targetProxy = 43CEAEA2183C01E2002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEA5183C01E2002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = apitrace; + targetProxy = 43CEAEA4183C01E2002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEA7183C01E2002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = jsonsl; + targetProxy = 43CEAEA6183C01E2002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEA9183C01E2002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = md5; + targetProxy = 43CEAEA8183C01E2002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEAC183C01ED002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = mongoose; + targetProxy = 43CEAEAB183C01ED002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEAE183C01ED002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = pcre; + targetProxy = 43CEAEAD183C01ED002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEB0183C01ED002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = png; + targetProxy = 43CEAEAF183C01ED002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEB2183C01ED002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = snappy; + targetProxy = 43CEAEB1183C01ED002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEB4183C01ED002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = squish; + targetProxy = 43CEAEB3183C01ED002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEB6183C01ED002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = zlib; + targetProxy = 43CEAEB5183C01ED002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEB8183C01FF002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = jsonsl; + targetProxy = 43CEAEB7183C01FF002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEBA183C01FF002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = md5; + targetProxy = 43CEAEB9183C01FF002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEBC183C0207002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = jsonsl; + targetProxy = 43CEAEBB183C0207002CE35E /* PBXContainerItemProxy */; + }; + 43CEAEBE183C0207002CE35E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = md5; + targetProxy = 43CEAEBD183C0207002CE35E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ + 4359158418367621002CB92C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; + CLANG_CXX_LIBRARY = "compiler-default"; + CLANG_WARN_EMPTY_BODY = YES; + EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = Regal; + }; + name = Debug; + }; + 4359158518367621002CB92C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; + CLANG_CXX_LIBRARY = "compiler-default"; + CLANG_WARN_EMPTY_BODY = YES; + EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = Regal; + }; + name = Release; + }; + 435916D818367DEE002CB92C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + "REGAL_WRANGLER=1", + ); + PRODUCT_NAME = RegalW; + }; + name = Debug; + }; + 435916D918367DEE002CB92C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = ( + "REGAL_WRANGLER=1", + "$(inherited)", + ); + PRODUCT_NAME = RegalW; + }; + name = Release; + }; + 4359176D18367E05002CB92C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; + CLANG_CXX_LIBRARY = "compiler-default"; + CLANG_WARN_EMPTY_BODY = YES; + EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + "REGAL_WRANGLER=1", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = RegalW; + }; + name = Debug; + }; + 4359176E18367E05002CB92C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; + CLANG_CXX_LIBRARY = "compiler-default"; + CLANG_WARN_EMPTY_BODY = YES; + EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = ( + "REGAL_WRANGLER=1", + "$(inherited)", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = RegalW; + }; + name = Release; + }; 43A6C1C815C48CD90063667E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -842,7 +2201,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", - "REGAL_NO_HTTP=1", + "REGAL_HTTP=1", "REGAL_NO_PNG=1", "$(inherited)", ); @@ -866,6 +2225,10 @@ ../../../src/apitrace, ../../../src/apitrace/thirdparty/khronos, ../../../src/zlib/src, + ../../../src/glsl/src/glsl, + ../../../src/glsl/src/mesa, + ../../../src/glsl/include, + ../../../src/pcre, ); MACOSX_DEPLOYMENT_TARGET = 10.7; ONLY_ACTIVE_ARCH = YES; @@ -888,7 +2251,7 @@ GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( - "REGAL_NO_HTTP=1", + "REGAL_HTTP=1", "REGAL_NO_PNG=1", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; @@ -910,6 +2273,10 @@ ../../../src/apitrace, ../../../src/apitrace/thirdparty/khronos, ../../../src/zlib/src, + ../../../src/glsl/src/glsl, + ../../../src/glsl/src/mesa, + ../../../src/glsl/include, + ../../../src/pcre, ); MACOSX_DEPLOYMENT_TARGET = 10.7; SDKROOT = ""; @@ -923,6 +2290,8 @@ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + HEADER_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -933,6 +2302,8 @@ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + HEADER_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -940,6 +2311,33 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 4359159118367621002CB92C /* Build configuration list for PBXNativeTarget "RegalDynamic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4359158418367621002CB92C /* Debug */, + 4359158518367621002CB92C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 435916D718367DEE002CB92C /* Build configuration list for PBXNativeTarget "RegalWrangler" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 435916D818367DEE002CB92C /* Debug */, + 435916D918367DEE002CB92C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4359176C18367E05002CB92C /* Build configuration list for PBXNativeTarget "RegalWranglerDynamic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4359176D18367E05002CB92C /* Debug */, + 4359176E18367E05002CB92C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 43A6C1C015C48CD90063667E /* Build configuration list for PBXProject "Regal" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/build/mac/apitrace/apitrace.xcodeproj/project.pbxproj b/build/mac/apitrace/apitrace.xcodeproj/project.pbxproj index a14d2d8..7d2e516 100644 --- a/build/mac/apitrace/apitrace.xcodeproj/project.pbxproj +++ b/build/mac/apitrace/apitrace.xcodeproj/project.pbxproj @@ -13,8 +13,6 @@ 43777CE917DBF46700EA874E /* glcaps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43777CB417DBF46700EA874E /* glcaps.cpp */; }; 43777CEA17DBF46700EA874E /* gltrace_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43777CB517DBF46700EA874E /* gltrace_state.cpp */; }; 43777CEB17DBF46700EA874E /* regaltrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43777CB617DBF46700EA874E /* regaltrace.cpp */; }; - 43777CEC17DBF46700EA874E /* trace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43777CB717DBF46700EA874E /* trace.cpp */; }; - 43777CED17DBF46700EA874E /* trace.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 43777CB817DBF46700EA874E /* trace.hpp */; }; 43777CEE17DBF46700EA874E /* glproc_regal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43777CB917DBF46700EA874E /* glproc_regal.cpp */; }; 43777CEF17DBF46700EA874E /* glproc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 43777CBA17DBF46700EA874E /* glproc.hpp */; }; 43777CF017DBF46700EA874E /* formatter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 43777CBB17DBF46700EA874E /* formatter.hpp */; }; @@ -70,8 +68,6 @@ 43777CB417DBF46700EA874E /* glcaps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glcaps.cpp; path = ../../../src/apitrace/wrappers/glcaps.cpp; sourceTree = ""; }; 43777CB517DBF46700EA874E /* gltrace_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gltrace_state.cpp; path = ../../../src/apitrace/wrappers/gltrace_state.cpp; sourceTree = ""; }; 43777CB617DBF46700EA874E /* regaltrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = regaltrace.cpp; path = ../../../src/apitrace/wrappers/regaltrace.cpp; sourceTree = ""; }; - 43777CB717DBF46700EA874E /* trace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = trace.cpp; path = ../../../src/apitrace/wrappers/trace.cpp; sourceTree = ""; }; - 43777CB817DBF46700EA874E /* trace.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = trace.hpp; path = ../../../src/apitrace/wrappers/trace.hpp; sourceTree = ""; }; 43777CB917DBF46700EA874E /* glproc_regal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glproc_regal.cpp; path = ../../../src/apitrace/dispatch/glproc_regal.cpp; sourceTree = ""; }; 43777CBA17DBF46700EA874E /* glproc.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = glproc.hpp; path = ../../../src/apitrace/dispatch/glproc.hpp; sourceTree = ""; }; 43777CBB17DBF46700EA874E /* formatter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = formatter.hpp; path = ../../../src/apitrace/common/formatter.hpp; sourceTree = ""; }; @@ -157,8 +153,6 @@ 43777CB417DBF46700EA874E /* glcaps.cpp */, 43777CB517DBF46700EA874E /* gltrace_state.cpp */, 43777CB617DBF46700EA874E /* regaltrace.cpp */, - 43777CB717DBF46700EA874E /* trace.cpp */, - 43777CB817DBF46700EA874E /* trace.hpp */, 43777CB917DBF46700EA874E /* glproc_regal.cpp */, 43777CBA17DBF46700EA874E /* glproc.hpp */, 43777CBB17DBF46700EA874E /* formatter.hpp */, @@ -215,7 +209,6 @@ files = ( 43777CE717DBF46700EA874E /* eglsize.hpp in Headers */, 43777CE817DBF46700EA874E /* glsize.hpp in Headers */, - 43777CED17DBF46700EA874E /* trace.hpp in Headers */, 43777CEF17DBF46700EA874E /* glproc.hpp in Headers */, 43777CF017DBF46700EA874E /* formatter.hpp in Headers */, 43777CF117DBF46700EA874E /* os_binary.hpp in Headers */, @@ -299,7 +292,6 @@ 43777CE917DBF46700EA874E /* glcaps.cpp in Sources */, 43777CEA17DBF46700EA874E /* gltrace_state.cpp in Sources */, 43777CEB17DBF46700EA874E /* regaltrace.cpp in Sources */, - 43777CEC17DBF46700EA874E /* trace.cpp in Sources */, 43777CEE17DBF46700EA874E /* glproc_regal.cpp in Sources */, 43777CF417DBF46700EA874E /* os_posix.cpp in Sources */, 43777CF917DBF46700EA874E /* os_win32.cpp in Sources */, diff --git a/build/pcre.inc b/build/pcre.inc new file mode 100644 index 0000000..d253c38 --- /dev/null +++ b/build/pcre.inc @@ -0,0 +1,98 @@ +# pcre.inc +# +# Generic gnumake .inc for building pcre +# + +# Sources + +PCRE.C := +#PCRE.C += src/pcre/dftables.c +PCRE.C += src/pcre/pcre16_byte_order.c +PCRE.C += src/pcre/pcre16_chartables.c +PCRE.C += src/pcre/pcre16_compile.c +PCRE.C += src/pcre/pcre16_config.c +PCRE.C += src/pcre/pcre16_dfa_exec.c +PCRE.C += src/pcre/pcre16_exec.c +PCRE.C += src/pcre/pcre16_fullinfo.c +PCRE.C += src/pcre/pcre16_get.c +PCRE.C += src/pcre/pcre16_globals.c +PCRE.C += src/pcre/pcre16_jit_compile.c +PCRE.C += src/pcre/pcre16_maketables.c +PCRE.C += src/pcre/pcre16_newline.c +PCRE.C += src/pcre/pcre16_ord2utf16.c +PCRE.C += src/pcre/pcre16_printint.c +PCRE.C += src/pcre/pcre16_refcount.c +PCRE.C += src/pcre/pcre16_string_utils.c +PCRE.C += src/pcre/pcre16_study.c +PCRE.C += src/pcre/pcre16_tables.c +PCRE.C += src/pcre/pcre16_ucd.c +PCRE.C += src/pcre/pcre16_utf16_utils.c +PCRE.C += src/pcre/pcre16_valid_utf16.c +PCRE.C += src/pcre/pcre16_version.c +PCRE.C += src/pcre/pcre16_xclass.c +PCRE.C += src/pcre/pcre32_byte_order.c +PCRE.C += src/pcre/pcre32_chartables.c +PCRE.C += src/pcre/pcre32_compile.c +PCRE.C += src/pcre/pcre32_config.c +PCRE.C += src/pcre/pcre32_dfa_exec.c +PCRE.C += src/pcre/pcre32_exec.c +PCRE.C += src/pcre/pcre32_fullinfo.c +PCRE.C += src/pcre/pcre32_get.c +PCRE.C += src/pcre/pcre32_globals.c +PCRE.C += src/pcre/pcre32_jit_compile.c +PCRE.C += src/pcre/pcre32_maketables.c +PCRE.C += src/pcre/pcre32_newline.c +PCRE.C += src/pcre/pcre32_ord2utf32.c +PCRE.C += src/pcre/pcre32_printint.c +PCRE.C += src/pcre/pcre32_refcount.c +PCRE.C += src/pcre/pcre32_string_utils.c +PCRE.C += src/pcre/pcre32_study.c +PCRE.C += src/pcre/pcre32_tables.c +PCRE.C += src/pcre/pcre32_ucd.c +PCRE.C += src/pcre/pcre32_utf32_utils.c +PCRE.C += src/pcre/pcre32_valid_utf32.c +PCRE.C += src/pcre/pcre32_version.c +PCRE.C += src/pcre/pcre32_xclass.c +PCRE.C += src/pcre/pcre_byte_order.c +PCRE.C += src/pcre/pcre_chartables.c +PCRE.C += src/pcre/pcre_compile.c +PCRE.C += src/pcre/pcre_config.c +#PCRE.C += src/pcre/pcredemo.c +PCRE.C += src/pcre/pcre_dfa_exec.c +PCRE.C += src/pcre/pcre_exec.c +PCRE.C += src/pcre/pcre_fullinfo.c +PCRE.C += src/pcre/pcre_get.c +PCRE.C += src/pcre/pcre_globals.c +#PCRE.C += src/pcre/pcregrep.c +PCRE.C += src/pcre/pcre_jit_compile.c +PCRE.C += src/pcre/pcre_jit_test.c +PCRE.C += src/pcre/pcre_maketables.c +PCRE.C += src/pcre/pcre_newline.c +PCRE.C += src/pcre/pcre_ord2utf8.c +PCRE.C += src/pcre/pcreposix.c +PCRE.C += src/pcre/pcre_printint.c +PCRE.C += src/pcre/pcre_refcount.c +PCRE.C += src/pcre/pcre_string_utils.c +PCRE.C += src/pcre/pcre_study.c +PCRE.C += src/pcre/pcre_tables.c +#PCRE.C += src/pcre/pcretest.c +PCRE.C += src/pcre/pcre_ucd.c +PCRE.C += src/pcre/pcre_valid_utf8.c +PCRE.C += src/pcre/pcre_version.c +PCRE.C += src/pcre/pcre_xclass.c + +# Internal Headers +# seth: is this used for dependencies? +PCRE.H := + +# Other Headers +# seth: do all of these need to be specified? +PCRE.H.OTHER := + +# +# Includes + +PCRE.INCLUDE := +PCRE.INCLUDE += -Isrc/pcre + +PCRE.STATIC ?= libpcre.a diff --git a/build/ppapi/vs2010/Regal/Regal.vcxproj b/build/ppapi/vs2010/Regal/Regal.vcxproj index 1c29475..6fd41f9 100644 --- a/build/ppapi/vs2010/Regal/Regal.vcxproj +++ b/build/ppapi/vs2010/Regal/Regal.vcxproj @@ -172,7 +172,7 @@ ../../../../src/jsonsl;../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;%(AdditionalIncludeDirectories) 4996 Level4 - PPAPI;REGAL_NO_TLS=1;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;JSONSL_STATE_GENERIC=1;DNDEBUG;REGAL_DECL_EXPORT=1;REGAL_LOG=0;REGAL_LOG_ALL=0;REGAL_LOG_ONCE=0;REGAL_LOG_JSON=0;REGAL_NO_HTTP=1;REGAL_NO_ASSERT=1;REGAL_NO_PNG=1;REGAL_ERROR=0;REGAL_DEBUG=0;REGAL_CACHE=0;REGAL_EMULATION=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + PPAPI;REGAL_NO_TLS=1;REGAL_WIN_TLS=0;REGAL_DECL_EXPORT;REGAL_SYS_WGL_DECLARE_WGL;JSONSL_STATE_GENERIC=1;DNDEBUG;REGAL_DECL_EXPORT=1;REGAL_LOG=0;REGAL_LOG_ALL=0;REGAL_LOG_ONCE=0;REGAL_LOG_JSON=0;REGAL_HTTP=0;REGAL_NO_ASSERT=1;REGAL_NO_PNG=1;REGAL_ERROR=0;REGAL_DEBUG=0;REGAL_CACHE=0;REGAL_EMULATION=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true true @@ -279,4 +279,4 @@ - \ No newline at end of file + diff --git a/build/regal.inc b/build/regal.inc index 5545ef4..32e7933 100644 --- a/build/regal.inc +++ b/build/regal.inc @@ -6,6 +6,7 @@ # Regal Sources REGAL.CXX := +REGAL.CXX += src/regal/RegalShaderInstance.cpp REGAL.CXX += src/regal/RegalIff.cpp REGAL.CXX += src/regal/RegalQuads.cpp REGAL.CXX += src/regal/Regal.cpp @@ -28,6 +29,7 @@ REGAL.CXX += src/regal/RegalDispatch.cpp REGAL.CXX += src/regal/RegalStatistics.cpp REGAL.CXX += src/regal/RegalLookup.cpp REGAL.CXX += src/regal/RegalPlugin.cpp +REGAL.CXX += src/regal/RegalShader.cpp REGAL.CXX += src/regal/RegalToken.cpp REGAL.CXX += src/regal/RegalDispatchGlobal.cpp REGAL.CXX += src/regal/RegalDispatcher.cpp @@ -49,6 +51,7 @@ REGAL.CXX += src/regal/RegalDispatchTrace.cpp REGAL.CXX += src/regal/RegalDispatchMissing.cpp REGAL.CXX += src/regal/RegalPixelConversions.cpp REGAL.CXX += src/regal/RegalHttp.cpp +REGAL.CXX += src/regal/RegalDispatchHttp.cpp REGAL.CXX += src/regal/RegalJson.cpp REGAL.CXX += src/regal/RegalFavicon.cpp REGAL.CXX += src/regal/RegalMac.cpp @@ -85,6 +88,7 @@ REGAL.H += src/regal/RegalXfer.h REGAL.H += src/regal/RegalFrame.h REGAL.H += src/regal/RegalHelper.h REGAL.H += src/regal/RegalHttp.h +REGAL.H += src/regal/RegalDispatchHttp.h REGAL.H += src/regal/RegalJson.h REGAL.H += src/regal/RegalJson.inl REGAL.H += src/regal/RegalIff.h @@ -94,6 +98,7 @@ REGAL.H += src/regal/RegalLog.h REGAL.H += src/regal/RegalLookup.h REGAL.H += src/regal/RegalMarker.h REGAL.H += src/regal/RegalNamespace.h +REGAL.H += src/regal/RegalShader.h REGAL.H += src/regal/RegalTexC.h REGAL.H += src/regal/RegalTexSto.h REGAL.H += src/regal/RegalMac.h @@ -128,6 +133,7 @@ REGAL.H.OTHER += src/lookup3/lookup3.h # + REGAL.INCLUDE := REGAL.INCLUDE += -Isrc/regal REGAL.INCLUDE += -Isrc/zlib/include @@ -135,8 +141,17 @@ REGAL.INCLUDE += -Isrc/libpng/include REGAL.INCLUDE += -Isrc/civetweb REGAL.INCLUDE += -Isrc/md5/include REGAL.INCLUDE += -Isrc/lookup3 +REGAL.INCLUDE += -Isrc/pcre REGAL.INCLUDE += -Isrc/jsonsl REGAL.INCLUDE += -Isrc/boost +REGAL.INCLUDE += -Isrc/glsl/include +REGAL.INCLUDE += -Isrc/glsl/src/glsl +REGAL.INCLUDE += -Isrc/glsl/src/mesa + +ifeq ($(PROFILE_OS),Windows) +REGAL.INCLUDE += -Isrc/glsl/include/c99 +endif + REGAL.STATIC ?= libRegallib.a REGAL.SHARED ?= libRegal.so diff --git a/build/win32/vs2010/Regal/All.sln b/build/win32/vs2010/Regal/All.sln index 24ea43b..f95a890 100644 --- a/build/win32/vs2010/Regal/All.sln +++ b/build/win32/vs2010/Regal/All.sln @@ -6,9 +6,11 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regal", "Regal.vcxproj", "{ {EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08} {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} {9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} {27193EF0-3CCB-8553-C48A-271082615A64} = {27193EF0-3CCB-8553-C48A-271082615A64} {A996811D-4FA1-5874-A99B-81B8A0F3AA21} = {A996811D-4FA1-5874-A99B-81B8A0F3AA21} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {E3BB0211-87AF-58EF-3C65-999758F666FD} EndProjectSection EndProject @@ -22,9 +24,11 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalm", "Regalm.vcxproj", {EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08} {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} {9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} {27193EF0-3CCB-8553-C48A-271082615A64} = {27193EF0-3CCB-8553-C48A-271082615A64} {A996811D-4FA1-5874-A99B-81B8A0F3AA21} = {A996811D-4FA1-5874-A99B-81B8A0F3AA21} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {E3BB0211-87AF-58EF-3C65-999758F666FD} EndProjectSection EndProject @@ -54,6 +58,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pnglib", "pnglib.vcxproj", {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pcrelib", "pcrelib.vcxproj", "{F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "jsonsllib", "jsonsllib.vcxproj", "{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -66,6 +74,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "apitracelib", "apitracelib. ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "glsloptlib", "glsloptlib.vcxproj", "{1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "snappylib", "snappylib.vcxproj", "{E3BB0211-87AF-58EF-3C65-999758F666FD}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -114,6 +126,13 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "dreamtorus", "dreamtorus.vc {D0E3B182-FE11-0FF9-FD65-CBEFAAB35A3E} = {D0E3B182-FE11-0FF9-FD65-CBEFAAB35A3E} EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "alphatorus", "alphatorus.vcxproj", "{B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}" + ProjectSection(ProjectDependencies) = postProject + {6B2786AC-DF6B-8B13-DE42-875D8D9194D9} = {6B2786AC-DF6B-8B13-DE42-875D8D9194D9} + {2CD8FF4D-DAF2-3CA0-CBBB-8A3F7C33CA32} = {2CD8FF4D-DAF2-3CA0-CBBB-8A3F7C33CA32} + {D0E3B182-FE11-0FF9-FD65-CBEFAAB35A3E} = {D0E3B182-FE11-0FF9-FD65-CBEFAAB35A3E} + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "tiger", "tiger.vcxproj", "{CC6D2AA2-765F-3405-4DF6-DC537EE16992}" ProjectSection(ProjectDependencies) = postProject {6B2786AC-DF6B-8B13-DE42-875D8D9194D9} = {6B2786AC-DF6B-8B13-DE42-875D8D9194D9} @@ -129,8 +148,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "dreamtorus_static", "dreamt {EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08} {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} {9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} {A996811D-4FA1-5874-A99B-81B8A0F3AA21} = {A996811D-4FA1-5874-A99B-81B8A0F3AA21} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {E3BB0211-87AF-58EF-3C65-999758F666FD} {70EF5244-5141-EC9E-11A6-7B6DD126FFFA} = {70EF5244-5141-EC9E-11A6-7B6DD126FFFA} {476C0BD6-57F1-93F9-0E06-2E90D934A88F} = {476C0BD6-57F1-93F9-0E06-2E90D934A88F} @@ -227,6 +248,14 @@ Global {9C419167-D705-A241-8927-763A6F9A5016}.Release|Win32.ActiveCfg = Release|Win32 {9C419167-D705-A241-8927-763A6F9A5016}.Release|x64.Build.0 = Release|x64 {9C419167-D705-A241-8927-763A6F9A5016}.Release|x64.ActiveCfg = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.Build.0 = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.ActiveCfg = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.Build.0 = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.ActiveCfg = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.Build.0 = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.ActiveCfg = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.Build.0 = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.ActiveCfg = Release|x64 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.Build.0 = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.ActiveCfg = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|x64.Build.0 = Debug|x64 @@ -251,6 +280,14 @@ Global {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|Win32.ActiveCfg = Release|Win32 {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|x64.Build.0 = Release|x64 {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|x64.ActiveCfg = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.Build.0 = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.ActiveCfg = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.Build.0 = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.ActiveCfg = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.Build.0 = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.ActiveCfg = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.Build.0 = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.ActiveCfg = Release|x64 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.Build.0 = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.ActiveCfg = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|x64.Build.0 = Debug|x64 @@ -331,6 +368,14 @@ Global {55D3AA5A-E8FE-2AC9-A665-77FC920A8658}.Release|Win32.ActiveCfg = Release|Win32 {55D3AA5A-E8FE-2AC9-A665-77FC920A8658}.Release|x64.Build.0 = Release|x64 {55D3AA5A-E8FE-2AC9-A665-77FC920A8658}.Release|x64.ActiveCfg = Release|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|Win32.Build.0 = Debug|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|x64.Build.0 = Debug|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|x64.ActiveCfg = Debug|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|Win32.Build.0 = Release|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|Win32.ActiveCfg = Release|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|x64.Build.0 = Release|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|x64.ActiveCfg = Release|x64 {CC6D2AA2-765F-3405-4DF6-DC537EE16992}.Debug|Win32.Build.0 = Debug|Win32 {CC6D2AA2-765F-3405-4DF6-DC537EE16992}.Debug|Win32.ActiveCfg = Debug|Win32 {CC6D2AA2-765F-3405-4DF6-DC537EE16992}.Debug|x64.Build.0 = Debug|x64 @@ -369,9 +414,11 @@ Global {EF516F6A-1965-7089-C2CA-65778D394F08} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {9C419167-D705-A241-8927-763A6F9A5016} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {27193EF0-3CCB-8553-C48A-271082615A64} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {A996811D-4FA1-5874-A99B-81B8A0F3AA21} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {2CD8FF4D-DAF2-3CA0-CBBB-8A3F7C33CA32} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {70EF5244-5141-EC9E-11A6-7B6DD126FFFA} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} @@ -382,6 +429,7 @@ Global {C04D78E5-3A59-67AE-8832-C03CE8DFF0B7} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {6446D860-DBBF-E540-E9E2-CBAB5F98F1E3} = {AEB42855-4A0A-CC6C-C503-A2E4DA6AE61A} {55D3AA5A-E8FE-2AC9-A665-77FC920A8658} = {FF7C0FCD-6A31-E735-A61C-001F75426961} + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3} = {FF7C0FCD-6A31-E735-A61C-001F75426961} {CC6D2AA2-765F-3405-4DF6-DC537EE16992} = {FF7C0FCD-6A31-E735-A61C-001F75426961} {4279720C-503C-C9A3-8714-4E88F1D2B1E0} = {FF7C0FCD-6A31-E735-A61C-001F75426961} {DB51380C-CDCA-2EE5-24C3-7307B6C32AE1} = {FF7C0FCD-6A31-E735-A61C-001F75426961} diff --git a/build/win32/vs2010/Regal/Examples.sln b/build/win32/vs2010/Regal/Examples.sln index a31752f..e66f759 100644 --- a/build/win32/vs2010/Regal/Examples.sln +++ b/build/win32/vs2010/Regal/Examples.sln @@ -8,6 +8,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "dreamtorus", "dreamtorus.vc ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "alphatorus", "alphatorus.vcxproj", "{B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "tiger", "tiger.vcxproj", "{CC6D2AA2-765F-3405-4DF6-DC537EE16992}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -45,6 +49,14 @@ Global {55D3AA5A-E8FE-2AC9-A665-77FC920A8658}.Release|Win32.ActiveCfg = Release|Win32 {55D3AA5A-E8FE-2AC9-A665-77FC920A8658}.Release|x64.Build.0 = Release|x64 {55D3AA5A-E8FE-2AC9-A665-77FC920A8658}.Release|x64.ActiveCfg = Release|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|Win32.Build.0 = Debug|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|x64.Build.0 = Debug|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Debug|x64.ActiveCfg = Debug|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|Win32.Build.0 = Release|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|Win32.ActiveCfg = Release|Win32 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|x64.Build.0 = Release|x64 + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3}.Release|x64.ActiveCfg = Release|x64 {CC6D2AA2-765F-3405-4DF6-DC537EE16992}.Debug|Win32.Build.0 = Debug|Win32 {CC6D2AA2-765F-3405-4DF6-DC537EE16992}.Debug|Win32.ActiveCfg = Debug|Win32 {CC6D2AA2-765F-3405-4DF6-DC537EE16992}.Debug|x64.Build.0 = Debug|x64 diff --git a/build/win32/vs2010/Regal/Libraries.sln b/build/win32/vs2010/Regal/Libraries.sln index 07ac679..3f582bd 100644 --- a/build/win32/vs2010/Regal/Libraries.sln +++ b/build/win32/vs2010/Regal/Libraries.sln @@ -51,6 +51,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "png", "png.vcxproj", "{6446 {C04D78E5-3A59-67AE-8832-C03CE8DFF0B7} = {C04D78E5-3A59-67AE-8832-C03CE8DFF0B7} EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pcrelib", "pcrelib.vcxproj", "{F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "jsonsllib", "jsonsllib.vcxproj", "{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -63,6 +67,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "apitracelib", "apitracelib. ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "glsloptlib", "glsloptlib.vcxproj", "{1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "snappylib", "snappylib.vcxproj", "{E3BB0211-87AF-58EF-3C65-999758F666FD}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -171,6 +179,14 @@ Global {6446D860-DBBF-E540-E9E2-CBAB5F98F1E3}.Release|Win32.ActiveCfg = Release|Win32 {6446D860-DBBF-E540-E9E2-CBAB5F98F1E3}.Release|x64.Build.0 = Release|x64 {6446D860-DBBF-E540-E9E2-CBAB5F98F1E3}.Release|x64.ActiveCfg = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.Build.0 = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.ActiveCfg = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.Build.0 = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.ActiveCfg = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.Build.0 = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.ActiveCfg = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.Build.0 = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.ActiveCfg = Release|x64 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.Build.0 = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.ActiveCfg = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|x64.Build.0 = Debug|x64 @@ -195,6 +211,14 @@ Global {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|Win32.ActiveCfg = Release|Win32 {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|x64.Build.0 = Release|x64 {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|x64.ActiveCfg = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.Build.0 = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.ActiveCfg = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.Build.0 = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.ActiveCfg = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.Build.0 = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.ActiveCfg = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.Build.0 = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.ActiveCfg = Release|x64 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.Build.0 = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.ActiveCfg = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|x64.Build.0 = Debug|x64 diff --git a/build/win32/vs2010/Regal/Regal.sln b/build/win32/vs2010/Regal/Regal.sln index e9600c4..c8bd8d2 100755 --- a/build/win32/vs2010/Regal/Regal.sln +++ b/build/win32/vs2010/Regal/Regal.sln @@ -6,9 +6,11 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regal", "Regal.vcxproj", "{ {EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08} {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} {9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} {27193EF0-3CCB-8553-C48A-271082615A64} = {27193EF0-3CCB-8553-C48A-271082615A64} {A996811D-4FA1-5874-A99B-81B8A0F3AA21} = {A996811D-4FA1-5874-A99B-81B8A0F3AA21} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {E3BB0211-87AF-58EF-3C65-999758F666FD} EndProjectSection EndProject @@ -22,9 +24,11 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regalm", "Regalm.vcxproj", {EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08} {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} {9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} {27193EF0-3CCB-8553-C48A-271082615A64} = {27193EF0-3CCB-8553-C48A-271082615A64} {A996811D-4FA1-5874-A99B-81B8A0F3AA21} = {A996811D-4FA1-5874-A99B-81B8A0F3AA21} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {E3BB0211-87AF-58EF-3C65-999758F666FD} EndProjectSection EndProject @@ -54,6 +58,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pnglib", "pnglib.vcxproj", {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} = {12EBE7B9-A6BF-51C2-BC7A-A743E21C7B99} EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pcrelib", "pcrelib.vcxproj", "{F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "jsonsllib", "jsonsllib.vcxproj", "{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -66,6 +74,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "apitracelib", "apitracelib. ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "glsloptlib", "glsloptlib.vcxproj", "{1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "snappylib", "snappylib.vcxproj", "{E3BB0211-87AF-58EF-3C65-999758F666FD}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -150,6 +162,14 @@ Global {9C419167-D705-A241-8927-763A6F9A5016}.Release|Win32.ActiveCfg = Release|Win32 {9C419167-D705-A241-8927-763A6F9A5016}.Release|x64.Build.0 = Release|x64 {9C419167-D705-A241-8927-763A6F9A5016}.Release|x64.ActiveCfg = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.Build.0 = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.ActiveCfg = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.Build.0 = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.ActiveCfg = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.Build.0 = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.ActiveCfg = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.Build.0 = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.ActiveCfg = Release|x64 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.Build.0 = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.ActiveCfg = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|x64.Build.0 = Debug|x64 @@ -174,6 +194,14 @@ Global {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|Win32.ActiveCfg = Release|Win32 {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|x64.Build.0 = Release|x64 {A996811D-4FA1-5874-A99B-81B8A0F3AA21}.Release|x64.ActiveCfg = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.Build.0 = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.ActiveCfg = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.Build.0 = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.ActiveCfg = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.Build.0 = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.ActiveCfg = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.Build.0 = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.ActiveCfg = Release|x64 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.Build.0 = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.ActiveCfg = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|x64.Build.0 = Debug|x64 diff --git a/build/win32/vs2010/Regal/Regal.vcxproj b/build/win32/vs2010/Regal/Regal.vcxproj index 8ac5cd4..390d2a6 100755 --- a/build/win32/vs2010/Regal/Regal.vcxproj +++ b/build/win32/vs2010/Regal/Regal.vcxproj @@ -78,8 +78,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -96,7 +96,7 @@ true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;pcrelib.lib;glsloptlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Release\Win32\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regal.def @@ -118,8 +118,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -133,11 +133,11 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;pcrelib.lib;glsloptlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Release\x64\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regal.def @@ -157,8 +157,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -175,7 +175,7 @@ true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;pcrelib.lib;glsloptlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Debug\Win32\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regal.def @@ -197,8 +197,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -211,11 +211,11 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;pcrelib.lib;glsloptlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Debug\x64\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regal.def @@ -259,6 +259,8 @@ + + @@ -319,6 +321,9 @@ + + + diff --git a/build/win32/vs2010/Regal/RegalTest.sln b/build/win32/vs2010/Regal/RegalTest.sln index 349f34e..708f59c 100644 --- a/build/win32/vs2010/Regal/RegalTest.sln +++ b/build/win32/vs2010/Regal/RegalTest.sln @@ -16,6 +16,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pnglib", "pnglib.vcxproj", ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "pcrelib", "pcrelib.vcxproj", "{F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "jsonsllib", "jsonsllib.vcxproj", "{B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -24,6 +28,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "squishlib", "squishlib.vcxp ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "glsloptlib", "glsloptlib.vcxproj", "{1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "snappylib", "snappylib.vcxproj", "{E3BB0211-87AF-58EF-3C65-999758F666FD}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -38,8 +46,10 @@ Project("{CF05FE22-B763-D96E-C64D-312608111C07}") = "Regaltest", "Regaltest.vcxp {DF066256-E0AD-E016-6F07-52E868F96C02} = {DF066256-E0AD-E016-6F07-52E868F96C02} {EF516F6A-1965-7089-C2CA-65778D394F08} = {EF516F6A-1965-7089-C2CA-65778D394F08} {9C419167-D705-A241-8927-763A6F9A5016} = {9C419167-D705-A241-8927-763A6F9A5016} + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} = {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} = {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C} {27193EF0-3CCB-8553-C48A-271082615A64} = {27193EF0-3CCB-8553-C48A-271082615A64} + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} = {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} {E3BB0211-87AF-58EF-3C65-999758F666FD} = {E3BB0211-87AF-58EF-3C65-999758F666FD} {8772AF49-E799-D743-4AED-682CB7047DB9} = {8772AF49-E799-D743-4AED-682CB7047DB9} EndProjectSection @@ -84,6 +94,14 @@ Global {9C419167-D705-A241-8927-763A6F9A5016}.Release|Win32.ActiveCfg = Release|Win32 {9C419167-D705-A241-8927-763A6F9A5016}.Release|x64.Build.0 = Release|x64 {9C419167-D705-A241-8927-763A6F9A5016}.Release|x64.ActiveCfg = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.Build.0 = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|Win32.ActiveCfg = Debug|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.Build.0 = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Debug|x64.ActiveCfg = Debug|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.Build.0 = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|Win32.ActiveCfg = Release|Win32 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.Build.0 = Release|x64 + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD}.Release|x64.ActiveCfg = Release|x64 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.Build.0 = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|Win32.ActiveCfg = Debug|Win32 {B2F73D1B-8FA3-518D-0F85-9AAD20EF1E1C}.Debug|x64.Build.0 = Debug|x64 @@ -100,6 +118,14 @@ Global {27193EF0-3CCB-8553-C48A-271082615A64}.Release|Win32.ActiveCfg = Release|Win32 {27193EF0-3CCB-8553-C48A-271082615A64}.Release|x64.Build.0 = Release|x64 {27193EF0-3CCB-8553-C48A-271082615A64}.Release|x64.ActiveCfg = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.Build.0 = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|Win32.ActiveCfg = Debug|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.Build.0 = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Debug|x64.ActiveCfg = Debug|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.Build.0 = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|Win32.ActiveCfg = Release|Win32 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.Build.0 = Release|x64 + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B}.Release|x64.ActiveCfg = Release|x64 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.Build.0 = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|Win32.ActiveCfg = Debug|Win32 {E3BB0211-87AF-58EF-3C65-999758F666FD}.Debug|x64.Build.0 = Debug|x64 diff --git a/build/win32/vs2010/Regal/Regallib.vcxproj b/build/win32/vs2010/Regal/Regallib.vcxproj index c525be9..2f8117c 100644 --- a/build/win32/vs2010/Regal/Regallib.vcxproj +++ b/build/win32/vs2010/Regal/Regallib.vcxproj @@ -78,8 +78,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -118,8 +118,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -133,7 +133,7 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true @@ -157,8 +157,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -197,8 +197,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -211,7 +211,7 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true @@ -259,6 +259,8 @@ + + @@ -319,6 +321,9 @@ + + + diff --git a/build/win32/vs2010/Regal/Regalm.vcxproj b/build/win32/vs2010/Regal/Regalm.vcxproj index 32332e2..7d242bf 100644 --- a/build/win32/vs2010/Regal/Regalm.vcxproj +++ b/build/win32/vs2010/Regal/Regalm.vcxproj @@ -78,8 +78,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -96,7 +96,7 @@ true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Release\Win32\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regalm.def @@ -118,8 +118,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -133,11 +133,11 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Release\x64\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regalm.def @@ -157,8 +157,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -175,7 +175,7 @@ true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Debug\Win32\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regalm.def @@ -197,8 +197,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -211,11 +211,11 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true - civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) + civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;ws2_32.lib;%(AdditionalDependencies) true Debug\x64\;%(AdditionalLibraryDirectories) ../../../../src/regal/Regalm.def @@ -259,6 +259,8 @@ + + @@ -319,6 +321,9 @@ + + + diff --git a/build/win32/vs2010/Regal/Regalmlib.vcxproj b/build/win32/vs2010/Regal/Regalmlib.vcxproj index e61e62b..f2e2f4f 100644 --- a/build/win32/vs2010/Regal/Regalmlib.vcxproj +++ b/build/win32/vs2010/Regal/Regalmlib.vcxproj @@ -78,8 +78,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -118,8 +118,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -133,7 +133,7 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true @@ -157,8 +157,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -197,8 +197,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + PCRE_STATIC=1;REGAL_DECL_EXPORT;REGAL_NAMESPACE;REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -211,7 +211,7 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true @@ -259,6 +259,8 @@ + + @@ -319,6 +321,9 @@ + + + diff --git a/build/win32/vs2010/Regal/Regaltest.vcxproj b/build/win32/vs2010/Regal/Regaltest.vcxproj index 5157c43..4b21b0a 100644 --- a/build/win32/vs2010/Regal/Regaltest.vcxproj +++ b/build/win32/vs2010/Regal/Regaltest.vcxproj @@ -78,8 +78,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../include;%(AdditionalIncludeDirectories) - GTEST_HAS_RTTI=0;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../src/pcre;../../../../include;%(AdditionalIncludeDirectories) + GTEST_HAS_RTTI=0;PCRE_STATIC=1;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -96,7 +96,7 @@ true - gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) true Release\Win32\;%(AdditionalLibraryDirectories) @@ -118,8 +118,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../include;%(AdditionalIncludeDirectories) - GTEST_HAS_RTTI=0;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../src/pcre;../../../../include;%(AdditionalIncludeDirectories) + GTEST_HAS_RTTI=0;PCRE_STATIC=1;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -137,7 +137,7 @@ true - gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) true Release\x64\;%(AdditionalLibraryDirectories) @@ -157,8 +157,8 @@ Disabled - ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../include;%(AdditionalIncludeDirectories) - GTEST_HAS_RTTI=0;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../src/pcre;../../../../include;%(AdditionalIncludeDirectories) + GTEST_HAS_RTTI=0;PCRE_STATIC=1;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -175,7 +175,7 @@ true - gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) true Debug\Win32\;%(AdditionalLibraryDirectories) @@ -197,8 +197,8 @@ Disabled - ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../include;%(AdditionalIncludeDirectories) - GTEST_HAS_RTTI=0;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/googletest/include;../../../../src/googlemock/include;../../../../src/googlemock;../../../../src/boost;../../../../src/regal;../../../../src/lookup3;../../../../src/pcre;../../../../include;%(AdditionalIncludeDirectories) + GTEST_HAS_RTTI=0;PCRE_STATIC=1;REGAL_SYS_WGL_DECLARE_WGL;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -215,7 +215,7 @@ true - gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + gtestlib.lib;regallib.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;squishlib.lib;apitracelib.lib;pcrelib.lib;glsloptlib.lib;snappylib.lib;pnglib.lib;zlib.lib;advapi32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) true Debug\x64\;%(AdditionalLibraryDirectories) diff --git a/build/win32/vs2010/Regal/Regalw.vcxproj b/build/win32/vs2010/Regal/Regalw.vcxproj index 564ce55..ebe2ba4 100644 --- a/build/win32/vs2010/Regal/Regalw.vcxproj +++ b/build/win32/vs2010/Regal/Regalw.vcxproj @@ -78,8 +78,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -118,8 +118,8 @@ MaxSpeed OnlyExplicitInline - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -133,7 +133,7 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true @@ -157,8 +157,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -197,8 +197,8 @@ Disabled - ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/jsonsl;%(AdditionalIncludeDirectories) - REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ../../../../src/boost;../../../../include;../../../../src/civetweb;../../../../src/lookup3;../../../../src/md5/include;../../../../src/libpng/include;../../../../src/zlib/include;../../../../src/squish;../../../../src/pcre;../../../../src/jsonsl;../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + REGAL_NO_SQUISH=1;REGAL_SYS_WGL_DECLARE_WGL;REGAL_WIN_TLS=1;REGAL_WRANGLER=1;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -211,7 +211,7 @@ Default 4996 ProgramDatabase - %(AdditionalOptions) + /bigobj %(AdditionalOptions) true @@ -259,6 +259,8 @@ + + @@ -319,6 +321,9 @@ + + + diff --git a/build/win32/vs2010/Regal/alphatorus.vcxproj b/build/win32/vs2010/Regal/alphatorus.vcxproj new file mode 100644 index 0000000..4710702 --- /dev/null +++ b/build/win32/vs2010/Regal/alphatorus.vcxproj @@ -0,0 +1,244 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + alphatorus + {B16811C6-F61E-8CD5-E8A4-94D84F05D7A3} + + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + Release\Win32\ + Release\x64\ + Release\Win32\alphatorus\ + Release\x64\alphatorus\ + Debug\Win32\ + Debug\x64\ + Debug\Win32\alphatorus\ + Debug\x64\alphatorus\ + alphatorus + alphatorus + alphatorus + alphatorus + + + + MaxSpeed + OnlyExplicitInline + ../../../../include;../../../../src/glu/include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + GLUT_NO_LIB_PRAGMA;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\Win32\alphatorus\ + Release\Win32\alphatorus\ + Release\Win32\alphatorus.pdb + Level3 + true + Default + 4996 + %(AdditionalOptions) + true + + + rglut32.lib;rglu32.lib;regal32.lib;%(AdditionalDependencies) + true + Release\Win32\;%(AdditionalLibraryDirectories) + + Release\Win32\alphatorus.pdb + Console + MachineX86 + Release\Win32\alphatorus.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + MaxSpeed + OnlyExplicitInline + ../../../../include;../../../../src/glu/include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + GLUT_NO_LIB_PRAGMA;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\x64\alphatorus\ + Release\x64\alphatorus\ + Release\x64\alphatorus.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + rglut32.lib;rglu32.lib;regal32.lib;%(AdditionalDependencies) + true + Release\x64\;%(AdditionalLibraryDirectories) + + Release\x64\alphatorus.pdb + Console + Release\x64\alphatorus.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../include;../../../../src/glu/include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + GLUT_NO_LIB_PRAGMA;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\Win32\alphatorus\ + Debug\Win32\alphatorus\ + Debug\Win32\alphatorus.pdb + Level3 + true + EditAndContinue + Default + 4996 + %(AdditionalOptions) + true + + + rglut32.lib;rglu32.lib;regal32.lib;%(AdditionalDependencies) + true + Debug\Win32\;%(AdditionalLibraryDirectories) + + true + Debug\Win32\alphatorus.pdb + Console + MachineX86 + Debug\Win32\alphatorus.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../include;../../../../src/glu/include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + GLUT_NO_LIB_PRAGMA;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\x64\alphatorus\ + Debug\x64\alphatorus\ + Debug\x64\alphatorus.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + rglut32.lib;rglu32.lib;regal32.lib;%(AdditionalDependencies) + true + Debug\x64\;%(AdditionalLibraryDirectories) + + true + Debug\x64\alphatorus.pdb + Console + Debug\x64\alphatorus.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + + + + + + + \ No newline at end of file diff --git a/build/win32/vs2010/Regal/alphatorus_win32.vcxproj b/build/win32/vs2010/Regal/alphatorus_win32.vcxproj new file mode 100644 index 0000000..60be323 --- /dev/null +++ b/build/win32/vs2010/Regal/alphatorus_win32.vcxproj @@ -0,0 +1,244 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + alphatorus_win32 + {9722CBCF-433D-69FD-9DF1-5D4BEA237F5E} + + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + Application + false + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + Release\Win32\ + Release\x64\ + Release\Win32\alphatorus_win32\ + Release\x64\alphatorus_win32\ + Debug\Win32\ + Debug\x64\ + Debug\Win32\alphatorus_win32\ + Debug\x64\alphatorus_win32\ + alphatorus_win32 + alphatorus_win32 + alphatorus_win32 + alphatorus_win32 + + + + MaxSpeed + OnlyExplicitInline + ../../../../include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + ;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\Win32\alphatorus_win32\ + Release\Win32\alphatorus_win32\ + Release\Win32\alphatorus_win32.pdb + Level3 + true + Default + 4996 + %(AdditionalOptions) + true + + + regal32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + true + Release\Win32\;%(AdditionalLibraryDirectories) + + Release\Win32\alphatorus_win32.pdb + Windows + MachineX86 + Release\Win32\alphatorus_win32.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + MaxSpeed + OnlyExplicitInline + ../../../../include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + ;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\x64\alphatorus_win32\ + Release\x64\alphatorus_win32\ + Release\x64\alphatorus_win32.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + regal32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + true + Release\x64\;%(AdditionalLibraryDirectories) + + Release\x64\alphatorus_win32.pdb + Windows + Release\x64\alphatorus_win32.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + ;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\Win32\alphatorus_win32\ + Debug\Win32\alphatorus_win32\ + Debug\Win32\alphatorus_win32.pdb + Level3 + true + EditAndContinue + Default + 4996 + %(AdditionalOptions) + true + + + regal32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + true + Debug\Win32\;%(AdditionalLibraryDirectories) + + true + Debug\Win32\alphatorus_win32.pdb + Windows + MachineX86 + Debug\Win32\alphatorus_win32.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../include;../../../../examples/alphatorus/src;%(AdditionalIncludeDirectories) + ;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\x64\alphatorus_win32\ + Debug\x64\alphatorus_win32\ + Debug\x64\alphatorus_win32.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + regal32.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) + true + Debug\x64\;%(AdditionalLibraryDirectories) + + true + Debug\x64\alphatorus_win32.pdb + Windows + Debug\x64\alphatorus_win32.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + + + + + + + \ No newline at end of file diff --git a/build/win32/vs2010/Regal/apitracelib.vcxproj b/build/win32/vs2010/Regal/apitracelib.vcxproj index 2ddef5a..f668508 100644 --- a/build/win32/vs2010/Regal/apitracelib.vcxproj +++ b/build/win32/vs2010/Regal/apitracelib.vcxproj @@ -259,7 +259,6 @@ - diff --git a/build/win32/vs2010/Regal/dreamtorus_static.vcxproj b/build/win32/vs2010/Regal/dreamtorus_static.vcxproj index 53fa228..c18a875 100644 --- a/build/win32/vs2010/Regal/dreamtorus_static.vcxproj +++ b/build/win32/vs2010/Regal/dreamtorus_static.vcxproj @@ -96,7 +96,7 @@ true - rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) + rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;glsloptlib.lib;pcrelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) true Release\Win32\;%(AdditionalLibraryDirectories) @@ -137,7 +137,7 @@ true - rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) + rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;glsloptlib.lib;pcrelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) true Release\x64\;%(AdditionalLibraryDirectories) @@ -175,7 +175,7 @@ true - rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) + rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;glsloptlib.lib;pcrelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) true Debug\Win32\;%(AdditionalLibraryDirectories) @@ -215,7 +215,7 @@ true - rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) + rglutlib.lib;rglulib.lib;regallib.lib;winmm.lib;ws2_32.lib;civetweblib.lib;md5lib.lib;jsonsllib.lib;apitracelib.lib;glsloptlib.lib;pcrelib.lib;snappylib.lib;pnglib.lib;zlib.lib;%(AdditionalDependencies) true Debug\x64\;%(AdditionalLibraryDirectories) diff --git a/build/win32/vs2010/Regal/glsloptlib.vcxproj b/build/win32/vs2010/Regal/glsloptlib.vcxproj new file mode 100644 index 0000000..1db9897 --- /dev/null +++ b/build/win32/vs2010/Regal/glsloptlib.vcxproj @@ -0,0 +1,327 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + glsloptlib + {1BC6E4FA-5DF0-05C0-9F6A-582B10E2F55B} + + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + Release\Win32\ + Release\x64\ + Release\Win32\glsloptlib\ + Release\x64\glsloptlib\ + Debug\Win32\ + Debug\x64\ + Debug\Win32\glsloptlib\ + Debug\x64\glsloptlib\ + glsloptlib + glsloptlib + glsloptlib + glsloptlib + + + + MaxSpeed + OnlyExplicitInline + ../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + _ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\Win32\glsloptlib\ + Release\Win32\glsloptlib\ + Release\Win32\glsloptlib.pdb + Level3 + true + Default + 4996 + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Release\Win32\;%(AdditionalLibraryDirectories) + + Release\Win32\glsloptlib.pdb + Console + MachineX86 + Release\Win32\glsloptlib.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + MaxSpeed + OnlyExplicitInline + ../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + _ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\x64\glsloptlib\ + Release\x64\glsloptlib\ + Release\x64\glsloptlib.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Release\x64\;%(AdditionalLibraryDirectories) + + Release\x64\glsloptlib.pdb + Console + Release\x64\glsloptlib.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + _ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\Win32\glsloptlib\ + Debug\Win32\glsloptlib\ + Debug\Win32\glsloptlib.pdb + Level3 + true + EditAndContinue + Default + 4996 + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Debug\Win32\;%(AdditionalLibraryDirectories) + + true + Debug\Win32\glsloptlib.pdb + Console + MachineX86 + Debug\Win32\glsloptlib.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../src/glsl/include;../../../../src/glsl/src/glsl;../../../../src/glsl/src/mesa;../../../../src/glsl/include/c99;%(AdditionalIncludeDirectories) + _ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\x64\glsloptlib\ + Debug\x64\glsloptlib\ + Debug\x64\glsloptlib.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Debug\x64\;%(AdditionalLibraryDirectories) + + true + Debug\x64\glsloptlib.pdb + Console + Debug\x64\glsloptlib.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/win32/vs2010/Regal/pcrelib.vcxproj b/build/win32/vs2010/Regal/pcrelib.vcxproj new file mode 100644 index 0000000..867bb3b --- /dev/null +++ b/build/win32/vs2010/Regal/pcrelib.vcxproj @@ -0,0 +1,268 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + pcrelib + {F429E8BA-6BB6-211C-2C88-BD0EA55CF9FD} + + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + StaticLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + Release\Win32\ + Release\x64\ + Release\Win32\pcrelib\ + Release\x64\pcrelib\ + Debug\Win32\ + Debug\x64\ + Debug\Win32\pcrelib\ + Debug\x64\pcrelib\ + pcrelib + pcrelib + pcrelib + pcrelib + + + + MaxSpeed + OnlyExplicitInline + ../../../../src/pcre;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H=1;HAVE_DIRENT_H=0;HAVE_INTTYPES_H=0;HAVE_STDINT_H=0;HAVE_UNISTD_H=0;HAVE_WINDOWS_H=1;PCRE_STATIC=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\Win32\pcrelib\ + Release\Win32\pcrelib\ + Release\Win32\pcrelib.pdb + Level3 + true + Default + 4996 + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Release\Win32\;%(AdditionalLibraryDirectories) + + Release\Win32\pcrelib.pdb + Console + MachineX86 + Release\Win32\pcrelib.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + MaxSpeed + OnlyExplicitInline + ../../../../src/pcre;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H=1;HAVE_DIRENT_H=0;HAVE_INTTYPES_H=0;HAVE_STDINT_H=0;HAVE_UNISTD_H=0;HAVE_WINDOWS_H=1;PCRE_STATIC=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreaded + true + + + Release\x64\pcrelib\ + Release\x64\pcrelib\ + Release\x64\pcrelib.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Release\x64\;%(AdditionalLibraryDirectories) + + Release\x64\pcrelib.pdb + Console + Release\x64\pcrelib.lib + + + + + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../src/pcre;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H=1;HAVE_DIRENT_H=0;HAVE_INTTYPES_H=0;HAVE_STDINT_H=0;HAVE_UNISTD_H=0;HAVE_WINDOWS_H=1;PCRE_STATIC=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\Win32\pcrelib\ + Debug\Win32\pcrelib\ + Debug\Win32\pcrelib.pdb + Level3 + true + EditAndContinue + Default + 4996 + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Debug\Win32\;%(AdditionalLibraryDirectories) + + true + Debug\Win32\pcrelib.pdb + Console + MachineX86 + Debug\Win32\pcrelib.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + Disabled + ../../../../src/pcre;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H=1;HAVE_DIRENT_H=0;HAVE_INTTYPES_H=0;HAVE_STDINT_H=0;HAVE_UNISTD_H=0;HAVE_WINDOWS_H=1;PCRE_STATIC=1;_ITERATOR_DEBUG_LEVEL=0;_CRT_SECURE_NO_WARNINGS=1;WIN32;_WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Debug\x64\pcrelib\ + Debug\x64\pcrelib\ + Debug\x64\pcrelib.pdb + Level3 + true + Default + 4996 + ProgramDatabase + %(AdditionalOptions) + true + + + %(AdditionalDependencies) + true + Debug\x64\;%(AdditionalLibraryDirectories) + + true + Debug\x64\pcrelib.pdb + Console + Debug\x64\pcrelib.lib + + + + + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/alphatorus/android/.classpath b/examples/alphatorus/android/.classpath new file mode 100644 index 0000000..a4763d1 --- /dev/null +++ b/examples/alphatorus/android/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/alphatorus/android/.project b/examples/alphatorus/android/.project new file mode 100644 index 0000000..78b3e7b --- /dev/null +++ b/examples/alphatorus/android/.project @@ -0,0 +1,33 @@ + + + minimalAndroid + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/examples/alphatorus/android/AndroidManifest.xml b/examples/alphatorus/android/AndroidManifest.xml new file mode 100644 index 0000000..ef540ab --- /dev/null +++ b/examples/alphatorus/android/AndroidManifest.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + diff --git a/examples/alphatorus/android/default.properties b/examples/alphatorus/android/default.properties new file mode 100644 index 0000000..cd119de --- /dev/null +++ b/examples/alphatorus/android/default.properties @@ -0,0 +1,2 @@ +# Project target. +target=android-15 diff --git a/examples/alphatorus/android/jni/Android.mk b/examples/alphatorus/android/jni/Android.mk new file mode 100644 index 0000000..16b351f --- /dev/null +++ b/examples/alphatorus/android/jni/Android.mk @@ -0,0 +1,40 @@ +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := libalphatorus +LOCAL_CFLAGS := -Werror +LOCAL_ARM_MODE := arm + +SHARED_DIR := $(LOCAL_PATH)/../../src + +LOCAL_C_INCLUDES += $(SHARED_DIR) +MY_SRC_FILES := gl_code.cpp $(SHARED_DIR)/render.cpp +LOCAL_SRC_FILES := $(patsubst $(LOCAL_PATH)/%,%,$(MY_SRC_FILES)) +LOCAL_STATIC_LIBRARIES := zlib snappy +LOCAL_WHOLE_STATIC_LIBRARIES := Regal_static apitrace +LOCAL_CFLAGS := -DANDROID=1 +LOCAL_LDLIBS := -llog + +#-lGLESv2 + +include $(BUILD_SHARED_LIBRARY) + +$(call import-add-path, $(LOCAL_PATH)/../../../../build/android/Regal) +$(call import-module, jni) + diff --git a/examples/alphatorus/android/jni/Application.mk b/examples/alphatorus/android/jni/Application.mk new file mode 100644 index 0000000..715a364 --- /dev/null +++ b/examples/alphatorus/android/jni/Application.mk @@ -0,0 +1,6 @@ +APP_STL := stlport_static + +ifeq ($(NDK_DEBUG),1) + $(warning NDK_DEBUG set, enabling debug build.) + APP_OPTIM := debug +endif diff --git a/examples/alphatorus/android/jni/gl_code.cpp b/examples/alphatorus/android/jni/gl_code.cpp new file mode 100644 index 0000000..63fb715 --- /dev/null +++ b/examples/alphatorus/android/jni/gl_code.cpp @@ -0,0 +1,66 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +*/ + +#include +#include + +#include + +#include "render.h" + +#include +#include +#include + +#define LOG_TAG "alphatorus" +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) + +extern "C" +{ + JNIEXPORT void JNICALL Java_com_regal_alphatorus_AlphatorusLib_init(JNIEnv *env, jobject obj, jint width, jint height); + JNIEXPORT void JNICALL Java_com_regal_alphatorus_AlphatorusLib_step(JNIEnv *env, jobject obj); +}; + +JNIEXPORT void JNICALL Java_com_regal_alphatorus_AlphatorusLib_init(JNIEnv *env, jobject obj, jint width, jint height) +{ + // On Android there is a new context each time the application + // is activated - we ought to clean up the Regal resources for + // the old context, but there is no API for that yet. + + RegalMakeCurrent(eglGetCurrentContext()); + alphaTorusInit(); + alphaTorusReshape(width, height); +} + +JNIEXPORT void JNICALL Java_com_regal_alphatorus_AlphatorusLib_step(JNIEnv *env, jobject obj) +{ + //glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); + alphaTorusDisplay( true ); +} diff --git a/examples/alphatorus/android/project.properties b/examples/alphatorus/android/project.properties new file mode 100644 index 0000000..f049142 --- /dev/null +++ b/examples/alphatorus/android/project.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-10 diff --git a/examples/alphatorus/android/res/drawable-hdpi/ic_launcher_regal.png b/examples/alphatorus/android/res/drawable-hdpi/ic_launcher_regal.png new file mode 100644 index 0000000000000000000000000000000000000000..b294368d34279894dcffb1aa31beb7f8ddce2f09 GIT binary patch literal 4985 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 DDu`t? literal 0 HcmV?d00001 diff --git a/examples/alphatorus/android/res/drawable-ldpi/ic_launcher_regal.png b/examples/alphatorus/android/res/drawable-ldpi/ic_launcher_regal.png new file mode 100644 index 0000000000000000000000000000000000000000..dac034b9b5d6706f0ddd846fb556983c3f653f9d GIT binary patch literal 2195 zcmV;E2yFL>P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01|Wn01|Wo-ew_CX>@2HM@dakSAh-}000N>Nklx8o&tpX%aUHpZ_9_Q=eM3+7t@=K5>R=&3Ax=VqK2p0$Q|zf81uH@a&( z2X4Cs>s0RDd@BP}eSX5t2m2$gy3*X1NJ#h9>)iXNTkQ5t7P++LoO_N81_3z~RMAW~ zi>~os)SRZsc2kd`hMV1dvF`Mo{hTm0K>o$T{ug`Ar)v?)qWm zKJpNIeV+`VfHa5p+PPqGy_k;QVt*lL_IV)1s817#CHJuvJ4OgdFyT;q( zCM0Ms&dL?`8-QGKxdXt4n{0mbWMrQBx&3-FDGNJ*w7I7WbNX2Q-oNsR;#$v{psek8^yz7d_62p{;# zgZ1wMtiRIo)_g_=y1ON3Ogjf-B8&lJzz^b)OhJD?uP$81s@7(|evIdh$0enbNT~>= z5?aVJc;7=hSJgqJ5m#v2&KjRS$6afQ%u_w#iOFWITfTFhvu^!YEpzdOGU9pC!$~<) zMHHbuInLev3hw~&_+xDB>*Z2Fq*)39v2B_2rOWuXNMo`>o{RnYOM>IcfG*>MZz7CQ zj1i05DRSV#gE6obaB0ZfZiC}D-UR9;}jf$xpU(TRr@dI~tvC?tyMJ6lTdZU0P z;(4yDtJJ^&a2(EW9aX!YCm?ElK1DP^X(!N*dn`HW+KThS5E_km)az&?;tc?2R$8dn z^$&%TJ~&p6#3?`!D1i@w56P603?LQ8INikLleIu-G`T52y#~bwj1*vK5C)II$Z;4Q zg<=tEHKke+YBi|Wq23@$IC20Kr&Lr@Nzrs#IJ|8x^`eJ!`Vi-Rb{y9O*9AABXmg`l zvO#SeQlT(j2IIxt@jUSTm^;0v!QOqabSXp)aBN7=g5Dk&8;9+$2roRcm@Z9{J%1nb z&X`coi)-sN4>YReUHwGy9C0m&xBCy0@OI-StTu5yPkHmHGtnI@P&~%6?{d){+d2KL zdYjNe0M9;=<>h-;la1z3ph({rUuFH4{nV;Zb>fQt{^1;JWI1!}9J_Z}$l_gC&GI?` zYDbYhm|>YSpOh6a(io#u1TQy9m7#Z&^@Q5CW)bkEX!HU9D0~VlKroHSj{xg zgQ`>Js2=AXJ;;P9G(Lr^Cc`6v|TpLdMIFAebz-onD- zFoPVIJV7dK1M*UJhOAKzME%sMF-)GL4D*Ex#)+C~V!_RK4)e>6ZxU#dvoC)QRiV*{ z0SUmxt4$`;Z5=bdI-)`*7vZ^0p)(Pl0pBP`U+?CvU#&t2a2CDI`g`7{r!Q&>X-w+z zlFg$xp2ZtGKhE5~VXl367qjP2P%J>H1aZp{M)S&83Cd-QQc)X+1~mKZpD8s-EwOs2 zV9ey#_+*t^_^DA=toainkVy+xhhDX0AlDo6;}`efCikEr961D|`6-N@E!cLk!!r&f!cdPC6}_!Pl!l1N0@wqo00S&CSSZQuPgpFVd*5N}i+|&LkN=MCry>tC#&uWQ$%P9@9v#$dPmT-c&ShmP z$;W(O=NY3}0*O4QP-Fz#heftUj@BjB?v;STGe*pA6 VJp8r=G9CZ`002ovPDHLkV1ixLA&me4 literal 0 HcmV?d00001 diff --git a/examples/alphatorus/android/res/drawable-mdpi/ic_launcher_regal.png b/examples/alphatorus/android/res/drawable-mdpi/ic_launcher_regal.png new file mode 100644 index 0000000000000000000000000000000000000000..964404f4f5ca77426b51bf1499037f23a6a877a4 GIT binary patch literal 3398 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 literal 0 HcmV?d00001 diff --git a/examples/alphatorus/android/res/drawable-xhdpi/ic_launcher_regal.png b/examples/alphatorus/android/res/drawable-xhdpi/ic_launcher_regal.png new file mode 100644 index 0000000000000000000000000000000000000000..8abfeedf94cab419b447f5062fd515e625d220f9 GIT binary patch literal 8093 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 + + + + + + + alphatorus + + + diff --git a/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusActivity.java b/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusActivity.java new file mode 100644 index 0000000..a046154 --- /dev/null +++ b/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusActivity.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.regal.alphatorus; + +import android.app.Activity; +import android.os.Bundle; +import android.util.Log; +import android.view.WindowManager; + +import java.io.File; + + +public class AlphatorusActivity extends Activity { + + AlphatorusView mView; + + @Override protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + mView = new AlphatorusView(getApplication()); + setContentView(mView); + } + + @Override protected void onPause() { + super.onPause(); + mView.onPause(); + } + + @Override protected void onResume() { + super.onResume(); + mView.onResume(); + } +} diff --git a/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusLib.java b/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusLib.java new file mode 100644 index 0000000..4759dbd --- /dev/null +++ b/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusLib.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.regal.alphatorus; + +// Wrapper for native library + +public class AlphatorusLib { + + static { + System.loadLibrary("alphatorus"); + } + + /** + * @param width the current view width + * @param height the current view height + */ + public static native void init(int width, int height); + public static native void step(); +} diff --git a/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusView.java b/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusView.java new file mode 100644 index 0000000..b41fc6f --- /dev/null +++ b/examples/alphatorus/android/src/com/regal/alphatorus/AlphatorusView.java @@ -0,0 +1,339 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.regal.alphatorus; +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +import android.content.Context; +import android.graphics.PixelFormat; +import android.opengl.GLSurfaceView; +import android.util.AttributeSet; +import android.util.Log; +import android.view.KeyEvent; +import android.view.MotionEvent; + +import javax.microedition.khronos.egl.EGL10; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.egl.EGLContext; +import javax.microedition.khronos.egl.EGLDisplay; +import javax.microedition.khronos.opengles.GL10; + +/** + * A simple GLSurfaceView sub-class that demonstrate how to perform + * OpenGL ES 2.0 rendering into a GL Surface. Note the following important + * details: + * + * - The class must use a custom context factory to enable 2.0 rendering. + * See ContextFactory class definition below. + * + * - The class must use a custom EGLConfigChooser to be able to select + * an EGLConfig that supports 2.0. This is done by providing a config + * specification to eglChooseConfig() that has the attribute + * EGL10.ELG_RENDERABLE_TYPE containing the EGL_OPENGL_ES2_BIT flag + * set. See ConfigChooser class definition below. + * + * - The class must select the surface's format, then choose an EGLConfig + * that matches it exactly (with regards to red/green/blue/alpha channels + * bit depths). Failure to do so would result in an EGL_BAD_MATCH error. + */ +class AlphatorusView extends GLSurfaceView { + private static String TAG = "AlphatorusView"; + private static final boolean DEBUG = false; + + public AlphatorusView(Context context) { + super(context); + init(false, 0, 0); + } + + public AlphatorusView(Context context, boolean translucent, int depth, int stencil) { + super(context); + init(translucent, depth, stencil); + } + + private void init(boolean translucent, int depth, int stencil) { + + /* By default, GLSurfaceView() creates a RGB_565 opaque surface. + * If we want a translucent one, we should change the surface's + * format here, using PixelFormat.TRANSLUCENT for GL Surfaces + * is interpreted as any 32-bit surface with alpha by SurfaceFlinger. + */ + if (translucent) { + this.getHolder().setFormat(PixelFormat.TRANSLUCENT); + } + + /* Setup the context factory for 2.0 rendering. + * See ContextFactory class definition below + */ + setEGLContextFactory(new ContextFactory()); + + /* We need to choose an EGLConfig that matches the format of + * our surface exactly. This is going to be done in our + * custom config chooser. See ConfigChooser class definition + * below. + */ + setEGLConfigChooser( translucent ? + new ConfigChooser(8, 8, 8, 8, depth, stencil) : + new ConfigChooser(5, 6, 5, 0, depth, stencil) ); + + /* Set the renderer responsible for frame rendering */ + setRenderer(new Renderer()); + } + + private static class ContextFactory implements GLSurfaceView.EGLContextFactory { + private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098; + public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) { + Log.w(TAG, "creating OpenGL ES 2.0 context"); + checkEglError("Before eglCreateContext", egl); + int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE }; + EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list); + checkEglError("After eglCreateContext", egl); + return context; + } + + public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) { + egl.eglDestroyContext(display, context); + } + } + + private static void checkEglError(String prompt, EGL10 egl) { + int error; + while ((error = egl.eglGetError()) != EGL10.EGL_SUCCESS) { + Log.e(TAG, String.format("%s: EGL error: 0x%x", prompt, error)); + } + } + + private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser { + + public ConfigChooser(int r, int g, int b, int a, int depth, int stencil) { + mRedSize = r; + mGreenSize = g; + mBlueSize = b; + mAlphaSize = a; + mDepthSize = depth; + mStencilSize = stencil; + } + + /* This EGL config specification is used to specify 2.0 rendering. + * We use a minimum size of 4 bits for red/green/blue, but will + * perform actual matching in chooseConfig() below. + */ + private static int EGL_OPENGL_ES2_BIT = 4; + private static int[] s_configAttribs2 = + { + EGL10.EGL_RED_SIZE, 4, + EGL10.EGL_GREEN_SIZE, 4, + EGL10.EGL_BLUE_SIZE, 4, + EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL10.EGL_NONE + }; + + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { + + /* Get the number of minimally matching EGL configurations + */ + int[] num_config = new int[1]; + egl.eglChooseConfig(display, s_configAttribs2, null, 0, num_config); + + int numConfigs = num_config[0]; + + if (numConfigs <= 0) { + throw new IllegalArgumentException("No configs match configSpec"); + } + + /* Allocate then read the array of minimally matching EGL configs + */ + EGLConfig[] configs = new EGLConfig[numConfigs]; + egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config); + + if (DEBUG) { + printConfigs(egl, display, configs); + } + /* Now return the "best" one + */ + return chooseConfig(egl, display, configs); + } + + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display, + EGLConfig[] configs) { + for(EGLConfig config : configs) { + int d = findConfigAttrib(egl, display, config, + EGL10.EGL_DEPTH_SIZE, 0); + int s = findConfigAttrib(egl, display, config, + EGL10.EGL_STENCIL_SIZE, 0); + + // We need at least mDepthSize and mStencilSize bits + if (d < mDepthSize || s < mStencilSize) + continue; + + // We want an *exact* match for red/green/blue/alpha + int r = findConfigAttrib(egl, display, config, + EGL10.EGL_RED_SIZE, 0); + int g = findConfigAttrib(egl, display, config, + EGL10.EGL_GREEN_SIZE, 0); + int b = findConfigAttrib(egl, display, config, + EGL10.EGL_BLUE_SIZE, 0); + int a = findConfigAttrib(egl, display, config, + EGL10.EGL_ALPHA_SIZE, 0); + + if (r == mRedSize && g == mGreenSize && b == mBlueSize && a == mAlphaSize) + return config; + } + return null; + } + + private int findConfigAttrib(EGL10 egl, EGLDisplay display, + EGLConfig config, int attribute, int defaultValue) { + + if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) { + return mValue[0]; + } + return defaultValue; + } + + private void printConfigs(EGL10 egl, EGLDisplay display, + EGLConfig[] configs) { + int numConfigs = configs.length; + Log.w(TAG, String.format("%d configurations", numConfigs)); + for (int i = 0; i < numConfigs; i++) { + Log.w(TAG, String.format("Configuration %d:\n", i)); + printConfig(egl, display, configs[i]); + } + } + + private void printConfig(EGL10 egl, EGLDisplay display, + EGLConfig config) { + int[] attributes = { + EGL10.EGL_BUFFER_SIZE, + EGL10.EGL_ALPHA_SIZE, + EGL10.EGL_BLUE_SIZE, + EGL10.EGL_GREEN_SIZE, + EGL10.EGL_RED_SIZE, + EGL10.EGL_DEPTH_SIZE, + EGL10.EGL_STENCIL_SIZE, + EGL10.EGL_CONFIG_CAVEAT, + EGL10.EGL_CONFIG_ID, + EGL10.EGL_LEVEL, + EGL10.EGL_MAX_PBUFFER_HEIGHT, + EGL10.EGL_MAX_PBUFFER_PIXELS, + EGL10.EGL_MAX_PBUFFER_WIDTH, + EGL10.EGL_NATIVE_RENDERABLE, + EGL10.EGL_NATIVE_VISUAL_ID, + EGL10.EGL_NATIVE_VISUAL_TYPE, + 0x3030, // EGL10.EGL_PRESERVED_RESOURCES, + EGL10.EGL_SAMPLES, + EGL10.EGL_SAMPLE_BUFFERS, + EGL10.EGL_SURFACE_TYPE, + EGL10.EGL_TRANSPARENT_TYPE, + EGL10.EGL_TRANSPARENT_RED_VALUE, + EGL10.EGL_TRANSPARENT_GREEN_VALUE, + EGL10.EGL_TRANSPARENT_BLUE_VALUE, + 0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB, + 0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA, + 0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL, + 0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL, + EGL10.EGL_LUMINANCE_SIZE, + EGL10.EGL_ALPHA_MASK_SIZE, + EGL10.EGL_COLOR_BUFFER_TYPE, + EGL10.EGL_RENDERABLE_TYPE, + 0x3042 // EGL10.EGL_CONFORMANT + }; + String[] names = { + "EGL_BUFFER_SIZE", + "EGL_ALPHA_SIZE", + "EGL_BLUE_SIZE", + "EGL_GREEN_SIZE", + "EGL_RED_SIZE", + "EGL_DEPTH_SIZE", + "EGL_STENCIL_SIZE", + "EGL_CONFIG_CAVEAT", + "EGL_CONFIG_ID", + "EGL_LEVEL", + "EGL_MAX_PBUFFER_HEIGHT", + "EGL_MAX_PBUFFER_PIXELS", + "EGL_MAX_PBUFFER_WIDTH", + "EGL_NATIVE_RENDERABLE", + "EGL_NATIVE_VISUAL_ID", + "EGL_NATIVE_VISUAL_TYPE", + "EGL_PRESERVED_RESOURCES", + "EGL_SAMPLES", + "EGL_SAMPLE_BUFFERS", + "EGL_SURFACE_TYPE", + "EGL_TRANSPARENT_TYPE", + "EGL_TRANSPARENT_RED_VALUE", + "EGL_TRANSPARENT_GREEN_VALUE", + "EGL_TRANSPARENT_BLUE_VALUE", + "EGL_BIND_TO_TEXTURE_RGB", + "EGL_BIND_TO_TEXTURE_RGBA", + "EGL_MIN_SWAP_INTERVAL", + "EGL_MAX_SWAP_INTERVAL", + "EGL_LUMINANCE_SIZE", + "EGL_ALPHA_MASK_SIZE", + "EGL_COLOR_BUFFER_TYPE", + "EGL_RENDERABLE_TYPE", + "EGL_CONFORMANT" + }; + int[] value = new int[1]; + for (int i = 0; i < attributes.length; i++) { + int attribute = attributes[i]; + String name = names[i]; + if ( egl.eglGetConfigAttrib(display, config, attribute, value)) { + Log.w(TAG, String.format(" %s: %d\n", name, value[0])); + } else { + // Log.w(TAG, String.format(" %s: failed\n", name)); + while (egl.eglGetError() != EGL10.EGL_SUCCESS); + } + } + } + + // Subclasses can adjust these values: + protected int mRedSize; + protected int mGreenSize; + protected int mBlueSize; + protected int mAlphaSize; + protected int mDepthSize; + protected int mStencilSize; + private int[] mValue = new int[1]; + } + + private static class Renderer implements GLSurfaceView.Renderer { + public void onDrawFrame(GL10 gl) { + AlphatorusLib.step(); + } + + public void onSurfaceChanged(GL10 gl, int width, int height) { + AlphatorusLib.init(width, height); + } + + public void onSurfaceCreated(GL10 gl, EGLConfig config) { + // Do nothing. + } + } +} diff --git a/examples/alphatorus/egl/Makefile b/examples/alphatorus/egl/Makefile new file mode 100644 index 0000000..3622491 --- /dev/null +++ b/examples/alphatorus/egl/Makefile @@ -0,0 +1,37 @@ + +all: alphatorus + +clean: + rm -f alphatorus + rm -rf obj + +REGAL_DIR := ../../../../regal +REGAL_SRC := $(wildcard $(REGAL_DIR)/gen/*.cpp $(REGAL_DIR)/src/*.cpp) +REGAL_INC := $(REGAL_DIR)/include $(REGAL_DIR)/src +REGAL_DEF := -DREGAL_SYS_EGL=1 + +SHARED_DIR := ../src +SHARED_SRC := $(wildcard $(SHARED_DIR)/*.cpp) +SHARED_INC := $(SHARED_DIR) + +LOCAL_SRC := $(wildcard *.cpp) + +MY_SRC := $(REGAL_SRC) $(LOCAL_SRC) $(SHARED_SRC) +MY_SRC_DIRS := $(sort $(dir $(MY_SRC))) + +MY_OBJ := $(MY_SRC) +MY_OBJ := $(patsubst %.cpp, obj$(CURDIR)/%.o, $(MY_OBJ)) +MY_OBJ := $(patsubst %.c, obj$(CURDIR)/%.o, $(MY_OBJ)) +MY_OBJ_DIRS := $(sort $(dir $(MY_OBJ))) + +MY_INC := $(REGAL_INC) $(SHARED_INC) +MY_CMD_INC := $(patsubst %, -I %, $(MY_INC)) + +obj$(CURDIR)/%.o: %.cpp + @mkdir -p $(dir $@) + g++ -g -c -o $@ $(MY_CMD_INC) $(REGAL_DEF) $< + @echo $@ ---- $< + +alphatorus: $(MY_OBJ) + g++ -g -o $@ $(MY_OBJ) -L$(REGAL_DIR)/lib -lRegal -lX11 -lpthread + diff --git a/examples/alphatorus/egl/main.cpp b/examples/alphatorus/egl/main.cpp new file mode 100644 index 0000000..a095074 --- /dev/null +++ b/examples/alphatorus/egl/main.cpp @@ -0,0 +1,431 @@ +/* Created by exoticorn ( http://talk.maemo.org/showthread.php?t=37356 ) + * edited and commented by André Bergner [endboss] + * + * libraries needed: libx11-dev, libgles2-dev + * + * compile with: g++ -lX11 -lEGL -lGLESv2 egl-example.cpp + */ + +#include +#include +#include + +#include +using namespace std; + +#include +#include + +#include +#include +#include + +#include +#include "render.h" + +/* +#include +#include +*/ + +#include + +const char vertex_src [] = +" \ + attribute vec4 position; \ + varying mediump vec2 pos; \ + uniform vec4 offset; \ + \ + void main() \ + { \ + gl_Position = position + offset; \ + pos = position.xy; \ + } \ +"; + + +const char fragment_src [] = +" \ + varying mediump vec2 pos; \ + uniform mediump float phase; \ + \ + void main() \ + { \ + gl_FragColor = vec4( 1., 0.9, 0.7, 1.0 ) * \ + cos( 30.*sqrt(pos.x*pos.x + 1.5*pos.y*pos.y) \ + + atan(pos.y,pos.x) - phase ); \ + } \ +"; +// some more formulas to play with... +// cos( 20.*(pos.x*pos.x + pos.y*pos.y) - phase ); +// cos( 20.*sqrt(pos.x*pos.x + pos.y*pos.y) + atan(pos.y,pos.x) - phase ); +// cos( 30.*sqrt(pos.x*pos.x + 1.5*pos.y*pos.y - 1.8*pos.x*pos.y*pos.y) +// + atan(pos.y,pos.x) - phase ); + + +void +print_shader_info_log ( + GLuint shader // handle to the shader +) +{ + GLint length; + + glGetShaderiv ( shader , GL_INFO_LOG_LENGTH , &length ); + + if ( length ) { + char* buffer = new char [ length ]; + glGetShaderInfoLog ( shader , length , NULL , buffer ); + cout << "shader info: " << buffer << flush; + delete [] buffer; + + GLint success; + glGetShaderiv( shader, GL_COMPILE_STATUS, &success ); + if ( success != GL_TRUE ) exit ( 1 ); + } +} + + +GLuint +load_shader ( + const char *shader_source, + GLenum type +) +{ + GLuint shader = glCreateShader( type ); + + glShaderSource ( shader , 1 , &shader_source , NULL ); + glCompileShader ( shader ); + + print_shader_info_log ( shader ); + + return shader; +} + + +Display *x_display; +Window win; +EGLDisplay egl_display; +EGLContext egl_context; + +GLfloat + norm_x = 0.0, + norm_y = 0.0, + offset_x = 0.0, + offset_y = 0.0, + p1_pos_x = 0.0, + p1_pos_y = 0.0; + +GLint + phase_loc, + offset_loc, + position_loc; + + +EGLSurface egl_surface; +bool update_pos = false; + +const float vertexArray[] = { + 0.0, 0.5, 0.0, + -0.5, 0.0, 0.0, + 0.0, -0.5, 0.0, + 0.5, 0.0, 0.0, + 0.0, 0.5, 0.0 +}; + + +void render() +{ + static float phase = 0; + static int donesetup = 0; + + static XWindowAttributes gwa; + + //// draw + + if ( !donesetup ) { + XWindowAttributes gwa; + XGetWindowAttributes ( x_display , win , &gwa ); + glViewport ( 0 , 0 , gwa.width , gwa.height ); + glClearColor ( 1.0 , 0.06 , 0.07 , 1.); // background color + donesetup = 1; + } + static int color = 1; + + if (color) + glClearColor ( 1.0 , 0.06 , 0.07 , 1.); // background color + else + glClearColor ( 0.0 , 1.0 , 0.07 , 1.); // background color + + color = !color; + + glClear ( GL_COLOR_BUFFER_BIT ); + + glUniform1f ( phase_loc , phase ); // write the value of phase to the shaders phase + phase = fmodf ( phase + 0.5f , 2.f * 3.141f ); // and update the local variable + + if ( update_pos ) { // if the position of the texture has changed due to user action + GLfloat old_offset_x = offset_x; + GLfloat old_offset_y = offset_y; + + offset_x = norm_x - p1_pos_x; + offset_y = norm_y - p1_pos_y; + + p1_pos_x = norm_x; + p1_pos_y = norm_y; + + offset_x += old_offset_x; + offset_y += old_offset_y; + + update_pos = false; + } + + glUniform4f ( offset_loc , offset_x , offset_y , 0.0 , 0.0 ); + + glVertexAttribPointer ( position_loc, 3, GL_FLOAT, false, 0, vertexArray ); + glEnableVertexAttribArray ( position_loc ); + + glBlendFunc(GL_ONE, GL_ONE); + //glEnable(GL_BLEND); + + //glDrawArrays ( GL_TRIANGLE_STRIP, 0, 5 ); + + int ret; + ret = eglSwapBuffers ( egl_display, egl_surface ); // get the rendered buffer to the screen + printf("swap returned %i\n", ret); +} + + +//////////////////////////////////////////////////////////////////////////////////////////// + + +int main() +{ + /////// the X11 part ////////////////////////////////////////////////////////////////// + // in the first part the program opens a connection to the X11 window manager + // + + x_display = XOpenDisplay ( NULL ); // open the standard display (the primary screen) + if ( x_display == NULL ) { + cerr << "cannot connect to X server" << endl; + return 1; + } + + Window root = DefaultRootWindow( x_display ); // get the root window (usually the whole screen) + + XSetWindowAttributes swa; + swa.event_mask = ExposureMask | PointerMotionMask | KeyPressMask; + + win = XCreateWindow ( // create a window with the provided parameters + x_display, root, + 0, 0, 800, 480, 0, + CopyFromParent, InputOutput, + CopyFromParent, CWEventMask, + &swa ); + + XSetWindowAttributes xattr; + Atom atom; + int one = 1; + + xattr.override_redirect = False; + XChangeWindowAttributes ( x_display, win, CWOverrideRedirect, &xattr ); + + /*atom = XInternAtom ( x_display, "_NET_WM_STATE_FULLSCREEN", True ); + XChangeProperty ( + x_display, win, + XInternAtom ( x_display, "_NET_WM_STATE", True ), + XA_ATOM, 32, PropModeReplace, + (unsigned char*) &atom, 1 );*/ + + /*XChangeProperty ( + x_display, win, + XInternAtom ( x_display, "_HILDON_NON_COMPOSITED_WINDOW", True ), + XA_INTEGER, 32, PropModeReplace, + (unsigned char*) &one, 1);*/ + + XWMHints hints; + hints.input = True; + hints.flags = InputHint; + XSetWMHints(x_display, win, &hints); + + XMapWindow ( x_display , win ); // make the window visible on the screen + XStoreName ( x_display , win , "GL test" ); // give the window a name + + XSync(x_display, NULL); + //sleep(10); + + //// get identifiers for the provided atom name strings + /*Atom wm_state = XInternAtom ( x_display, "_NET_WM_STATE", False ); + Atom fullscreen = XInternAtom ( x_display, "_NET_WM_STATE_FULLSCREEN", False ); + + XEvent xev; + memset ( &xev, 0, sizeof(xev) ); + + xev.type = ClientMessage; + xev.xclient.window = win; + xev.xclient.message_type = wm_state; + xev.xclient.format = 32; + xev.xclient.data.l[0] = 1; + xev.xclient.data.l[1] = fullscreen; + XSendEvent ( // send an event mask to the X-server + x_display, + DefaultRootWindow ( x_display ), + False, + SubstructureNotifyMask, + &xev );*/ + + + /////// the egl part ////////////////////////////////////////////////////////////////// + // egl provides an interface to connect the graphics related functionality of openGL ES + // with the windowing interface and functionality of the native operation system (X11 + // in our case. + + egl_display = eglGetDisplay( (EGLNativeDisplayType) x_display ); + if ( egl_display == EGL_NO_DISPLAY ) { + cerr << "Got no EGL display." << endl; + return 1; + } + + if ( !eglInitialize( egl_display, NULL, NULL ) ) { + cerr << "Unable to initialize EGL" << endl; + return 1; + } + + EGLint attr[] = { // some attributes to set up our egl-interface + EGL_BUFFER_SIZE, 32, + EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES_BIT, + EGL_NONE + }; + + EGLConfig ecfg; + EGLint num_config; + if ( !eglChooseConfig( egl_display, attr, &ecfg, 1, &num_config ) ) { + cerr << "Failed to choose config (eglError: " << eglGetError() << ")" << endl; + return 1; + } + + if ( num_config != 1 ) { + cerr << "Didn't get exactly one config, but " << num_config << endl; + return 1; + } + + egl_surface = eglCreateWindowSurface ( egl_display, ecfg, (EGLNativeWindowType)win, NULL ); + if ( egl_surface == EGL_NO_SURFACE ) { + cerr << "Unable to create EGL surface (eglError: " << eglGetError() << ")" << endl; + return 1; + } + + //// egl-contexts collect all state descriptions needed required for operation + EGLint ctxattr[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + egl_context = eglCreateContext ( egl_display, ecfg, EGL_NO_CONTEXT, ctxattr ); + if ( egl_context == EGL_NO_CONTEXT ) { + cerr << "Unable to create EGL context (eglError: " << eglGetError() << ")" << endl; + return 1; + } + int i = -1; + eglQueryContext(egl_display, egl_context, EGL_CONTEXT_CLIENT_VERSION, &i); + + printf("EGL client context version : %i!\n", i); + + //// associate the egl-context with the egl-surface + eglMakeCurrent( egl_display, egl_surface, egl_surface, egl_context ); + + + /////// the openGL part /////////////////////////////////////////////////////////////// + + printf("GL version string: %s.\n", glGetString(GL_VENDOR)); + printf("GL extension string: %s.\n", glGetString(GL_EXTENSIONS)); + + printf("%x\n.", eglGetProcAddress("glMapBufferOES")); + + GLuint vertexShader = load_shader ( vertex_src , GL_VERTEX_SHADER ); // load vertex shader + GLuint fragmentShader = load_shader ( fragment_src , GL_FRAGMENT_SHADER ); // load fragment shader + + GLuint shaderProgram = glCreateProgram (); // create program object + glAttachShader ( shaderProgram, vertexShader ); // and attach both... + glAttachShader ( shaderProgram, fragmentShader ); // ... shaders to it + + glLinkProgram ( shaderProgram ); // link the program + glUseProgram ( shaderProgram ); // and select it for usage + + //// now get the locations (kind of handle) of the shaders variables + position_loc = glGetAttribLocation ( shaderProgram , "position" ); + phase_loc = glGetUniformLocation ( shaderProgram , "phase" ); + offset_loc = glGetUniformLocation ( shaderProgram , "offset" ); + if ( position_loc < 0 || phase_loc < 0 || offset_loc < 0 ) { + cerr << "Unable to get uniform location" << endl; + return 1; + } + + + const float + window_width = 800.0, + window_height = 480.0; + + //// this is needed for time measuring --> frames per second + struct timezone tz; + timeval t1, t2; + gettimeofday ( &t1 , &tz ); + int num_frames = 0; + + bool quit = false; + + alphaTorusReshape( window_width, window_height ); + int frame_count = 0; + + XWindowAttributes gwa; + XGetWindowAttributes ( x_display , win , &gwa ); + glViewport ( 0 , 0 , gwa.width , gwa.height ); + glClearColor ( 0, 0, 1.0 , 1.0); // background color + + while ( !quit ) { // the main loop + + while ( XPending ( x_display ) ) { // check for events from the x-server + + XEvent xev; + XNextEvent( x_display, &xev ); + + if ( xev.type == MotionNotify ) { // if mouse has moved +// cout << "move to: << xev.xmotion.x << "," << xev.xmotion.y << endl; + GLfloat window_y = (window_height - xev.xmotion.y) - window_height / 2.0; + norm_y = window_y / (window_height / 2.0); + GLfloat window_x = xev.xmotion.x - window_width / 2.0; + norm_x = window_x / (window_width / 2.0); + update_pos = true; + } + + if ( xev.type == KeyPress ) ; + } + + //render(); // now we finally put something on the screen + alphaTorusDisplay( true ); + eglSwapBuffers ( egl_display, egl_surface ); // get the rendered buffer to the screen + + if ( ++num_frames % 100 == 0 ) { + gettimeofday( &t2, &tz ); + float dt = t2.tv_sec - t1.tv_sec + (t2.tv_usec - t1.tv_usec) * 1e-6; + cout << "fps: " << num_frames / dt << endl; + num_frames = 0; + t1 = t2; + } + + frame_count++; + if( frame_count > 10000 ) { + break; + } +// usleep( 1000*10 ); + } + + + //// cleaning up... + eglDestroyContext ( egl_display, egl_context ); + eglDestroySurface ( egl_display, egl_surface ); + eglTerminate ( egl_display ); + XDestroyWindow ( x_display, win ); + XCloseDisplay ( x_display ); + + return 0; +} diff --git a/examples/alphatorus/glut/code/main.cpp b/examples/alphatorus/glut/code/main.cpp new file mode 100644 index 0000000..0f9845e --- /dev/null +++ b/examples/alphatorus/glut/code/main.cpp @@ -0,0 +1,187 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 2/1/12. + +*/ + +#include + +#ifdef __APPLE__ +#include +#else +#include +#endif + +#include + +#include "render.h" + +#include +#include + +static void myDisplay() +{ + alphaTorusDisplay(true); + glutSwapBuffers(); +} + +static void myTick(int dummy) +{ + glutPostRedisplay(); + glutTimerFunc( 16, myTick, 0 ); +} + +static void myToggle(GLenum e, const char *message) +{ + if (glIsEnabled(e)) + glDisable(e); + else + glEnable(e); + + if (message) + printf("%s %s.\n",message, glIsEnabled(e) ? "enabled" : "disabled"); +} + +static void myKeyboard(unsigned char c, int x, int y) +{ + switch (c) + { + case 'q': + case 27: /* Esc key */ + exit(0); + break; + + // GL_REGAL_enable + // https://github.com/p3/regal/blob/master/doc/extensions/GL_REGAL_enable.txt + + case 'e': + case 'E': + myToggle(GL_ERROR_REGAL,"Regal error checking is"); + break; + + case 'd': + case 'D': + myToggle(GL_DEBUG_REGAL,"Regal debug checking is"); + break; + + case 'l': + case 'L': + myToggle(GL_LOG_REGAL,"Regal driver logging is"); + break; + + case 'm': + case 'M': + myToggle(GL_EMULATION_REGAL,"Regal emulation is"); + break; + + case 'r': + case 'R': + myToggle(GL_DRIVER_REGAL,"Regal driver is"); + break; + } +} + +static void myOutput(GLenum stream, GLsizei length, const GLchar *message, GLvoid *context) +{ + static int line = 0; + fprintf(stdout,"%6d | %s",++line,message); + fflush(stdout); +} + +static void myError(GLenum error) +{ + printf("alphatorus error: %s\n",glErrorStringREGAL(error)); +} + +int main(int argc, const char *argv[]) +{ + #ifndef EMSCRIPTEN + glutInitDisplayString("rgba>=8 depth double"); + glutInitWindowSize(500, 500); + #endif + glutInit( &argc, (char **) argv); + glutCreateWindow("alphatorus"); + + glLogMessageCallbackREGAL(myOutput); + + // Regal workaround for OSX GLUT + + #ifdef __APPLE__ + RegalMakeCurrent(CGLGetCurrentContext()); + #endif + + // Regal workaround for Emscripten GLUT emulation + + #ifdef EMSCRIPTEN + RegalMakeCurrent((RegalSystemContext)1); + #endif + + RegalSetErrorCallback(myError); + + // Exercise REGAL_extension_query extension + + if (glIsSupportedREGAL("GL_REGAL_extension_query")) + { + printf("GL_REGAL_extension_query is supported.\n"); + + if (glIsSupportedREGAL("GL_EXT_debug_marker")) + printf("GL_EXT_debug_marker is supported.\n"); + else + printf("GL_EXT_debug_marker is not supported.\n"); + + if (glIsSupportedREGAL("GL_EXT_framebuffer_object")) + printf("GL_EXT_framebuffer_object is supported.\n"); + else + printf("GL_EXT_framebuffer_object is not supported.\n"); + + if (glIsSupportedREGAL("GL_EXT_direct_state_access")) + printf("GL_EXT_direct_state_access is supported.\n"); + else + printf("GL_EXT_direct_state_access is not supported.\n"); + + if (glIsSupportedREGAL("GL_NV_path_rendering")) + printf("GL_NV_path_rendering is supported.\n"); + else + printf("GL_NV_path_rendering is not supported.\n"); + } + + printf("\n"); + printf("E - Toggle GL error checking.\n"); + printf("D - Toggle debug checking.\n"); + printf("L - Toggle driver logging.\n"); + printf("M - Toggle emulation.\n"); + printf("R - Toggle driver calls.\n"); + printf("\n"); + + glutTimerFunc(16, myTick, 0); + glutDisplayFunc(myDisplay); + glutReshapeFunc(alphaTorusReshape); + glutKeyboardFunc(myKeyboard); + glutMainLoop(); + return 0; +} diff --git a/examples/alphatorus/glut/minimal_glut.xcodeproj/project.pbxproj b/examples/alphatorus/glut/minimal_glut.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7707e5d --- /dev/null +++ b/examples/alphatorus/glut/minimal_glut.xcodeproj/project.pbxproj @@ -0,0 +1,260 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 433CA18314D9E709007E13F5 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA18214D9E709007E13F5 /* main.cpp */; }; + 433CA18514D9F6AF007E13F5 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 433CA18414D9F6AF007E13F5 /* GLUT.framework */; }; + 433CA18914D9FAF9007E13F5 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA18814D9FAF9007E13F5 /* render.cpp */; }; + 433CA19514DA0DF3007E13F5 /* RegalFixedFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA19114DA0DF3007E13F5 /* RegalFixedFunction.cpp */; }; + 433CA19C14DA0F7A007E13F5 /* Regal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA19614DA0F7A007E13F5 /* Regal.cpp */; }; + 433CA19D14DA0F7A007E13F5 /* RegalEmuDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA19814DA0F7A007E13F5 /* RegalEmuDispatch.cpp */; }; + 433CA19E14DA0F7A007E13F5 /* RegalErrorDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA19914DA0F7A007E13F5 /* RegalErrorDispatch.cpp */; }; + 433CA19F14DA0F7A007E13F5 /* RegalLoaderDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 433CA19A14DA0F7A007E13F5 /* RegalLoaderDispatch.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 433CA17014D9E566007E13F5 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 433CA17214D9E566007E13F5 /* minimal_glut */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minimal_glut; sourceTree = BUILT_PRODUCTS_DIR; }; + 433CA18214D9E709007E13F5 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = code/main.cpp; sourceTree = ""; }; + 433CA18414D9F6AF007E13F5 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = System/Library/Frameworks/GLUT.framework; sourceTree = SDKROOT; }; + 433CA18814D9FAF9007E13F5 /* render.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = render.cpp; path = code/render.cpp; sourceTree = ""; }; + 433CA18E14DA0DF3007E13F5 /* linear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = linear.h; path = ../../src/linear.h; sourceTree = ""; }; + 433CA18F14DA0DF3007E13F5 /* RegalDsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalDsa.h; path = ../../src/RegalDsa.h; sourceTree = ""; }; + 433CA19014DA0DF3007E13F5 /* RegalEmu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalEmu.h; path = ../../src/RegalEmu.h; sourceTree = ""; }; + 433CA19114DA0DF3007E13F5 /* RegalFixedFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalFixedFunction.cpp; path = ../../src/RegalFixedFunction.cpp; sourceTree = ""; }; + 433CA19214DA0DF3007E13F5 /* RegalFixedFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalFixedFunction.h; path = ../../src/RegalFixedFunction.h; sourceTree = ""; }; + 433CA19314DA0DF3007E13F5 /* RegalImmediate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalImmediate.h; path = ../../src/RegalImmediate.h; sourceTree = ""; }; + 433CA19414DA0DF3007E13F5 /* RegalVao.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalVao.h; path = ../../src/RegalVao.h; sourceTree = ""; }; + 433CA19614DA0F7A007E13F5 /* Regal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Regal.cpp; path = ../../gen/Regal.cpp; sourceTree = ""; }; + 433CA19714DA0F7A007E13F5 /* Regal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Regal.h; path = ../../gen/Regal.h; sourceTree = ""; }; + 433CA19814DA0F7A007E13F5 /* RegalEmuDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalEmuDispatch.cpp; path = ../../gen/RegalEmuDispatch.cpp; sourceTree = ""; }; + 433CA19914DA0F7A007E13F5 /* RegalErrorDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalErrorDispatch.cpp; path = ../../gen/RegalErrorDispatch.cpp; sourceTree = ""; }; + 433CA19A14DA0F7A007E13F5 /* RegalLoaderDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalLoaderDispatch.cpp; path = ../../gen/RegalLoaderDispatch.cpp; sourceTree = ""; }; + 433CA19B14DA0F7A007E13F5 /* RegalPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalPrivate.h; path = ../../gen/RegalPrivate.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 433CA16F14D9E566007E13F5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 433CA18514D9F6AF007E13F5 /* GLUT.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 433CA16714D9E566007E13F5 = { + isa = PBXGroup; + children = ( + 435A392514D9E6B3006D7F44 /* code */, + 433CA18414D9F6AF007E13F5 /* GLUT.framework */, + 433CA17314D9E566007E13F5 /* Products */, + ); + sourceTree = ""; + }; + 433CA17314D9E566007E13F5 /* Products */ = { + isa = PBXGroup; + children = ( + 433CA17214D9E566007E13F5 /* minimal_glut */, + ); + name = Products; + sourceTree = ""; + }; + 433CA18D14DA0DB8007E13F5 /* Regal */ = { + isa = PBXGroup; + children = ( + 433CA19614DA0F7A007E13F5 /* Regal.cpp */, + 433CA19714DA0F7A007E13F5 /* Regal.h */, + 433CA19814DA0F7A007E13F5 /* RegalEmuDispatch.cpp */, + 433CA19914DA0F7A007E13F5 /* RegalErrorDispatch.cpp */, + 433CA19A14DA0F7A007E13F5 /* RegalLoaderDispatch.cpp */, + 433CA19B14DA0F7A007E13F5 /* RegalPrivate.h */, + 433CA18E14DA0DF3007E13F5 /* linear.h */, + 433CA18F14DA0DF3007E13F5 /* RegalDsa.h */, + 433CA19014DA0DF3007E13F5 /* RegalEmu.h */, + 433CA19114DA0DF3007E13F5 /* RegalFixedFunction.cpp */, + 433CA19214DA0DF3007E13F5 /* RegalFixedFunction.h */, + 433CA19314DA0DF3007E13F5 /* RegalImmediate.h */, + 433CA19414DA0DF3007E13F5 /* RegalVao.h */, + ); + name = Regal; + sourceTree = ""; + }; + 435A392514D9E6B3006D7F44 /* code */ = { + isa = PBXGroup; + children = ( + 433CA18D14DA0DB8007E13F5 /* Regal */, + 433CA18214D9E709007E13F5 /* main.cpp */, + 433CA18814D9FAF9007E13F5 /* render.cpp */, + ); + name = code; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 433CA17114D9E566007E13F5 /* minimal_glut */ = { + isa = PBXNativeTarget; + buildConfigurationList = 433CA17C14D9E566007E13F5 /* Build configuration list for PBXNativeTarget "minimal_glut" */; + buildPhases = ( + 433CA16E14D9E566007E13F5 /* Sources */, + 433CA16F14D9E566007E13F5 /* Frameworks */, + 433CA17014D9E566007E13F5 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = minimal_glut; + productName = minimal_glut; + productReference = 433CA17214D9E566007E13F5 /* minimal_glut */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 433CA16914D9E566007E13F5 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0420; + ORGANIZATIONNAME = n/a; + }; + buildConfigurationList = 433CA16C14D9E566007E13F5 /* Build configuration list for PBXProject "minimal_glut" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 433CA16714D9E566007E13F5; + productRefGroup = 433CA17314D9E566007E13F5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 433CA17114D9E566007E13F5 /* minimal_glut */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 433CA16E14D9E566007E13F5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 433CA18314D9E709007E13F5 /* main.cpp in Sources */, + 433CA18914D9FAF9007E13F5 /* render.cpp in Sources */, + 433CA19514DA0DF3007E13F5 /* RegalFixedFunction.cpp in Sources */, + 433CA19C14DA0F7A007E13F5 /* Regal.cpp in Sources */, + 433CA19D14DA0F7A007E13F5 /* RegalEmuDispatch.cpp in Sources */, + 433CA19E14DA0F7A007E13F5 /* RegalErrorDispatch.cpp in Sources */, + 433CA19F14DA0F7A007E13F5 /* RegalLoaderDispatch.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 433CA17A14D9E566007E13F5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 433CA17B14D9E566007E13F5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + SDKROOT = macosx; + }; + name = Release; + }; + 433CA17D14D9E566007E13F5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 433CA17E14D9E566007E13F5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 433CA16C14D9E566007E13F5 /* Build configuration list for PBXProject "minimal_glut" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 433CA17A14D9E566007E13F5 /* Debug */, + 433CA17B14D9E566007E13F5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 433CA17C14D9E566007E13F5 /* Build configuration list for PBXNativeTarget "minimal_glut" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 433CA17D14D9E566007E13F5 /* Debug */, + 433CA17E14D9E566007E13F5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 433CA16914D9E566007E13F5 /* Project object */; +} diff --git a/examples/alphatorus/glx/Makefile b/examples/alphatorus/glx/Makefile new file mode 100644 index 0000000..9bd99c1 --- /dev/null +++ b/examples/alphatorus/glx/Makefile @@ -0,0 +1,36 @@ + +all: alphatorus + +clean: + rm -f alphatorus + rm -rf obj + +REGAL_DIR := ../../../../regal +REGAL_SRC := $(wildcard $(REGAL_DIR)/gen/*.cpp $(REGAL_DIR)/src/*.cpp) +REGAL_INC := $(REGAL_DIR)/gen $(REGAL_DIR)/src + +SHARED_DIR := ../src +SHARED_SRC := $(wildcard $(SHARED_DIR)/*.cpp) +SHARED_INC := $(SHARED_DIR) + +LOCAL_SRC := $(wildcard *.cpp) + +MY_SRC := $(REGAL_SRC) $(LOCAL_SRC) $(SHARED_SRC) +MY_SRC_DIRS := $(sort $(dir $(MY_SRC))) + +MY_OBJ := $(MY_SRC) +MY_OBJ := $(patsubst %.cpp, obj$(CURDIR)/%.o, $(MY_OBJ)) +MY_OBJ := $(patsubst %.c, obj$(CURDIR)/%.o, $(MY_OBJ)) +MY_OBJ_DIRS := $(sort $(dir $(MY_OBJ))) + +MY_INC := $(REGAL_INC) $(SHARED_INC) +MY_CMD_INC := $(patsubst %, -I %, $(MY_INC)) + +obj$(CURDIR)/%.o: %.cpp + @mkdir -p $(dir $@) + g++ -g -c -o $@ $(MY_CMD_INC) $< + @echo $@ ---- $< + +alphatorus: $(MY_OBJ) + g++ -g -o $@ $(MY_OBJ) -lX11 -lpthread + diff --git a/examples/alphatorus/glx/main.cpp b/examples/alphatorus/glx/main.cpp new file mode 100644 index 0000000..6a62c25 --- /dev/null +++ b/examples/alphatorus/glx/main.cpp @@ -0,0 +1,131 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +*/ + +#include +#include "render.h" + +#include + +#include +#include +#include + +int main (int argc, char ** argv) +{ + Display *dpy = XOpenDisplay(0); + + PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = NULL; + + const char *extensions = glXQueryExtensionsString(dpy, DefaultScreen(dpy)); + printf("%s\n",extensions); + + static int visual_attribs[] = + { + GLX_RENDER_TYPE, GLX_RGBA_BIT, + GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, + GLX_DOUBLEBUFFER, true, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + None + }; + + printf("Getting framebuffer config.\n"); + int fbcount; + GLXFBConfig *fbc = glXChooseFBConfig(dpy, DefaultScreen(dpy), visual_attribs, &fbcount); + if (!fbc) + { + printf("Failed to retrieve a framebuffer config.\n"); + return 1; + } + + printf("Getting XVisualInfo\n"); + XVisualInfo *vi = glXGetVisualFromFBConfig(dpy, fbc[0]); + + XSetWindowAttributes swa; + printf("Creating colormap\n"); + swa.colormap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone); + swa.border_pixel = 0; + swa.event_mask = StructureNotifyMask; + + printf("Creating window\n"); + int width = 500; + int height = 500; + Window win = XCreateWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, width, height, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel|CWColormap|CWEventMask, &swa); + if (!win) + { + printf("Failed to create window\n"); + return 1; + } + + printf("Mapping window\n"); + XMapWindow(dpy, win); + + // Create an oldstyle context first, to get the correct function pointer for glXCreateContextAttribsARB + GLXContext ctx_old = glXCreateContext(dpy, vi, 0, GL_TRUE); + glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC) glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB"); + printf("glxCreateContextAttribsARB %p\n",glXCreateContextAttribsARB); + glXMakeCurrent(dpy, 0, 0); + glXDestroyContext(dpy, ctx_old); + + if (glXCreateContextAttribsARB == NULL) + { + printf("glXCreateContextAttribsARB entry point not found. Aborting.\n"); + return false; + } + + static int context_attribs[] = + { + GLX_CONTEXT_MAJOR_VERSION_ARB, 3, + GLX_CONTEXT_MINOR_VERSION_ARB, 0, + None + }; + + printf("Creating context\n"); + GLXContext ctx = glXCreateContextAttribsARB(dpy, fbc[0], NULL, true, context_attribs); + if (!ctx) + { + printf("Failed to create GL3 context.\n"); + return 1; + } + + printf("Making context current.\n"); + glXMakeCurrent(dpy, win, ctx); + + alphaTorusReshape( width, height ); + for(int i = 0; i < 1000000; i++ ) { + alphaTorusDisplay( true ); + glXSwapBuffers( dpy, win ); + usleep( 16000 ); + } + + ctx = glXGetCurrentContext(); + glXMakeCurrent(dpy, 0, 0); + glXDestroyContext(dpy, ctx); +} diff --git a/examples/alphatorus/osx/English.lproj/InfoPlist.strings b/examples/alphatorus/osx/English.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/examples/alphatorus/osx/English.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/alphatorus/osx/English.lproj/MainMenu.xib b/examples/alphatorus/osx/English.lproj/MainMenu.xib new file mode 100644 index 0000000..5d31bff --- /dev/null +++ b/examples/alphatorus/osx/English.lproj/MainMenu.xib @@ -0,0 +1,3652 @@ + + + + 1060 + 11A390 + 1294 + 1110.91 + 544.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1294 + + + YES + NSOpenGLView + NSWindowTemplate + NSView + NSMenu + NSMenuItem + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + gles + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + gles + + YES + + + About gles + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide gles + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit gles + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + YES + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + YES + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + YES + + + gles Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 15 + 2 + {{335, 339}, {960, 540}} + 1685585920 + gles + NSWindow + + + + + 256 + + YES + + + 1298 + + {960, 540} + + + + + AAAABQAAAEkAAABgAAAACAAAABgAAAALAAAACAAAAAwAAAAYAAAADQAAAAgAAAAAA + + + + + {{7, 11}, {960, 540}} + + + + {{0, 0}, {1920, 1178}} + {10000000000000, 10000000000000} + + + glesAppDelegate + + + NSFontManager + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + terminate: + + + + 449 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + delegate + + + + 495 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + window + + + + 532 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + + + 80 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + YES + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + YES + + + + + + 451 + + + YES + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + YES + + + + + + 491 + + + YES + + + + + + 492 + + + + + 494 + + + + + 496 + + + YES + + + + + + 497 + + + YES + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + YES + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + YES + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 533 + + + + + + + YES + + YES + -3.IBPluginDependency + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBEditorWindowLastContentRect + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBEditorWindowLastContentRect + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBEditorWindowLastContentRect + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBEditorWindowLastContentRect + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBEditorWindowLastContentRect + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBEditorWindowLastContentRect + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 372.IBPluginDependency + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 451.IBEditorWindowLastContentRect + 451.IBPluginDependency + 452.IBPluginDependency + 453.IBPluginDependency + 454.IBPluginDependency + 457.IBPluginDependency + 459.IBPluginDependency + 460.IBPluginDependency + 462.IBPluginDependency + 465.IBPluginDependency + 466.IBPluginDependency + 485.IBPluginDependency + 490.IBPluginDependency + 491.IBEditorWindowLastContentRect + 491.IBPluginDependency + 492.IBPluginDependency + 496.IBPluginDependency + 497.IBEditorWindowLastContentRect + 497.IBPluginDependency + 498.IBPluginDependency + 499.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 500.IBPluginDependency + 501.IBPluginDependency + 502.IBPluginDependency + 503.IBPluginDependency + 504.IBPluginDependency + 505.IBPluginDependency + 506.IBPluginDependency + 507.IBPluginDependency + 508.IBEditorWindowLastContentRect + 508.IBPluginDependency + 509.IBPluginDependency + 510.IBPluginDependency + 511.IBPluginDependency + 512.IBPluginDependency + 513.IBPluginDependency + 514.IBPluginDependency + 515.IBPluginDependency + 516.IBPluginDependency + 517.IBPluginDependency + 533.CustomClassName + 533.IBPluginDependency + 533.IBViewBoundsToFrameTransform + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBEditorWindowLastContentRect + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{753, 187}, {275, 113}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{547, 180}, {254, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{753, 217}, {238, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{654, 239}, {194, 73}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{372, 722}, {394, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + {{604, 269}, {231, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{746, 287}, {220, 133}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{415, 50}, {528, 411}} + com.apple.InterfaceBuilder.CocoaPlugin + {{415, 50}, {528, 411}} + + {{33, 99}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{591, 420}, {83, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{753, 197}, {170, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{725, 289}, {246, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{674, 260}, {204, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{878, 180}, {164, 173}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + GlesView + com.apple.InterfaceBuilder.CocoaPlugin + + AQAAAABCNAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + {{286, 129}, {275, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{452, 109}, {196, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + + + + YES + + + + + 533 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + diff --git a/examples/alphatorus/osx/RGLOpenGLContext.h b/examples/alphatorus/osx/RGLOpenGLContext.h new file mode 100644 index 0000000..40579c1 --- /dev/null +++ b/examples/alphatorus/osx/RGLOpenGLContext.h @@ -0,0 +1,39 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Based on code by Christopher J. W. Lloyd. + +*/ + +#import + +@interface RGLOpenGLContext : NSOpenGLContext { +} + +-(void)makeCurrentContext; + +@end diff --git a/examples/alphatorus/osx/RGLOpenGLContext.m b/examples/alphatorus/osx/RGLOpenGLContext.m new file mode 100755 index 0000000..d07d024 --- /dev/null +++ b/examples/alphatorus/osx/RGLOpenGLContext.m @@ -0,0 +1,43 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Based on code by Christopher J. W. Lloyd. + +*/ + +#import "RGLOpenGLContext.h" + +void RegalMakeCurrent( CGLContextObj ctxobj ); + +@implementation RGLOpenGLContext + +-(void)makeCurrentContext { + [super makeCurrentContext]; + RegalMakeCurrent( CGLGetCurrentContext() ); +} + +@end diff --git a/examples/alphatorus/osx/RegalView.h b/examples/alphatorus/osx/RegalView.h new file mode 100644 index 0000000..c7141ca --- /dev/null +++ b/examples/alphatorus/osx/RegalView.h @@ -0,0 +1,38 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 3/15/11. + +*/ + +#import + +@interface GlesView : NSOpenGLView { + +} +- (void)render; +@end diff --git a/examples/alphatorus/osx/RegalView.mm b/examples/alphatorus/osx/RegalView.mm new file mode 100644 index 0000000..9153535 --- /dev/null +++ b/examples/alphatorus/osx/RegalView.mm @@ -0,0 +1,109 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 3/15/11. + +*/ + +#import "RegalView.h" +#import "RGLOpenGLContext.h" +#include "render.h" +#include + +@implementation GlesView + +bool resized = false; + +NSTimer *timer = nil; + +- (id)initWithCoder:(NSCoder *)aDecoder { + + [super initWithCoder: aDecoder]; + NSOpenGLPixelFormatAttribute attr[] = { +#if 1 + NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy, +#else + NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core, +#endif + NSOpenGLPFADoubleBuffer, + NSOpenGLPFAAccelerated, + NSOpenGLPFAAlphaSize, 8, + NSOpenGLPFAColorSize, 32, + NSOpenGLPFADepthSize, 24, + NSOpenGLPFAStencilSize, 0, + 0 + }; + NSOpenGLPixelFormat *fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr]; + [self setPixelFormat: fmt]; + RGLOpenGLContext *rglCtx = [[RGLOpenGLContext alloc] initWithFormat:fmt shareContext:nil]; + [self setOpenGLContext: rglCtx]; + [rglCtx setView:self]; + timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector (render) userInfo:nil repeats:YES]; + resized = false; + return self; +} + + +- (void)drawRect:(NSRect)dirtyRect { + if( resized == false ) { + [self windowResized:NULL]; + resized = true; + } + alphaTorusDisplay( true ); + CGLFlushDrawable( CGLGetCurrentContext() ); + //[[self openGLContext] flushBuffer]; +} + +- (void) render { + [self setNeedsDisplay:YES]; +} + +- (void)viewDidMoveToWindow +{ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowResized:) name:NSWindowDidResizeNotification + object:[self window]]; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; +} + +- (void)windowResized:(NSNotification *)notification; +{ + NSRect rect = [[[self window] contentView] frame]; + NSRect crect = NSRectFromCGRect( CGRectMake( 0, 0, rect.size.width, rect.size.height ) ); + [self setFrame: crect]; + [self lockFocus]; + alphaTorusReshape( rect.size.width, rect.size.height ); + resized = true; + [self unlockFocus]; +} + +@end diff --git a/examples/alphatorus/osx/alphatorus-Info.plist b/examples/alphatorus/osx/alphatorus-Info.plist new file mode 100644 index 0000000..4674c2e --- /dev/null +++ b/examples/alphatorus/osx/alphatorus-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + nv.icns + CFBundleIdentifier + com.nvidia.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/examples/alphatorus/osx/alphatorus.xcodeproj/project.pbxproj b/examples/alphatorus/osx/alphatorus.xcodeproj/project.pbxproj new file mode 100644 index 0000000..10b76e7 --- /dev/null +++ b/examples/alphatorus/osx/alphatorus.xcodeproj/project.pbxproj @@ -0,0 +1,574 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; + 256AC3DA0F4B6AC300CF3369 /* alphatorusAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* alphatorusAppDelegate.mm */; }; + 43085426148B0F3400AE231A /* RGLOpenGLContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 43085425148B0F3400AE231A /* RGLOpenGLContext.m */; }; + 431D3C0815C9B648009DD04F /* libRegal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 431D3C0715C9B636009DD04F /* libRegal.a */; }; + 4344FC911332A8BA006F07E8 /* nv.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4344FC901332A8BA006F07E8 /* nv.icns */; }; + 43787F5014E8512400636639 /* render.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43787F4E14E8512400636639 /* render.cpp */; }; + 43E244C6133066AF0040E20D /* RegalView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 43E244C5133066AF0040E20D /* RegalView.mm */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072D0486CEB800E47090 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.mm */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + BC3A59B31804680000992687 /* libapitrace.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ABB1804648500C68C71 /* libapitrace.a */; }; + BC3A59BA1804680400992687 /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8AC2180464A200C68C71 /* libjsonsl.a */; }; + BC3A59BB1804680800992687 /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8AC8180464B200C68C71 /* libmd5.a */; }; + BC3A59BC1804680B00992687 /* libmongoose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ACE180464C500C68C71 /* libmongoose.a */; }; + BC3A59BD1804680E00992687 /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8AD4180464D700C68C71 /* libsnappy.a */; }; + BC3A59BE1804681100992687 /* libsquish.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9F8ADA180464F400C68C71 /* libsquish.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 431D3C0615C9B636009DD04F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 43A6C1C615C48CD90063667E; + remoteInfo = Regal; + }; + 439EB69A183D2AF800842DA0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4359158318367621002CB92C; + remoteInfo = RegalDynamic; + }; + 439EB69C183D2AF800842DA0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 435916DA18367DEE002CB92C; + remoteInfo = RegalWrangler; + }; + 439EB69E183D2AF800842DA0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4359176F18367E05002CB92C; + remoteInfo = RegalWranglerDynamic; + }; + BC9F8ABA1804648500C68C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BC9F8AB61804648400C68C71 /* apitrace.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 433667A917C56F3500D45AD9; + remoteInfo = apitrace; + }; + BC9F8AC1180464A200C68C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BC9F8ABD180464A200C68C71 /* jsonsl.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4336679417C56EF900D45AD9; + remoteInfo = jsonsl; + }; + BC9F8AC7180464B200C68C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BC9F8AC3180464B100C68C71 /* md5.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4336678117C56DFD00D45AD9; + remoteInfo = md5; + }; + BC9F8ACD180464C500C68C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4336676E17C56DC700D45AD9; + remoteInfo = mongoose; + }; + BC9F8AD3180464D700C68C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BC9F8ACF180464D700C68C71 /* snappy.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4336665817C56AA300D45AD9; + remoteInfo = snappy; + }; + BC9F8AD9180464F400C68C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BC9F8AD5180464F400C68C71 /* squish.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4336667917C56B5200D45AD9; + remoteInfo = squish; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + 256AC3D80F4B6AC300CF3369 /* alphatorusAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alphatorusAppDelegate.h; sourceTree = ""; }; + 256AC3D90F4B6AC300CF3369 /* alphatorusAppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = alphatorusAppDelegate.mm; sourceTree = ""; }; + 256AC3F00F4B6AF500CF3369 /* alphatorus_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alphatorus_Prefix.pch; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 43085424148B0F3400AE231A /* RGLOpenGLContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RGLOpenGLContext.h; sourceTree = ""; }; + 43085425148B0F3400AE231A /* RGLOpenGLContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RGLOpenGLContext.m; sourceTree = ""; }; + 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Regal.xcodeproj; path = ../../../build/mac/Regal/Regal.xcodeproj; sourceTree = ""; }; + 4344FC901332A8BA006F07E8 /* nv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = nv.icns; sourceTree = ""; }; + 43787F4E14E8512400636639 /* render.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = render.cpp; path = ../src/render.cpp; sourceTree = ""; }; + 43787F4F14E8512400636639 /* render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = render.h; path = ../src/render.h; sourceTree = ""; }; + 43E244C4133066AF0040E20D /* RegalView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegalView.h; sourceTree = ""; }; + 43E244C5133066AF0040E20D /* RegalView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RegalView.mm; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* alphatorus-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "alphatorus-Info.plist"; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* alphatorus.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = alphatorus.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BC9F8AB61804648400C68C71 /* apitrace.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = apitrace.xcodeproj; path = ../../../build/mac/apitrace/apitrace.xcodeproj; sourceTree = ""; }; + BC9F8ABD180464A200C68C71 /* jsonsl.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = jsonsl.xcodeproj; path = ../../../build/mac/jsonsl/jsonsl.xcodeproj; sourceTree = ""; }; + BC9F8AC3180464B100C68C71 /* md5.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = md5.xcodeproj; path = ../../../build/mac/md5/md5.xcodeproj; sourceTree = ""; }; + BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = mongoose.xcodeproj; path = ../../../build/mac/mongoose/mongoose.xcodeproj; sourceTree = ""; }; + BC9F8ACF180464D700C68C71 /* snappy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = snappy.xcodeproj; path = ../../../build/mac/snappy/snappy.xcodeproj; sourceTree = ""; }; + BC9F8AD5180464F400C68C71 /* squish.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = squish.xcodeproj; path = ../../../build/mac/squish/squish.xcodeproj; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BC3A59BE1804681100992687 /* libsquish.a in Frameworks */, + BC3A59BD1804680E00992687 /* libsnappy.a in Frameworks */, + BC3A59BC1804680B00992687 /* libmongoose.a in Frameworks */, + BC3A59BB1804680800992687 /* libmd5.a in Frameworks */, + BC3A59BA1804680400992687 /* libjsonsl.a in Frameworks */, + BC3A59B31804680000992687 /* libapitrace.a in Frameworks */, + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 431D3C0815C9B648009DD04F /* libRegal.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* alphatorus.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* alphatorus */ = { + isa = PBXGroup; + children = ( + 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */, + BC9F8AD5180464F400C68C71 /* squish.xcodeproj */, + BC9F8ACF180464D700C68C71 /* snappy.xcodeproj */, + BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */, + BC9F8AC3180464B100C68C71 /* md5.xcodeproj */, + BC9F8ABD180464A200C68C71 /* jsonsl.xcodeproj */, + BC9F8AB61804648400C68C71 /* apitrace.xcodeproj */, + 29B97315FDCFA39411CA2CEA /* code */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = alphatorus; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* code */ = { + isa = PBXGroup; + children = ( + 43787F4E14E8512400636639 /* render.cpp */, + 43787F4F14E8512400636639 /* render.h */, + 43085424148B0F3400AE231A /* RGLOpenGLContext.h */, + 43085425148B0F3400AE231A /* RGLOpenGLContext.m */, + 256AC3D80F4B6AC300CF3369 /* alphatorusAppDelegate.h */, + 256AC3D90F4B6AC300CF3369 /* alphatorusAppDelegate.mm */, + 43E244C4133066AF0040E20D /* RegalView.h */, + 43E244C5133066AF0040E20D /* RegalView.mm */, + 256AC3F00F4B6AF500CF3369 /* alphatorus_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.mm */, + ); + name = code; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 4344FC901332A8BA006F07E8 /* nv.icns */, + 8D1107310486CEB800E47090 /* alphatorus-Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 431D3C0015C9B635009DD04F /* Products */ = { + isa = PBXGroup; + children = ( + 431D3C0715C9B636009DD04F /* libRegal.a */, + 439EB69B183D2AF800842DA0 /* libRegal.dylib */, + 439EB69D183D2AF800842DA0 /* libRegalW.a */, + 439EB69F183D2AF800842DA0 /* libRegalW.dylib */, + ); + name = Products; + sourceTree = ""; + }; + BC9F8AB71804648400C68C71 /* Products */ = { + isa = PBXGroup; + children = ( + BC9F8ABB1804648500C68C71 /* libapitrace.a */, + ); + name = Products; + sourceTree = ""; + }; + BC9F8ABE180464A200C68C71 /* Products */ = { + isa = PBXGroup; + children = ( + BC9F8AC2180464A200C68C71 /* libjsonsl.a */, + ); + name = Products; + sourceTree = ""; + }; + BC9F8AC4180464B100C68C71 /* Products */ = { + isa = PBXGroup; + children = ( + BC9F8AC8180464B200C68C71 /* libmd5.a */, + ); + name = Products; + sourceTree = ""; + }; + BC9F8ACA180464C500C68C71 /* Products */ = { + isa = PBXGroup; + children = ( + BC9F8ACE180464C500C68C71 /* libmongoose.a */, + ); + name = Products; + sourceTree = ""; + }; + BC9F8AD0180464D700C68C71 /* Products */ = { + isa = PBXGroup; + children = ( + BC9F8AD4180464D700C68C71 /* libsnappy.a */, + ); + name = Products; + sourceTree = ""; + }; + BC9F8AD6180464F400C68C71 /* Products */ = { + isa = PBXGroup; + children = ( + BC9F8ADA180464F400C68C71 /* libsquish.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* alphatorus */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "alphatorus" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = alphatorus; + productInstallPath = "$(HOME)/Applications"; + productName = alphatorus; + productReference = 8D1107320486CEB800E47090 /* alphatorus.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "alphatorus" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* alphatorus */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = BC9F8AB71804648400C68C71 /* Products */; + ProjectRef = BC9F8AB61804648400C68C71 /* apitrace.xcodeproj */; + }, + { + ProductGroup = BC9F8ABE180464A200C68C71 /* Products */; + ProjectRef = BC9F8ABD180464A200C68C71 /* jsonsl.xcodeproj */; + }, + { + ProductGroup = BC9F8AC4180464B100C68C71 /* Products */; + ProjectRef = BC9F8AC3180464B100C68C71 /* md5.xcodeproj */; + }, + { + ProductGroup = BC9F8ACA180464C500C68C71 /* Products */; + ProjectRef = BC9F8AC9180464C500C68C71 /* mongoose.xcodeproj */; + }, + { + ProductGroup = 431D3C0015C9B635009DD04F /* Products */; + ProjectRef = 431D3BFF15C9B635009DD04F /* Regal.xcodeproj */; + }, + { + ProductGroup = BC9F8AD0180464D700C68C71 /* Products */; + ProjectRef = BC9F8ACF180464D700C68C71 /* snappy.xcodeproj */; + }, + { + ProductGroup = BC9F8AD6180464F400C68C71 /* Products */; + ProjectRef = BC9F8AD5180464F400C68C71 /* squish.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* alphatorus */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 431D3C0715C9B636009DD04F /* libRegal.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRegal.a; + remoteRef = 431D3C0615C9B636009DD04F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 439EB69B183D2AF800842DA0 /* libRegal.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = libRegal.dylib; + remoteRef = 439EB69A183D2AF800842DA0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 439EB69D183D2AF800842DA0 /* libRegalW.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRegalW.a; + remoteRef = 439EB69C183D2AF800842DA0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 439EB69F183D2AF800842DA0 /* libRegalW.dylib */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.dylib"; + path = libRegalW.dylib; + remoteRef = 439EB69E183D2AF800842DA0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + BC9F8ABB1804648500C68C71 /* libapitrace.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libapitrace.a; + remoteRef = BC9F8ABA1804648500C68C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + BC9F8AC2180464A200C68C71 /* libjsonsl.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjsonsl.a; + remoteRef = BC9F8AC1180464A200C68C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + BC9F8AC8180464B200C68C71 /* libmd5.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libmd5.a; + remoteRef = BC9F8AC7180464B200C68C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + BC9F8ACE180464C500C68C71 /* libmongoose.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libmongoose.a; + remoteRef = BC9F8ACD180464C500C68C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + BC9F8AD4180464D700C68C71 /* libsnappy.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libsnappy.a; + remoteRef = BC9F8AD3180464D700C68C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + BC9F8ADA180464F400C68C71 /* libsquish.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libsquish.a; + remoteRef = BC9F8AD9180464F400C68C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, + 4344FC911332A8BA006F07E8 /* nv.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.mm in Sources */, + 256AC3DA0F4B6AC300CF3369 /* alphatorusAppDelegate.mm in Sources */, + 43E244C6133066AF0040E20D /* RegalView.mm in Sources */, + 43085426148B0F3400AE231A /* RGLOpenGLContext.m in Sources */, + 43787F5014E8512400636639 /* render.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 1DDD58150DA1D0A300B32029 /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = alphatorus_Prefix.pch; + INFOPLIST_FILE = "alphatorus-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.6; + PRODUCT_NAME = alphatorus; + SDKROOT = macosx; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + GCC_PREFIX_HEADER = alphatorus_Prefix.pch; + INFOPLIST_FILE = "alphatorus-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.6; + PRODUCT_NAME = alphatorus; + SDKROOT = macosx; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ../../../include; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ../../../include; + SDKROOT = macosx; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "alphatorus" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "alphatorus" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/examples/alphatorus/osx/alphatorusAppDelegate.h b/examples/alphatorus/osx/alphatorusAppDelegate.h new file mode 100644 index 0000000..222f0e7 --- /dev/null +++ b/examples/alphatorus/osx/alphatorusAppDelegate.h @@ -0,0 +1,40 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 3/15/11. + +*/ + +#import + +@interface glesAppDelegate : NSObject { + NSWindow *window; +} + +@property (assign) IBOutlet NSWindow *window; + +@end diff --git a/examples/alphatorus/osx/alphatorusAppDelegate.mm b/examples/alphatorus/osx/alphatorusAppDelegate.mm new file mode 100644 index 0000000..1e17da3 --- /dev/null +++ b/examples/alphatorus/osx/alphatorusAppDelegate.mm @@ -0,0 +1,42 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 3/15/11. + +*/ + +#import "alphatorusAppDelegate.h" + +@implementation glesAppDelegate + +@synthesize window; + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + // Insert code here to initialize your application +} + +@end diff --git a/examples/alphatorus/osx/alphatorus_Prefix.pch b/examples/alphatorus/osx/alphatorus_Prefix.pch new file mode 100644 index 0000000..b435fd3 --- /dev/null +++ b/examples/alphatorus/osx/alphatorus_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'gles' target in the 'gles' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/examples/alphatorus/osx/main.mm b/examples/alphatorus/osx/main.mm new file mode 100644 index 0000000..b83bbca --- /dev/null +++ b/examples/alphatorus/osx/main.mm @@ -0,0 +1,37 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 3/15/11. + +*/ + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +} diff --git a/examples/alphatorus/osx/nv.icns b/examples/alphatorus/osx/nv.icns new file mode 100644 index 0000000000000000000000000000000000000000..afeb62a3da1fc5c10969b27cd547f26456ff8ecb GIT binary patch literal 328937 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
h7i#%3QN7HQJ?b$H%+kZsaLT1!0k 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 + + - Created by Cass Everitt on 3/16/11. + + */ + +#include + +#include "render.h" + +#include +#include + +#ifndef M_PI +#define M_PI 3.141572654 +#endif + +static GLenum texunit = GL_TEXTURE1; +GLuint prog; + + +struct Torus { + float circleRadius; + float tubeRadius; + Torus( float c, float t ) : circleRadius( c ), tubeRadius( t ) {} + void Vertex( float u, float v ) + { + float theta = (float) (u * 2.0 * M_PI); + float rho = (float) (v * 2.0 * M_PI); + float x = (float) (cos( theta ) * ( circleRadius + cos( rho ) * tubeRadius )); + float y = (float) (sin( theta ) * ( circleRadius + cos( rho ) * tubeRadius )); + float z = (float) (sin( rho ) * tubeRadius); + float nx = (float) (cos( rho ) * cos(theta)); + float ny = (float) (cos( rho ) * sin(theta)); + float nz = (float) (sin( rho )); + + glNormal3f( nx, ny, nz ); + glMultiTexCoord2f( texunit, u, v ); + glVertex3f( x, y, z ); + } +}; + +static void drawAnObject() +{ + glPushGroupMarkerEXT(0, "drawAnObject"); + + Torus t( 0.7f, 0.4f ); + int I = 30; + int J = 30; + glColor3f( 0.8f, 0.8f, 0.8f ); + for(int j = 0; j < J / 2 - 1; j++) + { + float v0 = (j+0.0f)/(J-1.0f); + float v1 = (j+1.0f)/(J-1.0f); + glBegin( GL_TRIANGLE_STRIP ); + for(int i = 0; i < I; i++) + { + float u = i/(I-1.0f); + t.Vertex( u, v1 ); + t.Vertex( u, v0 ); + } + glEnd(); + } + + glPopGroupMarkerEXT(); +} + +static int width; +static int height; + +void alphaTorusReshape( int w, int h ) { + width = w; + height = h; + + float a = float(w)/float(h); + + glPushGroupMarkerEXT(0, "reshape"); + + glViewport(0, 0, width, height); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + if( a > 1 ) { + glFrustum( -0.1 * a, 0.1 * a, -0.1, 0.1, 0.1, 100.0 ); + } else { + glFrustum( -0.1, 0.1, -0.1 / a, 0.1 / a, 0.1, 100.0 ); + } + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + glTranslatef( 0, 0, -2 ); + + glPopGroupMarkerEXT(); +} + + +static void regalerr( GLenum err ) { + const char * errstr = NULL; + switch( err ) { + case GL_INVALID_ENUM: errstr = "INVALID ENUM"; break; + case GL_INVALID_OPERATION: errstr = "INVALID OPERATION"; break; + case GL_INVALID_VALUE: errstr = "INVALID VALUE"; break; + default: + fprintf( stderr, "Got a GL error: %d!\n", err ); + break; + } + if( errstr ) { + fprintf( stderr, "Got a GL error: %s\n", errstr ); + } + ; +} + +static GLuint tex; + +void alphaTorusInitProgram() { + + GLuint vs = glCreateShader( GL_VERTEX_SHADER ); + { + char vshader[] = + "varying vec4 ocol;\n" + "varying vec2 tc;\n" + "\n" + "void main() {\n" + " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" + " ocol = gl_Normal.xyzz;\n" + " tc = gl_MultiTexCoord1.xy;\n" + "}\n"; + char *vshader_list[] = { vshader, NULL }; + int vshader_list_sizes[] = { sizeof( vshader ), 0 }; + glShaderSource( vs, 1, vshader_list, vshader_list_sizes ); + glCompileShader( vs ); + char dbgLog[1<<15]; + int dbgLogLen = 0; + glGetShaderInfoLog( vs, (1<<15) - 2, &dbgLogLen, dbgLog ); + dbgLog[ dbgLogLen ] = 0; + printf( "%s\n", dbgLog ); + } + + GLuint fs = glCreateShader( GL_FRAGMENT_SHADER ); + { + char fshader[] = + "uniform sampler2D tex;\n" + "varying vec4 ocol;\n" + "varying vec2 tc;\n" + "\n" + "void main() {\n" + " gl_FragColor.xyz = texture2D(tex, tc).xyz;\n" + " gl_FragColor.w = tc.x;\n" + "}\n"; + char *fshader_list[] = { fshader, NULL }; + int fshader_list_sizes[] = { sizeof( fshader ), 0 }; + glShaderSource( fs, 1, fshader_list, fshader_list_sizes ); + glCompileShader( fs ); + char dbgLog[1<<15]; + int dbgLogLen = 0; + glGetShaderInfoLog( fs, (1<<15) - 2, &dbgLogLen, dbgLog ); + dbgLog[ dbgLogLen ] = 0; + printf( "%s\n", dbgLog ); + } + + prog = glCreateProgram(); + glAttachShader( prog, vs ); + glAttachShader( prog, fs ); + + glLinkProgram( prog ); + { + char dbgLog[1<<15]; + int dbgLogLen = 0; + glGetProgramInfoLog( prog, (1<<15) - 2, &dbgLogLen, dbgLog ); + dbgLog[ dbgLogLen ] = 0; + printf( "%s\n", dbgLog ); + } + + glProgramUniform1iEXT( prog, glGetUniformLocation( prog, "tex" ), 1 ); + glUseProgram( 0 ); + +} + +void alphaTorusInit() +{ + glPushGroupMarkerEXT(0, "init"); + + glGenTextures( 1, &tex ); + GLubyte pix[] = { + 0x60, 0xff, 0x00, 0x7f, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xcf, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x5f, 0xff, 0x80, 0x00, 0x0f, + 0x80, 0x80, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x80, 0x80, 0xff, 0x00, 0x80, 0x80, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0x80, 0x00, 0xff, 0x80, 0x00, 0xff, 0xaf, 0x00, 0x00, 0x80, 0xff + }; + glTextureImage2DEXT( tex, GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, pix ); + glTextureParameteriEXT( tex, GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); + glTextureParameteriEXT( tex, GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glBindMultiTextureEXT( texunit, GL_TEXTURE_2D, tex ); + + GLfloat mat_specular[] = { 0.0f, 0.0f, 1.0f, 1.0f }; + GLfloat mat_shininess[] = { 50.0f }; + GLfloat light_position[] = { 1.0f, 1.0f, 0.2f, 1.0f }; + GLfloat light_atten[] = { 1.0f, 1.0f, 1.0f }; + GLfloat light_diffuse[] = { 10.0f, 10.0f, 10.0f, 10.0f }; + GLfloat light_specular[] = { 10.0f, 10.0f, 10.0f, 10.0f }; + GLfloat light_spotdir[] = { -0.1f, -0.1f, -1.0f }; + GLfloat light_spotcut[] = { 30.0f }; + GLfloat light_spotexp[] = { 3.0f }; + glClearColor (0.0, 0.0, 0.0, 0.0); + //glShadeModel (GL_SMOOTH); + + glMatrixPushEXT( GL_MODELVIEW ); + glMatrixLoadIdentityEXT( GL_MODELVIEW ); + + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); + //glMaterialfv(GL_BACK, GL_SHININESS, mat_shininess); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + glLightf( GL_LIGHT0, GL_LINEAR_ATTENUATION, light_atten[1] ); + glLightf( GL_LIGHT0, GL_QUADRATIC_ATTENUATION, light_atten[2] ); + glLightfv( GL_LIGHT0, GL_DIFFUSE, light_diffuse ); + glLightfv( GL_LIGHT0, GL_SPECULAR, light_specular ); + glLightfv( GL_LIGHT0, GL_SPOT_DIRECTION, light_spotdir ); + glLightfv( GL_LIGHT0, GL_SPOT_CUTOFF, light_spotcut ); + glLightfv( GL_LIGHT0, GL_SPOT_EXPONENT, light_spotexp ); + //GLfloat light_ambient[] = { 0.0, -1.0, 0.0, 0.0 }; + //glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + + glMatrixPopEXT( GL_MODELVIEW ); + + glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE ); + glLightModelf( GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR ); + + glEnable( GL_COLOR_MATERIAL ) ; + glColorMaterial( GL_BACK, GL_SPECULAR ); + + glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE ); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glFogi( GL_FOG_MODE, GL_LINEAR ); + glFogf( GL_FOG_START, 2.0f ); + glFogf( GL_FOG_END, 4.0f ); + GLfloat fog_color[] = { 1.0, 1.0, 0.0, 0.0 }; + glFogfv( GL_FOG_COLOR, fog_color ); + + glEnable( GL_CLIP_PLANE3 ); + GLdouble clip[] = { 1, 1, -1, 0 }; + glClipPlane( GL_CLIP_PLANE3, clip ); + + alphaTorusInitProgram(); + + glPopGroupMarkerEXT(); +} + +void alphaTorusDisplay( bool clear ) +{ + static float alphaRef = 0.0f; + static int count = 0; + + if( count == 0 ) { + alphaTorusInit(); + } + + glPushGroupMarkerEXT(0, "display"); + +#if 1 + if( count == 0 ) { + RegalSetErrorCallback( regalerr ); + } else if( count == 11 ) { + RegalSetErrorCallback( NULL ); + } + count++; +#endif + + + GLenum funcs[] = { GL_LESS, GL_LEQUAL, GL_GREATER, GL_GEQUAL, GL_NOTEQUAL, GL_EQUAL, GL_ALWAYS, GL_NEVER }; + int idx = int(alphaRef) % ( sizeof( funcs ) / sizeof( funcs[0] ) ); + float ref = alphaRef - floor(alphaRef); + glAlphaFunc( funcs[idx], ref ); + alphaRef += 1.0f/128.0f; + if( count & 0xf ) { + glEnable( GL_ALPHA_TEST ); + } + + if( clear ) { + GLfloat cc[][4] = { + { 1, 0, 0, 0 }, + { .5, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, .5, 0, 0 }, + { 0, 0, 1, 0 }, + { 0, 0, .5, 0 }, + { 1, 1, 1, 0 }, + { .5, .5, .5, 0 } + }; + glClearDepth( 1.0 ); + glClearColor( cc[idx][0], cc[idx][1], cc[idx][2], cc[idx][3] ); + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + } + glEnable( GL_DEPTH_TEST ); + + for( int i = 0; i < 4; i++ ) { + glActiveTexture( GL_TEXTURE0 + i ); + glDisable( GL_TEXTURE_2D ); + } + + glBindMultiTextureEXT( texunit, GL_TEXTURE_2D, tex ); + glActiveTexture( texunit ); + glEnable( GL_TEXTURE_2D ); + + glMatrixLoadIdentityEXT( texunit ); + + + glEnable( GL_FOG ); + + glUseProgram( prog ); + + glEnable( GL_NORMALIZE ); + glDisable( GL_RESCALE_NORMAL ); + glMultiTexEnviEXT( texunit, GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); + drawAnObject(); + + glDisable( GL_ALPHA_TEST ); + + glUseProgram( 0 ); + + glPopGroupMarkerEXT(); + + glFrameTerminatorGREMEDY(); + + //printf( "Draw with r=%f\n", r ); +} diff --git a/examples/alphatorus/src/render.h b/examples/alphatorus/src/render.h new file mode 100644 index 0000000..4e3e94b --- /dev/null +++ b/examples/alphatorus/src/render.h @@ -0,0 +1,36 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +- Created by Cass Everitt on 3/16/11. + +*/ + +#pragma once + +extern void alphaTorusInit(); +extern void alphaTorusReshape( int w, int h ); +extern void alphaTorusDisplay( bool clear ); diff --git a/examples/alphatorus/win32/minimal.cpp b/examples/alphatorus/win32/minimal.cpp new file mode 100644 index 0000000..4623ee1 --- /dev/null +++ b/examples/alphatorus/win32/minimal.cpp @@ -0,0 +1,186 @@ +/* + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +*/ + +// An example of the minimal Win32 OpenGL (via Regal) program. +// It only works in 16 bit color modes or higher (since it doesn't +// create a palette). + +#include + +#include + +#include "render.h" + +#include +#include +using namespace std; + +LRESULT WINAPI +WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + static PAINTSTRUCT ps; + + switch(uMsg) + { + case WM_PAINT: + alphaTorusDisplay(true); + SwapBuffers(GetDC(hWnd)); + BeginPaint(hWnd, &ps); + EndPaint(hWnd, &ps); + return 0; + + case WM_SIZE: + alphaTorusReshape(LOWORD(lParam), HIWORD(lParam)); + PostMessage(hWnd, WM_PAINT, 0, 0); + return 0; + + case WM_CHAR: + switch (wParam) { + case 27: /* ESC key */ + PostQuitMessage(0); + break; + } + return 0; + + case WM_CLOSE: + PostQuitMessage(0); + return 0; + } + + return DefWindowProc(hWnd, uMsg, wParam, lParam); +} + +HWND +CreateOpenGLWindow(LPCTSTR title, int x, int y, int width, int height, BYTE type, DWORD flags) +{ + int pf; + HDC hDC; + HWND hWnd; + WNDCLASS wc; + PIXELFORMATDESCRIPTOR pfd; + static HINSTANCE hInstance = 0; + + /* only register the window class once - use hInstance as a flag. */ + if (!hInstance) + { + hInstance = GetModuleHandle(NULL); + wc.style = CS_OWNDC; + wc.lpfnWndProc = (WNDPROC)WindowProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = hInstance; + wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = NULL; + wc.lpszMenuName = NULL; + wc.lpszClassName = TEXT("OpenGL"); + + if (!RegisterClass(&wc)) + { + MessageBox(NULL, TEXT("RegisterClass() failed: Cannot register window class."), + TEXT("Error"), MB_OK); + return NULL; + } + } + + hWnd = CreateWindow(TEXT("OpenGL"), title, + WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, + x, y, width, height, NULL, NULL, hInstance, NULL); + + if (!hWnd) + { + MessageBox(NULL, TEXT("CreateWindow() failed: Cannot create a window."), + TEXT("Error"), MB_OK); + return NULL; + } + + hDC = GetDC(hWnd); + + /* there is no guarantee that the contents of the stack that become + the pfd are zeroed, therefore _make sure_ to clear these bits. */ + memset(&pfd, 0, sizeof(pfd)); + pfd.nSize = sizeof(pfd); + pfd.nVersion = 1; + pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | flags; + pfd.iPixelType = type; + pfd.cColorBits = 32; + + pf = ChoosePixelFormat(hDC, &pfd); + if (!pf) + { + MessageBox(NULL, TEXT("ChoosePixelFormat() failed: Cannot find a suitable pixel format."), + TEXT("Error"), MB_OK); + return 0; + } + + if (!SetPixelFormat(hDC, pf, &pfd)) { + MessageBox(NULL, TEXT("SetPixelFormat() failed: Cannot set format specified."), + TEXT("Error"), MB_OK); + return 0; + } + + DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd); + + ReleaseDC(hWnd, hDC); + + return hWnd; +} + +int APIENTRY +WinMain(HINSTANCE hCurrentInst, HINSTANCE hPreviousInst, LPSTR lpszCmdLine, int nCmdShow) +{ + HDC hDC; /* device context */ + HGLRC hRC; /* opengl context */ + HWND hWnd; /* window */ + MSG msg; /* message */ + + hWnd = CreateOpenGLWindow(TEXT("alphatorus_win32"), 0, 0, 256, 256, PFD_TYPE_RGBA, PFD_DOUBLEBUFFER); + if (!hWnd) + exit(1); + + hDC = GetDC(hWnd); + hRC = wglCreateContext(hDC); + wglMakeCurrent(hDC,hRC); + RegalMakeCurrent(hRC); + + ShowWindow(hWnd, nCmdShow); + + while(GetMessage(&msg, hWnd, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + RegalMakeCurrent(NULL); + ReleaseDC(hWnd, hDC); + wglDeleteContext(hRC); + DestroyWindow(hWnd); + + return (int) msg.wParam; +} diff --git a/include/GL/RegalGLEW.h b/include/GL/RegalGLEW.h index c2b265a..b76d4ce 100644 --- a/include/GL/RegalGLEW.h +++ b/include/GL/RegalGLEW.h @@ -117,13 +117,24 @@ * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t * defined properly. */ -/* */ -#ifndef APIENTRY +/* and */ +#ifdef APIENTRY +# ifndef GLAPIENTRY +# define GLAPIENTRY APIENTRY +# endif +# ifndef GLEWAPIENTRY +# define GLEWAPIENTRY APIENTRY +# endif +#else #define GLEW_APIENTRY_DEFINED -# if defined(__MINGW32__) || defined(__CYGWIN__) -# define APIENTRY __stdcall -# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) +# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) # define APIENTRY __stdcall +# ifndef GLAPIENTRY +# define GLAPIENTRY __stdcall +# endif +# ifndef GLEWAPIENTRY +# define GLEWAPIENTRY __stdcall +# endif # else # define APIENTRY # endif @@ -180,14 +191,6 @@ typedef _W64 int ptrdiff_t; # endif #endif -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -#ifndef GLEWAPIENTRY -#define GLEWAPIENTRY APIENTRY -#endif - /* * GLEW_STATIC is defined for static library. * GLEW_BUILD is defined for building the DLL library. @@ -249,6 +252,8 @@ typedef _W64 int ptrdiff_t; #define GLAPI extern #endif +#endif /* _WIN32 */ + #ifndef GLAPIENTRY #define GLAPIENTRY #endif @@ -257,8 +262,6 @@ typedef _W64 int ptrdiff_t; #define GLEWAPIENTRY #endif -#endif /* _WIN32 */ - #ifdef __cplusplus extern "C" { #endif @@ -2535,7 +2538,7 @@ typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); #define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F #define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam); +typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam); typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); @@ -3803,7 +3806,7 @@ typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum sr #define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 #define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); +typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); @@ -8582,6 +8585,7 @@ typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint v typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor); typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); @@ -8796,6 +8800,7 @@ typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, G #define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) #define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) #define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) +#define glVertexArrayVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribDivisorEXT) #define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) #define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) #define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) @@ -11237,7 +11242,7 @@ typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tl #define GL_DEBUG_SEVERITY_LOW 0x9148 #define GL_DEBUG_OUTPUT 0x92E0 -typedef void (APIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); +typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); @@ -16691,6 +16696,7 @@ GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMult GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT; GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; @@ -18276,8 +18282,6 @@ GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name); #ifdef GLEW_APIENTRY_DEFINED #undef GLEW_APIENTRY_DEFINED #undef APIENTRY -#undef GLAPIENTRY -#define GLAPIENTRY #endif #ifdef GLEW_CALLBACK_DEFINED diff --git a/include/GL/RegalGLXEW.h b/include/GL/RegalGLXEW.h index 5713463..76d50c6 100644 --- a/include/GL/RegalGLXEW.h +++ b/include/GL/RegalGLXEW.h @@ -832,6 +832,38 @@ typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo #endif /* GLX_MESA_pixmap_colormap */ +/* ------------------------ GLX_MESA_query_renderer ------------------------ */ + +#ifndef GLX_MESA_query_renderer +#define GLX_MESA_query_renderer 1 + +#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 +#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 +#define GLX_RENDERER_VERSION_MESA 0x8185 +#define GLX_RENDERER_ACCELERATED_MESA 0x8186 +#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187 +#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188 +#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189 +#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A +#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B +#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C +#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D +#define GLX_RENDERER_ID_MESA 0x818E + +typedef Bool ( * PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int* value); +typedef const char* ( * PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute); +typedef Bool ( * PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display* dpy, int screen, int renderer, int attribute, unsigned int *value); +typedef const char* ( * PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute); + +#define glXQueryCurrentRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererIntegerMESA) +#define glXQueryCurrentRendererStringMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererStringMESA) +#define glXQueryRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryRendererIntegerMESA) +#define glXQueryRendererStringMESA GLXEW_GET_FUN(__glewXQueryRendererStringMESA) + +#define GLXEW_MESA_query_renderer GLXEW_GET_VAR(__GLXEW_MESA_query_renderer) + +#endif /* GLX_MESA_query_renderer */ + /* ------------------------ GLX_MESA_release_buffers ----------------------- */ #ifndef GLX_MESA_release_buffers @@ -889,6 +921,19 @@ typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, #endif /* GLX_NV_copy_image */ +/* ------------------------ GLX_NV_delay_before_swap ----------------------- */ + +#ifndef GLX_NV_delay_before_swap +#define GLX_NV_delay_before_swap 1 + +typedef Bool ( * PFNGLXDELAYBEFORESWAPNVPROC) (Display* dpy, GLXDrawable drawable, GLfloat seconds); + +#define glXDelayBeforeSwapNV GLXEW_GET_FUN(__glewXDelayBeforeSwapNV) + +#define GLXEW_NV_delay_before_swap GLXEW_GET_VAR(__GLXEW_NV_delay_before_swap) + +#endif /* GLX_NV_delay_before_swap */ + /* -------------------------- GLX_NV_float_buffer -------------------------- */ #ifndef GLX_NV_float_buffer @@ -1474,6 +1519,11 @@ GLXEW_FUN_EXPORT PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA; GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA; + GLXEW_FUN_EXPORT PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA; GLXEW_FUN_EXPORT PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA; @@ -1483,6 +1533,8 @@ GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA; GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV; +GLXEW_FUN_EXPORT PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV; + GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV; GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV; @@ -1603,10 +1655,12 @@ GLXEW_VAR_EXPORT GLboolean __GLXEW_INTEL_swap_event; GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_agp_offset; GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer; GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_query_renderer; GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers; GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode; GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control; GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_delay_before_swap; GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer; GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage; GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video; diff --git a/scripts/Dispatch.py b/scripts/Dispatch.py new file mode 100644 index 0000000..4541724 --- /dev/null +++ b/scripts/Dispatch.py @@ -0,0 +1,94 @@ +#!/usr/bin/python -B + +import re +from string import Template +from string import join +from copy import deepcopy + +# +# Apply per-section substitutions +# +# Inputs: +# +# code - the substituted code snippets for each section +# formula - formula dictionary +# subs - substitutions for string.Template.substitute +# + +def substitute(entry, formula, section, subs): + + if not section in formula: + return + + # Turn a string into a list, if necessary + + tmp = formula[section] + if isinstance(tmp,str) or isinstance(tmp,unicode): + tmp = tmp.split('\n') + + entry[section] = [ Template(i).substitute(subs) for i in tmp ] + + + +def dispatchGenCode(func, formulae): + + if formulae==None: + return None + + name = func.name + + # list of function parameter names + + arglist = [ i.name.strip() for i in func.parameters ] + + # arg is a mapping from arg0 to function parameter name... + + arg = {} + for i in range(len(arglist)): + arg['arg%d' % i] = arglist[i] + + # ... and mappings from arg0plus to lists of function parameters + + for i in range(0,5): + label = 'arg%dplus' % i; + if len(arglist) > 0 : + arg[label] = ', '.join(arglist) + arglist.pop(0) + else : + arg[label] = '' + + # Iterate over the formulae + # + # k is the key + # i is the formula + + for k,i in formulae.iteritems(): + + # Cache the compiled regular expressions, as needed + + if 'entries_re' not in i: + i['entries_re'] = [ re.compile( '^%s$' % j ) for j in i['entries'] ] + + # A list of matches containing (match object, formula name, formula) + # Look for matches, ideally only one + + m = [ [j.match(name),k,i] for k,i in formulae.iteritems() for j in i['entries_re'] ] + m = [ j for j in m if j[0] ] + + assert len(m)<=1, 'Ambiguous match (%s) for %s - giving up.'%(', '.join([j[1] for j in m]),name) + + if len(m): + match = m[0][0] + formula = m[0][2] + code = { 'name' : name } + subs = deepcopy(arg) + for l in range( len(match.groups()) + 1): + subs['m%d' % l] = match.group( l ) + subs['name'] = name + substitute( code, formula, 'pre', subs ) + substitute( code, formula, 'post', subs ) + + return code + + return None + diff --git a/scripts/EmuFilter.py b/scripts/EmuFilter.py index 65db020..0b49d27 100644 --- a/scripts/EmuFilter.py +++ b/scripts/EmuFilter.py @@ -33,6 +33,7 @@ formulae = { 'glGenSamplers', # Sampler object emulation 'glGetTexImage', 'glTexImage(1|3)D', + 'glGetTexLevelParameter(f|i)v', 'glBlitFramebufferANGLE' # Emulate glBlitFramebuffer? ], 'impl' : [ @@ -76,7 +77,6 @@ formulae = { 'glEvalMesh(1|2)', 'glEvalPoint(1|2)', 'glGenLists', - 'glGetTexLevelParameter(f|i)v', 'glLineStipple', 'glMap(1|2)(d|f)', 'glMapGrid(1|2)(d|f)', diff --git a/scripts/EmuIff.py b/scripts/EmuIff.py index 6fcb996..fa501f8 100644 --- a/scripts/EmuIff.py +++ b/scripts/EmuIff.py @@ -111,7 +111,15 @@ iffFormulae = { ], }, 'FfnShadow' : { - 'entries' : [ 'gl(MatrixMode|BindProgramPipeline|UseProgram|Enable|Disable)' ], + 'entries' : [ 'gl(MatrixMode|BindProgramPipeline|Enable|Disable)' ], + 'impl' : [ + 'if( ! _context->iff->Shadow${m1}( ${arg0plus} ) ) {', + ' _context->dispatcher.emulation.gl${m1}( ${arg0plus} );', + '}', + ], + }, + 'FfnShadowProgram' : { + 'entries' : [ 'gl(UseProgram)(ObjectARB|)' ], 'impl' : [ 'if( ! _context->iff->Shadow${m1}( ${arg0plus} ) ) {', ' _context->dispatcher.emulation.gl${m1}( ${arg0plus} );', @@ -270,5 +278,45 @@ iffFormulae = { 'CreateShader' : { 'entries' : [ 'glCreateShader(ObjectARB)?', ], 'impl' : [ 'return _context->iff->CreateShader( _context, ${arg0} );', ], - } + }, + 'Uniform' : { + 'entries' : [ 'glUniform(1|2|3|4)(d|f|i|ui)(ARB|)', ], + 'impl' : [ + 'if( _context->iff->currinst ) {', + ' _context->iff->Uniform( _context, ${m1}, ${arg0}, 1, ${arg1plus} );', + '} else {', + ' _context->dispatcher.emulation.${m0}( ${arg0plus} );', + '}', + ], + }, + 'Uniformv' : { + 'entries' : [ 'glUniform(1|2|3|4)(d|f|i|ui)v(ARB|)', ], + 'impl' : [ + 'if( _context->iff->currinst ) {', + ' _context->iff->Uniform( _context, ${m1}, ${arg0plus} );', + '} else {', + ' _context->dispatcher.emulation.${m0}( ${arg0plus} );', + '}', + ], + }, + 'UniformMatrix' : { + 'entries' : [ 'glUniformMatrix(2|3|4)(d|f)v(ARB|)', ], + 'impl' : [ + 'if( _context->iff->currinst ) {', + ' _context->iff->UniformMatrix( _context, ${m1}, ${m1}, ${arg0plus} );', + '} else {', + ' _context->dispatcher.emulation.${m0}( ${arg0plus} );', + '}', + ], + }, + 'UniformMatrixNonSquare' : { + 'entries' : [ 'glUniformMatrix(2|3|4)x(2|3|4)(d|f)v(ARB|)', ], + 'impl' : [ + 'if( _context->iff->currinst ) {', + ' _context->iff->UniformMatrix( _context, ${m1}, ${m2}, ${arg0plus} );', + '} else {', + ' _context->dispatcher.emulation.${m0}( ${arg0plus} );', + '}', + ], + }, } diff --git a/scripts/EmuInit.py b/scripts/EmuInit.py index 55b9760..03badd1 100644 --- a/scripts/EmuInit.py +++ b/scripts/EmuInit.py @@ -52,6 +52,10 @@ if (ret) { Init::init(); Init::makeCurrent(RegalSystemContext(hglrc)); + RegalContext *_context = REGAL_GET_CONTEXT(); + RegalAssert(_context); + _context->hglrc = hglrc; + _context->hdc = hDC; }''' }, diff --git a/scripts/EmuMarker.py b/scripts/EmuMarker.py index 3c4a1cb..7c52e6b 100644 --- a/scripts/EmuMarker.py +++ b/scripts/EmuMarker.py @@ -10,7 +10,7 @@ formulaeGlobal = { 'Insert' : { 'entries' : [ 'glInsertEventMarkerEXT' ], - 'cond' : '_context->info->gl_ext_debug_marker', + 'cond' : 'true || _context->info->gl_ext_debug_marker', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringEXT(length,marker,maxLength);''', @@ -22,7 +22,7 @@ RegalAssert(_context->info);''' 'Push' : { 'entries' : [ 'glPushGroupMarkerEXT' ], - 'cond' : '_context->info->gl_ext_debug_marker', + 'cond' : 'true || _context->info->gl_ext_debug_marker', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringEXT(length,marker,maxLength);''', @@ -34,7 +34,7 @@ if (_context->marker) 'Pop' : { 'entries' : [ 'glPopGroupMarkerEXT' ], - 'cond' : '_context->info->gl_ext_debug_marker', + 'cond' : 'true || _context->info->gl_ext_debug_marker', 'prefix' : ''' if (_context && _context->marker) _context->marker->PopGroupMarker(*_context);''', @@ -50,7 +50,7 @@ if (_context && _context->marker) 'KHR_debug Push' : { 'entries' : [ 'glPushDebugGroup' ], - 'cond' : '_context->info->gl_khr_debug', + 'cond' : 'true || _context->info->gl_khr_debug', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringKHR(length,message,maxLength);''', @@ -60,7 +60,7 @@ const std::string _message = Marker::toStringKHR(length,message,maxLength);''', }, 'KHR_debug Pop' : { 'entries' : [ 'glPopDebugGroup' ], - 'cond' : '_context->info->gl_khr_debug', + 'cond' : 'true || _context->info->gl_khr_debug', 'prefix' : [ 'if (_context->marker)', ' _context->marker->PopGroupMarker(*_context);' ], 'impl' : [ 'RegalAssert(_context->info);' ] @@ -68,7 +68,7 @@ const std::string _message = Marker::toStringKHR(length,message,maxLength);''', 'KHR_debug Insert' : { 'entries' : [ 'glDebugMessageInsert' ], - 'cond' : '_context->info->gl_khr_debug', + 'cond' : 'true || _context->info->gl_khr_debug', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringKHR(length,buf,maxLength);''', @@ -84,7 +84,7 @@ const std::string _message = Marker::toStringKHR(length,buf,maxLength);''', 'ARB_debug_output Insert' : { 'entries' : [ 'glDebugMessageInsertARB' ], - 'cond' : '_context->info->gl_arb_debug_output', + 'cond' : 'true || _context->info->gl_arb_debug_output', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringEXT(length,buf,maxLength);''', @@ -100,7 +100,7 @@ const std::string _message = Marker::toStringEXT(length,buf,maxLength);''', 'AMD_debug_output Insert' : { 'entries' : [ 'glDebugMessageInsertAMD' ], - 'cond' : '_context->info->gl_amd_debug_output', + 'cond' : 'true || _context->info->gl_amd_debug_output', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringEXT(length,buf,maxLength);''', @@ -113,7 +113,7 @@ const std::string _message = Marker::toStringEXT(length,buf,maxLength);''', 'GL_GREMEDY_string_marker' : { 'entries' : [ 'glStringMarkerGREMEDY' ], - 'cond' : '_context->info->gl_gremedy_string_marker', + 'cond' : 'true || _context->info->gl_gremedy_string_marker', 'prefix' : ''' const GLsizei maxLength = _context && _context->emuInfo ? _context->emuInfo->gl_max_debug_message_length : 1024; const std::string _message = Marker::toStringEXT(len,static_cast(string),maxLength);''', diff --git a/scripts/EmuPpa.py b/scripts/EmuPpa.py index 54b245d..fbf5532 100644 --- a/scripts/EmuPpa.py +++ b/scripts/EmuPpa.py @@ -49,6 +49,14 @@ ppaFormulae = { '}', ], }, + 'GetTexParam' : { + 'entries' : [ 'glGet(Tex|Texture)(Level|)Parameter(f|i)v(EXT|)' ], + 'impl' : [ + 'if( ! _context->ppa->glGet${m1}${m2}Parameter( _context, ${arg0plus} ) ) {', + ' _context->dispatcher.emulation.glGet${m1}${m2}Parameter${m3}v${m4}( ${arg0plus} );', + '}', + ], + }, 'IsEnabled' : { 'entries' : [ 'glIsEnabled(i|)' ], 'impl' : [ diff --git a/scripts/EmuQuads.py b/scripts/EmuQuads.py index 6c848b0..1cddc3c 100644 --- a/scripts/EmuQuads.py +++ b/scripts/EmuQuads.py @@ -21,6 +21,10 @@ quadsFormulae = { 'entries' : [ 'glProvokingVertex(EXT|)' ], 'prefix' : [ '_context->quads->glProvokingVertex( ${arg0plus} );', ], }, + 'BindBuffer' : { + 'entries' : [ 'glBindBuffer(EXT|)' ], + 'prefix' : [ '_context->quads->glBindBuffer( ${arg0plus} );', ], + }, 'quads' : { 'entries' : [ 'glDrawArrays(EXT|)' ], 'impl' : [ diff --git a/scripts/Export.py b/scripts/Export.py index a180806..62ddccb 100755 --- a/scripts/Export.py +++ b/scripts/Export.py @@ -45,6 +45,7 @@ from RegalDispatchEmu import * from RegalDispatchGMock import * from RegalDispatchGLX import * from RegalDispatchLog import * +from RegalDispatchHttp import * from RegalDispatchLoader import * from RegalDispatchMissing import * from RegalDispatchPpapi import * @@ -225,6 +226,7 @@ def generate(apis, args): generateSystemHeader(apis, args) generateEmuSource( apis, args ) generateDispatchLog( apis, args ) + generateDispatchHttp( apis, args ) generateDispatchCode( apis, args ) generateErrorSource( apis, args ) generateDebugSource( apis, args ) diff --git a/scripts/api/ApiRegal.py b/scripts/api/ApiRegal.py index ebcfa4c..8856806 100755 --- a/scripts/api/ApiRegal.py +++ b/scripts/api/ApiRegal.py @@ -176,7 +176,7 @@ def cCodeParameter(function, parameter): # ret - return value # -def logFunction(function, trace = 'ITrace', input = True, output = False, ret = False): +def logFunction(function, trace = 'ITrace', input = True, output = False, ret = False, paramsOnly = False): c = '' args = [] for i in function.parameters: @@ -202,14 +202,20 @@ def logFunction(function, trace = 'ITrace', input = True, output = False, ret = args = args[:14] if len(args): - c += '%s("%s","(", ' % (trace, function.name) + if paramsOnly: + c += '%s("(", ' % trace + else: + c += '%s("%s","(", ' % (trace, function.name) c += ', ", ", '.join(args) c += ', ")"' if r != None: c += ', " returned ", %s'%(r) c += ');' else: - c += '%s("%s","()"' % (trace, function.name) + if paramsOnly: + c += '%s("()"' % trace + else: + c += '%s("%s","()"' % (trace, function.name) if r != None: c += ', " returned ", %s'%(r) c += ');' diff --git a/scripts/js/jquery-ui.min.css b/scripts/js/jquery-ui.min.css new file mode 100644 index 0000000..038ea18 --- /dev/null +++ b/scripts/js/jquery-ui.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=10px&bgColorHeader=3a8104&bgTextureHeader=highlight_soft&bgImgOpacityHeader=33&borderColorHeader=3f7506&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=285c00&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=72b42d&fcContent=ffffff&iconColorContent=72b42d&bgColorDefault=4ca20b&bgTextureDefault=highlight_soft&bgImgOpacityDefault=60&borderColorDefault=45930b&fcDefault=ffffff&iconColorDefault=ffffff&bgColorHover=4eb305&bgTextureHover=highlight_soft&bgImgOpacityHover=50&borderColorHover=8bd83b&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=285c00&bgTextureActive=highlight_hard&bgImgOpacityActive=30&borderColorActive=72b42d&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fbf5d0&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=4eb305&bgColorError=ffdc2e&bgTextureError=diagonals_thick&bgImgOpacityError=95&borderColorError=fad000&fcError=2b2b2b&iconColorError=cd0a0a&bgColorOverlay=444444&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=15&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=diagonals_small&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=0px&offsetTopShadow=4px&offsetLeftShadow=4px&cornerRadiusShadow=4px +* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #72b42d;background:#285c00 url(images/ui-bg_inset-soft_10_285c00_1x100.png) 50% bottom repeat-x;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #3f7506;background:#3a8104 url(images/ui-bg_highlight-soft_33_3a8104_1x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #45930b;background:#4ca20b url(images/ui-bg_highlight-soft_60_4ca20b_1x100.png) 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #8bd83b;background:#4eb305 url(images/ui-bg_highlight-soft_50_4eb305_1x100.png) 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #72b42d;background:#285c00 url(images/ui-bg_highlight-hard_30_285c00_1x100.png) 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #f9dd34;background:#fbf5d0 url(images/ui-bg_glass_55_fbf5d0_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #fad000;background:#ffdc2e url(images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png) 50% 50% repeat;color:#2b2b2b}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#2b2b2b}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#2b2b2b}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_72b42d_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_4eb305_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:10px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:10px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:10px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:10px}.ui-widget-overlay{background:#444 url(images/ui-bg_diagonals-thick_15_444444_40x40.png) 50% 50% repeat;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:4px 0 0 4px;padding:0;background:#aaa url(images/ui-bg_diagonals-small_0_aaaaaa_40x40.png) 50% 50% repeat;opacity:.3;filter:Alpha(Opacity=30);border-radius:4px} \ No newline at end of file diff --git a/scripts/js/jquery-ui.min.js b/scripts/js/jquery-ui.min.js new file mode 100644 index 0000000..82bbb67 --- /dev/null +++ b/scripts/js/jquery-ui.min.js @@ -0,0 +1,12 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ +(function(t,e){function i(e,i){var n,o,a,r=e.nodeName.toLowerCase();return"area"===r?(n=e.parentNode,o=n.name,e.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap=#"+o+"]")[0],!!a&&s(a)):!1):(/input|select|textarea|button|object/.test(r)?!e.disabled:"a"===r?e.href||i:i)&&s(e)}function s(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return"hidden"===t.css(this,"visibility")}).length}var n=0,o=/^ui-id-\d+$/;t.ui=t.ui||{},t.extend(t.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({focus:function(e){return function(i,s){return"number"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),s&&s.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),scrollParent:function(){var e;return e=t.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(t.css(this,"position"))&&/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!e.length?t(document):e},zIndex:function(i){if(i!==e)return this.css("zIndex",i);if(this.length)for(var s,n,o=t(this[0]);o.length&&o[0]!==document;){if(s=o.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(n=parseInt(o.css("zIndex"),10),!isNaN(n)&&0!==n))return n;o=o.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){o.test(this.id)&&t(this).removeAttr("id")})}}),t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])},focusable:function(e){return i(e,!isNaN(t.attr(e,"tabindex")))},tabbable:function(e){var s=t.attr(e,"tabindex"),n=isNaN(s);return(n||s>=0)&&i(e,!n)}}),t("").outerWidth(1).jquery||t.each(["Width","Height"],function(i,s){function n(e,i,s,n){return t.each(o,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),n&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var o="Width"===s?["Left","Right"]:["Top","Bottom"],a=s.toLowerCase(),r={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+s]=function(i){return i===e?r["inner"+s].call(this):this.each(function(){t(this).css(a,n(this,i)+"px")})},t.fn["outer"+s]=function(e,i){return"number"!=typeof e?r["outer"+s].call(this,e):this.each(function(){t(this).css(a,n(this,e,!0,i)+"px")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t("").data("a-b","a").removeData("a-b").data("a-b")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),t.support.selectstart="onselectstart"in document.createElement("div"),t.fn.extend({disableSelection:function(){return this.bind((t.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(t){t.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),t.extend(t.ui,{plugin:{add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i){var s,n=t.plugins[e];if(n&&t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType)for(s=0;n.length>s;s++)t.options[n[s][0]]&&n[s][1].apply(t.element,i)}},hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)}})})(jQuery),function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),s===e)return o[i]===e?null:o[i];o[i]=s}else{if(s===e)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})}(jQuery),function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,o="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function(t){t.widget("ui.draggable",t.ui.mouse,{version:"1.10.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(t(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){t("
").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(t(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_mouseDrag:function(e,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"original"!==this.options.helper||t.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1):!1},_mouseUp:function(e){return t("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.element.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;return n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===n.containment?(this.containment=[0,0,t(document).width()-this.helperProportions.width-this.margins.left,(t(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):n.containment.constructor===Array?(this.containment=n.containment,undefined):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:n.scrollTop(),left:n.scrollLeft()}),{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*s}},_generatePosition:function(e){var i,s,n,o,a=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=e.pageX,l=e.pageY;return this.offset.scroll||(this.offset.scroll={top:r.scrollTop(),left:r.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s]),"drag"===e&&(this.positionAbs=this._convertPositionTo("absolute")),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i){var s=t(this).data("ui-draggable"),n=s.options,o=t.extend({},i,{item:s.element});s.sortables=[],t(n.connectToSortable).each(function(){var i=t.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",e,o))})},stop:function(e,i){var s=t(this).data("ui-draggable"),n=t.extend({},i,{item:s.element});t.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(e),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",e,n))})},drag:function(e,i){var s=t(this).data("ui-draggable"),n=this;t.each(s.sortables,function(){var o=!1,a=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,t.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==a&&this.instance._intersectsWith(this.instance.containerCache)&&t.contains(a.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=t(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},e.target=this.instance.currentItem[0],this.instance._mouseCapture(e,!0),this.instance._mouseStart(e,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",e),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(e)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",e,this.instance._uiHash(this.instance)),this.instance._mouseStop(e,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",e),s.dropped=!1)})}}),t.ui.plugin.add("draggable","cursor",{start:function(){var e=t("body"),i=t(this).data("ui-draggable").options;e.css("cursor")&&(i._cursor=e.css("cursor")),e.css("cursor",i.cursor)},stop:function(){var e=t(this).data("ui-draggable").options;e._cursor&&t("body").css("cursor",e._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(){var e=t(this).data("ui-draggable");e.scrollParent[0]!==document&&"HTML"!==e.scrollParent[0].tagName&&(e.overflowOffset=e.scrollParent.offset())},drag:function(e){var i=t(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-e.pageY=0;u--)r=p.snapElements[u].left,h=r+p.snapElements[u].width,l=p.snapElements[u].top,c=l+p.snapElements[u].height,r-g>v||m>h+g||l-g>b||_>c+g||!t.contains(p.snapElements[u].item.ownerDocument,p.snapElements[u].item)?(p.snapElements[u].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=!1):("inner"!==f.snapMode&&(s=g>=Math.abs(l-b),n=g>=Math.abs(c-_),o=g>=Math.abs(r-v),a=g>=Math.abs(h-m),s&&(i.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h}).left-p.margins.left)),d=s||n||o||a,"outer"!==f.snapMode&&(s=g>=Math.abs(l-_),n=g>=Math.abs(c-b),o=g>=Math.abs(r-m),a=g>=Math.abs(h-v),s&&(i.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c-p.helperProportions.height,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[u].snapping&&(s||n||o||a||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=s||n||o||a||d)}}),t.ui.plugin.add("draggable","stack",{start:function(){var e,i=this.data("ui-draggable").options,s=t.makeArray(t(i.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});s.length&&(e=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each(function(i){t(this).css("zIndex",e+i)}),this.css("zIndex",e+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._zIndex&&t(i.helper).css("zIndex",s._zIndex)}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}t.widget("ui.droppable",{version:"1.10.3",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(i)?i:function(t){return t.is(i) +},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},t.ui.ddmanager.droppables[e.scope]=t.ui.ddmanager.droppables[e.scope]||[],t.ui.ddmanager.droppables[e.scope].push(this),e.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var e=0,i=t.ui.ddmanager.droppables[this.options.scope];i.length>e;e++)i[e]===this&&i.splice(e,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,i){"accept"===e&&(this.accept=t.isFunction(i)?i:function(t){return t.is(i)}),t.Widget.prototype._setOption.apply(this,arguments)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=t.data(this,"ui-droppable");return e.options.greedy&&!e.options.disabled&&e.options.scope===s.options.scope&&e.accept.call(e.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(e,{offset:e.element.offset()}),e.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(t,i,s){if(!i.offset)return!1;var n,o,a=(t.positionAbs||t.position.absolute).left,r=a+t.helperProportions.width,h=(t.positionAbs||t.position.absolute).top,l=h+t.helperProportions.height,c=i.offset.left,u=c+i.proportions.width,d=i.offset.top,p=d+i.proportions.height;switch(s){case"fit":return a>=c&&u>=r&&h>=d&&p>=l;case"intersect":return a+t.helperProportions.width/2>c&&u>r-t.helperProportions.width/2&&h+t.helperProportions.height/2>d&&p>l-t.helperProportions.height/2;case"pointer":return n=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,o=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(o,d,i.proportions.height)&&e(n,c,i.proportions.width);case"touch":return(h>=d&&p>=h||l>=d&&p>=l||d>h&&l>p)&&(a>=c&&u>=a||r>=c&&u>=r||c>a&&r>u);default:return!1}},t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions.height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions={width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight})}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=t.ui.intersect(e,this,this.options.tolerance),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t.data(this,"ui-droppable").options.scope===n}),o.length&&(s=t.data(o[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}}}(jQuery),function(t){function e(t){return parseInt(t,10)||0}function i(t){return!isNaN(parseInt(t,10))}t.widget("ui.resizable",t.ui.mouse,{version:"1.10.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var e,i,s,n,o,a=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),o="ui-resizable-"+s,n=t("
"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=t(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),t(this.handles[i]).length},this._renderAxis(this.element),this._handles=t(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),a._handles.show())}).mouseleave(function(){r.disabled||a.resizing||(t(this).addClass("ui-resizable-autohide"),a._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,o,a=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=e(this.helper.css("left")),n=e(this.helper.css("top")),a.containment&&(s+=t(a.containment).scrollLeft()||0,n+=t(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===o?this.axis+"-resize":o),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var i,s=this.helper,n={},o=this.originalMousePosition,a=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,c=this.size.height,u=e.pageX-o.left||0,d=e.pageY-o.top||0,p=this._change[a];return p?(i=p.apply(this,[e,u,d]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==c&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(n)||this._trigger("resize",e,this.ui()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&t.ui.hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,h=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(t){var e,s,n,o,a,r=this.options;a={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||t)&&(e=a.minHeight*this.aspectRatio,n=a.minWidth/this.aspectRatio,s=a.maxHeight*this.aspectRatio,o=a.maxWidth/this.aspectRatio,e>a.minWidth&&(a.minWidth=e),n>a.minHeight&&(a.minHeight=n),a.maxWidth>s&&(a.maxWidth=s),a.maxHeight>o&&(a.maxHeight=o)),this._vBoundaries=a},_updateCache:function(t){this.offset=this.helper.offset(),i(t.left)&&(this.position.left=t.left),i(t.top)&&(this.position.top=t.top),i(t.height)&&(this.size.height=t.height),i(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,s=this.size,n=this.axis;return i(t.height)?t.width=t.height*this.aspectRatio:i(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(s.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(s.height-t.height),t.left=e.left+(s.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,s=this.axis,n=i(t.width)&&e.maxWidth&&e.maxWidtht.width,r=i(t.height)&&e.minHeight&&e.minHeight>t.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(s),u=/nw|ne|n/.test(s);return a&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),o&&(t.height=e.maxHeight),a&&c&&(t.left=h-e.minWidth),n&&c&&(t.left=h-e.maxWidth),r&&u&&(t.top=l-e.minHeight),o&&u&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var t,e,i,s,n,o=this.helper||this.element;for(t=0;this._proportionallyResizeElements.length>t;t++){if(n=this._proportionallyResizeElements[t],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],e=0;i.length>e;e++)this.borderDif[e]=(parseInt(i[e],10)||0)+(parseInt(s[e],10)||0);n.css({height:o.height()-this.borderDif[0]-this.borderDif[2]||0,width:o.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&t.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,c=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,o,a,r,h,l=t(this).data("ui-resizable"),c=l.options,u=l.element,d=c.containment,p=d instanceof t?d.get(0):/parent/.test(d)?u.parent().get(0):d;p&&(l.containerElement=t(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(i=t(p),s=[],t(["Top","Right","Left","Bottom"]).each(function(t,n){s[t]=e(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,o=l.containerSize.height,a=l.containerSize.width,r=t.ui.hasScroll(p,"left")?p.scrollWidth:a,h=t.ui.hasScroll(p)?p.scrollHeight:o,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(e){var i,s,n,o,a=t(this).data("ui-resizable"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio),a.position.top=a._helper?h.top:0),a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top,i=Math.abs((a._helper?a.offset.left-u.left:a.offset.left-u.left)+a.sizeDiff.width),s=Math.abs((a._helper?a.offset.top-u.top:a.offset.top-h.top)+a.sizeDiff.height),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o&&(i-=a.parentData.left),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=function(e){t(e).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):t.each(i.alsoResize,function(t){s(t)})},resize:function(e,i){var s=t(this).data("ui-resizable"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0},h=function(e,s){t(e).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),o={},a=s&&s.length?s:e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(a,function(t,e){var i=(n[e]||0)+(r[e]||0);i&&i>=0&&(o[e]=i||null)}),e.css(o)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):t.each(n.alsoResize,function(t,e){h(t,e)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).data("ui-resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).data("ui-resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&d>i.maxWidth,g=i.maxHeight&&p>i.maxHeight,m=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),v&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):(e.size.width=d,e.size.height=p,e.position.top=o.top-u,e.position.left=o.left-c)}})}(jQuery),function(t){t.widget("ui.selectable",t.ui.mouse,{version:"1.10.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass("ui-selectee"),e.each(function(){var e=t(this),i=e.offset();t.data(this,"selectable-item",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=t("
")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||o>i.right||i.top>h||a>i.bottom):"fit"===n.tolerance&&(l=i.left>o&&r>i.right&&i.top>a&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):undefined}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break; +this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,o=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return n?this.floating?a&&"right"===a||"down"===o?2:1:o&&("down"===o?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return this.floating&&o?"right"===o&&s||"left"===o&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var i,s,n,o,a=[],r=[],h=this._connectWith();if(h&&e)for(i=h.length-1;i>=0;i--)for(n=t(h[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&r.push([t.isFunction(o.options.items)?o.options.items.call(o.element):t(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(r.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=r.length-1;i>=0;i--)r[i][0].each(function(){a.push(this)});return t(a)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?e.currentItem.children().each(function(){t(" ",e.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,o,a,r,h,l,c,u,d,p,f=null,g=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],g=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[g].containerCache.over||(this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1);else{for(a=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],o=this.items.length-1;o>=0;o--)t.contains(this.containers[g].element[0],this.items[o].item[0])&&this.items[o].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[o].top,this.items[o].height))&&(u=this.items[o].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[o][l]-c)&&(d=!0,u+=this.items[o][l]),a>Math.abs(u-c)&&(a=Math.abs(u-c),r=this.items[o],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[g])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[g].element,!0),this._trigger("change",s,this._uiHash()),this.containers[g]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[g],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)e||s.push(function(t){return function(e){t._trigger("deactivate",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(function(t){return function(e){t._trigger("out",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})}(jQuery),function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function s(e,i){var s,n,a={};for(s in i)n=i[s],e[s]!==n&&(o[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(a[s]=n));return a}var n=["add","remove","toggle"],o={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var e=t(this);return{el:e,start:i(this)}}),o=function(){t.each(n,function(t,i){e[i]&&a[i+"Class"](e[i])})},o(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,o,a,r){return"boolean"==typeof n||n===e?o?t.effects.animateClass.call(this,n?{add:s}:{remove:s},o,a,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,o,a)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.3",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,o;for(o=0;s.length>o;o++)null!==s[o]&&(n=t.data(i+s[o]),n===e&&(n=""),t.css(s[o],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(o)&&o.call(n[0]),t.isFunction(e)&&e()}var n=t(this),o=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):a.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,o=i.queue,a=t.effects.effect[i.effect];return t.fx.off||!a?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):o===!1?this.each(e):this.queue(o||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()}(jQuery),function(t){var e=0,i={},s={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",s.height=s.paddingTop=s.paddingBottom=s.borderTopWidth=s.borderBottomWidth="show",t.widget("ui.accordion",{version:"1.10.3",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t(),content:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons")) +},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),undefined):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e),undefined)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),o.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,s=this.options,n=s.heightStyle,o=this.element.parent(),a=this.accordionId="ui-accordion-"+(this.element.attr("id")||++e);this.active=this._findActive(s.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(e){var i=t(this),s=i.attr("id"),n=i.next(),o=n.attr("id");s||(s=a+"-header-"+e,i.attr("id",s)),o||(o=a+"-panel-"+e,n.attr("id",o)),i.attr("aria-controls",o),n.attr("aria-labelledby",s)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(s.event),"fill"===n?(i=o.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(i=0,this.headers.next().each(function(){i=Math.max(i,t(this).css("height","").height())}).height(i))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n[0]===s[0],a=o&&i.collapsible,r=a?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:a?t():n,newPanel:r};e.preventDefault(),o&&!i.collapsible||this._trigger("beforeActivate",e,l)===!1||(i.active=a?!1:this.headers.index(n),this.active=o?t():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),o||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-expanded":"false","aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr("tabIndex",-1):i.length&&this.headers.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(t,e,n){var o,a,r,h=this,l=0,c=t.length&&(!e.length||t.index()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o?!0:a?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,undefined;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:case o.NUMPAD_ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),undefined):(this._searchTimeout(t),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(t),this._change(t),undefined)}}),this._initSource(),this.menu=t("
    ").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(".ui-menu-item").length||this._delay(function(){var e=this;this.document.one("mousedown",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",e,{item:s})?e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t("",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e||(e=this.element.closest(".ui-front")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[t](e),undefined):(this.search(null,e),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.text(e))}})}(jQuery),function(t){var e,i,s,n,o="ui-button ui-widget ui-state-default ui-corner-all",a="ui-state-hover ui-state-active ",r="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",h=function(){var e=t(this);setTimeout(function(){e.find(":ui-button").button("refresh")},1)},l=function(e){var i=e.name,s=e.form,n=t([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?t(s).find("[name='"+i+"']"):t("[name='"+i+"']",e.ownerDocument).filter(function(){return!this.form})),n};t.widget("ui.button",{version:"1.10.3",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.click(function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,a,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,o,r){var h,l,c,u,d,p=this._dialogInst;return p||(this.uuid+=1,h="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.keydown(this._doKeyDown),t("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},t.data(this._dialogInput[0],a,p)),n(p.settings,o||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=r?r.length?r:[r.pageX,r.pageY]:null,this._pos||(l=document.documentElement.clientWidth,c=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+u,c/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],a,p),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,a);s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,a),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,a)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,s,o){var a,r,h,l,c=this._getInst(i);return 2===arguments.length&&"string"==typeof s?"defaults"===s?t.extend({},t.datepicker._defaults):c?"all"===s?t.extend({},c.settings):this._get(c,s):null:(a=s||{},"string"==typeof s&&(a={},a[s]=o),c&&(this._curInst===c&&this._hideDatepicker(),r=this._getDateDatepicker(i,!0),h=this._getMinMaxDate(c,"min"),l=this._getMinMaxDate(c,"max"),n(c.settings,a),null!==h&&a.dateFormat!==e&&a.minDate===e&&(c.settings.minDate=this._formatDate(c,h)),null!==l&&a.dateFormat!==e&&a.maxDate===e&&(c.settings.maxDate=this._formatDate(c,l)),"disabled"in a&&(a.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(t(i),c),this._autoSize(c),this._setDate(c,r),this._updateAlternate(c),this._updateDatepicker(c)),e)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1; +case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(i){var s,n,o=t.datepicker._getInst(i.target);return t.datepicker._get(o,"constrainInput")?(s=t.datepicker._possibleChars(t.datepicker._get(o,"dateFormat")),n=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">n||!s||s.indexOf(n)>-1):e},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var i,s,o,a,r,h,l;i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),s=t.datepicker._get(i,"beforeShow"),o=s?s.apply(e,[e,i]):{},o!==!1&&(n(i.settings,o),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),a=!1,t(e).parents().each(function(){return a|="fixed"===t(this).css("position"),!a}),r={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(i),r=t.datepicker._checkOffset(i,r,a),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":a?"fixed":"absolute",display:"none",left:r.left+"px",top:r.top+"px"}),i.inline||(h=t.datepicker._get(i,"showAnim"),l=t.datepicker._get(i,"duration"),i.dpDiv.zIndex(t(e).zIndex()+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?i.dpDiv.show(h,t.datepicker._get(i,"showOptions"),l):i.dpDiv[h||"show"](h?l:null),t.datepicker._shouldFocusInput(i)&&i.input.focus(),t.datepicker._curInst=i))}},_updateDatepicker:function(e){this.maxRows=4,o=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,s=this._getNumberOfMonths(e),n=s[1],a=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.focus(),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,r=this._curInst;!r||e&&r!==t.data(e,a)||this._datepickerShowing&&(i=this._get(r,"showAnim"),s=this._get(r,"duration"),n=function(){t.datepicker._tidyDialog(r)},t.effects&&(t.effects.effect[i]||t.effects[i])?r.dpDiv.hide(i,t.datepicker._get(r,"showOptions"),s,n):r.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(r,"onClose"),o&&o.apply(r.input?r.input[0]:null,[r.input?r.input.val():"",r]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).each(function(){t(this).val(n)}))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(i,s,n){if(null==i||null==s)throw"Invalid arguments";if(s="object"==typeof s?""+s:s+"",""===s)return null;var o,a,r,h,l=0,c=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),d=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,p=(n?n.dayNames:null)||this._defaults.dayNames,f=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,g=(n?n.monthNames:null)||this._defaults.monthNames,m=-1,v=-1,_=-1,b=-1,y=!1,w=function(t){var e=i.length>o+1&&i.charAt(o+1)===t;return e&&o++,e},k=function(t){var e=w(t),i="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n=RegExp("^\\d{1,"+i+"}"),o=s.substring(l).match(n);if(!o)throw"Missing number at position "+l;return l+=o[0].length,parseInt(o[0],10)},x=function(i,n,o){var a=-1,r=t.map(w(i)?o:n,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(r,function(t,i){var n=i[1];return s.substr(l,n.length).toLowerCase()===n.toLowerCase()?(a=i[0],l+=n.length,!1):e}),-1!==a)return a+1;throw"Unknown name at position "+l},D=function(){if(s.charAt(l)!==i.charAt(o))throw"Unexpected literal at position "+l;l++};for(o=0;i.length>o;o++)if(y)"'"!==i.charAt(o)||w("'")?D():y=!1;else switch(i.charAt(o)){case"d":_=k("d");break;case"D":x("D",d,p);break;case"o":b=k("o");break;case"m":v=k("m");break;case"M":v=x("M",f,g);break;case"y":m=k("y");break;case"@":h=new Date(k("@")),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"!":h=new Date((k("!")-this._ticksTo1970)/1e4),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"'":w("'")?D():y=!0;break;default:D()}if(s.length>l&&(r=s.substr(l),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),b>-1)for(v=1,_=b;;){if(a=this._getDaysInMonth(m,v-1),a>=_)break;v++,_-=a}if(h=this._daylightSavingAdjust(new Date(m,v-1,_)),h.getFullYear()!==m||h.getMonth()+1!==v||h.getDate()!==_)throw"Invalid date";return h},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getYear()%100?"0":"")+e.getYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,i){return t.settings[i]!==e?t.settings[i]:this._defaults[i]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,v,_,b,y,w,k,x,D,C,I,P,T,M,S,z,A,H,E,N,W,O,F,R,L=new Date,j=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(t,"isRTL"),B=this._get(t,"showButtonPanel"),V=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),q=this._get(t,"showCurrentAtPos"),Q=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],$=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-q,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=G&&G>e?G:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-Q,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?""+i+"":V?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+Q,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":V?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?$:j,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=B?"
    "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
    ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),v=this._get(t,"showOtherMonths"),_=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,D=0;U[1]>D;D++){if(C=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",P="",X){if(P+="
    "}for(P+="
    "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,G,J,k>0||D>0,f,g)+"
    "+"",T=u?"":"",w=0;7>w;w++)M=(w+c)%7,T+="=5?" class='ui-datepicker-week-end'":"")+">"+""+p[M]+"";for(P+=T+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),z=(this._getFirstDayOfMonth(te,Z)-c+7)%7,A=Math.ceil((z+S)/7),H=X?this.maxRows>A?this.maxRows:A:A,this.maxRows=H,E=this._daylightSavingAdjust(new Date(te,Z,1-z)),N=0;H>N;N++){for(P+="",W=u?"":"",w=0;7>w;w++)O=m?m.apply(t.input?t.input[0]:null,[E]):[!0,""],F=E.getMonth()!==Z,R=F&&!_||!O[0]||G&&G>E||J&&E>J,W+="",E.setDate(E.getDate()+1),E=this._daylightSavingAdjust(E);P+=W+""}Z++,Z>11&&(Z=0,te++),P+="
    "+this._get(t,"weekHeader")+"
    "+this._get(t,"calculateWeek")(E)+""+(F&&!v?" ":R?""+E.getDate()+"":""+E.getDate()+"")+"
    "+(X?"
    "+(U[0]>0&&D===U[1]-1?"
    ":""):""),x+=P}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),v=this._get(t,"changeYear"),_=this._get(t,"showMonthAfterYear"),b="
    ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(_||(b+=y+(!o&&m&&v?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!v)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),_&&(b+=(!o&&m&&v?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.drawYear+("Y"===i?e:0),n=t.drawMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).mousedown(t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new i,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.10.3"}(jQuery),function(t){var e={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};t.widget("ui.dialog",{version:"1.10.3",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||t(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!e&&this._trigger("focus",t),i},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=t(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var t=this.element.find("[autofocus]");t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).focus()},_keepFocus:function(e){function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
    ").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),undefined;if(e.keyCode===t.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(n.focus(1),e.preventDefault()):(s.focus(1),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
    ").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=t("").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title||t.html(" "),t.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=t("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
    ").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(e.element[0],arguments)},o={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,t("",s).button(o).appendTo(e.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){t(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){s.position=[o.position.left-i.document.scrollLeft(),o.position.top-i.document.scrollTop()],t(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size} +}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){t(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){s.height=t(this).height(),s.width=t(this).width(),t(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(s){var n=this,o=!1,a={};t.each(s,function(t,s){n._setOption(t,s),t in e&&(o=!0),t in i&&(a[t]=s)}),o&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",a)},_setOption:function(t,e){var i,s,n=this.uiDialog;"dialogClass"===t&&n.removeClass(this.options.dialogClass).addClass(e),"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:""+e}),"draggable"===t&&(i=n.is(":data(ui-draggable)"),i&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&(s=n.is(":data(ui-resizable)"),s&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||e===!1||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
    ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=this,i=this.widgetFullName;t.ui.dialog.overlayInstances||this._delay(function(){t.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(s){e._allowInteraction(s)||(s.preventDefault(),t(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=t("
    ").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),t.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(t.ui.dialog.overlayInstances--,t.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),t.ui.dialog.overlayInstances=0,t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{_position:function(){var e,i=this.options.position,s=[],n=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(s=i.split?i.split(" "):[i[0],i[1]],1===s.length&&(s[1]=s[0]),t.each(["left","top"],function(t,e){+s[t]===s[t]&&(n[t]=s[t],s[t]=e)}),i={my:s[0]+(0>n[0]?n[0]:"+"+n[0])+" "+s[1]+(0>n[1]?n[1]:"+"+n[1]),at:s.join(" ")}),i=t.extend({},t.ui.dialog.prototype.options.position,i)):i=t.ui.dialog.prototype.options.position,e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.position(i),e||this.uiDialog.hide()}})}(jQuery),function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var o,a,r,h=t(this),l=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(h,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",g=i.test(u),m={},v="show"===c;h.parent().is(".ui-effects-wrapper")?t.effects.save(h.parent(),l):t.effects.save(h,l),h.show(),o=t.effects.createWrapper(h).css({overflow:"hidden"}),a=o[p](),r=parseFloat(o.css(f))||0,m[p]=v?a:0,g||(h.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),m[f]=v?r:a+r),v&&(o.css(p,0),g||o.css(f,r+a)),o.animate(m,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&h.hide(),t.effects.restore(h,l),t.effects.removeWrapper(h),n()}})}}(jQuery),function(t){t.effects.effect.bounce=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"effect"),l="hide"===h,c="show"===h,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||l?1:0),g=e.duration/f,m=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=a.queue(),y=b.length;for((c||l)&&r.push("opacity"),t.effects.save(a,r),a.show(),t.effects.createWrapper(a),d||(d=a["top"===v?"outerHeight":"outerWidth"]()/3),c&&(o={opacity:1},o[v]=0,a.css("opacity",0).css(v,_?2*-d:2*d).animate(o,g,m)),l&&(d/=Math.pow(2,p-1)),o={},o[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m).animate(o,g,m),d=l?2*d:d/2;l&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m)),a.queue(function(){l&&a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),a.dequeue()}}(jQuery),function(t){t.effects.effect.clip=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"hide"),l="show"===h,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(a,r),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n="IMG"===a[0].tagName?s:a,o=n[d](),l&&(n.css(d,0),n.css(p,o/2)),f[d]=l?o:0,f[p]=l?0:o/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){l||a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","opacity","height","width"],a=t.effects.setMode(n,e.mode||"hide"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,o),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===c?-s:s),u[l]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),g||p.hide(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),g="show"===f,m=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*_,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*v,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
    ").css({position:"absolute",visibility:"visible",left:-a*v,top:-o*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(g?l*v:0),top:h+(g?c*_:0),opacity:g?0:1}).animate({left:r+(g?0:l*v),top:h+(g?0:c*_),opacity:g?1:0},e.duration||500,e.easing,s)}}(jQuery),function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}}(jQuery),function(t){t.effects.effect.fold=function(e,i){var s,n,o=t(this),a=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(o,e.mode||"hide"),h="show"===r,l="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=h!==d,f=p?["width","height"]:["height","width"],g=e.duration/2,m={},v={};t.effects.save(o,a),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[l?0:1]),h&&s.css(d?{height:0,width:c}:{height:c,width:0}),m[f[0]]=h?n[0]:c,v[f[1]]=h?n[1]:0,s.animate(m,g,e.easing).animate(v,g,e.easing,function(){l&&o.hide(),t.effects.restore(o,a),t.effects.removeWrapper(o),i()})}}(jQuery),function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],o=t.effects.setMode(s,e.mode||"show"),a={backgroundColor:s.css("backgroundColor")};"hide"===o&&(a.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&s.hide(),t.effects.restore(s,n),i()}})}}(jQuery),function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),o=t.effects.setMode(n,e.mode||"show"),a="show"===o,r="hide"===o,h=a||"hide"===o,l=2*(e.times||5)+(h?1:0),c=e.duration/l,u=0,d=n.queue(),p=d.length;for((a||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;l>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,l+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),o="hide"===n,a=parseInt(e.percent,10)||150,r=a/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:o?a:100,from:o?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),o=t.effects.setMode(s,e.mode||"effect"),a=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===o?0:100),r=e.direction||"both",h=e.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?a/100:1,x:"vertical"!==r?a/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==o&&(n.origin=h||["middle","center"],n.restore=!0),n.from=e.from||("show"===o?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*c.y,width:l.width*c.x,outerHeight:l.outerHeight*c.y,outerWidth:l.outerWidth*c.x},n.fade&&("show"===o&&(n.from.opacity=0,n.to.opacity=1),"hide"===o&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(a,e.mode||"effect"),f=e.restore||"effect"!==p,g=e.scale||"both",m=e.origin||["middle","center"],v=a.css("position"),_=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&a.show(),s={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()},"toggle"===e.mode&&"show"===p?(a.from=e.to||b,a.to=e.from||s):(a.from=e.from||("show"===p?b:s),a.to=e.to||("hide"===p?b:s)),o={from:{y:a.from.height/s.height,x:a.from.width/s.width},to:{y:a.to.height/s.height,x:a.to.width/s.width}},("box"===g||"both"===g)&&(o.from.y!==o.to.y&&(_=_.concat(u),a.from=t.effects.setTransition(a,u,o.from.y,a.from),a.to=t.effects.setTransition(a,u,o.to.y,a.to)),o.from.x!==o.to.x&&(_=_.concat(d),a.from=t.effects.setTransition(a,d,o.from.x,a.from),a.to=t.effects.setTransition(a,d,o.to.x,a.to))),("content"===g||"both"===g)&&o.from.y!==o.to.y&&(_=_.concat(c).concat(l),a.from=t.effects.setTransition(a,c,o.from.y,a.from),a.to=t.effects.setTransition(a,c,o.to.y,a.to)),t.effects.save(a,_),a.show(),t.effects.createWrapper(a),a.css("overflow","hidden").css(a.from),m&&(n=t.effects.getBaseline(m,s),a.from.top=(s.outerHeight-a.outerHeight())*n.y,a.from.left=(s.outerWidth-a.outerWidth())*n.x,a.to.top=(s.outerHeight-a.to.outerHeight)*n.y,a.to.left=(s.outerWidth-a.to.outerWidth)*n.x),a.css(a.from),("content"===g||"both"===g)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),l=r.concat(u).concat(d),a.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,l),i.from={height:s.height*o.from.y,width:s.width*o.from.x,outerHeight:s.outerHeight*o.from.y,outerWidth:s.outerWidth*o.from.x},i.to={height:s.height*o.to.y,width:s.width*o.to.x,outerHeight:s.height*o.to.y,outerWidth:s.width*o.to.x},o.from.y!==o.to.y&&(i.from=t.effects.setTransition(i,u,o.from.y,i.from),i.to=t.effects.setTransition(i,u,o.to.y,i.to)),o.from.x!==o.to.x&&(i.from=t.effects.setTransition(i,d,o.from.x,i.from),i.to=t.effects.setTransition(i,d,o.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,l)})})),a.animate(a.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===a.to.opacity&&a.css("opacity",a.from.opacity),"hide"===p&&a.hide(),t.effects.restore(a,_),f||("static"===v?a.css({position:"relative",top:a.to.top,left:a.to.left}):t.each(["top","left"],function(t,e){a.css(e,function(e,i){var s=parseInt(i,10),n=t?a.to.left:a.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","height","width"],a=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",h=e.distance||20,l=e.times||3,c=2*l+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},g={},m={},v=n.queue(),_=v.length;for(t.effects.save(n,o),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+h,g[d]=(p?"+=":"-=")+2*h,m[d]=(p?"-=":"+=")+2*h,n.animate(f,u,e.easing),s=1;l>s;s++)n.animate(g,u,e.easing).animate(m,u,e.easing);n.animate(g,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","width","height"],a=t.effects.setMode(n,e.mode||"show"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u={};t.effects.save(n,o),n.show(),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,c?isNaN(s)?"-"+s:-s:s),u[l]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
    ").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}}(jQuery),function(t){t.widget("ui.menu",{version:"1.10.3",defaultElement:"
      ",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(e),i.has(".ui-menu").length?this.expand(e):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,o,a,r,h=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:h=!1,n=this.previousFilter||"",o=String.fromCharCode(e.keyCode),a=!1,clearTimeout(this.filterTimer),o===n?a=!0:o=n+o,r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=a&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(o=String.fromCharCode(e.keyCode),r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=o,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()
    "),a=n.children()[0];return t("body").append(n),i=a.offsetWidth,n.css("overflow","scroll"),s=a.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),o=i-s},getScrollInfo:function(e){var i=e.isWindow?"":e.element.css("overflow-x"),s=e.isWindow?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widths?"left":i>0?"right":"center",vertical:0>o?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(h.horizontal="center"),d>g&&g>r(n+o)&&(h.vertical="middle"),h.important=a(r(i),r(s))>a(r(n),r(o))?"horizontal":"vertical",e.using.call(this,t,h)}),c.offset(t.extend(I,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-o-n;e.collisionWidth>o?h>0&&0>=l?(i=t.left+h+e.collisionWidth-o-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+o-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=a(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,o=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-o-n;e.collisionHeight>o?h>0&&0>=l?(i=t.top+h+e.collisionHeight-o-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+o-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=a(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,a=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-a-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-a-o,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,a=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-a-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-a-o,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,o,a=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(a?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},a&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)e.style[o]=s[o];e.appendChild(r),i=a||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()}(jQuery),function(t,e){t.widget("ui.progressbar",{version:"1.10.3",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("
    ").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove() +},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
    ").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})}(jQuery),function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.3",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("
    ").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):this.range=t([])},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,o.addClass("ui-state-active").focus(),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,o;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,o=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),o!==!1&&this.values(e,i,!0))):i!==this.value()&&(o=this._trigger("slide",t,{handle:this.handles[e],value:i}),o!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,o,a,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(a=this.options.step,n=o=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:o=this._valueMin();break;case t.ui.keyCode.END:o=this._valueMax();break;case t.ui.keyCode.PAGE_UP:o=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;o=this._trimAlignValue(n+a);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;o=this._trimAlignValue(n-a)}this._slide(i,r,o)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})}(jQuery),function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.3",defaultElement:"",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""+""+""+""+""},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})}(jQuery),function(t,e){function i(){return++n}function s(t){return t.hash.length>1&&decodeURIComponent(t.href.replace(o,""))===decodeURIComponent(location.href.replace(o,""))}var n=0,o=/#.*$/;t.widget("ui.tabs",{version:"1.10.3",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,o){return t(o).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),o=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:o=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,o),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var o,a,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),c=l.attr("aria-controls");s(n)?(o=n.hash,a=e.element.find(e._sanitizeSelector(o))):(r=e._tabId(l),o="#"+r,a=e.element.find(o),a.length||(a=e._createPanel(r),a.insertAfter(e.panels[i-1]||e.tablist)),a.attr("aria-live","polite")),a.length&&(e.panels=e.panels.add(a)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":o.substring(1),"aria-labelledby":h}),a.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("
    ").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,o=this.tabs.eq(e),a=o.find(".ui-tabs-anchor"),r=this._getPanelForTab(o),h={tab:o,panel:r};s(a[0])||(this.xhr=t.ajax(this._ajaxSettings(a,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(o.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),o.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})}(jQuery),function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.3",options:{content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=o),this._open(e,t,i)})}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function o(t){l.of=t,a.is(":hidden")||a.position(l)}var a,r,h,l=t.extend({},this.options.position); +if(n){if(a=this._find(s),a.length)return a.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),a=this._tooltip(s),e(s,a.attr("id")),a.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:o}),o(i)):a.position(t.extend({of:s},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){a.is(":visible")&&(o(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:a}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(a)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),o.stop(!0),this._hide(o,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:o}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("
    ").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("
    ").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})}(jQuery); \ No newline at end of file diff --git a/scripts/js/jquery.min.js b/scripts/js/jquery.min.js new file mode 100644 index 0000000..29b3a2c --- /dev/null +++ b/scripts/js/jquery.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="
    ","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("